首页 上海市计算机二级考试(C语言)复习资料题目

上海市计算机二级考试(C语言)复习资料题目

举报
开通vip

上海市计算机二级考试(C语言)复习资料题目05年C语言二级考试复习资料 上海理工大学 上海市计算机二级考试(C语言)复习资料题目 C语言是一种面向过程的程序设计语言,函数、指针、地址和递归概念是它的难点。本复习资料以教学大纲为依据,提供各类题型和练习,重在“基本概念”、“常用算法”、“阅读分析程序”、“编程技能”等诸方面的强化训练,按照上海市计算机二级考试(C语言)的框架,提供“基础知识、读程序写结果、改错、编程序和程序指令填空”几部份,供学生学习参考,文末附习题参考解答。 第一部份:基础知识 1. 下述循环的循环次数是() int k=2; while(...

上海市计算机二级考试(C语言)复习资料题目
05年C语言二级考试复习资料 上海理工大学 上海市计算机二级考试(C语言)复习资料题目 C语言是一种面向过程的程序设计语言,函数、指针、地址和递归概念是它的难点。本复习资料以教学大纲为依据,提供各类题型和练习,重在“基本概念”、“常用算法”、“阅读 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 程序”、“编程技能”等诸方面的强化训练,按照上海市计算机二级考试(C语言)的框架,提供“基础知识、读程序写结果、改错、编程序和程序指令填空”几部份,供学生学习参考,文末附习题参考解答。 第一部份:基础知识 1. 下述循环的循环次数是() int k=2; while(k=0)printf("%d",k); k--;printf("\n"); A、无限次 B、0次 C、1次 D、2次 2. 在下列选项中,没有构成死循环的程序段是() A、int i=100; B、for(;;) while(1) {i=i%100+1; if(i>100)break; } C、int k=1000; D、int s=36; do {++k;} while(k>=10000); while(s);--s; 3. 若有以下定义和语句,且0<=i<10,则对数组元素的错误引用是() int a[]={0,1,2,3,4,5,6,7,8,9},*p,i; p=a; A、*(a+i) B、a[p-a] C、p+i D、*(&a[i]) 4. 下面能正确将字符串"Boy"进行完整赋值操作的语句是() A、char s[3]={'B','o','y'}; B、char s[ ]="Boy"; C、char s[3]={"Boy"}; D、char s[3]; s[0]='B';s[1]='o';s[2]='y'; 5. 以下程序段的输出结果是( ) char arr[ ]="ABCD"; char*ptr; for(ptr=arr;ptr 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 达式 B、一个整型表达式 C、一种函数调用 D、一个不合法的表达式 14. 下述循环的循环次数是() int k=2; while(k=0)printf("%d",k); k--;printf("\n"); A、无限次 B、0次 C、1次 D、2次 15. 若有以下定义和语句,且0<=i<10,则对数组元素的错误引用是() int a[]={0,1,2,3,4,5,6,7,8,9},*p,i; p=a; A、*(a+i) B、a[p-a] C、p+i D、*(&a[i]) 16. 若二维数组a有m列,则在a[i][j]前的元素个数为() A、j*m+i B、i*m+j C、i*m+j-1 D、i*m+j+1 17. 对两个数组a和b进行如下初始化 char a[ ]=”ABCDEF”; char b[ ]={‘A’,’B’,’C’,’D’,’E’,’F’}; 则以下叙述正确的是( ) A、a与b 数组完全相同 B、a 与b 长度相同 C、a 和b中都存放字符串 D、a数组比b 数组长度长 18. C语言中有关全局变量的说法,正确的是() A、在使用到它的所有文件中均需定义 B、在函数体外定义一次 C、在main函数中定义 E、​ 在main函数外定义 19. 若有数组名作为函数调用时的实参,则传递给该函数形参的是() A、数组的首地址 B、数组的第一个元素的值 C、数组中全部元素的值 D、数组元素的个数 20. 下面程序段的输出结果是() int a[][3]={1,2,3,4,5,6,7,8,9,10,11,12},(*p)[3]; p=a; printf(“%d\n”,*(*(p+1)+2)); A、3 B、4 C、6 D、7 21. 不属于C语言程序基本结构的是( ) A)顺序结构 B)选择结构 C)函数结构 D)循环结构 22. 若有定义及赋值: int a[6][6],*p;p=*a; 则下列各式中能表示元素a[0][1]列地址的表达式是 。 A)&a[0]+1 B)a[0]+1 C)*(p+1) D)p+1 23. 十进制数123转换成十六进制数是 。 A) 7AH B) 7BH C) 7CH D) 7DH 24. C语言中合法的字符常量是 。 A) '\058' B) 'ab' C) '\xab' D) ”\0” 25. 下列字符中,ASCⅡ码值最小的是 。 A) A B) a C) 0 D) 空格 26. 下面程序输出结果是__________ main() {int k=0; char c='A'; do { switch( c++ ) { case 'A': k++; break; case 'B': k--; case 'C': k+=2; break; case 'D': k=k%2; continue; case 'E': k=k*10; break; default: k=k/3; } k++; }while( c<'G' ); printf( "k=%d\n",k ); } A)k=3 B)k=4 C)k=2 D)k=0 27. 设有如下定义:int x=l,y=-1;,则语句:printf("%d\n",(x--&++y));的输出结果是( ) A)1 B)0 C)-1 D)2 28. C语言规定,函数返回值的类型是由 。 A)​ return语句中的表达式类型所决定 B)​ 调用函数时的主调函数类型所决定 C)​ 调用函数时系统临时决定 D)​ 在定义该函数时所指定的函数类型所决定 29. 下列定义中,不是指针数组定义的是 。 A)int *p[5]; B)float *q[4]; C)int (*r)[6]; D)char *w[7]; 30. 以下程序运行结果为__________ #define PT 3.5 #define S(x) PT*x*x main() { int a=1, b=2; printf("%4.1f\n",S(a+b)); } A)14.0 B)31.5 C)7.5 D)10.5 31. 下面程序输出结果是( ) main() { char a[]="ABCDEFG", k, *p; fun(a, 0, 2); fun(a, 4, 6); printf("%s\n", a); } fun(char *s, int p1, int p2) { char c; while(p1=’A’)and (ch <=’z’) C) (ch >= ‘A’)&&(ch <=’Z’) D) (‘A’<=ch )||(‘Z’>=ch) 42. 以下程序的输出结果是 ( ) 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 43. 下面程序的运行结果是( ) main() { char ch[7]={"65ab21"}; int i,s=0; for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2) s=10*s+ch[i]-'0'; printf("%d\n",s); } A)12ba56 B)6521 C)6 D)62 44. 以下程序运行后的结果是( )。 main() { char s[]="12345678"; int v[4]={0,1,1,0},k,i; for (k=0; s[k];k++) {switch (s[k]) {case'1': i=0; case'2': i=1; case'3': i=2; case'4': i=3; } v[i]++; } for(k=0;k<4;k++) printf("%d ",v[k]); } A)0 1 2 3 B)0 1 1 8 C)5 6 7 8 D)0 2 4 6 45. 下面程序输出结果是 ( ) main() {int k=0; char c='A'; do { switch( c++ ) { case 'A': k++; break; case 'B': k--; case 'C': k+=2; break; case 'D': k=k%2; continue; case 'E': k=k*10; break; default: k=k/3; } k++; }while( c<'G' ); printf( "k=%d\n",k ); } A)k=3 B)k=4 C)k=2 D)k=0 46. 二进制数1110111B转换成十六进制数是 ( ) A)77H B)37H C)73H D)E7H 47.能正确表示a和b同时为正或同时为负的逻辑表达式是 ( ) A)(a>=0‖b>=0)&&(a<0‖b<0) B)(a>=0&&b>=0)&&(a<0&&b<0) C)(a+b>0)&&(a+b<=0) D)a*b>0 48. 要把高级语言编写的源程序转换为目标程序,需要使用 ( ) A) 编辑程序 B) 驱动程序 C) 诊断程序 D) 编译程序 49.英文小写字母d的ASCII码为100(十进制),英文大写字母D的ASCII码为 ( ) A)50 B) 66 C) 52 D) 68 50. 下面程序输出结果是 ( ) void prtv(int *x) { printf("%d\n",++*x); } main() { int a=25;prtv(&a); } A)23 B)24 C)25 D)26 51. 下面程序的输出是( ) int aa[3][3] = {{2},{4},{6}}; main() { int i, *p = &aa[0][0]; for (i = 0; i< 2; i++) {if(i == 0) aa[i][i+1] = *p + 1; else ++p; printf("%d", *p);} } A)23 B)26 C)33 D)36 52. 该程序的执行结果是( ) #include #include main() { int fun(char*,int); char *p; p="1234567"; fun(p,strlen(p)); puts(p); } int fun(char *w,int n) { char t,*s1,*s2; s1=w; s2=w+n-1; while (s1 main() { char *a="1234"; fun(a); printf("\n"); } fun(char *s) { char t; if (*s) {t=*++s; putchar(t); fun(s); } } 55. 若有定义及赋值: int a[6][6],*p;p=*a; 则下列各式中能表示元素a[0][1]列地址的表达式是 ( ) A)&a[0]+1 B)a[0]+1 C)*(p+1) D)p+1 56. 如果用八位二进制补码表示带符号的定点整数, 则能表示的十进制数的范围是 ( ) A) -127到+127 B) -128到+128 C) -127到+128 D) -128到+127 57. 若有定义及赋值: int y,*p,*p1; p=&y;p1=p;*p1=4; 则可以输出变量y的地址的语句是 ( ) A)printf("%u\n",y); B)printf("%u\n",*p1); C)printf("%u\n",*p); D)printf("%u\n",&y); 58. 设有int y,u=0,x=15,下列各项中不能使y值为0的是() A) y=x∧x; B、y=x∣u; C、y=x>>4; D、y=x&u; 59.二进制数1111111.101B转换成十六进制数是 ( ) A) FF.AH B) FF.5H C)7F.AH D)7F.5H 60.字符串”123”在计算机内所占用的字节数是 ( ) 个。 A) 1 B) 2 C) 3 D) 4 61. C语言中最基本的数据类型包括 ( ) A)整型、实型、逻辑型 B)整型、实型、字符型 C)整型、字符型、逻辑型 D)整型、实型、逻辑型、字符型 62. C语言中有关do—while循环的说法,正确的是 ( ) A)在if语句内不能再使用do-while语句构成的循环 B)do-while语句构成的循环必须用break语句才能退出 C)do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D)do-while语句构成的循环,当while语句中的表达式值为零时结束循环 63.在C语言中,不正确的int类型的常数是( ) A) 32768 B) 0 C) 037 D) Xaf 64. 设有如下定义: int a=2,b=1,c=3,d=4,m=2,n=2; 则执行表达式:(m=a>b)&&(n=c>d)后,n的值为 ( ) A) 1 B) 2 C) 3 D) 0 65.设a,b类型正确,语句:printf("%d",(a=2)&&(b= -2));的执行结果是( ) A) 2 B) –2 C) 1 D) 0 66.设有如下定义:int x=l,y=-1;,则语句:printf("%d\n",(x--&++y));的输出结果是( ) A)1 B)0 C)-1 D)2 67. 若有以下定义和语句,且0<=i<10,则对数组元素的错误引用是( ) int a[]={0,1,2,3,4,5,6,7,8,9},*p,i;p=a; A) *(a+i) B) a[p-a] C) p+i D) *(&a[i]) 68. 以下程序段的输出结果是 ( ) char arr[ ]="ABCD"; char *ptr; for(ptr=arr;ptr=y>=z,应使用C语言表达式( ) A)(x>=y)&&(y>=z) B)(x>=y)AND(y>=z) C)(x>=y>=z) D)(x>=y)&(y>=z) 73. 以下不能对二维数组a进行正确初始化的语句是( ) 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}; 74. 以下不正确的描述是( ) A)break语句不能用于循环语句和switch语句外的任何其它语句 B)在switch语句中使用break语句或continue语句的作用相同 C)在循环语句中使用continue语句结束本次循环,但不会终止整个循环 D)在循环语句中使用break语句是,会跳出循环体,提前结束循环 75. 若有以下定义和语句 char s[12]="a book!"; printf("%d",strlen(s)); 则输出结果是( ) A)12 B)8 C)7 D)6 76. 以下程序的输出结果是( ) main() { int a=2,i; for(i=0;i<3;i++) printf("%d",func(a)); } func(a) int a; { int b=0; static int c=3; b++;c++; return(a+b+c); } A)777 B)7 7 7 C)789 D)7 8 9 77. 执行下面的程序后, y 的值是( ) main() { int a[]={2,4,6,8,10}; int y=1, x, *p=a+1; for( x=0; x<3; x++ ) y+=*(p+x); printf( "%d\n", y ); } A)17 B)18 C)19 D)20 78. 下面程序的输出是( ) int aa[3][3] = {{2},{4},{6}}; main() { int i, *p = &aa[0][0]; for (i = 0; i< 2; i++) {if(i == 0) aa[i][i+1] = *p + 1; else ++p; printf("%d", *p);} } A)23 B)26 C)33 D)36 79. 设有以下定义: int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*ptr)[3]=a, *p = a[0]; 则以下能够正确表示数组元素a[1][2]值的表达式的是( ) A)*(*ptr+1)[2] B)*(*(P+5)) C)(*ptr+1)+2 D)*(*(a+1)+2) 80. 设有如下的程序段: char str[]="Hello"; char *ptr; ptr=str; 执行完上面的程序段后,*(ptr+5)的值为( ) A)'o' B)'\0' C)不确定的值 D)'o'的地址 81. 假设已定义 char a[10] 和 char *p=a,下面的赋值语句中,正确的是( ) A)a[10]="Turbo C" B)a="Turbo C" C)*p="Turbo C" D)p="Turbo C" 82. 下面程序输出结果是( ) main() { char a[]="ABCDEFG", k, *p; fun(a, 0, 2); fun(a, 4, 6); printf("%s\n", a); } fun(char *s, int p1, int p2) { char c; while(p1=20) break; if(b%3==1) {b+=3;continue; } b-=5; } } A)7 B)8 C)9 D)10 90. 下面程序的运行结果是( ) main() { char ch[7]={"65ab21"}; int i,s=0; for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2) s=10*s+ch[i]-'0'; printf("%d\n",s); } A)12ba56 B)6521 C)6 D)62 91. 若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式为( ) A)p+1 B)a+1 C)a++ D)++p 92. struct student { int age; int num; }stud1,*p; p=stud1; 对结构体变量stud1中成员age的不正确引用方式为( ) A)stud1.age B)student.age C)(*p).age D)p->age 93. 若有以下的说明,则输出结果为( ) union un { int a; char c[2]; }w; w.c[0]=0x49;w.c[1]=0x48; printf("%x\n",w.a); A)4948 B)4849 C)480049 D)490048 94. C语言中的文件类型只有( ) A)索引文件和文本文件两种 B)ASCII文件和二进制文件两种 C)文本文件一种 D)二进制文件一种 95. 请写出将整数n(0≤n≤9)转化为数字字符(ASCII字符)的表达式。 96. 写出表达式 (0x1234 & 0xDF) << 8 的16进制结果。 97. 分别写出下面两式的计算结果(括号内是二进制数): (11010101)&(01001011) 和 (11010101)&&(01001011) 98. 试计算以下表达式的值 ( int) ((( float )32 / 5 + (int )(6.8) * 2.5 ) * 4) 99. 表达式 (11^5) 的结果为: 100. 设有如下定义 int x = 6; 执行语句 x+=x-=x*x; 后 请写出 x 的值 第二部分 读程序,写结果 1.​ 设有数组a的定义: int a[]={1,2,3,4}; 语句: a[3]=--a[0]?a[1]++:a[2]++; 执行后,数组a的各元素依次为 。 2.​ 下面的程序段执行后, #define ROUND3(x) (int)(x*1000+0.5)/1000.0 … printf(“%f”,ROUND3(3.1416)); 输出的结果是 。 3.​ 设有函数段如下: int efg(int a,int b) { if (a%b==0) return b; else return efg(b,a%b); } … c=efg(48,8); 则 c 的值是 。 4. 假设m是一个三位数,从左到右用a,b,c表示各位上的数字,现将该三位数上的百位数与十位数交换,则从左到右各位数字是bac的三位数其表达式是 。 5.​ 执行下面的程序后, #include main() { char *p1,*p2; p1="How_are_you?"; p2=p1+strlen(p1)-1; while(p2>=p1) printf("%c",*p2--); for (p2=p1; *p2!='\0';p2=p2+2) printf("%c",*p2); printf("\n"); } 输出的结果是 。 6. 以下程序运行后, struct ks { int a; int *b; } s[4],*p; main() { int n=1,i; printf("\n"); for (i=0;i<4;i++) { s[i].a=n; s[i].b=&s[i].a; n=n+2; } p=&s[0]; p++; printf("%d,%d\n",(++p)->a,(p++)->a); } 则结果是 。 7. 从键盘上输入123<回车>,该程序的输出结果是 。 #include main() { int c; while((c=getchar())!='\n') { switch(c-'1') { case 0: case 1: putchar(c+4); case 2: putchar(c+3);break; case 3: putchar(c+2); case 4: putchar(c+1);break; }} printf("\n"); } 8. 以下程序运行时,输入10个整型数,输出结果是 。 int a,b; void found_value(int array[],int n) { int *p,*array_end; array_end=array+n; a=b=*array; for (p=array+1;pa) a=*p; else if (*p main() { int v1=0,v2=0; char ch; while ((ch=getchar())!='#') switch(ch) { case 'a' : case 'h' : default : v1++; case 'o' : v2++; } printf("%d,%d\n",v1,v2); } 11. #include void printletter() { static int c=57; if (c>=48) { putchar(c); c--; printletter(); } } main() { printletter(); } 12. main() { int a[5]={1,3,5,7,9}; int *num[5]; int **p,i; for (i=0;i<5;i++) num[i]=&a[i]; p=num; for (i=0;i<5;i++) { printf("%3d",**p); p++;} } 13. main() { int fun (int *, int ); int j = 1 , m =4, k ; k = fun(&j, m ) ; printf(“j=%d m=%d\n”,j,m); printf(“The first k: %d\n”, k ); k = fun(&j, m); printf(“j=%d m=%d\n”,j,m); printf(“The second k: %d\n”, k) ; } int fun (int *x , int y ) { static int k = 2; k += *x + 1; *x = k- y; return k; } 14. #include int count, position, data; void search( int *p, int n, int st ) { if ( *p == data ) { count ++; position = st; } if ( n > 1 ) search( p+1, n-1, st+1 ); } main() { int a[5] = { 10, 30, 50, 30, 20 }; count = 0; data = 25; search( a, 15, 1 ); printf( "count=%d,position=%d\n", count, position ); } 15. int sumadd( int func, int data ) { static int sum; switch ( func ) { case 0 : sum = data; break; case 1 : sum += data; break; case 2 : sum -= data; break; } return sum; } main() { sumadd( 1, 10 ); printf( “%d”, sumadd(2,10)); sumadd( 2, 20 ); printf( “%d”, sumadd(2,10)); } 16. void s ( int a[], int n ) { int i, j, t ; for ( i = 0; i < n ; i ++ ) { for ( t = a[i], j = i - 1 ; j >= 0 && t < a[j] ; j -- ) a[j+1] = a[j]; a[j+1] = t ; } } main() { int i , b[6] ={24, 12, 14, 32, 22, 34 } ; s ( b, 6) ; for ( i = 0; i < 6 ; i ++) printf(“%4d”, b[i] ); printf(“\n”) ; } 17. void p ( int k ) { int m , i; for ( m = 2; m <= k ; m ++) { for ( i = 2; i <= m; i ++) if ( !(m % i )) break ; if ( i = = m ) printf(“%4d”, m); } printf( “\n”); } main() { p (13) ; } 18. #include main() { int a[]={0,10,20,30,}; int n=0, *p; p=a+1; n+=*(p++); n+=(*p)++; n+=*(++p); n+=++(*p); printf(“n=%d, a[]=%d, %d, %d, %d\n”, n, a[0], a[1], a[2], a[3]); } 19. #include void strselect(char *strs[], int n, char *dest) { int i; for(i=0; i struct node { int n; struct node *next; }; void insert(struct node *head, int newn) { struct node *p, *q ; for(p=head; p->next!=NULL; p=p->next ) { q=p->next; if((newn%10)<(q->n%10)) break; } q=(struct node*)malloc(sizeof(struct node)); q->n=newn; q->next=p->next; p->next=q; } main() { struct node head, *p, *q; head.next=NULL; insert(&head, 56); insert(&head, 38); insert(&head, 72); insert(&head, 49); for(p=head.next; p!=NULL; p=p->next) printf(“%d ”, p->n); printf(“\n”); for(p=head.next; p!=NULL;) { q=p; p=p->next; free(q); } } 21. #include #include main() { int fun(char*,int); char *p; p="87654321"; fun(p,strlen(p)); puts(p); } int fun(char *w,int n) { char t,*s1,*s2; s1=w; s2=w+n-1; while (s12)"); scanf("%d",&i); devide(i); printf("\n"); } 第三部分 程序改错 改正下列程序中的错误,并以"将#XX行改为YYY"的形式进行解答,代码左边的"#1"、"#2"、…是附加的行号(下同)。 1.本程序用二分法在一个单调不减次序排列的数组中查找某个数。若存在,输出该数及它的下标位置;若不存在,输出表示找不到该数的信息(本程序有3个错)。 #1 main() #2 { int a[10]={2,5,6,8,11,15,18,22,60,88}; #3 int low,high,m,i,x; #4 scanf("%f",&x); #5 low=0; #6 high=10; #7 while(low<=high) #8 { m=(low+high)/2; #9 if (x==a[m]) break; #10 else if (x>a[m]) high=m+1; #11 else low=m-1; #12 } #13 if (low<=high) #14 printf("%d is found, the position is %d\n",x,m); #15 else #16 printf("%d is not found\n",x); #17 } 2.由键盘输入长度不超过80的字符串,在按原样输出。(本题有2个错) #1 #include #2 main() #3 { char str[80]; #4 int i=0; #5 clrscr(); #6 while(1) #7 { scanf("%s",str[i]); #8 if (str[i++]=='\n') return; #9 } #10 str[i]='\0'; #11 printf("%s\n",str); #12 } 3. 以下程序用递归算法求Xn,要求n>=0,请填空(本题3个错)。 #1 main() #2 { float xn(float,int); #3 float x,y; int n; #4 printf("Input x n :\n"); #5 scanf("%f%d",&x,&n); #6 if (x!=0) #7 { y=xn(x); printf("x^n=%f\n",y);} #8 else printf(" x wrong!! \n"); #9 } #10 float xn(float x,int n) #11 { float z; #12 if (n<0) { printf(" n wrong !!\n"); exit(0); } #13 if (n!=0) z=1; #14 else if (n==1) z=x; #15 else z= xn(x,n) ; #16 return z ; #17 } 4. 求ex的数学公式是ex≈1+x+x2/2!+x3/3!+…+xn/n!,对下面的程序填空,设n=15。 (本题2个错) #1 double ex(float x) #2 { double s=1.0,t=1.0; #3 int i=1; #4 while (i<=15) #5 { t= x/i ; #6 s=s+t; #7 i++ ; #8 } #9 return s; #10 } #11 main() #12 { float x; #13 double e; #14 scanf("%f",&x); #15 e=ex(x,n) ; #16 printf("e(%f)=%lf\n",x,e); #17 } 5. 本程序用二分法在一个单调不减次序排列的数组中查找某个数。若存在,输出该数及它的下标位置;若不存在,输出表示找不到该数的信息(本程序有3个错)。 #1 main() #2 { int a[10]={2,5,6,8,11,15,18,22,60,88}; #3 int low,high,m,i,x; #4 scanf("%f",&x); #5 low=0; #6 high=10; #7 while(low<=high) #8 { m=(low+high)/2; #9 if (x==a[m]) break; #10 else if (x>a[m]) high=m+1; #11 else low=m-1; #12 } #13 if (low<=high) #14 printf("%d is found, the position is %d\n",x,m); #15 else #16 printf("%d is not found\n",x); #17 } 6. 以下程序的功能是:从键盘上输入一个字符串后,输出其长度。(本题有3个错) #1 #include #2 #include #3 func(char *str[]) #4 { int num=0; #5 while (*(str+num)!='\n') num++; #6 return num; #7 } #8 main() #9 { char str[10],*p; #10 gets(p); printf("%d\n",func(p)); #11 } 7. 本程序用于输入n个-100~100间的整数,输入数据不对则重输,并计算其中的正整数之和(有2个错)。 #1 #define N 10 #2 int sum(int x[],int n) #3 { int i=0,s=0; #4 while (i0) s=s+x[i]; i++; } #6 return s; #7 } #8 main() #9 { int i=0,s,a[N],flag=1; #10 do #11 { printf("Enter %d numbers (-100<=n<=100) \n",i+1); #12 scanf("%d",&a[i]); #13 while(flag) #14 { if((-100<=a[i])&&(a[i]<=100)) flag=1; #15 else #16 { printf("data wrong! again input...\n"); #17 printf("%d",&a[i]);} #18 } #19 i++; #20 } while (i #2 #include #3 func(char *str[]) #4 { int num=0; #5 while (*(str+num)!='\n') num++; #6 return num; #7 } #8 main() #9 { char str[10],*p; #10 gets(p); printf("%d\n",func(p)); #11 } 9. 以下程序的功能是:函数f获得十进制正整数n为参数后,返回值是n的位数(例如,123就是个三位数)。(本题有3个错) #1 int f(long n) #2 { int c=0
本文档为【上海市计算机二级考试(C语言)复习资料题目】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_754528
暂无简介~
格式:doc
大小:286KB
软件:Word
页数:45
分类:工学
上传时间:2010-12-27
浏览量:69