习 题 内 容 { int a[5]={1,1}; int i,j; printf(“%d %d\\n”,a[0],a[1]); for(i=1;i<4;i++) { a[i]=a[i-1]+a[i]; a[i+1]=1; for(j=0;j<=i+1;j++) printf(“%d”,a[j]); printf(“\\n”); } } 33、#include “stdio.h” main( ) { int a[10]={1,2,3,4,5,6,7,8,9,10}; int b[10]={10,9,8,7,6,5,4,3,2,1}; int i,j; printf(“a[%d]*b[%d]=%d\\n”,a[i],b[j],a[i]*b[j]); } 34、 34、#include “stdio.h” main( ) { int i,a[10]={1,2,3,4,5,6,7,8,9,10},temp; for(i=1,j=9;i<10 && j>0;i+=2,j-=3) 33、 答 案 输出结果:a[2]*b[1]=2 a[4]*b[4]=16 a[6]*b[7]=42 输出结果:10 1 2 3 4 5 6 7 8 9
31
习 题 内 容 temp=a[9]; 答 案 for(i=9;i;i--) a[i]=a[i-1]; a[0]=temp; for(i=0;i<10;i++) printf(“%d ”,a[i]); } 五、程序填空。 35、j=i 35、下面程序的功能是将字符串a中所有的字符a删除,请填空。 #include “stdio.h” main( ) { char a[50]; int i,j; printf(“Enter a string:”); gets(a); for(i=j=0;a[i]!=’\\0’;i++) if(a[i]!=’a’) ; a[j]=’\\0’; 36、 array[i]>array[j] puts(a); } 36、下面的程序是将array数组按从小到大进行排序,请填空。 #include “stdio.h” main( ) { int array[10]; int i,j,temp; printf(“Input 10 numbers please\\n”);
32
习 题 内 容 for(i=0; i<10;i++) scanf(“%d”,&array[i]); for(i=0; i<10;i++) for(j=i+1; j<10;j++) if( ) { temp=array[i]; array[i]=array[j]; array[j]=temp; } printf(“The sorted 10 number:\\n”); for(i=0; i<10;i++) printf(“%d\\t”,array[i]); } 答 案
33
指针习题 答 案 BDDDA 1. 单项选择题 CBBCC (1) 指针 pstr所指字符串的长度为 。char *pstr=\ A. 15 B. 14 C. 13 D. 12 (2) 对于 char **pstr;,以下正确的是 。 A. *pstr=\ B. pstr=\ C. *pstr=\ D. **pstr=\ (3) 以下程序段的输出结果为 。 char astr[5]=\ char *pstr=astr; printf(\ A. 1 B. 2 C. ASCII码值为 1 的字符 D. ASCII 码值为 2 的字符 (4) 下述程序段的输出结果为 。 char astr[]=\ char *pstr=&astr[5]; while(--pstr>=astr) putchar(*pstr); putchar('\\n'); A. abc B. cba C. abcde D. edcba (5) 若有定义 int a=1,*b,c;,以下不正确的是 。 A. b=a B. b=&a C. b=&a,c=*b D. c=a (6) 以下程序段的运行结果为 。 int num[]={1,2,3,4,5,6,7,8,9},*pnum=&num[2]; pnum++; ++pnum; printf(\ A. 3 B. 4 C. 5 D. 6 (7) 以下程序段的运行结果为 。 char *pstr=\ int n=0; while(*pstr++!='\\0') n++; printf(\ A. 12 B. 14 C. 16 D. 不确定 (8) 以下程序段的运行结果为 。 int num[9]={1,2,3,4,5,6,7,8,9},*p; p=num; *(p+1)=0; printf(\ A. 2,0,1 B. 1,0,1 C. 2,2,2 D. 1,1,1 (9) 以下程序段的运行结果为 。 int a=5,*p=&a,b,*q; a=10; *p=15; q=p;
34
*q=20; b=*q; p=&b; printf(\ A. a=5,b=10,*p=15,*q=20 B. a=20,b=15,*p=10,*q=5 C. a=20,b=20,*p=20,*q=20 D. a=15,b=15,*p=15,*q=15 (10) 已知 char *p,*q;,以下语句正确的是 。 A. p*5; B. p/=q; C. p+=5; D. p+=q;
35