C语言数组和指针练习题.docx
- 文档编号:4449221
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:40
- 大小:32.28KB
C语言数组和指针练习题.docx
《C语言数组和指针练习题.docx》由会员分享,可在线阅读,更多相关《C语言数组和指针练习题.docx(40页珍藏版)》请在冰豆网上搜索。
C语言数组和指针练习题
若当堂没做完,下周四之前上交也可。
至ftp:
//211.64.82.253/
用户名和密码:
stu
C语言程序设计练习题——数组
一、选择题
77、以下对一维数组a的正确说明是_d___
A、chara(10); B、inta[];
C、intk=5,a[k];D、chara[]={'a','b','c'};
78、若有说明语句:
inta[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、staticinty[2][]={{1,0,1},{5,2,3}};
B、staticinty[][3]={{1,2,3},{4,5,6}};
C、staticinty[2][4]={{1,2,3},{4,5},{6}};
D、staticinty[][3]={{1,0,1,0},{},{1,1}};
80、若有说明语句:
inty[][4]={0,0};则下面叙述不正确的是_d___
A、数组y的每个元素都可得初值0
B、二维数组y的行数为1
C、该说明等价于inty[][4]={0};
D、只有元素y[0][0]和y[0][1]可得到初值0,其余元素均得不到初值0
81、以下各组选项中,均能正确定义二维实型数组s的选项是_c___
A、floats[3][4]; B、floats(3,4);
floats[][4];floats[][]={{0};{0}};
floats[3][]={{1},{0}};floats[3][4];
C、floats[3][4];D、floats[3][4];
staticfloats[][4]={{0},{0}};floats[3][];
autofloats[][4]={{0},{0},{0}};floats[][4];
82、若有说明语句:
inta[][3]={1,2,3,4,5,6,7,8};,则a数组的行数为__a__
A、3 B、2 C、无确定值 D、1
83、若二维数组y有m列,则在y[i][j]前的元素个数为_B___
A、j*m+i B、i*m+j
C、i*m+j-1 D、i*m+j+1
84、下面程序中有错误的行是____
1、main()
2、{
3、intx[3]={1};
4、intk;
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、5
85、若有以下语句,则正确的描述是__b__
charx[]="12345";
chary[]={'1','2','3','4','5'};
A、x数组与y数组的长度相同
B、x数组长度大于y数组长度
C、x数组长度小于y数组长度
D、x数组等价于y数组
86、以下不正确的数组定义语句是__b__
A、doublex[5]={2.0,4.0,6.0,8.0,10.0};
B、inty[5]={0,1,3,5,7,9};
C、charch1[]={'1','2','3','4','5'};
D、charch2[]={'\x10','\xa','\x8'};
87、以下正确的数组定义语句是_c___
A、chara[5]={'1','2','3','4','5','\0'};
B、intb[2][]={{1},{2}};
C、floatc[][3]={1,2,3,4,5};
D、chard[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___
charx[5]={'a','b','\0','c','\0'};
printf("%s",x);
A、'a''b' B、ab C、ab└┘c D、abc
90、有两个字符数组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___
chara[7]="abcdef";
charb[4]="ABC";
strcpy(a,b);
printf("%c",a[5]);
A、└┘ B、\0 C、e D、f
93、以下描述正确的是_d___
A、两个字符串所包含的字符个数相同时,才能比较字符串
B、字符个数多的字符串比字符个数少的字符串大
C、字符串"STOP└┘"与"STOP"相等
D、字符串"That"小于字符串"The"
94、以下对字符数组的描述中错误的是_c___
A、字符数组中可以存放字符串
B、字符数组中的字符串可以整体输入、输出
C、可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
D、不可以用关系运算符对字符数组中的字符串进行比较
95、若有语句:
chars1[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、7 B、6 C、存在语法错误 D、不定值
97、下面程序的功能是将字符串s中所有的字符c删除。
请选择填空。
____
#include
main()
{chars[80];
inti,j;
gets(s);
for(i=j=0;s[i]!
='\0';i++)
if(s[i]!
='c')_a___
s[j]='\0';
puts(s);
}
A、s[j++]=s[i] B、s[++j]=s[i]
C、s[j]=s[i]; D、s[j]=s[i];
98、当运行以下程序时候,从键盘输入:
ab<回车>
c<回车>
def<回车>
则下面程序的运行结果是_d_
#include
#defineN6
main()
{charch1[N];
intk=0;
for(;k for(k=0;k } A、abcdef B、 a C、 b D、 ab b c c c d d d e f 99、下面程序的运行结果是_b___ #include #include main() {charx[80]="AB",y[80]="LMNP"; (98题答案: ) intn=0; strcat(x,y); while(x[n++]! ='\0') y[n]=x[n]; puts(y); } A、LB B、ABLMNP C、AB D、LBLMNP 二、填空题 50、在C语言中,二维数组元素在内存中的存放顺序是_按行储存_______。 51、若有定义: doublex[3][5];,则x数组中行下标的下限为_2___,列下标的上限为__4__。 52、若二维数组a有m列,则计算任一元素a[i][j]在数组中相对位置的公式为_i*m+j+1_______。 (设a[0][0]是数组的第一个元素) 53、若有定义: inta[3][4]={{1,2},{0},{4,6,8,10}};,则初始化后,a[1][2]得到的初值是__0__,a[2][1]得到的初值是__6__。 54、若有说明: chars[20];,如果想从键盘上把字符串: Thisisabook.输入到数组s中,应当调用的函数是_gets()_____,函数调用语句的形式是__gets(s)_____。 55、请写出下面各printf语句的结果。 ①、printf("%s\n",strcat("school","student")); __schoolstudent__________ ②、printf("%d\n",strlen("CHINA")+strlen("C")); __6__ ③、printf("%d\n",strcmp("The","The")); __0__ 56、根据下面说明和要求,完成对应的填空。 ①、若有: charstr1[10],str2[]={"student"};能把str2中的字符串赋给str1的串函数调用语句是____strncpy(str1,str2)___________ ②、若有: charstr1[20]={"agood"},str2[]= {"student"};能把str2中的字符串接到str1中的字符串后面的串函数调用语句是_strncat__ 57、下面程序将二维数组a的行和列元素互换后存到另一个二维数组b中。 请填空。 main() {inta[2][3]={{1,2,3},{4,5,6}}; intb[3][2],i,j; printf("arraya: \n"); for(i=0;i<=1;i++) {for(j=0;_j<=2___;j++) {printf("%5d",a[i][j]); __b[j][i]=a[i][j]__________; } printf("\n"); } printf("arrayb: \n"); for(i=0;_i<=2___;i++) {for(j=0;j<=1;j++) printf("%5d",b[i][j]); printf("\n"); } } 58、下面程序可求出矩阵a的两条对角线上的元素之和。 请填空。 main() {staticinta[3][3]={1,3,6,7,9,11,14,15,17}; intsum1=0,sum2=0,i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) if(i==j) sum1+=a[i][j]; for(i=0;i<3;i++) for(_j=3___;_j>=0___;j--) if(i+j==2) sum2+=a[i][j]; printf("sum1=%d,sum2=%d\n",sum1,sum2); } 59、下面程序的功能是将二维数组a中每个元素向右移一列,最右一列换到最左一列,移后的数组存到另一个二维数组b中,并按矩阵形式输出a和b。 请填空。 例如: main() {staticinta[2][3]={4,5,6,1,2,3}; intb[2][3],i,j; printf("arraya: \n"); for(i=0;i<=1;i++) {for(j=0;j<3;j++) {printf("%5d",a[i][j]); If(j<=1)b[i][j+1]=a[i][j]____________; } printf("\n"); } for(i=0____;i<=2____;i++) b[i][0]=a[i][2]; printf("arrayb: \n"); for(i=0;i<2;i++) {for(j=0;j<3;j++) printf("%5d",b[i][j]); _if(j=3)printf(“\n”)_______; } } 60、下面程序的功能是检查一个二维数组是否对称(即对所有的a[i][j]=a[j][i])。 请填空。 main() {staticinta[4][4]={1,2,3,4,2,2,5,6,3,5,3,7,4,6,7,4}; inti,j,found=0; for(j=0;j<4;j++) for(i=0____;i<4;i++) if(a[i][j]! =a[j][i]) {found=1______; break; } if(found) printf("No"); else printf("Yes"); } 61、下面程序段将输出computer,请填空。 charc[]="It'sacomputer"; for(i=0;c[i]! =’\0’______;i++) {if(i<=8)continue______; printf("%c",c[j]); } 62、以下程序的功能是对从键盘输入的两个字符串进行比较,并输出两个字符串中第一个不相同字符的ASCII码之差。 例如: 输入的两个字符串分别为these和there,则输出是1。 请填空。 #include main( ) {chars1[100],s2[100]; intx,y; printf("\nInputstring1: \n"); gets(s1); printf("\nInputstring2: \n"); gets(s2); x=0; while((s1[x]==s2[x])&&(s1[x]! =‘\n’____)) x++; y=s1[x]-s2[x]________; printf("%d\n",y); } 63、以下程序的输出结果是_1110___ main() {intx[6],a=0,b,c=14; do {x[a]=c%2; a++; c=c/2; }while(c>=1); for(b=a-1;b>=0;b--) printf("%d",x[b]); printf("\n"); } 64、下面程序的功能是在一个字符数组中查找一个指定的字符,若数组中含有该字符则输出该字符在数组中第一次出现的位置(下标值);否则输出-1。 #include #include main() {charc='a',t[50]; intn,k,j; gets(t); n=_strlen(t)_____; for(k=0;k if(_t[k]=_____) {j=k;break;} elsej=-1; printf("%d",j); } 65、下面程序的功能是把以下给定的字符按其矩阵格式读入数组str1中,并输出行列号之和是3的数组元素。 请填空。 main() {charstr1[4][3]={'A','b','C','d','E','f','G','h','I','j','K','l'}; intx,y,z; for(x=0;x<4;x++) for(y=0;_y<3___;y++) {z=x+y; if(___z==3___) printf("%c\n",str[x][y]); } } 66、下面程序的功能是输出两个字符串中较短串的长度。 请填空。 #include main() {charstr1[20],str2[20]; inti,k,num; gets(str1);gets(str2); i=strlen(str1);k=strlen(str2); num=_i>=k_____? _k___: _i___; printf("%d\n",num); } 67、下面程序的功能是在三个字符串中找出最小的串。 #include #include main() {chars[20],str[3][20]; inti; for(i=0;i<3;i++) gets(str[i]); strcpy(s,__strcmp(str1,str0)<0? str1: str0_____________); if(strcmp(str[2],s)<0) strcpy(s,str[2]); printf("%s\n",_s___); } 68、当运行以下程序时,从键盘输入: GOOD<回车> TEACH<回车> SET<回车> ROOM<回车> 则程序的运行结果是_SETCHter_____ #include #include main() {inti; charstr[10],temp[10]="Computer"; for(i=0;i<4;i++) {gets(str); if(strcmp(temp,str)<0) strcpy(temp,str); } puts(temp); } C语言程序设计练习题——指针 一、选择题 133、设有定义: inta=1,*p=&a;floatb=2.0;charc='A';,以下不合法的运算是__a__ A、p++; B、a--; C、b++; D、c--; 134、以下程序执行后a的值为____ main() {inta,m=2,k=1,*p=&k; a=p==&m; printf("%d\n",a); } A、-1B、0C、1D、2 135、以下对指针变量的操作中,不正确的是_d__ A、intp,*q;q=&p; B、int*p,*q;q=p=NULL; C、inta=5,*p;*p=a; D、inta=5,*p,*q=&a;*p=*q; 136、以下对指针变量的操作中,不正确的是_d__ A、inta,*p,*q;p=q=&a; B、inta=6,*p,*q=&a;p=q; C、inta=b=6,*p;p=&a;b=*p; D、inta,*p,*q;q=&a;p=*q; 137、设有语句: intk=1,*p1=&k,*p2=&k;,以下不能正确执行的赋值语句是_a___ A、p1=kB、p1=p2 C、*p1=*p2D、k=*p1+*p2 138、若有语句: inta=4,*p=&a;,下面均代表地址的一组选项是_c___ A、a,p,&*a B、*&a,&a,*p C、&a,p,&*p D、*&p,*p,&a 139、设已有说明语句: inti=5,*q;,若要建立如图所示的存储结构,以下正确的赋值语句是____(无图) A、q=i;B、*q=i;C、q=&i;D、*q=&i; 140、若有说明语句: charc='9',*sp1,*sp2;,以下均正确的一组赋值语句是_a___ A、sp1=&c;sp2=sp1; B、sp1=&c;sp2=&sp1; C、sp1=&c;sp2=*sp1; D、sp1=&c;*sp2=*sp1; 141、以下判断正确的是_c___ A、char*s="string";等价于char*s;*s="string"; B、charstr[10]={"string"};等价于: charstr[10];str={"string"}; C、char*s="string";等价于char*s;s="string"; D、charstr[10]={"string"};等价: charstr[10];*str={"string"}; 142、以下能正确进行字符串赋值操作的是__d__ A、chars[5]={"ABCDE"}; B、chars[5]={'A','B','C','D','E'}; C、char*s;*s="ABCDE"; D、char*s="ABCDE"; 143、下面程序段的运行结果是__d__ char*s="abcde"; s+=1; printf("%d",s); A、bcde B、字符'b'的地址 C、字符'c'的地址D、字符'b'的ASCII值 144、以下能正确读入字符串的程序段是___c_ A、char*p;scanf("%s",p); B、charstr[10];scanf("%s",&str); C、charstr[10],*p;p=str;scanf("%s",p); D、charstr[10],*p=str;scanf("%s",p[1]); 145、设有说明语句: char*str=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言 数组和指针练习题 语言 数组 指针 练习题