C++二维数组习题汇总含详细程序解答

合集下载

C语言-数组-实验题目及答案

C语言-数组-实验题目及答案

实验六数组程序设计【实验目的】1、掌握使用一维数组编程方法2、掌握使用二维数组进行程序设计【实验内容】一、上机验证程序,并分析结果要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。

1、#include <stdio.h>int main(){ int a[ ]={1,2,3,4,5} , i, j, s=0 ;j = 1;for ( i = 4 ; i>=0 ; i--){s = s+ a[i] * j ;j = j * 10 ;}printf(" s= %d \n" , s );return 0;}二、程序改错题1.下面程序的功能,是从键盘输入一个数组(数组长度为10),查找数组中正数的个数。

源代码如下,程序中存在错误,请将其改正。

#include <stdio.h>int main(){int a(10);/*定义数组*/int count,i;/* i循环变量 count 正数个数*/for(i=0;i<=10;i++){/*循环输入*/scanf("%d",a[i]);}count=1;for(i=0;i<=10;i++){/*查找正数*/if(a(i)>0)count++;}printf("数组中正数有:%d个\n",count);return 0;}三编写程序1.编写程序要求输入30个学生的单科成绩,输出高于平均分的成绩。

#include <stdio.h>#define N 30int main(){float score[N],sum=0,aver;int i;for(i=0;i<30;i++){scanf("%f",&score[i]);sum=sum+score[i];}aver=sum/30;printf("平均分为:%.2f\n",aver);for(i=0;i<N;i++)if(score[i]>aver)printf("%.2f ",score[i]);printf("\n");return 0;}2.编写程序:假设有13位评委参与评分工作。

c语言二维数组题目

c语言二维数组题目

c语言二维数组题目When it comes to C language two-dimensional arrays, it is important to understand the concept of arrays and how they are used in programming. Arrays are a fundamental data structure in C that allow for the storage of multiple values in a single variable. In the case of two-dimensional arrays, these structures are used to store data in rows and columns, similar to a table or grid. This allows forthe efficient organization and manipulation of data in a structured manner.在谈到C语言的二维数组时,了解数组的概念以及它们在编程中的使用是很重要的。

数组是C语言中的基本数据结构,允许在单个变量中存储多个值。

在二维数组的情况下,这些结构用于以行和列的方式存储数据,类似于表格或网格。

这使得数据可以以结构化的方式进行高效的组织和操作。

One practical example of using a two-dimensional array in C programming is to create a matrix for storing and manipulating data. This can be useful in a variety of applications, such as image processing, mathematical calculations, or game development. By using a two-dimensional array, you can easily access and modifyindividual elements within the matrix, allowing for complex operations to be performed efficiently.在C编程中使用二维数组的一个实际例子是创建一个矩阵来存储和操作数据。

二维数组的编程题

二维数组的编程题

二维数组的编程题含解答共5道1. 题目:查找二维数组中的元素问题描述:给定一个按升序排列的二维数组,编写一个函数来判断目标值是否存在于数组中。

数组是一个m x n的矩阵。

示例解答:```pythondef search_matrix(matrix, target):if not matrix or not matrix[0]:return Falserows, cols = len(matrix), len(matrix[0])row, col = 0, cols - 1while row < rows and col >= 0:if matrix[row][col] == target:return Trueelif matrix[row][col] < target:row += 1else:col -= 1return False```2. 题目:计算二维数组的转置问题描述:给定一个二维数组,返回其转置矩阵。

转置矩阵即将矩阵的行和列互换。

示例解答:```pythondef transpose(matrix):return [[matrix[j][i] for j in range(len(matrix))] for i in range(len(matrix[0]))] ```3. 题目:计算二维数组每行的平均值问题描述:给定一个二维数组,返回一个一维数组,其中每个元素是对应行的平均值。

示例解答:```pythondef average_of_rows(matrix):return [sum(row) / len(row) for row in matrix]```4. 题目:在二维数组中搜索单词问题描述:给定一个二维网格和一个单词,找出该单词是否存在于网格中。

单词可以由相邻的单元格的字母按顺序构成,其中“相邻”单元格是那些水平或垂直相邻的单元格。

示例解答:```pythondef exist(board, word):def dfs(i, j, k):if not (0 <= i < len(board) and 0 <= j < len(board[0])) or board[i][j] != word[k]:return Falseif k == len(word) - 1:return Truetmp, board[i][j] = board[i][j], '/'if dfs(i + 1, j, k + 1) or dfs(i - 1, j, k + 1) or dfs(i, j + 1, k + 1) or dfs(i, j - 1, k + 1):return Trueboard[i][j] = tmpreturn Falsefor i in range(len(board)):for j in range(len(board[0])):if dfs(i, j, 0):return Truereturn False```5. 题目:在二维数组中查找路径和问题描述:给定一个二维数组和一个目标值,确定是否存在一条从左上角到右下角的路径,使得路径上的数字之和等于目标值。

C程序设计(数组)习题与答案

C程序设计(数组)习题与答案

C程序设计(数组)习题与答案C程序设计(数组)习题与答案数组是C语言中常用的数据结构之一,它可以存储多个相同类型的元素。

掌握数组的使用对于C程序设计至关重要,下面将为大家介绍一些关于C数组的习题及其答案。

1. 习题一:计算数组元素的和题目描述:编写一个程序,计算给定数组中所有元素的和,并输出结果。

解题思路:```c#include <stdio.h>int main() {int arr[5] = {1, 2, 3, 4, 5}; // 定义一个包含5个元素的整型数组int sum = 0; // 用于存储和的变量// 遍历数组,累加每个元素的值for (int i = 0; i < 5; i++) {sum += arr[i];}printf("数组元素的和为:%d\n", sum);return 0;}```2. 习题二:查找数组中的最大值题目描述:编写一个程序,找出给定整型数组中的最大值,并输出结果。

解题思路:```c#include <stdio.h>int main() {int arr[7] = {4, 7, 2, 9, 1, 5, 8}; // 定义一个包含7个元素的整型数组int max = arr[0]; // 假设第一个元素为最大值// 遍历数组,比较每个元素的值与当前最大值的关系for (int i = 1; i < 7; i++) {if (arr[i] > max) {max = arr[i];}}printf("数组中的最大值为:%d\n", max);return 0;}```3. 习题三:查找数组中的特定元素题目描述:编写一个程序,在给定整型数组中查找是否存在指定元素,并输出结果。

解题思路:```c#include <stdio.h>int main() {int arr[6] = {3, 6, 9, 2, 5, 8}; // 定义一个包含6个元素的整型数组 int target = 2; // 指定要查找的元素int found = 0; // 用于标记是否找到目标元素的变量// 遍历数组,比较每个元素的值与目标值的关系for (int i = 0; i < 6; i++) {if (arr[i] == target) {found = 1;break;}}if (found) {printf("数组中存在目标元素:%d\n", target);} else {printf("数组中不存在目标元素:%d\n", target);}return 0;}```4. 习题四:数组元素逆序排列题目描述:编写一个程序,将给定整型数组的元素逆序排列,并输出结果。

计算机等级考试二级C语言之二维数组与指针--题+答案

计算机等级考试二级C语言之二维数组与指针--题+答案
C) 定义了一个名为*p的整型数组,该数组含有三个int类型元素
D) 定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素
(10) 有以下程序
main()
{ int a[3][3], *p, i;
p=&a [0][0] ;
for ( i=0 ; i<9 ; i++) p[i]=i+1;
(5) 若有以下说明和语句,int c[4][5],(*p)[5];p=c;能正确引用c数组元素的是
A) p+1
B) *(p+3)
C) *(p+1)+3
D) *(p[0]+2))
(6) 有以下定义和语句
int a[3][2]={1,2,3,4,5,6,},*p[3];
pa=a;
for(i=0;i<3;i++)
if(i<2) pa[1][i]=pa[1][i]-1;
else pa[1][i]=1;
printf("%d\n",a[0][1]+a[1][1]+a[1][2]);
}
执行后输出结果是
A) 7
B) 6
C) 8
for(i=1;i<3;i++)
for(j=0;j<=i;j++)s+=a[i][j];
printf(“%dn”,s);
}
(21) 若有以下的定义:int t[3][2];能正确表示t数组元素地址的表达式是
A) &t[3][2]
B) t[3]

C++二维数组习题汇总含详细程序解答说课讲解

C++二维数组习题汇总含详细程序解答说课讲解

第1题:编写程序,找出m行n列的二维数组中所有元素的最大值。

输入分m+1行:第一行为m和n的值,以下m行代表二维数组,其中每一行包括n个数。

样例输入:3 31 2 34 5 67 8 9样例输出:9#include<iostream.h>int main(){int a[100][100],m,n,i,j,max;cin>>m>>n;for(i=0;i<m;i++)for(j=0;j<n;j++)cin>>a[i][j];max=a[0][0];for(i=1;i<m;i++)for(j=1;j<n;j++){if(a[i][j]>max)max=a[i][j];}cout<<max;return 0;}第2题:编写程序,计算二维数组中各列之和。

输入分m+1行:第一行为m和n的值,以下m行代表二维数组,其中每一行包括n个数。

样例输入:3 31 2 34 5 67 8 9样例输出:12 15 18#include<iostream.h>int main(){int a[100][100],m,n,i,j,sum;cin>>m>>n;for(i=0;i<m;i++)for(j=0;j<n;j++)cin>>a[i][j];for(j=0;j<n;j++){sum=0;for(i=0;i<m;i++){sum=a[i][j]+sum;}cout<<sum<<" ";}return 0;}第3题:编写程序,计算两个矩阵(均为2行2列)之积。

输入分2*2行:前两行为第一个矩阵,后两行为第二个矩阵。

样例输入:1 24 53 51 7样例输出:5 1917 55仅供学习与参考#include<iostream.h>int main(){int a[2][2],i,j,b[2][2],c[2][2];for(i=0;i<2;i++)for(j=0;j<2;j++)cin>>a[i][j];for(i=0;i<2;i++)for(j=0;j<2;j++)cin>>b[i][j];{for(i=0;i<2;i++){for(j=0;j<2;j++){c[i][j]=a[i][0]*b[0][j]+a[i][1]*b[1][j];}}} for(i=0;i<2;i++){for(j=0;j<2;j++)cout<<c[i][j]<<"\n";}return 0;}第4题:编写程序,输出n层正方形图案。

C++二维数组习题汇总含详细程序解答

C++二维数组习题汇总含详细程序解答

.'.第1题:编写程序,找出m 行n 列的二维数组中所有元素的最大值。

输入分m+1行:第一行为m 和n 的值,以下m 行代表二维数组,其中每一行包括n 个数。

样例输入: 3 3 1 2 3 4 5 6 7 8 9样例输出:9#include<iostream.h> int main(){int a[100][100],m,n,i,j,max; cin>>m>>n; for(i=0;i<m;i++) for(j=0;j<n;j++) cin>>a[i][j]; max=a[0][0]; for(i=1;i<m;i++) for(j=1;j<n;j++) {if(a[i][j]>max) max=a[i][j]; }cout<<max; return 0; }第2题:编写程序,计算二维数组中各列之和。

输入分m+1行:第一行为m 和n 的值,以下m 行代表二维数组,其中每一行包括n 个数。

样例输入: 3 3 1 2 3 4 5 6 7 8 9样例输出:12 15 18 #include<iostream.h> int main() {int a[100][100],m,n,i,j,sum; cin>>m>>n; for(i=0;i<m;i++) for(j=0;j<n;j++) cin>>a[i][j]; for(j=0;j<n;j++) {sum=0;for(i=0;i<m;i++) {sum=a[i][j]+sum;} cout<<sum<<" "; }return 0; }第3题:编写程序,计算两个矩阵(均为2行2列)之积。

输入分2*2行:前两行为第一个矩阵,后两行为第二个矩阵。

样例输入: 1 2 4 5 3 5 1 7 样例输出: 5 19 17 55.'.#include<iostream.h> int main(){int a[2][2],i,j,b[2][2],c[2][2]; for(i=0;i<2;i++) for(j=0;j<2;j++) cin>>a[i][j]; for(i=0;i<2;i++) for(j=0;j<2;j++) cin>>b[i][j]; {for(i=0;i<2;i++) {for(j=0;j<2;j++){c[i][j]=a[i][0]*b[0][j]+a[i][1]*b[1][j];}}} for(i=0;i<2;i++) {for(j=0;j<2;j++) cout<<c[i][j]<<"\n";} return 0;}第4题:编写程序,输出n 层正方形图案。

二级c语言程序设计习题与解答ch9数组

二级c语言程序设计习题与解答ch9数组

第九章数组一、选择题[9.1]若已定义:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0<=i<=9,则对a数组元素的引用不正确的是A)a[p-a]B)*(&a[i])C)p[i]D)*(*(a+i))【解析】A:p开始是数组a首地址,只要p++则再减去a的首地址a[p-a]就能取到所有元素,B:&a[i]循环取其地址,*(&a[i])是该地址中所存储的元素C:p就是指针变量,相当于a[i],D:*(a+i)则正确[9.2]以下程序段数组所有元素输入数据,应在下划线填入的是A)a+(i++)B)&a[i+1]C)a+iD)&a[++i]main(){inta[10],i=0;while(i<10)scanf("%d",_);}【解析】因为要遍历,所以排除B.C,因为D先加1再取值,丢了a[0][9.3]以下程序的输出结果是A)3B)4C)1D)2main(){inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;printf("%d\n",*(p+2));}【解析】*p=a;p指向首地址,*(p+2))往后移动两个元素,指向3[9.4]以下程序的输出结果是A)不确定的值B)3C)2D)1main(){intn[2]={0},i,j,k=2;for(i=0;i<k;i++)for(j=0;j<k;j++)n[j]=n[i]+1;printf("%d\n",n[k]);}[9.5]以下程序的输出结果是A)17B)18C)19D)20main(){inta[]={2,4,6,8,10},y=1,x,*p;p=&a[1];for(x=0;x<3;x++)y+=*(p+x);printf("%d\n",y);}【解析】p=&a[1]则p指向元素为4,y+=*(p+x);相当于y=1+4+6+8=19[9.6]以下程序的输出结果是A)6B)8C)4D)2main(){inta[]={2,4,6,8},*p=a,i;for(i=0;i<4;i++)a[i]=*p++;printf("%d\n",a[2]);}【解析】p=a,相当于重新把a中的内容赋给a本身,所以a[2]=6[9.7]以下程序的输出结果是A)720B)120C)24D)6f(intb[],intn){inti,r=1;for(i=0;i<=n;i++)r=r*b[i];returnr;}main(){intx,a[]={2,3,4,5,6,7,8,9};x=f(a,3);printf("%d\n",x);}【解析】调用x=f(a,3);for循环4次,将前四个元素相乘,即得r=2*3*4*5;[9.8]以下程序中若第一个printf语句输出的是194,则第二个printf语句的输出结果是A)212B)204C)1a4D)1a612main(){inta[]={1,2,3,4,5,6,7,8,9,0},*p;p=a;printf("%x\n",p);printf("%x\n",p+9);}【解析】因为开始p的地址为194,p+9是指指针向后移动9个元素,而不是9个字节,每个int占2个字节,所以共移动18个字节,1个字节占一个存储单位,%x\n"是16进制,将18转化成16进制是12,所以194+12=2a6[9.9]以下程序的输出结果是A)0987654321B)4321098765C)5678901234D)0987651234fun(int*s,intn1,intn2){inti,j,t;i=n1;j=n2;while(i<j){t=*(s+i);*(s+i)=*(s+j);*(s+j)=t;i++;j--;}}main(){inta[10]={1,2,3,4,5,6,7,8,9,0},i,*p=a;fun(p,0,3);fun(p,4,9);fun(p,0,9);for(i=0;i<10;i++)printf("%d",*(a+i));}【解析】为了使大家清晰地看出fun(int*s,intn1,intn2)的作用,我自己完善了程序如下:#include<stdio.h>#include<stdlib.h>fun(int*s,intn1,intn2){inti,j,t;i=n1;j=n2;while(i<j){t=*(s+i);*(s+i)=*(s+j);*(s+j)=t;i++;j--;}}main(){inta[10]={1,2,3,4,5,6,7,8,9,0},i,*p=a;fun(p,0,3);for(i=0;i<10;i++)printf("%d",*(a+i));printf("\n");fun(p,4,9);for(i=0;i<10;i++)printf("%d",*(a+i));printf("\n");fun(p,0,9);for(i=0;i<10;i++)printf("%d",*(a+i));printf("\n");}结果如下:其实,fun(p,0,3);就是将a中的前4个元素倒序,fun(p,4,9);就是将a中的第5个到第10个倒序,最后fun(p,0,9);全部元素倒序。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第1题:
编写程序,找出m行n列的二维数组中所有元素的最大值。

输入分m+1行:第一行为m和n的值,以下m行代表二维数组,其中每一行包括n个数。

样例输入:
3 3
1 2 3
4 5 6
7 8 9
样例输出:9
#include<>
int main()
{int a[100][100],m,n,i,j,max; cin>>m>>n;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
cin>>a[i][j];
max=a[0][0];
for(i=1;i<m;i++)
for(j=1;j<n;j++)
{if(a[i][j]>max) max=a[i][j];
}
cout<<max;
return 0;
}
第2题:
编写程序,计算二维数组中各列之和。

输入分m+1行:第一行为m和n的值,以下m行代表二维数组,其中每一行包括n个数。

样例输入:
3 3
1 2 3
4 5 6
7 8 9
样例输出:12 15 18
#include<>
int main()
{
int a[100][100],m,n,i,j,sum; cin>>m>>n;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
cin>>a[i][j];
for(j=0;j<n;j++)
{
sum=0;
for(i=0;i<m;i++)
{sum=a[i][j]+sum;}
cout<<sum<<" ";
}
return 0;
}
第3题:
编写程序,计算两个矩阵(均为2行2列)之积。

输入分2*2行:前两行为第一个矩阵,后两行为第二个矩阵。

样例输入:
1 2
4 5
3 5
1 7
样例输出:
5 19 17 55
#include<>
int main()
{int a[2][2],i,j,b[2][2],c[2][2];
for(i=0;i<2;i++)
for(j=0;j<2;j++)
cin>>a[i][j];
for(i=0;i<2;i++)
for(j=0;j<2;j++)
cin>>b[i][j];
{for(i=0;i<2;i++)
{for(j=0;j<2;j++)
{c[i][j]=a[i][0]*b[0][j]+a[i][1]*b[ 1][j];}}}
for(i=0;i<2;i++)
{for(j=0;j<2;j++)
cout<<c[i][j]<<"\n";}
return 0;}
第4题:
编写程序,输出n层正方形图案。

正方形图案最外层是第一层,每
层用的数字和层数相同。

样例输入:3
样例输出:
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1
#include<>
int main()
{
int a[100][100],i,j,k,n;
cin>>n;
for(k=1;k<=n;k++)
for(i=k-1;i<2*n-k;i++)
for(j=k-1;j<2*n-k;j++)
a[i][j]=k;
for(i=0;i<2*n-1;i++)
{for(j=0;j<2*n-1;j++)
cout<<a[i][j]<<" ";
cout<<endl;}
return 0;
}
第5题:
编写程序,找出m行n列的二维数组中每行元素的最大值以及每列元素的最小值。

输入分m+1行:第一行为m和n的值,以下m行代表二维数组,其中每一行包括n个数。

输出分两行:第一行为每行元素的最大值,第二行为每列元素的最小值。

样例输入:
3 3
1 2 -1
-3 4 2
7 9 8
样例输出:
2 4 9
-3 2 -1
#include<>
int main()
{int a[100][100],n,m,i,j,t;
cin>>m>>n;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{cin>>a[i][j];}
for(i=0;i<m;i++)
{for(t=a[i][0],j=0;j<n;j++)
if(a[i][j]>t)
{t=a[i][j];}cout<<t<<" ";}
cout<<"\n";
for(j=0;j<n;j++)
{for(t=a[0][j],i=0;i<m;i++)
if(a[i][j]<t)
{t=a[i][j];}cout<<t<<" ";}
return 0;
}。

相关文档
最新文档