c语言数组典型试题设计含答案

合集下载

C语言必背的典型程序设计题目 - 数组、函数-------参考答案

C语言必背的典型程序设计题目 - 数组、函数-------参考答案

1、使用选择法、冒泡法对10个数进行排序,并输出排序前后的数列。

nk=0; mt=0; //用于记录出列顺序while(t<n){if(num[i]==0) k++;if(k==m){t++;num[i]=t;k=0;}i++;if(i==n)i=0; //或者 i=i%n,构成循环}for(i=0;i<n;i++)printf("%4d",i+1);printf("\n");for(i=0;i<n;i++)printf("%4d",num[i]);printf("\n");}4、编程打印直角杨辉三角形前六行。

#include <>#include <>void main(){int i,j,a[6][6];for(i=0;i<=5;i++){a[i][i]=1;a[i][0]=1;}for(i=2;i<=5;i++){for(j=1;j<=i-1;j++){a[i][j]=a[i-1][j]+a[i-1][j-1];}}for(i=0;i<=5;i++){for(j=0;j<=i;j++){printf("%4d",a[i][j]);}printf("\n");}}5、编写程序,把下面的数据输入一个二维数组中。

25 36 78 1312 26 88 9375 18 22 3256 44 36 58然后执行以下操作:①输出矩阵两个对角线上的数;②分别输出各行和各列的和;③交换第一行和第三行的位置;④交换第二列和第四列的位置;⑤输出处理后的数组。

#include<>#define SIZE 4void main(){inta[SIZE][SIZE]={{25,36,78,13},{12,26,88,93},{75,18,22,32},{56,44,36,58}};int i,j,t,sum;//输出二维数组printf("二维数组:\n");for(i=0;i<SIZE;i++){for(j=0;j<SIZE;j++){printf("%5d",a[i][j]);}printf("\n");}printf("\n");printf("主对角线上的数:");for(i=0;i<SIZE;i++){printf("%4d",a[i][i]);}printf("\n");printf("副对角线上的数:");for(i=0;i<SIZE;i++){printf("%4d",a[i][SIZE-1-i]);}printf("\n\n");//各列的和for(i=0;i<SIZE;i++){sum=0;for(j=0;j<SIZE;j++){sum+=a[i][j];}printf("第%d行的和=%d\n",i+1,sum);}printf("\n");//各列的和for(j=0;j<SIZE;j++){sum=0;for(i=0;i<SIZE;i++){sum+=a[i][j];}printf("第%d列的和=%d\n",j+1,sum);}printf("\n");//交换第一行和第三行的位置for(j=0;j<SIZE;j++){t=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}//输出二维数组printf("交换第一行和第三行后的二维数组:\n"); for(i=0;i<SIZE;i++){for(j=0;j<SIZE;j++){printf("%5d",a[i][j]);}printf("\n");}printf("\n");//交换第二列和第四列的位置for(i=0;i<SIZE;i++){t=a[i][1];a[i][1]=a[i][3];a[i][3]=t;}//输出二维数组printf("交换第2列和第4列后的二维数组:\n"); for(i=0;i<SIZE;i++){for(j=0;j<SIZE;j++){printf("%5d",a[i][j]);}printf("\n");}} 6、求一个5×5矩阵中的马鞍数,输出它的位置,所谓马鞍数是指在行上最小而在列上最大的数。

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语言数组练习题及答案第一题:在数组a中,存放有n个学生的成绩.试编一函数:将低于平均分的学生人数m由函数值返回,将低于平均分的分数由数组b带回. int fun(int a[],int n,int b[]) {int i,m=0,aver=0;for(i=0;i<n;i++) aver+=a[i];aver/=n;for(i=0;i<n;i++)if(a[i]<aver) b[m++]=a[i];return m;}第二题:试编一函数:求出1000之间能被7或11整除,但不能同时被7或11整除的所有整数的个数n由函数值返回,并将符合条件的数放在数组a中带回. int fun(int a[]){int i,n=0;for(i=1;i<1000;i++)if((i%7==0&&i%11!=0)||(i%7!=0&&i%11==0)) a[n++]=i;return n;}第三题:试编一函数:将大于整数m且紧靠m的k个素数存入数组a中. void fun(int m,int k,int a[]) {int i,n,data,flag;data=m+1; n=0;while(n<k){flag=1;for(i=2;i<=data/2;i++)if(data%i==0){flag=0; break;}if(flag) a[n++]=data;data++;}}第四题:试编一函数:在数组a中有n个整数,要求把下标从0到p(p小于等于n-1)的数平移到数组的最后.如:原始内容: 1,2,3,4,5,6,7,8,9,10; 当p=4时:移后内容: 6,7,8,9,10,1,2,3,4,5void fun(int a[],int n,int p) {int i,j,t;for(i=0;i<=p;i++){t=a[0];for(j=1;j<n;j++) a[j-1]=a[j];a[n-1]=t;}}第五题:试编一函数:在具有n个数据的数组a中,求出次最大值的下标并由函数值返回.int fun(int a[],int n){int i,j,max,may;if(a[0]>a[1]){max=0; may=1;}else {max=1; may=0;}for(i=2;i<n;i++)if(a[i]>a[max]){may=max;amx=i;}else if(a[i]>a[may]) may=i;return may;}第六题:在数组a中有n个四位数.试编一函数,要求按每个数的后三位的大小进行升序排列,当后三位等相同时,则对这些数值按原始四位数据进行降序排序.将排序后的前10个数存入数组b中.(提示:可采用选择排序)int fun(int a[],int n,int b[]) {int i,j,k,t,m=10;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(a[j]%1000<a[k]%1000) k=j;else if(a[j]%1000==a[k]%1000 && a[j]>a[k]) k=j;if(k!=i){t=a[i]; a[i]=a[k]; a[k]=t;}}for(i=0;i<m;i++) b[i]=a[i];return m;}第七题:在三位数(100至999)中寻找符合下面条件的整数.它即是完全平方数,又有两位数字相同.(如:144,676;)并将符合条件数的个数n由函数值返回,符合条件的数存入数组a中返回.int fun(int a[]){int i,j,hun,ten,data,n=0;for(i=10;i<32;i++){j=i*i;if(j>=100&&j<=999){hun=j/100;ten=j%100/10;data=j%10;if(hun==ten||ten==data||data==hun) a[n++]=j;}}return n;}第八题:判断一个长整型数是否为回文数(回文数是指其数字左右对称的整数).当该数是回文数时,函数值返回1,否则返回0.(提示:利用逻辑量flag进行操作). intfun(long m){int i=0,n=0,flag=1,a[20];while(m){a[n]=m%10; m=m/10; n++;}while(i<=n/2 && flag)if(a[i]!=a[--n] flag=0;else i++;return flag;}第九题:在数组a中存有n个数据,试编一函数:依次从数组中取出一个数据,如查该数连续大于该数以后的5个数且该数是奇数,统计出满足此条件数的个数m由函数值返回,并把这些数按从小到大的顺序存入数组b中.int fun(int a[],int n,int b[]) {int i,j,flag,m=0;for(i=0;i<n-5;i++){for(j=i+1;j<=i+5;j++)if(a[i]>a[j]) flag=1;else {flag=0; break;}if(flag==1 && a[i]%2==1) b[m++]=a[i];}for(i=0;i<m-1;i++)for(j=0;j<m-1-i;j++)if(b[j]>b[j+1]){flag=b[j]; b[j]=b[j+1]; b[j+1]=flag;}return m;}第十题:在数组a中有n个四位数,试编一函数:求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数m由函数值返回,再把所有满足此条件的四位数依次存入数组b中,然后对数组b中的四位数按从小到大的顺序排序.int fun(int a[],int n,int b[]) {int i,j,m,thou,hun,ten,data;for(i=0;i<n;i++){thou=a[i]/1000;hun=a[i]%1000/100;ten=a[i]%100/10;data=a[i]%10;if(thou+data==hun+ten) b[m++]=a[i];}for(i=0;i<m-1;i++)for(j=0;j<m-1-i;j++)if(b[j]<b[j+1]){data=b[j]; b[j]=b[j+1]; b[j+1]=data;}}第十一题:在数组a中有n=100个人围坐一圈并按顺时针方向从1到n编号,从第s=1个人开始进行从1到m=10的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止,现要求将出圈次序重新存入数组a中.void fun(int a[],int n,int s,int m) {int i,j,k,l,x;i=s-1; k=0; l=n;while(l>0){k++;if(k==m){x=a[i];for(j=i+1;j<n;j++) a[j-1]=a[j];a[n-1]=x;k=0; l--;}else i++;if(i==l) i=0;}}。

c语言数组试题及答案

c语言数组试题及答案

c语言数组试题及答案1. 请编写一个程序,要求用户输入10个整数,然后将其存储在一个数组中,并输出这个数组的内容。

答案:```c#include <stdio.h>int main() {int numbers[10];int i;printf("请输入10个整数:\n");for (i = 0; i < 10; i++) {scanf("%d", &numbers[i]);}printf("数组内容为:\n");for (i = 0; i < 10; i++) {printf("%d ", numbers[i]);}return 0;}```2. 请编写一个程序,要求用户输入一个整数n(n>0),然后分别输入n个整数存储在一个数组中,计算并输出这个数组中所有元素的和。

答案:```c#include <stdio.h>int main() {int n;int numbers[100];int sum = 0;int i;printf("请输入整数n:\n");scanf("%d", &n);printf("请输入%d个整数:\n", n);for (i = 0; i < n; i++) {scanf("%d", &numbers[i]);sum += numbers[i];}printf("数组元素之和为:%d\n", sum);return 0;}```3. 请编写一个程序,要求用户输入一个整数n(n>1),然后分别输入n个整数存储在一个数组中,计算并输出这个数组中最大和最小的元素。

答案:```c#include <stdio.h>int main() {int n;int numbers[100];int max, min;int i;printf("请输入整数n:\n");scanf("%d", &n);printf("请输入%d个整数:\n", n);for (i = 0; i < n; i++) {scanf("%d", &numbers[i]);}max = numbers[0];min = numbers[0];for (i = 1; i < n; i++) {if (numbers[i] > max) {max = numbers[i];}if (numbers[i] < min) {min = numbers[i];}}printf("数组中的最大元素为:%d\n", max);printf("数组中的最小元素为:%d\n", min);return 0;}```4. 请编写一个程序,要求用户输入两个整数m和n(1<=m<=n<=100),然后生成并输出m到n之间(包含m和n)的所有整数。

C语言数组典型例题分析与解答

C语言数组典型例题分析与解答

数组练习解答1 定义一个名为a的单精度实型一维数组,长度为4,所有元素的初值均为0的数定义语句是________________【分析】按照一般数据定义语句的格式,可以直接写出方法一(参看答案);考虑到所有元素均赋初值时可以省略数组长度,可以写出方法二(参看答案);考虑到不省略数组长度,给部分元素赋初值时,所有未赋初值的元素均有空值(对数值型数组来说,初值为0),可以写出方法三(参看答案);考虑到选用静态型,不赋初值所有元素也自动赋予。

空值(对数值型数组来说,初值为0),可以写出方法四(参看答案)。

【答案】方法一:float a[4]={0.0,0.0,0.0,0.0};方法二:float a[]={ 0.0,0.0,0.0,0.0};方法三:float a[4]= {0.0};方法四:static float [4];2 下列数组定义语句中,错误的是()①char x[1]='a';②auto char x[1]={0};③static char x[l];④char x[l];【分析】显然答案①中给字符型数组赋初值的格式不对(不能直接赋予字符常量,必须用花括号括住),所以备选答案①是符合题意的答案。

【答案】①3 用"冒泡排序法"对n个数据排序,需要进行n一1 步。

其中第k步的任务是:自下而上,相邻两数比较,小者调上;该操作反复执行n-k次。

现在假设有4个数据:4、l、3、2要排序,假定4为上、2为下,则利用"冒泡排序法"执行第2步后的结果是_________________。

【分析】开始排序前的排列执行第1步后的排列执行第2步后的排列4 1 11 4 23 2 42 3 3【答案】l、2、4、34 用"选择排序法"对n个数据排序,需要进行n-1步。

其中第k步的任务是:在第k个数据到第n个数据中寻找最小数,和第k个数据交换。

数据结构(C语言)【经典题库】含答案

数据结构(C语言)【经典题库】含答案

数据结构(C语言)【经典题库】含答案数据结构(C语言)【经典题库】含答案数据结构是计算机科学中的重要基础,对于程序员和软件工程师来说,熟练掌握数据结构是必不可少的。

在C语言中,有许多经典的数据结构题目,通过解答这些题目,可以深入理解数据结构的原理和应用。

本文将介绍一些经典的数据结构题目,同时附上详细的答案。

一、数组题目1. 给定一个整型数组arr和一个整数target,找出数组中两个数的和为target的所有组合。

```C#include <stdio.h>void findPairs(int arr[], int n, int target) {int i, j;for (i = 0; i < n - 1; i++) {for (j = i + 1; j < n; j++) {if (arr[i] + arr[j] == target) {printf("%d, %d\n", arr[i], arr[j]);}}}}int main() {int arr[] = {2, 4, 6, 8, 10};int target = 14;int n = sizeof(arr) / sizeof(arr[0]);findPairs(arr, n, target);return 0;}```答案解析:使用两层循环遍历数组中的每对元素,判断它们的和是否等于目标值target,如果是则输出。

时间复杂度为O(n^2)。

2. 给定一个整型数组arr和一个整数k,求出数组中连续子数组的最大和。

```C#include <stdio.h>int maxSubArraySum(int arr[], int n) {int maxSum = arr[0];int currentSum = arr[0];for (int i = 1; i < n; i++) {currentSum = (currentSum + arr[i] > arr[i]) ? currentSum + arr[i] : arr[i];if (currentSum > maxSum) {maxSum = currentSum;}}return maxSum;}int main() {int arr[] = {-2, 1, -3, 4, -1, 2, 1, -5, 4};int n = sizeof(arr) / sizeof(arr[0]);int maxSum = maxSubArraySum(arr, n);printf("最大和为:%d\n", maxSum);return 0;}```答案解析:使用动态规划的思想,定义两个变量`maxSum`和`currentSum`,分别表示当前的最大和和累加和。

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语言练习3(数组)=参考解答

C语言练习3(数组)=参考解答

C语言(数组)一、选择题1. 设有程序:main(){ int i,a[11];printf("给数组赋值:\n");for (i=0;i<=10;i++)scanf("%d",( ));... ...printf("输出数组:\n");for(i=0;i<=10;i++)printf("%d,",( ));}则在程序中的两个园括号中分别应填入:CA) &a[i]和&a[i]B) a[i]和&a[i]C) &a[i]和a[i]D) a[i]和a[i]2. 设已定义:int a[15]; 则数组a占用的内存单元数是( C ).A) 15 B) 16 C) 30 D) 323. 阅读程序:main(){ int a[2]={0},i,j,k=2;for(i=0;i<k;i++)for(j=0;j<k;j++) a[j]=a[i]+1;printf("%d\n",a[k]);}以上程序的输出结果是( D ).A) 1 B) 3 C) 2 D) 不确定的值4. 阅读程序:f(int b[],int n){ int i,r=1;for(i=0;i<=n;i++) r=r*b[i];return r;}main(){ int x,a[]={2,3,4,5,6,7,8,9};x=f(a,3);printf("%d\n",x);}以上程序的输出结果是( D ).A) 720 B) 6 C)24 D) 1205. 以下定义语句中,错误的是( B ).A) int a[ ] = {6,7,8};B) int n=5, a[n];C) char a[ ]= "string";D) char a[5 ]={'0','1','2','3','4'};6. 以下描述中正确的是( D ).A) 数组名后面的常量表达式用一对圆括弧括起来B) 数组下标从1开始C) 数组下标的数据类型可以是整型或实型D) 数组名的规定与变量名相同7. 若定义数组并初始化char a[10]={'0','1 ','2','3','4','5','6','7','8','9'};指出以下错误语句( AB ).A) scanf("%c",a[0]);B) scanf("%s",&a);C) printf("%c",a[3]);D) printf("%s",a);8.若定义数组int a[10] ,其最后一个数组元素为( C ).A) a[0]C) a[9]D) a[10]9. 若定义数组并初始化int a[10]={ 1,2,3,4},以下语句哪一个不成立( B )?A) a[8] 的值为0B) a[1] 的值为1C) a[3] 的值为4D) a[9] 的值为010. 指出以下错误语句( A ).A) int n=10,a[n];B) int n,a[10];C) int a[10]={1,2,3};D) int a[10]={1,2,3,4,5,6,7,8,9,10};11. 请读程序:main(){int n[2],i,j,k;for(i=0;i<2;i++) n[i]=0;k=2;for(i=0;i<k;i++)for(j=0;j<k;j++) n[j]=n[i]+1;printf("%d\n",n[k]);}上面程序的输出结果是( A ).A)不确定的值 B)3 C)2 D)112. 若有以下的定义和语句:int str[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c='e',则数值为2的表达式是( C ).A)str['g'-c] B)str[2] C)str['d'-'c'] D)str['d'-c]13. 设有数组定义:int a[5];则下列给数组元素赋值错误的是( B ).B) scanf("%c",a[3]);C) a[3]=getchar();D) a[3]='a'+3;14. 以下数组定义中错误的是( D ).A) #define N 30int a[N+30];B) #define N 30int a[N];C) int a[30];D) int a[N];15. 在定义一个一维数组时,不能用来表示数组长度的是( D ).A)常量 B)符号常量 C)常量表达式 D) 已被赋值的变量16. 若float型变量占用4个字节,有定义float a[20]={1.1,2.1,3.1};则数组a在内存中所占的字节数是( D ).A)12 B)20 C)40 D)8017. 设已定义:int x[2][4]={1,2,3,4,5,6,7,8}; 则元素x[1][1]的正确初值是( A ).A) 6 B) 5 C) 7 D) 118. 设有定义:int a[][3]={{1,2,3},{4,5,6},{7,8,9}}; 则a[1][2]的初值为( C ).A) 2 B) 4 C) 6 D) 819. 设有:int a[4][5]; 则数组a占用的内存字节数是( C ).A) 12 B) 24 C) 40 D) 2020. 以下数组定义中,不正确的是( B ).A) int b[3][4];B) int c[3][ ]={{1,2},{1,2,3},{4,5,6,7}};C) int b[200][100]={0};D) int c[ ][3]={{1,2,3},{4,5,6}};21. 定义数组:int x[2][3]; 则数组x 的维数是( 2 ).A) 1 B) 2 C) 3 D) 622. 若定义数组并初始化int b[2][3]= { 1,2,3,4,5,6},以下语句哪一个成立( C )?A) 表达式b[1][2]的值为1B) 表达式b[1][2]的值为4C) 表达式b[1][2]的值为6D) 表达式b[1][2]的值为223. 若定义数组并初始化int a[2][3]={{1,2,3},{4,5,6}};for(i=0;i<2;i++)for(j=0;j<3;j++)printf("%d",a[i][j]);语句的结果是哪一个( C )?A) 1,2,3,4,5,6B) 1 2 3 4 5 6C) 12345624. 若定义数组并初始化int a[2][3]= {{1,2, 3},{4,5,6}};以下语句哪一个不成立( B )?A) a数组中有6个元素B) a[2][3]是a数组的最后一个元素的引用C) a数组中每个元素都为整数D) a数组是整型数组25. 定义如下变量和数组:int i;int x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是( C ).for(i=0;i<3;i++) printf("%d",x[i][2-i]);A) 1 5 9 B) 1 4 7 C) 3 5 7 D) 3 6 926. 如有以下定义:double s[][5]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14};则数值为2的元素是( C ).A) s[1][3] B) s[0][3] C) s[0][2] D) s[1][2]27. 以下程序的输出结果是( A ).main(){int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf("%d",s);}A) 18 B) 19 C) 20 D) 2128. 若已有char b[10][50];则该二维字符数组在内存所占字节数为( D ).A) 10 B)50 C)60 D)50029. 设有:char a[10]; 下列语句那个是正确的( D )?A) scanf("%s",a[0]);B) scanf("%s",&a);C) printf("%s",a[0])D) printf("%s",a)30. 阅读程序:main(){ char a[10];int i;for(i=1;i<=5;i++)scanf("%c",&a[i]);printf("%c",a[0]);}设从键盘输入字符串:abcde,则程序的输出结果是( C ).A) a B)空格 C)不确定D)031. 合法的数组定义是( D ).A) int a[ ] = "string";B) int a[5]={0,1,2,3,4,5};C) char a= "string";D) char a[ ]={'0','1','2','3'};32. 设有数组定义:char string[ ]="China";则数组string所占的空间为( B ).A) 5个字节B) 6个字节C) 7个字节D) 10个字节33. 定义字符数组c:char c[ ]={"c language"};数组c在内存中所占字节数是( C ).A) 9 B) 10 C) 11 D) 1234. 指出以下错误语句( C ).A) char a[10]={'0','1','2','3','4','5','6','7','8','9'};B) char a[10]={'0','1 ','2','3'};C) char a[2]= {"1","2"};D) char a[2]= {'a’,'b’};35. 若定义数组并初始化char a[10]={"hello"},该数组的元素个数是( A ).A) 10B) 5C) 6D) 736. 若定义数组并初始化char a[10]={"HELLO"},该数组的元素中 a[2]是( A ).A) 'L'B) 'E'C) 'H'D) 'O'37. 若定义数组并初始化int b[10]={ 1,2,3,4},以下哪几个语句成立( A C D)?A)b[8]的值为0B)b[1]的值为1C)b[3]的值为整数D)b[10]不是b数组中的元素38. 若定义数组int a[10];指出下列错误语句:ABCDA) a数组共有10个元素,其引用方法是:a[1],a[2]...a[10];B) a数组是整型数组,其元素自动初始化为0;C) a数组最后一个元素的引用方法是a[10];D) a数组第一个元素的引用方法是a[1];二、判断题1.数组是数目固定的若干变量的有序集合,数组中各元素的类型可以不同。

c语言数组练习题及答案

c语言数组练习题及答案

/* 4.16 5*5矩阵中每行的绝对值最大值,与同行对角线交换*/ #include "stdio.h"#include "math.h"void main(){int a[5][5]={{1,2,3,4,-5},{3,5,-2,4,2},{4,1,2,3,-2}, {1,3,-2,4,6},{2,2,0,7,4}} ;int i,k,max,sub,temp;/* i 循环变量,控制行,k 循环变量,控制列,max 当前最大绝对值,sub 当前最大绝对值元素的下标temp 临时用于交换的变量*/printf("交换之前,输出\n"); /*交换之前,输出*/for(i=0;i<=4;i++){for(k=0;k<=4;k++)printf("%4d",a[i][k]);printf("\n");}/*交换*/for(i=0;i<=4;i++){/*假设第一个元素最大*/max=fabs(a[i][0]); sub=0;/*寻找绝对值最大的元素记下下标*/for(k=1;k<=4;k++){if(fabs(a[i][k])>max){max=fabs(a[i][k]); sub=k;}}/*交换*/temp=a[i][i]; a[i][i]=a[i][sub]; a[i][sub]=temp; } /*交换之后,输出*/printf("交换之后,输出\n");for(i=0;i<=4;i++){for(k=0;k<=4;k++)printf("%4d",a[i][k]);printf("\n");}}/* 4.17 在一个一维数组中存放任意4个数,如:5,1,8,6,生成如下矩阵5 5 5 5 5 5 55 1 1 1 1 1 55 1 8 8 8 1 55 1 86 8 1 55 1 8 8 8 1 55 1 1 1 1 1 55 5 5 5 5 5 5*/#include "stdio.h"#include "conio.h"void main(){int FourNumbers[4], array[7][7], i , row, column;printf("请输入4个整数\n");scanf("%d%d%d%d",&FourNumbers[0],&FourNumbers [1],&FourNumbers[2],&FourNumbers[3]);for(i=0;i<=3;i++){for(row=i;row<=6-i;row++){for(column=i;column<=6-i;column++)array[row][column]=FourNumbers[i];}}/* 输出矩阵*/for(row=0;row<=6;row++){for(column=0;column<=6;column++)printf("%4d",array[row][column]);printf("\n");}getch();}/* 习题4.19 对一行电文加密,每个字母转换为字母表中循环右移的第三个字母,a-d, b-e, ......z-c */#include "stdio.h"void main(){int c;while((c=getchar())!='\n'){if( (c>='a' && c<='z') || (c>='A' && c<='Z') ){c=c+3;if ((c>'Z' && c<='Z'+3) || c>'z') c=c-26;}putchar(c);}}。

数组c语言试题库及答案

数组c语言试题库及答案

数组c语言试题库及答案1. 请解释C语言中数组的概念。

答:在C语言中,数组是一种数据结构,它允许将多个相同类型的数据项存储在连续的内存位置。

数组可以是一维的,也可以是多维的。

2. 如何声明一个整型数组?答:声明一个整型数组的语法是 `int array_name[size];`,其中`array_name` 是数组的名字,`size` 是数组中元素的数量。

3. 请写出一个程序,用于计算一个整型数组中所有元素的和。

```c#include <stdio.h>int main() {int array[] = {1, 2, 3, 4, 5};int sum = 0;for(int i = 0; i < 5; i++) {sum += array[i];}printf("Sum of array elements: %d\n", sum);return 0;}```4. 如果一个数组的元素数量是动态的,应该如何声明?答:在C语言中,可以使用指针来处理动态数组。

声明方式为`int *array_name;`,然后在程序中使用 `malloc` 或 `calloc` 函数分配内存。

5. 请解释数组的索引。

答:数组的索引是从0开始的,它表示数组中元素的位置。

例如,对于一个名为 `array` 的数组,`array[0]` 是数组的第一个元素。

6. 如何初始化一个整型数组?答:可以使用花括号 `{}` 来初始化数组,例如 `int array[] = {1, 2, 3, 4, 5};`。

7. 请写出一个程序,用于交换数组中的两个元素。

```c#include <stdio.h>int main() {int array[] = {1, 2, 3, 4, 5};int temp;int index1 = 1; // 第二个元素int index2 = 3; // 第四个元素temp = array[index1];array[index1] = array[index2];array[index2] = temp;for(int i = 0; i < 5; i++) {printf("%d ", array[i]);}return 0;}```8. 在C语言中,数组的元素可以是什么数据类型?答:数组的元素可以是任何数据类型,包括整型、浮点型、字符型、结构体等。

c语言数组练习题及答案

c语言数组练习题及答案

/* 4.16 5*5矩阵中每行的绝对值最大值,与同行对角线交换*/ #include "stdio.h"#include "math.h"void main(){int a[5][5]={{1,2,3,4,-5},{3,5,-2,4,2},{4,1,2,3,-2},{1,3,-2,4,6},{2,2,0,7,4}} ;int i,k,max,sub,temp;/* i 循环变量,控制行,k 循环变量,控制列,max 当前最大绝对值,sub 当前最大绝对值元素的下标temp 临时用于交换的变量*/printf("交换之前,输出\n"); /*交换之前,输出*/for(i=0;i<=4;i++){for(k=0;k<=4;k++)printf("%4d",a[i][k]);printf("\n");}/*交换*/for(i=0;i<=4;i++){/*假设第一个元素最大*/max=fabs(a[i][0]); sub=0;/*寻找绝对值最大的元素记下下标*/for(k=1;k<=4;k++){if(fabs(a[i][k])>max){max=fabs(a[i][k]); sub=k;}}/*交换*/temp=a[i][i]; a[i][i]=a[i][sub]; a[i][sub]=temp; }/*交换之后,输出*/printf("交换之后,输出\n");for(i=0;i<=4;i++){for(k=0;k<=4;k++)printf("%4d",a[i][k]);printf("\n");}}/* 4.17 在一个一维数组中存放任意4个数,如:5,1,8,6,生成如下矩阵5 5 5 5 5 5 55 1 1 1 1 1 55 1 8 8 8 1 55 1 86 8 1 55 1 8 8 8 1 55 1 1 1 1 1 55 5 5 5 5 5 5*/#include "stdio.h"#include "conio.h"void main(){int FourNumbers[4], array[7][7], i , row, column;printf("请输入4个整数\n");scanf("%d%d%d%d",&FourNumbers[0],&FourNumbers[1], &FourNumbers[2],&FourNumbers[3]);for(i=0;i<=3;i++){for(row=i;row<=6-i;row++){for(column=i;column<=6-i;column++)array[row][column]=FourNumbers[i];}}/* 输出矩阵*/for(row=0;row<=6;row++){for(column=0;column<=6;column++)printf("%4d",array[row][column]);printf("\n");}getch();}/* 习题4.19 对一行电文加密,每个字母转换为字母表中循环右移的第三个字母,a-d, b-e, ......z-c */#include "stdio.h"void main(){int c;while((c=getchar())!='\n'){if( (c>='a' && c<='z') || (c>='A' && c<='Z') ) {c=c+3;if ((c>'Z' && c<='Z'+3) || c>'z')c=c-26;}putchar(c);}}。

c语言数组考试题及答案

c语言数组考试题及答案

c语言数组考试题及答案C语言数组考试题及答案一、选择题1. 以下哪个选项是正确的数组声明方式?A. int a[5] = {1, 2, 3, 4, 5};B. int a = [5] = {1, 2, 3, 4, 5};C. int a[5] = {1, 2, 3};D. int a = {1, 2, 3, 4, 5};答案:A2. 对于数组int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 以下哪个表达式是合法的?A. a[10]B. a[-1]C. a[3.5]答案:D3. 假设有数组int a[5] = {1, 2, 3, 4, 5}; 以下哪个表达式可以得到数组a的元素个数?A. sizeof(a) / sizeof(int)B. sizeof(a) / sizeof(char)C. sizeof(a) / sizeof(float)D. sizeof(a) / sizeof(double)答案:A4. 以下哪个选项是正确的二维数组声明方式?A. int a[3][2] = {{1, 2}, {3, 4}, {5, 6}};B. int a[3][2] = {1, 2, 3, 4, 5, 6};C. int a[3][2] = {{1, 2}, {3, 4, 5}, {6, 7}};D. int a[3][2] = {1, 2, 3, 4, 5, 6, 7, 8};5. 对于二维数组int a[3][2] = {{1, 2}, {3, 4}, {5, 6}}; 以下哪个表达式可以得到元素a[1][1]的值?A. a[1][1]B. a[1] + 1C. *(a[1] + 1)D. a[1] * 1答案:A二、填空题1. 假设有数组int a[5] = {10, 20, 30, 40, 50}; 则a[0]的值是______。

答案:102. 对于数组int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 则a[9]的值是______。

数组练习题及答案

数组练习题及答案

数组练习题及答案问题1:数组的基本操作题目:编写一个程序,实现以下功能:1. 初始化一个整型数组,大小为10,所有元素初始化为0。

2. 将数组中的元素依次设置为1到10。

3. 输出数组中的所有元素。

答案:```c#include <stdio.h>int main() {int arr[10] = {0};for (int i = 0; i < 10; i++) {arr[i] = i + 1;}for (int i = 0; i < 10; i++) {printf("%d ", arr[i]);}return 0;}```问题2:数组的反转题目:编写一个函数,实现对整数数组的反转。

答案:```cvoid reverseArray(int arr[], int size) {int start = 0;int end = size - 1;while (start < end) {int temp = arr[start];arr[start] = arr[end];arr[end] = temp;start++;end--;}}```问题3:数组的查找题目:编写一个函数,实现在数组中查找特定元素的索引,如果找到返回该元素的索引,如果未找到返回-1。

答案:```cint findElement(int arr[], int size, int element) {for (int i = 0; i < size; i++) {if (arr[i] == element) {return i;}return -1;}```问题4:数组的排序题目:使用冒泡排序算法对整数数组进行排序。

答案:```cvoid bubbleSort(int arr[], int size) {for (int i = 0; i < size - 1; i++) {for (int j = 0; j < size - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}```问题5:数组的动态扩展题目:编写一个函数,实现对数组的动态扩展,使其能够存储更多的答案:```cvoid dynamicArrayExpansion(int *arr, int *size, int capacity, int newElement) {if (*size >= capacity) {int newCapacity = capacity * 2;int *newArr = (int *)malloc(newCapacity *sizeof(int));for (int i = 0; i < *size; i++) {newArr[i] = arr[i];}free(arr);arr = newArr;capacity = newCapacity;}arr[(*size)++] = newElement;}```结束语:这些练习题涵盖了数组的基本操作、查找、排序和动态扩展等常见问题,希望能够帮助您更好地理解和掌握数组的使用。

C语言(数组与函数)习题与答案

C语言(数组与函数)习题与答案

1、有以下程序main(){int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i++<7)if(p[i]%2) j+=p[i];printf("%d\n",j);}程序运行后的输出结果是()。

A.42B.56C.60D.45正确答案:D2、以下叙述中错误的是()。

A.数组名代表的是数组所占存储区的首地址,其值不可改变B.只有double类型数组,不可以直接用数组名对数组进行整体输入或输出C.可以通过赋初值的方式确定数组元素的个数D.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息正确答案:B3、以下能正确定义一维数组的选项是()。

A.int a[5]={0,1,2,3,4,5};B.int a[5]="0123";C.char a[]={0,1,2,3,4,5};D.char a={'A','B','C'};正确答案:C解析: D、不加[ ],a只能被看作是一个字符变量,只能接收一个字符4、有以下程序main(){ char p[ ]={‘a’,’b’,’c’},q[ ] =”abc”;printf("%d %d\n",sizeof(p),sizeof(q));};程序运行后的输出结果是()。

A.4 4B.3 3C.3 4D.4 3正确答案:C解析: C、p[] 只能认作字符数组,不会有字符串的结束标志,所以只有3个字符q[] 是字符串,末尾还会有字符串的结束标志,所以有4个字符5、以下程序运行后的输出结果是()。

main(){ int i,j,a[][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)for(j=i+1;j<3;j++) a[j][i]=0;for(i=0;i<3;i++){ for(j=0;j<3;j++) printf("%d ", a[i][j]);printf("\n");}}A.1 2 30 5 60 0 9B.1 2 30 0 00 0 9C.0 0 00 0 00 0 0D.1 2 04 0 60 8 9正确答案:A6、若有定义语句:int m[ ]={5,4,3,2,1},i=4; ,则下面对m 数组元素的引用中错误的是()。

C语言(数组)习题与答案

C语言(数组)习题与答案

一、单选题1、下列描述中不正确的是()A.字符串的结束符是B.可以对字符型数组进行整体输入、输出。

C.字符型数组中能存放字符串。

D.字符串函数声明在ctype.h中。

正确答案:D2、下面是有关C语言字符数组的描述,其中错误的是()A.不可以用赋值语句给字符数组名赋字符串B.可以用输入语句把字符串整体输入给字符数组C.字符数组只能存放字符串D.字符数组中的内容不一定是字符串正确答案:C3、下面是对数组s的初始化操作,其中不正确的是()A.char s[5]="B.char s[5]={'a'};C.char s[5]={"a"};D.char s[5]= "abcdef";正确答案:D4、下面叙述正确的是()A.字符串“123 “与“123”相等。

B.字符串“123”小于字符串C.两个字符串所包含的字符个数不相同时,才能进行大小比较。

正确答案:BD.字符个数多的字符串比字符个数少的字符串大。

5、下面程序段的输出结果是()char a[7]=''123456w;char b[4]=〃ABC〃;strcpy(a z b);printfC'%c w z a[5]);A.\0B.C.5D.6正确答案:D6、以下对二维数组a的正确说明是一。

A.double a[l][4];B.float a(3)(4);C.floatf a(3,4);D.int a[3][];正确答案:A7、以下能对二维数组a进行正确初始化的语句是A. Int a[][3]={{l/2,3},(4,576}};B.int a⑵口={{1,0,1},{5,2,3}};C.int a ⑵[4]={{1,2,3},{4,5},{6}};D. int a[][3={{l/0/l},{},{l,l});正确答案:A8、若有说明:int a[3][4]={0};则下面正确的叙述是A.数组a中各元素都可得到初值,但其值不一定为0。

C语言习题六(数组部分)习题及答案

C语言习题六(数组部分)习题及答案

C语言习题六(数组部分)习题及答案习题六一.选择题1.在C语言中,引用数组元素时,其数组下标的数据类型允许是c 。

A)整型常量B)整型表达式C)整型常量或整型表达式C)任何类型的表达式2.以下对一维整型数组a的正确说明是DA)int a(10) ; B)int n=10,a[n];C)int n; D)#define SIZE 10scanf(“%d”,&n);int a[SIZE];int a[n];3.若有定义:int a[10],则对数组a元素的正确引用是 D 。

A)a[10] B)a[3.5] C)a(5) D)a[10-10]4.以下不能对一维数组a进行正确初始化的语句是B 。

A)int a[10]={0,0,0,0,0}; B)int a[10]={} ;C)int a[ ] = {0} ; D)int a[10]={10*1} ;5.若有定义:int a[3][4],则对数组a元素的正确引用是。

AA)a[2][3] B)a[1,3] C)a(5) D)a[10-10]6.以下能对二维数组a进行正确初始化的语句是B。

A)int a[2][]={{1,0,1},{5,2,3}} ;B)int a[][3]={{1,2,3},{4,5,6}} ;C)int a[2][4]={{1,2,3},{4,5},{6}} ;D)int a[][3]={{1,0,1},{},{1,1}} ;7.以下不能对二维数组a进行正确初始化的语句是。

CA)int a[2][3]={0} ;B)int a[][3]={{1,2},{0}} ;C)int a[2][3]={{1,2},{3,4},{5,6}} ;D)int a[][3]={1,2,3,4,5,6} ;8.若有说明:int a[3][4]={0};则下面正确的叙述是D。

A)只有元素a[0][0]可得到初值0B)此说明语句不正确C)数组a中各元素都可得到初值,但其值不一定为0D)数组a中每个元素均可得到初值09.若有说明:int a[][4]={0,0};则下面不正确的叙述是D。

c语言数组有答案

c语言数组有答案

C语言数组有答案本页仅作为文档封面,使用时可以删除This document is for reference only-rar21year.March一、选择题1. 以下对一维整型数组a的正确说明是。

A.int a(10); B.int n=0, a[n];C.int n;scanf(“%d”,&n); int a[n];D.#define SIZE 10 int a[SIZE]2. 若有说明:int a[10]; ,则对a数组元素的正确引用是。

A.a[10] B.a[] C.a(5) D.a[10-10]3. 以下能对一维数组a进行正确初始化的语句形式是。

A.int a[10]=(0, 0, 0, 0, 0); B.int a[10]={ };C.double a[ ][4]; D.int a[10]={10*1};4. 以下对二维数组a的正确说明是。

A.int a[3][ ]; B.float a(3,4); C.double a[ ][4]; D.float a(3)(4);5. 若有说明:int a[3][4]; 则对a数组元素的正确引用是。

A.a[3][4] B.a[1, 3] C.a[1+1][0] D.a(2)(1)6. 以下能对二维数组a进行正确初始化的语句是。

A.int a[2][ ]={{1, 0, 1}, {5, 2, 3}};B.int a[ ][3]={{1,2,3},{4,5,6}};C.int a[2][4]={{1,2,3},{4,5},{6}};D.int a[ ][3]={{1,0,1,0},{ },{1,1}};7. 下面程序段(每行代码前面的数字表示行号)。

1 int a[3]={3*0};2 int i3 for(i=0; i<3; i++) scanf(“%d”,&a[i]);4 for(i=1; i<3; i++) a[0]=a[0]+a[i];5 printf(“%d\n”,a[0]);A.第1行有错误 B.第5行有错误 C.第3行有错误 D.没有错误8. 若有定义float x[4]={, , },y=6; 则错误的语句是。

C语言数组试题

C语言数组试题

第4章 数组4.1内容概述本章主要介绍了数值数组和字符数组的定义、初始化、元素引用和数组数据的输入与输出,字符数组实现字符串、字符串函数的实现与调用。

指针数组与数组指针定义、元素引用。

利用一维数组实现如挑数、排序、求和等实际应用问题。

利用二维数组实现矩阵的应用问题。

利用字符数组实现字符串的各种操作。

本章知识结构如图4.1所示。

图4.1 第4章知识结构图考核要求:掌握一维数组、二维数组、字符数组和指针数组的定义和初始化;掌握数组元素存储地址计算;掌握数组元素的下标法、指针法引用;掌握字符数组与字符串的区别与联系;掌握有关字符串处理函数的使用方法;能利用一维数组、二维数组解决向量、矩阵等实际应用问题。

重点难点:本章的重点是一维数组、二维数组和字符数组的定义、初始化、元素引用,字符串处理函数的使用。

本章的难点是字符串与字符数组的区别,指针数组和数组元素的指针法引用。

核心考点:数组的定义、初始化和数组元素的引用方法,一维数组、二维数组和字符数组的实际应用,字符串的处理方法。

4.2 典型题解析【例4.1】以下对一维数组a 的定义中正确的是( )。

A. char a(10);B. int a[0..100];C. int a[5];D. int k=10;int a[k];解析:一维数组定义的一般形式为:类型标识符 数组名[常量表达式]其中,常量表达式可以是任意类型,一般为算术表达式,其值表示数组元素的个数,即数组长度。

答案:C【例4.2】以下对一维数组的定义中不正确的是( )。

A. double x[5]={2.0,4.0,6.0,8.0,10.0};数组数值数组 定义 初始化 元素引用 数组元素输入和输出 指针数组 定义初始化 应用字符数组 定义 初始化 元素引用 数组元素输入和输出B. int y[5]={0,1,3,5,7,9};C. char ch1[ ]={'1', '2', '3', '4', '5'};D. char ch2[ ]={'\x10', '\xa', '\x8'};解析:可以对一维数组的全部元素或部分元素赋初值。

c语言数组考试题及答案

c语言数组考试题及答案

c语言数组考试题及答案一、选择题1. 在C语言中,数组的下标从哪个数字开始?A. 0B. 1C. 2D. 3答案:A2. 下列哪个选项是正确的数组声明?A. int arr[] = {1, 2, 3};B. int arr[5] = {1, 2, 3};C. int arr[5] = {1, 2};D. int arr[] = {1, 2, 3, 4, 5};答案:B3. 若有数组声明 int arr[5] = {1, 2, 3, 4, 5}; 则arr[2]的值是多少?A. 1B. 2C. 3D. 4答案:C二、填空题1. 假设有一个数组声明为 int arr[10] = {0}; 则arr[0]的值是______。

答案:02. 如果声明了一个数组 int arr[5] = {1, 2, 3, 4, 5}; 那么arr 数组的元素个数是______。

答案:5三、简答题1. 请简述C语言中数组的初始化方式有哪些?答案:C语言中数组的初始化方式包括:- 静态初始化:在声明数组时直接指定数组的元素值。

- 动态初始化:在声明数组后,通过循环或逐个赋值的方式初始化数组。

2. 在C语言中,如何访问数组的最后一个元素?答案:可以通过数组的长度减去1来访问数组的最后一个元素,例如对于数组arr,访问最后一个元素的方式是arr[arr.length - 1]。

四、编程题1. 编写一个C语言程序,实现将一个整数数组按照从大到小的顺序排序。

答案:```c#include <stdio.h>void sortDescending(int arr[], int n) {for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - i - 1; j++) {if (arr[j] < arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}int main() {int arr[] = {4, 2, 3, 1, 5};int n = sizeof(arr) / sizeof(arr[0]);sortDescending(arr, n);for (int i = 0; i < n; i++) {printf("%d ", arr[i]);}return 0;}```该程序首先定义了一个排序函数sortDescending,它使用冒泡排序算法将数组从大到小排序。

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

一.选择题(2*20)【题1】在C 语言中,引用数组元素时,其数组下标的数据类型允许是。

A)整型常量B)整型表达式C)整型常量或整型表达式D)任何类型的表达式【题2】以下对一维整型数组a 的正确说明是。

A)int a(10); B)int n=10,a[n];C)int n; D)#define SIZE 10scanf(“%d”,&n); int a[SIZE];int a[n];【题3】若有说明:int a[10];则对a 数组元素的正确引用是。

A)a[10] B)a[3.5] C)a(5) D)a[10-10]【题4】在C 语言中,一维数组的定义方式为:类型说明符数组名; A)[整型常量表达式] B)[整型表达式]C)[整型常量] 或[整型表达式] D)[常量]【题5】以下能对一维数组a 进行正确初始化的语句是。

A)int a[10]=(0,0,0,0,0); B)int a[10]={};C)int a[]={0}; D)int a[10]=”10*1”;【题6】以下对二维数组a 的正确说明是。

A)int a[3][]; B)float a(3,4);C)double a[1][4]; D)float a(3)(4);【题7】若有说明:int a[3][4];则对a 数组元素的正确引用是。

A)a[2][4] B)a[1,3] C)a[1+1][0] D)a(2)(1)【题8】若有说明:int a[3][4];则对a 数组元素的非法引用是。

A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4]【题9】以下能对二维数组a 进行正确初始化的语句是。

A)int a[2][]={{1,0,1},{5,2,3}};B)int a[][3]={{1,2,3},{4,5,6}};C)int a[2][4]={{1,2,3},{4,5},{6}};D)int a[][3]={{1,0,1},{},{1,1}};【题10】以下不能对二维数组a 进行正确初始化的语句是。

A)int a[2][3]={0};B)int a[][3]={{1,2},{0}};C)int a[2][3]={{1,2},{3,4},{5,6}};D)int a[][3]={1,2,3,4,5,6};【题11】若有说明:int a[3][4]={0};则下面正确的叙述是。

A)只有元素a[0][0]可得到初值0B)此说明语句不正确C)数组a 中各元素都可得到初值,但其值不一定为0D)数组a 中每个元素均可得到初值0【题12】若有说明:int a[][4]={0,0};则下面不正确的叙述是。

A)数组a 的每个元素都可得到初值0B)二维数组a 的第一维大小为1C)因为二维数组a 中第二维大小的值除以初值个数的商为1,故数组a 的行数为1D)只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0【题13】若有说明:int a[3][4];则全局数组a 中各元素。

A)可在程序的运行阶段得到初值0B)可在程序的编译阶段得到初值0C)不能得到确定的初值D)可在程序的编译或运行阶段得到初值0【题14】以下各组选项中,均能正确定义二维实型数组a 的选项是。

A)float a[3][4]; B)float a(3,4);float a[][4]; float a[3][4];float a[3][]={{1},{0}}; float a[][]={{0};{0}};C)float a[3][4]; D)float a[3][4];static float a[][4]={{0},{0}}; float a[3][];auto float a[][4]={{0},{0},{0}}; float a[][4];【题15】下面程序如果只有一个错误,那么是(每行程序前面的数字表示行号)。

1 main()2 {3 float a[3]={3*0};4 int i;5 for(i=0;i<3;i++) scanf(“%d”,&a[i]);6 for(i=1;i<3;i++) a[0]=a[0]+a[i];7 printf(“%d\n”,a[0]);8 }A)第3 行有错误B)第7 行有错误C)第5 行有错误D)没有错误【题16】下面程序(每行程序前面的数字表示行号)。

1 main()2 {3 float a[10]={0.0};4 int i;5 for(i=0;i<3;i++) scanf(“%d”,&a[i]);6 for(i=1;i<10;i++) a[0]=a[0]+a[i];7 printf(“%f\n”,a[0]);8 }A)没有错误B)第3 行有错误C)第5 行有错误D)第7 行有错误【题17】下面程序中有错误的行是(每行程序前面的数字表示行号)。

1 main()2 {3 float a[3]={1};4 int i;5 scanf(“%d”,&a);6 for(i=1;i<3;i++) a[0]=a[0]+a[i];7 printf(“a[0]=%d\n”,a[0]);8 }A)3 B)6 C)7 D)5【题18】下面程序(每行程序前面的数字表示行号)。

1 main()2 {3 float a[3]={0};4 int i;5 for(i=0;i<3;i++) scanf(“%f”,&a[i]);6 for(i=1;i<4;i++) a[0]=a[0]+a[i];7 printf(“%f\n”,a[0]);8 }A)没有错误B)第3 行有错误C)第5 行有错误D)第6 行有错误【题19】若二维数组a 有m 列,则计算任一元素a[i][j]在数组中位置的公式为。

(假设a[0][0]位于数组的第一个位置上。

)A)i*m+j B)j*m+i C)i*m+j-1 D)i*m+j+1【题20】对以下说明语句的正确理解是。

int a[10]={6,7,8,9,10};A)将5 个初值依次赋给a[1]至a[5]B)将5 个初值依次赋给a[0]至a[4]C)将5 个初值依次赋给a[6]至a[10]D)因为数组长度与初值的个数不相同,所以此语句不正确参考答案:1~5 CDDAC 6~10 CCDBC11~15 DDBCA 16~20 CDDDB二.程序分析(10*2)1. 下面程序的输出结果是________。

struct stu{ int x,*y;}*p;int d[4]={10,20,30,40};struct stu a[4]={50,&d[0],60, &d[1],70, &d[2] ,80,&d[3]}; main(){ p=a;printf("%d,",++p->x);printf("%d,",(++p)->x);printf("%d\n",++(*p->y));}2. 以下程序的运行结果是________。

union un{ int a;int b;};union un s[4];union un *p;main(){ int n=1,i;for(i=0;i<4;i++){s[i].a=n; s[i].b=s[i].a+1; n=n+2;}p=&s[0];printf("%d,",p->a);printf("%d",++p->a);}1. 51,60,212. 2,3四.程序设计(10*4)1、将二维数组(5行5列)的右上半部分置零。

即:#include<stdio.h>main(){int a[5][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}};for(int i=0;i<5;i++){for(int j=0;j<5;j++){if(i<j){printf("%3d",0);}else{printf("%3d",a[i][j]);}}printf("\n");}}2、求二维数组(3行3列)的对角线元素的和#include<stdio.h>main(){int a[3][3]={{10,12,13},{14,15,16},{17,18,19}},sum=0;for(int i=0;i<3;i++){for(int j=0;j<3;j++){if(i==j){sum=sum+a[i][j];}}printf("%d",sum);}3、求二维数组(5行5列)中最大元素值及其行列号#include<stdio.h>main(){int a[5][5],i,j;for(i=0;i<5;i++){for(j=0;j<5;j++){scanf("%d",&a[i][j]);}}int sum=a[0][0],x,y;for(i=0;i<5;i++){for(j=0;j<5;j++){if(sum<a[i][j]){sum=a[i][j];x=i;y=j;}}}printf("a[%d][%d]=%d",x,y,sum);}4、从键盘上输入9个整数,保存在二维数组中按数组原来位置输出第一行和第一列的所有元素#include<stdio.h>main(){int a[3][3],i,j;for(i=0;i<3;i++){for(j=0;j<3;j++){scanf("%d",&a[i][j]);}for(i=0;i<3;i++){for(j=0;j<3;j++){if(i==0||j==0){printf("%d",a[i][j]);}}printf("\n");}}。

相关文档
最新文档