C语言习题集合4(数组)

合集下载

《c语言教学资料》4数组

《c语言教学资料》4数组
部分初始化
如果只对部分元素进行初始化,则未初始化的元素将自动赋值为0。例如,`int a[3][4] = {{1},{2}}`,则只有第一行和第二行的第一列被初始化,其余元素为0。
初始化列表
多维数组的初始化
多维数组的引用
引用方式
多维数组的引用方式与一维数组类似,使用索引来访问元素。例如,`a[i][j]`表示第i行第j列的元素。
二维数组在各种算法和数据结构中都有广泛的应用,例如矩阵运算、动态规划等。
详细描述
二维数组可以用于实现各种算法和数据结构,例如矩阵运算、动态规划等。在矩阵运算中,二维数组可以方便地存储和操作矩阵数据。在动态规划中,二维数组可以用于存储子问题的解,以便递归地求解更大规模的问题。
二维数组的应用
04
CHAPTER
动态规划
多维数组的应用
05
CHAPTER
字符数组与字符串
字符数组的定义与声明
了解字符数组的基本定义和声明方式
总结词
字符数组是用于存储字符序列的数据结构,可以通过指定数组大小来声明一个字符数组。例如,char arr[100]表示声明一个能够存储100个字符的字符数组。
详细描述
掌握字符串在C语言中的表示方法
详细描述
在C语言中,二维数组是通过定义一个数组的数组来实现的。通常使用两个方括号[]来声明二维数组,例如int a[3][4]表示一个有3行4列的整型二维数组。
二维数组的定义与声明
二维数组的初始化可以通过多种方式进行,包括分别初始化每个元素和按行初始化。
总结词
在声明二维数组时,可以直接对每个元素进行初始化,例如int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}。也可以按行对数组进行初始化,例如int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}},这种方式会自动将每行的元素分别赋给对应位置的元素。

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语言  数组和指针练习题

若当堂没做完,下周四之前上交也可。

至ftp://211.64.82.253/用户名和密码:stuC语言程序设计练习题——数组一、选择题77、以下对一维数组a的正确说明是_d ___A、char a(10);B、int a[ ];C、int k=5,a[k];D、char a[ ]={'a' , 'b' , 'c'};78、若有说明语句:int a[2][4];,则对a数组元素的正确引用是_a___A、a[0][3]B、a[0][4]C、a[2][2]D、a[2][2+1]79、以下能对二维数组y进行初始化的语句是_b__A、static int y[2][ ]={{1,0,1}, {5,2,3}};B、static int y[ ][3]={{1,2,3}, {4,5,6}};C、static int y[2][4]={{1,2,3}, {4,5} , {6}};D、static int y[ ][3]={{1,0,1,0}, { }, {1,1}};80、若有说明语句:int y[ ][4]={0,0};则下面叙述不正确的是_d___A、数组y的每个元素都可得初值0B、二维数组y的行数为1C、该说明等价于int y[ ][4]={0};D、只有元素y[0][0]和y[0][1]可得到初值0,其余元素均得不到初值081、以下各组选项中,均能正确定义二维实型数组s的选项是_c___A、float s[3][4];B、float s(3,4);float s[ ][4]; float s[ ][ ]={{0};{0}};float s[3][ ]={{1},{0}}; float s[3][4];C、 float s[3][4];D、float s[3][4];static float s[ ][4]={{0},{0}}; float s[3][ ];auto float s[ ][4]={{0},{0},{0}}; float s[ ][4];82、若有说明语句:int a[ ][3]={1,2,3,4,5,6,7,8}; ,则a数组的行数为__a__A、3B、2C、无确定值D、183、若二维数组y有m列,则在y[i][j]前的元素个数为_B___A、j*m+iB、i*m+jC、i*m+j-1D、i*m+j+184、下面程序中有错误的行是____1、 main( )2、 {3、 int x[3]={1};4、 int k;5、 scanf("%d", &x);6、 for (k=1; k<3; k++)7、 x[0]=x[0]+x[i];8、 printf("x[0]=%d\n", x[0]);9、 }A、3B、6C、7D、585、若有以下语句,则正确的描述是__b__char x[ ]="12345";char y[ ]={'1', '2', '3', '4', '5'};A、x数组与y数组的长度相同B、x数组长度大于y数组长度C、x数组长度小于y数组长度D、x数组等价于y数组86、以下不正确的数组定义语句是__b__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'};87、以下正确的数组定义语句是_c___A、char a[5]={'1', '2', '3', '4', '5', '\0'};B、int b[2][ ]={{1}, {2}};C、float c[ ][3]={1, 2, 3, 4, 5};D、char d[5]="CHINA";88、判断字符串str1是否大于字符串str2,应当使用__d__A、if (str1>str2)B、if (strcmp(str1, str2))C、if (strcmp(str2, str1)>0)D、if (strcmp(str1, str2)>0)89、下面程序段的运行结果是_c___char x[5]={'a', 'b', '\0', 'c', '\0'};printf("%s", x);A、'a''b'B、abC、ab└┘cD、abc90、有两个字符数组a,b,则以下能正确为a,b进行赋值的语句是_d___A、gets(a, b);B、scanf("%s%s", &a, &b);C、getchar(a); getchar(b);D、gets(a); gets(b);91、有字符数组s1[80]和s2[80],则以下能正确对s1, s2进行输出的语句是___b_A、puts(s1, s2)B、printf("%s, %s", s1, s2);C、putchar(s1, s2);D、puts(s1), puts(s2);92、以下程序段的运行结果是_c___char a[7]="abcdef";char b[4]="ABC";strcpy(a, b);printf("%c", a[5]);A、└┘B、\0C、eD、f93、以下描述正确的是_d___A、两个字符串所包含的字符个数相同时,才能比较字符串B、字符个数多的字符串比字符个数少的字符串大C、字符串"STOP└┘"与"STOP"相等D、字符串"That"小于字符串"The"94、以下对字符数组的描述中错误的是_c___A、字符数组中可以存放字符串B、字符数组中的字符串可以整体输入、输出C、可以在赋值语句中通过赋值运算符"="对字符数组整体赋值D、不可以用关系运算符对字符数组中的字符串进行比较95、若有语句:char s1[10], s2[10]={"books"},则能将字符串books赋给数组s1的正确语句是_b___A、s1={"books"};B、strcpy(s1, s2);C、s1=s2;D、strcpy(s2, s1);96、以下printf语句的输出结果是____printf("%d\n", strlen("school");A、7B、6C、存在语法错误D、不定值97、下面程序的功能是将字符串s中所有的字符c删除。

C语言复习题4

C语言复习题4

第8章函数单选题:1、下列程序执行后输出的结果是#include 〈stdio.h〉f(int a){ int b=0;int c=3;a=c+ +,b+ +;return(a);}main( ){ int a=2,i,k;for(i=0;i〈2;i+ +)k=f(a+ +);printf("%d\n",k);}A.3B.0C.1D.4学生答案: A参考答案: A2、在一个C源程序文件中,若要定义一个只允许本源文件中所用的函数的全局变量,则变量需要使用的存储类别是____A.AutoB.staticC.registerD.extern学生答案: C参考答案: B3、下面程序的输出是int m=13;int fun2(int x,int y){ int m=3;return(x*y-m);}main(){ int a=7,b=5;printf("%d\n",fun2(a,b)/m);}B.2C.7D.10学生答案: B参考答案: B4、以下程序运行后,输出结果是func(int a,int b){ static int m=0,i=2;i+=m+1;m=i+a+breturn(m);}main(){ int k=4,m=1,p;p=func(k,m);printf("%d\n",p);p=func(k,m);printf("%d\n",p);}A.8,15B.8,16C.8,17D.8,8学生答案:参考答案: C5、以下程序的输出结果是int d=1;fun(int p){ d = d+p;printf("%d ",d);return(d);}main( ){int a=3;printf("%d \n",fun(a+fun(d)));}A. 2 6B. 1 7 7C. 2 7 7学生答案: C参考答案: C6、C语言中,调用一个函数时,实参变量和形参变量之间的数据传递是____.A.单纯值传递B.单纯地址传递C.值传递和地址传递都有可能D.由实参传给形参,然后由形参传回给实参,即是双向传递学生答案: B参考答案: A7、下列说法正确的是________.A.调用函数时,实参与形参可以共用内存单元B.调用函数时,实参的个数、类型和顺序与形参可以不一致C.调用函数时形参可以是表达式D.调用函数时,将为形参分配内存单元学生答案: D参考答案: D8、C语言程序由函数组成。

国家二级C语言(数组)机试模拟试卷4(题后含答案及解析)

国家二级C语言(数组)机试模拟试卷4(题后含答案及解析)

国家二级C语言(数组)机试模拟试卷4(题后含答案及解析)题型有:1. 选择题选择题1.若有定义:int x[10],*pt=x;,则对x数组元素的正确引用是( )。

A.pt+3B.*&x[10]C.*(pt+10)D.*(x+3)正确答案:D解析:没有A选项的引用形式。

*与&放在一起作用抵消,但x[10]下标10超出了数组下标范围,所以B选项错误。

最大只能引用到x[9],而*(pt+i)表示引用指针pt所指元素后的第i个元素,所以C选项错误,最大只能为*(pt+9)。

D 选项正确。

知识模块:数组2.有以下程序:#include<stdio.h>main( ){int i,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);printf(“%d\n”,s);}程序的运行结果是( )。

A.20B.25C.45D.36正确答案:B解析:统计1~9这9个数中的奇数和,此题考查指向数组的指针。

C语言规定数组名代表数组的首地址,也就是第一个元素的地址,因此*(t+i)代表数组的第i+1个元素。

程序的运行结果是1+3+5+7+9=25。

知识模块:数组3.有以下程序:#include<stdio.h>main( ){int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;for(i=0;i<12;i++)e[s[i]]++;for(i=1;i <5;i++)printf(“%d”,c[i]);printf(“\n”);}程序的运行结果是( )。

A.2 3 4 4B.4 3 3 2C.1 2 3 4D.1 1 2 3正确答案:B解析:在for(i=0;i<12;i++)c[s[i]]++中,数组元素s[i]的值作为数组c的下标,当退出循环时,数组c的4个元素的值分别为4、3、3、2,因此B选项正确。

知识模块:数组4.下列定义数组的语句中正确的是( )。

C语言数组百道练习题含答案

C语言数组百道练习题含答案

6.5 以下能对一维数组 a 进行正确初始化的语句是 B 。????? A)int a[10]=(0,0,0); B)int a[10]={}; C)int a[]={0}; D)int a[10]={10*1}; 6.6 以下对二维数组 a 的正确说明是 C 。 A)int a[3][]; B)float a(3,4); C)double a[1][4]; D)float a(3)(4); 6.7 若有说明:int a[3][4];则对 a 数组元素的正确引用是 C 。 A)a[2][4] B)a[1,3] C)a[1+1][0] D)a(2)(1) 6.8 若有说明:int a[3][4];则对 a 数组元素的非法引用是 D 。 A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4] 6.9 以下能对二维数组 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}}; 6.10 以下不能对二维数组 a 进行正确初始化的说明是 C 。 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}; 6.11 若有说明:int a[3][4]={0};则下面正确的叙述是 D 。 A)只有元素 a[0][0]可以得到初值 0 B)此说明语句不正确 C)数组中各元素都可以得到初值,但其值不一定为 0 D)数组中每个元素均可得到初值 0 6.12 若有说明:int a[][4]={0,0};则下面不正确的叙述是 A)数组 a 的每个元素都可得到初值 0 B)二维数组 a 的第一维大小为 1 C)因为二维数组 a 中第二维大小的值除初值个数的商为 0,故数组 a 的行数为 1 D)只有元素 a[0][0]和 a[0][1]可得到初值 0,其余元素均得不到初值 0 6.13 若有说明:static int a[3][4];则数组中各元素 A)可在程序的运行阶段得到初值 0 B)可在程序的编译阶段得到初值 0 B 。 D 。

C语言程序设计 练习题参考答案 第四章 (1) 一维数组

C语言程序设计 练习题参考答案 第四章 (1) 一维数组
printf("%4d",a[i]);
printf("\n请输入要插入的整数,输入之后按回车键,如要结束请输入-1\n");
scanf("%d",&x);
}
}
/* 4.15 将十进制数转换成二进制数,并按位存到数组中。(限正整数) */
C语言程序设计 练习题参考答案 第四章 (1) 一维数组
/* 4.11 fibonacci数列,前15项 1,1,2,3,5,。。。。。*/
#include "stdio.h"
void main()
{
int f[15]={1,1}, i;
for(i=2;i<=14;i++) /* 计算 */
f[i]=f[i-2]+f[i-1];
printf("fibonacci数列,前15项\n"); /* 输出 */
for(i=0;i<=14;i++)
{
printf("%5d",f[i]);
if((i+1)%5==0)
for(i=0;i<=9;i++)
printf("%3d",a[i]);
}
/* 4.13 有序数列中插入若干个数,仍然保持有序 */
#include "stdio.h"
void main()
{
int a[100]={1,4,8,10};
int i,k,x,count=4;/* i,k 循环变量, x 输入整数,count 有多少整数*/

C语言练习题4

C语言练习题4

一、单项选择题(共20小题;每小题1分,共20分)
1、一个C语言程序由()组成。

A.子程序B.过程C.函数D.主程序
2、若以下选项中的变量已正确定义,则正确的赋值语句是()。

A.x1=26.8%3 B.1+2=x2 C.x3=0x12 D.x4=1+2=3;
3、以下符合C语言语法的实型常量是()。

A.1.2E0.5 B.3.14159E C.E15 D.0.5E-3
4、以下不能正确表示代数式2ab/(cd) 的C语言表达式是()。

A.2*a*b/c/d B.a*b/c/d*2 C.a/c/d*b*2 D.2*a*b/c*d
5、设有定义:int k=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是()。

A.k++ B.k+=1 C.++k D.k+1
6、若有以下函数首部int fun(double x[10],int *n)则下面针对此函数声明语句中正确
的是()。

A.int fun(double x,int *n); B.int fun(double ,int);
C.int fun(double*x,int n); D.int fun(double *,int*);
7、若i为整型变量,则以下循环体执行次数是()。

for(i=2;i==0;) printf("%d",i--);
A.无限次 B. 0次 C. 1次 D. 2次
南京工程学院试卷共8 页第2 页
南京工程学院试卷共8页第6 页。

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

B int b[][3]={0,1,2,3}; C. int c[100][100]={0}; D. int d[3][]={{1,2},{1,2,3},{1,2,3,4}}; 20. 若有以下的定义:int t[5][4];能正确引用t数组的表达式是( )。 A. t[2][4] B. t[5][0] C. t[0][0] D. t[0,0] 21. 在定义int m[ ][3]={1,2,3,4,5,6};后,m[1][0]的值是( )。 A. 4 B. 1 C. 2 D. 5 22. 在定义int n[5][6]后第10个元素是( )。 A. n[2][5] B. n[2][4] C. n[1][3] D. n[1][4] 23. 若二维数组c有m列,则计算任一元素c[i][j]在数组中的位置的公 式为( )。 (假设c[0][0]位于数组的第一个位置) A. i*m+j B. j*m+i C. i*m+j-1 D. i*m+j+1 24. 若有以下定义语句,则表达式“x[1][1]*x[2][2]”的值是( )。 float x[3][3]={{1.0,2.0,3.0},{4.0,5.0,6.0}}; A. 0.0 B. 4.0 C. 5.0 D. 6.0 25. 以下程序运行后,输出结果是 ( )。 main() { int a[4][4]={{1,3,5},{2,4,6},{3,5,7}}; printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]); } A. 0650 B. 1470 C. 5430 D. 输出值不定 26. 以下程序运行后,输出结果是( )。 main() { int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}}; int i,s=0; for(i=0;i<4;i++) s+=aa[i后输出结果是( )。 main( ) { int n[3],i,j,k; for(i=0;i<3;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[1]); } A. 2 B. 1 C. 0 D. 3 16. 下列程序的主要功能是输入10个整数存入数组a,再输入一个整数x, 在数组a中查找x。找到则输出x在10个整数中的序号(从1开始); 找不到则输出0。程序缺少的是 ( )。 main() { int i,a[10],x,flag=0; for(i=0;i<10;i++) scanf("%d",&a[i]); scanf("%d",&x); for(i=0;i<10;i++) if _______ {flag=i+1; break;} printf("%d\n", flag); } A. x!=a[i] B. !(x-a[i]) C. x-a[i] D. !x-a[i] 17. 若说明:int a[2][3]; 则对a数组元素的正确引用是( ) 。 A. a(1,2) B. a[1,3] C. a[1>2][!1] D. a[2][0] 18. 若有定义:int b[3][4]={0};则下述正确的是( ) 。 A. 此定义语句不正确 B. 没有元素可得初值0 C. 数组b中各元素均为0 D. 数组b中各元素可得初值但值不一定为0 19. 若有以下数组定义,其中不正确的是( ) 。 A. int a[2][3];
printf(“%d\n”,s); } A. 11 B. 19 C. 13 D. 20 27. 有以下程序 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\n",s); } 该程序的输出结果是( )。 A. 18 B. 19 C. 20 D. 21 28. 若定义如下变量和数组: int i; int x[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是( )。 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 9 29. 下述对C语言字符数组的描述中错误的是( )。 A. 字符数组可以存放字符串 B. 字符数组中的字符串可以整体输入、输出 C. 可以在赋值语句中通过赋值运算符"="对字符数组整体赋值 D. 不可以用关系运算符对字符数组中的字符串进行比较 30. 下述对C语言字符数组的描述中正确的是 ( )。 A. 任何一维数组的名称都是该数组存储单元的开始地址,且其每个元 素按照顺序连续占存储空间 B. 一维数组的元素在引用时其下标大小没有限制 C. 任何一个一维数组的元素,可以根据内存的情况按照其先后顺序以 连续或非连续的方式占用存储空间 D. 一维数组的第一个元素是其下标为1的元素 31. 不能把字符串:Hello!赋给数组b的语句是( )。 A. char str[10]= {'H', 'e', 'l', 'l', 'o', '! '}; B. char str[10];str="Hello!"; C. char str[10];strcpy(str,"Hello!");
第四部分 数组 4.1 选择题
以下关于数组的描述正确的是( )。 A. 数组的大小是固定的,但可以有不同的类型的数组元素 B. 数组的大小是可变的,但所有数组元素的类型必须相同 C. 数组的大小是固定的,所有数组元素的类型必须相同 D. 数组的大小是可变的,可以有不同的类型的数组元素 2. 以下对一维整型数组a的正确说明是( )。 A.int a(10); B. int n=10,a[n]; C.int n; D. #define SIZE 10 scanf("%d",&n); int a[SIZE]; int a[n]; 3. 在C语言中,引用数组元素时,其数组下标的数据类型允许是( )。 A. 整型常量 B. 整型表达式 C. 整型常量或整型表达式 D. 任何类型的表达式 4. 以下对一维数组m进行正确初始化的是( )。 A. int m[10]=(0,0,0,0) ; B. int m[10]={ }; C. int m[ ]={0}; D. int m[10]= {10*2}; 5. 若有定义:int bb[ 8];。则以下表达式中不能代表数组元bb[1] 的地址的是( )。 A. &bb[0]+1 B. &bb[1] C. &bb[0]++ D. bb+1 6. 假定int类型变量占用两个字节,其有定义:int x[10]= {0,2,4};,则数组x在内存中所占字节数是( )。 A. 3 B. 6 C. 10 D. 20 7. 若有以下说明: int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; 1.
12. 以下程序运行后,输出结果是( )。 main() { int y=18,i=0,j,a[8]; do { a[i]=y%2; i++; y=y/2; } while(y>=1); for(j=i-1;j>=0;j--) printf("%d",a[j]); printf("\n"); } A. 10000 B. 10010 C. 00110 D. 10100 13. 以下程序运行后,输出结果是( )。 main() { int a[10], a1[ ]={1,3,6,9,10}, a2[ {2,4,7,8,15},i=0,j=0,k; for(k=0;k<4;k++) if(a1[i]<a2[j]) a[k]=a1[i++]; else a[k]=a2[j++]; for(k=0;k<4;k++) printf("%d",a[k]); } A. 1234 B. 1324 C. 2413 D. 4321 14. 以下程序运行后,输出结果是( )。 main() { int i,k,a[10],p[3]; k=5; for (i=0;i<10;i++) a[i]=i; for (i=0;i<3;i++) p[i]=a[i*(i+1)]; for (i=0;i<3;i++) k+=p[i]*2; printf("%d\n",k); } A. 20 B. 21 C. 22 D. 23
char c='a',d,g; 则数值为4的表达式是( ) A. a[g-c] B. a[4] C. a['d'-'c'] D. a['d'-c] 8. 以下程序段给数组所有的元素输入数据,请选择正确答案填入( )。 #include<stdio.h> main() { int a[10],i=0; while(i<10) scanf("%d",________ ); ┇ } A. a+(i++) B. &a[i+1] C. a+i D. &a[++i] 9. 执行下面的程序段后,变量k中的值为( )。 int k=3, s[2]; s[0]=k; k=s[1]*10; A. 不定值 B. 33 C. 30 D. 10 10. 以下程序的输出结果是( ) main() { int i, a[10]; for(i=9;i>=0;i--) a[i]=10-i; printf("%d%d%d",a[2],a[5],a[8]); } A. 258 B. 741 C. 852 D. 369 11. 以下程序运行后,输出结果是( )。 main() { int n[5]={0,0,0},i,k=2; for(i=0;i<k;i++) n[i]=n[i]+1; printf("%d\n",n[k]); } A. 不确定的值 B. 2 C. 1 D. 0
相关文档
最新文档