c语言第六章习题

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

17、设有以下定义:char *cc[2]={"1234","5678"}; 则正确的叙述是() A)cc 数组的两个元素中各自存放了字符串"1234"和"5678"的首地址 B)cc 数组的两个元素分别存放的是含有 4 个字符的一维字符数组的首地址 C)cc 是指针变量,它指向含有两个数组元素的字符型一维数组 D)cc 数组元素的值分别是"1234"和"5678" 18、若有以下定义:int x[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*p)[3]=x; 则能够正确表示数组元素 x[1][2]的表达式是() A)*((*p+1)[2]) B)(*p+1)+2 C)*(*(p+5)) D)*(*(p+1)+2)
19、以下正确的叙述是() A)C 语言允许 main 函数带形参,且形参个数和形参名均可由用户指定。 B)C 语言允许 main 函数带形参,形参名只能是 argc 和 argv。 C)当 main 函数带有形参时,传给形参的值只能从命令行中得到。 D)若有说明,main(int argc,char *argv),则形参 argc 的值必须大于 1。 20、main 函数的正确说明形式是() A)main(int argc,char **argv[]) B)main(int abc,char *abv) C)main(int argc,char argv) D)main(int c,char *v[]) 21、以下程序能找出数组 x 中的最大值和该值所在的元素下标,数组元素值从键盘输入。 main() { int x[10],*p1,*p2,k; for(k=0;k<10;k++) scanf("%d",x+k); if(*p1>*p2) p2=p1; 》 ); }
3
D)*(a[0]+1)
7、设有说明 int(*ptr)[M];其中 ptr 是() 。 A)M 个指向整型变量的指针 B)指向 M 个整型变量的函数指针
C)一个指向具有 M 个整型元素的一维数组的指针 D)具有 M 个指针元素的一维指针数组,每一元素只能指向整型量 8、如下程序的执行结果是() 。 main() { int i; A)a char *s="a\\\\\n"; B)a\ for(i=0;s[i]!='\n';i++) C)a\\ printf("%c",*(s+i)); D)a\\\\ }
12、若有定义:int *p[4];则标识符 p()。 A)是一个指向整型变量的指针 B)是一个指针数组
C)是一个指针,它指向一个含有四个整型元素的一维数组。 D)说明不合法 13、若有以下定义,且 0<=i<6,则正确的赋值语句是() 。int s[4][6],t[6][4],(*p)[6]; A)p=t; B)p=s; C)p=s[i]; D)p=t[i];
10、以下程序中调用 scanf 函数给变量 a 输入数值的方法是错误的,其错误原因是() main() { int *p,*q,a,b; p=&a; scanf("%d",*p);........ }
A)*p 表示的是指针变量 p 的地址 B)*p 表示的是变量 a 的值,而不是变量 a 的地址 C)*p 表示的是指针变量 p 的值 D)*p 只能用来说明 p 是一个指针变量 11、若有以下定义,则*(p+5)表示() 。int a[10],*p=a; A)元素 a[5]的地址 B)元素 a[5]的值 C)元素 a[6]的地址 D)元素 a[6]的值
第六章 练习题
一、填空题
1、定义 int a[]={1,2,3,4,5,6},*p=a;语句 printf("%d",(*++p)++);的输出结果是( 2、以下程序的执行结果是( main() { char s[]="abcdefg"; p=s; char *p; } ) 。 ) 。 ) 。
printf("ch=%c\n",*(p+5));
14、 若有定义: int a[4][6];则能正确表示 a 数组中任一元素 a[i][j](此处 0<=i<4,0<=j<6)地址的
4
表达式是() A)&a[0][0]+6*i+j B)&a[0][0]+4*j+I C)&a[0][0]+4*i+j D)&a[0][0]+6*j+i
15、以下选项中,对指针变量 p 的正确操作是() A)int a[5],*p;p=&a; C)int a[5];int *p=a=1000 B)int a[5],*p;p=a; D)int a[5];int *p1,*p2=a; *p1=*p2; 16、若有以下定义,且 0<=i<5,则对数组 a 元素的非法引用是() int a[5],*p=a; A)a[i] B)*(a+i) C)*(p+i) D)*(&a+i)
二、选择题
1、以下程序的运行结果是() void sub (int x,int y,int *z) { *z=y-x;} main() { int a,b,c; sub(10,5,&a); 2, 3 sub(7,a,&b); B) D) sub(a,b,&c); printf("%4d,%4d,%4d\n",a,b,c);} -5, -12, 5, -2, -7 -7
17、下面程序的运行结果是() 。 main() { char *a[]={"P","C","B","L"}, (* *p)[ ]; int j; p=a+3; for(j=3;j>=0;j--) printf("%s",*(p--));}
18、以下程序的执行结果是() 。 main() { char *p1,*p2,str[20]="xyz"; strcpy(str+1,strcat(p1+1,P2+1)); p1="abcd"; p2="ABCD";
3、以下程序的执行结果是( main() { int a[][={1,2,3,4,5,6}; for(p=&a[5];p>=a;p--) printf("\n"); } 4、以下程序的执行结果是( main()
printf("%d",*P);
) 。
{ int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i; for(i=0;i<4;i++) p[i]=&a[i*3]; printf("%d\n",p[3][2]);} 5、设包含如下程序的文件名为 myprog.c,编译后键入命令:myprog one two three,则执行 结果是( ) 。
wk.baidu.com
printf("%s",str); }
19、若输入的值分别是 1 3 5,下面程序的运行结果是() main() {int a=0,i,*p,sum; for(i=0;i<=2;i++) s(int *p) {int sum=10; sum=sum+*p; return(sum); } p=&a; { scanf("%d",p); sum=s(p); printf("sum=%d,",sum); }}
A) 5, C)
-5, -12, -17
2、执行以下程序后,b 的值为() main() {int b,k=4,m=6,*p1=&k,*p2=&m; A)5 B)6 b=(-*p1)/(*p2)+7; C)7 printf("%d\n",b); D)10 }
3、下面程序应能对两个整型变量的值进行交换。以下正确的说法是() main() {int a=10,b=20; swap(int p,int q) { int t; t=p;p=q;q=t;} printf("%d,%d",a,b); swap(&a,&b); printf("%d,%d",a,b); }
9、有四组对指针变量进行操作的语句,以下判断正确的选项是() (1)int *p,*q;q=p; int a,*p,*q;*p=*q=&a; (2)int a,*p,*q;q=&a;p=*q; int a=20,*p;*p=a; (3)int a=b=0,*p;p=&a;b=*p; int a=20,*p,*q=&a;*p=*q; (4)int a=20,*p,*q=&a;p=q; int p,q;q=&p; A)(1)正确,其余错 C)(3)正确,其余错 B)(1),(4)正确,其余错 D)以下结论都不正确
8、下面程序段的运行结果是( char str[]="abc\0def\0ghi"; 9、若有以下定义和语句: int a[4]={0,1,2,3},*p; p=&a[1]; char *p=str;
则++(*p)的值是(
) 。 ) ,*(a[1]+2)
10、 若有定义: int a[2][3]={2,4,6,8,10,12};则*(&a[0][0]+2*2+1)的值是 (
22、下面程序段的运行结果是() char a[]="123456789",*p; int i=0; p=a;
2
while(*p) {if(i%2==0) *p='*';
p++;i++;
}
puts(a);
23、下面程序的运行结果是() 。 main() { char *str[]={"Pascal","C p=str; for(k=0;k<4;k++) printf("%s,",*(p++)); } language","Dbase","Cobol"}; char **p; int k;
16、若有以下输入:1,2<CR>(<CR>代表回车) ,则下面程序的运行结果是() 。 main() {int a[2][3]={2,4,6,8,10,12} , (*p)[3],i,j; p=a; scanf("%d,%d",&i,&j); printf("%d\n",*(*(p+i)+j); )
A)该程序完全正确 B)该程序有错,只要将语句 swap(&a,&b);中的参数改为 a,b 即可 C)该程序有错,只要将 swap()函数中的形参 p 和 q 以及 t 均定义为指针(执行语句为变) 即可 D)以下说法都不正确 4、设*p,i;以下正确的语句是() 。 A)*p=&i; B)i=p; C)i=*p; D)p=2*p+1;
1
的值(
) 。 ) , *(a+5) 的 值是
11 、 若有 定 义: int a[]={2,4,6,8,10,12},*p=a; 则 *(p+1) 的 值是 ( ( ) 。 p=&a[2];
12、若有以下定义和语句: int a[4]={0,1,2,3},*p; 13、若有以下定义和语句: int s[2][3]={0},(*p)[3];
则*--p 的值是() 。
p=s; 则(*(p+1)+2)的值是() 。 ) ,*(*(a+1)+0)的值是
14、若有定义: int a[2][3]={2,4,6,8,10,12}; 则 a[1][0]的值是( ( ) 。
15、若有定义:int a[]={2,4,6,8,10,12,14,16,18,20,22,24},*q[3],k;则下面程序段的输出是() 。 for(k=0;k<3;k++) q[k]=&a[k*4]; printf("%d\n",q[2][3]);
main(int argc,char *argv[]) { int i; for(i=1;i<argc;i++) printf("%s%c",argv[i],(i<argc-1)?":');} 6、下面程序的运行结果是( )
char s[80],*sp="HELLO!";sp=strcpy(s,sp); s[0]='h'; puts(s); 7、下面程序段的运行结果是( char *s1="AbcdEf",*s2="aB"; s1++; t=(strcmp(s1,s2)>0); printf("%d\n",t); ) printf("%s",p+5) )
20、下面程序段的运行结果是() char s[20]="abcd"; char *sp=s; sp++; puts(strcat(sp,"ABCD"));
21、下面程序段的运行结果是() char a[]="12345",*p; for(p=a;*p!='\0';p++) int s=0; s=10*s+*p-'0'; printf("%d\n",s);
5、设 char s[10];int i=1;以下正确的表达式是() 。 A)[i+2] B)*(s+i) C)*(&s+i) D)*((s++)+i)
6、 设有语句: int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;以下对 a 数组的元素值不正确的引用是() 。 A)a[p-a] B)*(&a[i]) C)p[i]
相关文档
最新文档