习题三
一、单项选择题(下列每小题有4个备选答案,将其中的一个正确答案填到其后的括号内)
1.设有定义:int a[10],*p=a;,对数组元素的正确引用是()。
① a[p] ② p[a] ③ *(p+2) ④ p+2
2.若有如下定义,则不能表示数组a元素的表达式是()。
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
① *p ② a[10] ③ *a ④ a[p-a]
3.若有如下定义,则值为3的表达式是()。
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
① p+=2,*(p++) ② p+=2,*++p ③ p+=3,*p++ ④ p+=2,++*p
4.设有定义:char a[10]="ABCD",*p=a;,则*(p+4)的值是()。
① "ABCD" ②’D’ ③’\0’ ④不确定
5. 将p定义为指向含4个元素的一维数组的指针变量,正确语句为()。
① int (*p)[4]; ② int *p[4]; ③ int p[4]; ④ int **p[4];
6.若有定义int a[3][4];,则输入其3行2列元素的正确语句为()。
① scanf("%d",a[3,2]); ② scanf("%d",*(*(a+2)+1))
③ scanf("%d",*(a+2)+1); ④ scanf("%d",*(a[2]+1));
7.下面对指针变量的叙述,正确的是()。
①指针变量可以加上一个指针变量。
②可以把一个整形数赋给指针变量。
③指针变量的值可以赋给指针变量。
④指针变量不可以有空值,即该指针变量必须指向某一变量。
8.设有定义:int a[10],*p=a+6,*q=a;,则下列运算哪种是错误的()。
① p-q ② p+3 ③ p+q ④ p>q
9.C语言中,数组名代表()。
①数组全部元素的值②数组首地址
③数组第一个元素的值④数组元素的个数
10.若有如下定义,则数值为4的表达式是()。
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
char c=’a’,d,g;
① a[g-c] ② a[4] ③ a[’d’-’c’] ④ a[’d’-c]
11.设有定义:char s[12]="string";,则printf("%d",strlen(s));的输出结果是()。
① 6 ② 7 ③ 11 ④ 12
字符串长度排序c语言12.语句printf("%d",strlen("abs\no12\1\\"));的输出结果是()。
① 11 ② 10 ③ 9 ④ 8
13.设有定义:int t[3][2];,能正确表示t数组元素地址的表达式是()。
① &t[3][2] ② t[3] ③ t[1] ④ *t[2]
14.语句strcat(strcpy(str1,str2),str3);的功能是()。
①将字符串str1复制到字符串str2中后再连接到字符串str3之后。
②将字符串str1连接到字符串str2中后再复制到字符串str3之后。
③将字符串str2复制到字符串str1中后再将字符串str3连接到字符串str1之后。
④将字符串str2连接到字符串str1中后再将字符串str1复制到字符串str1中。
15.若有如下定义,则正确的叙述为()。
char x[]="abcdefg";
char y[]={’a’,’b’,’c’,’d’,’e’,’f’,’g’};
①数组x和数组y等价②数组x和数组y的长度相同
③数组x的长度大于数组y的长度④数组y的长度大于数组x的长度
二、程序分析题
1.下列程序的运行结果是
main()
{ int a[3][3]={{1,2},{3,4},{5,6}};
int i,j,s=0;
for(i=0;i<3;i++)
for(j=0;j<=i;j++)
s+=a[i][j];
printf("%d\n",s);
}
2.下列程序的运行结果是
main()
{ int i,j,k,n[3];
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]);
}
3.下列程序的运行结果是
main()
{ int a[]={2,4,6,8,10};
int y=1,x,*p;
p=&a[1];
for(x=0;x<3;x++)
y+=*(p+x);
printf("%d\n",y);
}
4.下列程序的运行结果是
main()
{ int i,c;
char num[][4]={"CDEF","ACBD"};
for(i=0;i<4;i++)
{ c=num[0][i]+num[1][i]-2*’A’;
printf("%3d",c);
}
}
5.下列程序的运行结果是
main()
{ char a[]="*****";
int i,j,k;
for(i=0;i<5;i++)
{ printf("\n");
for(j=0;j<i;j++) printf("%c",’’);
for(k=0;k<5;k++) printf("%c",a[k]);
}
}
6.下列程序的功能是
main()
{ int i,a[10],*p=&a[9];
for(i=0;i<10;i++) scanf("%d",&a[i]);
for(;p>=a;p--) printf("%3d",*p);
}
7.下列程序的运行结果是
main()
{ char ch[2][5]={"6937","8254"},*p[2];
int i,j,s;
for(i=0;i<2;i++) p[i]=ch[i];
for(i=0;i<2;i++)
{ s=0;
for(j=0;ch[i][j]!=’\0’;j++)
s=s*10+ch[i][j]-’0’;
printf("%5d",s);
}
}
8. 下列程序的运行结果是
#include "stdio.h"
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);
}
9.下列程序的运行结果是
#include "stdio.h"
main( )
{ int a=2,*p,**pp;
pp=&p;
p=&a;
a++;
printf("%d,%d,%d\n",a,*p,**pp);
}
10.下列程序的运行结果是
main( )
{ int a[6],i;
for(i=0;i<6;i++)
{ a[i]=9*(i-2+4*(i>3))%5;
printf("%2d",a[i]);
}
}
三、程序填空题(将下列程序的处填上正确的内容,使程序完整)
1.下列程序的功能是输出数组s中最大元素的下标。
main()
{ int k,i;
int s[]={3,-8,7,2,-1,4};
for(i=0,k=i;i<6;i++)
if(s[i]>s[k]) ;
printf("k=%d\n",k);
}
2.下列程序的功能是将一个字符串str的内容颠倒过来。
#include "string.h"
main()
{ int i,j,k;
char str[]="1234567";
for(i=0,j= ;i<j;i++,j--)
{ k=str[i];str[i]=str[j];str[j]=k;}
printf("%s\n",str);
}
3.下列程序的功能是把输入的十进制长整型数以十六进制数的形式输出。
main()
{ char b[]="0123456789ABCDEF";
int c[64],d,i=0,base=16;
long n;
scanf("%ld",&n);
do
{c[i]= ;i++;n=n/base;
}while(n!=0);
for(--i;i>=0;--i)
{ d=c[i];printf("%c",b[d]);}
}
4.下列程序的功能是从键盘输入若干个字符(以回车键作为结束)组成一个字符串存入一个字符数组,然后输出该数组中的字符串。
#include "stdio.h"
main()
{ char str[81],*ptr;
int i;
for(i=0;i<80;i++)
{ str[i]=getchar();
if(str[i]==’\n’) break;
}
str[i]= ;
ptr=str;
while(*ptr) putchar( );
}
5.下列程序的功能是将数组a的元素按行求和并且存储到数组s中。
main()
{ int s[3]={0};

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。