:期日 试线考 : 号订学 : 名装姓 : 级上班 :名系C语言程序设计复习模拟试题 A)/ B )+ + C)!= D) % 11、若整型变量x的值为8,则下列表达式中值为1的表达式是( B ) 一、选择题 A)x+=x-=x B) x%=x-1 C) x%=x%=3 D) x/=x+x 1.以下叙述正确的是( C ): 12、若w=1,x=2,y=3,z=4,则条件表达式“w > x ? w : y < z ? y : z”的值 A) 在C程序中,main函数必须位于程序的最前面 是( B) B) C程序的每行只能写一条语句 A)4 B)3 C)2 D)1 C) C语言使用库函数实现输入输出操作 13、有以下程序,程序运行后的输出结果是。( D) 线D) 注释中的拼写错误会影响编译结果 main() 2、以下说法中正确的是(B) { int i=1,j=2,k=3; A) C语言程序总是从第一个的函数开始执行 if(i++==1&&(++j==3||k++==3)) B) C语言程序总是从main()函数开始执行 printf(\"%d %d %d\\n\C)在C语言程序中,要调用的函数必须在main()函数中定义 } D) C语言程序中的main()函数必须放在程序的开始部分 A)1 2 3 B)2 3 4 C)2 2 3 D)2 3 3 3、下列选项中说法正确的是( A ) 14、下面程序的输出结果是( B) A) 函数由声明部分和执行部分两部分组成 main() 订B)语言中main函数一定在程序的开始部分 {int x=2,y=-1,z=2; C)C语言程序总是从第一个定义的函数开始执行 if(x
#include\"stdio.h\" void main() { int i; for(i=2;i==0; ) printf(\"%d\} A) 无限次 B)0次 C) 1次 D) 2 次 18、若有以下定义,double a[10];则a数组元素下标的上、下限分别为( B) A) 1,10 B) 0,9 C) 0,10 D)1,9 19、若已定义的函数有返回值,则以关于该函数调用的叙述中错误的是(D) A) 调用可以作为独立的语句存在 B) 调用可以作为一个函数的实参 C) 调用可以出现在表达式中 D) 调用可以作为一个函数的形参 20、 定义如下变量和数组: int i; int x[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句 for(i=0;i<3;i++) printf(\"%d\输出结果是 (C ) A) 1 5 9 B) 1 4 7 C) 3 5 7 D) 3 6 9 21、以下不能正确定义二维数组的选项是 (D) A) int a[2][2]={{1},{2}}; B) int a[][2]={1,2,3,4}; C) int a[2][2]={{1},2,3}; D) int a[2][]={{1,2},{3,4}}; 22、若有以下定义:int a[5]={10,20,30,40,50},*p=a;则执行++(*p)后(*p)++的值是(B) A) 10 B) 11 C) 20 D)21 23、函数的嵌套调用是指(D) A) 直接调用本函数 B) 在定义函数时,又定义另一个函数 C) 间接调用本函数 D) 被调用函数又调用另一个函数 24、下列说法正确的是(D) A) 被调用函数必须先调用,后声明 B) 用户自定义函数的类型若未指出,则系统默认为void C) 全局变量不能与局部变量同名 D) 实参可以是任意表达式 25、以下描述正确的是( B ) A)continue语句的作用,是结束整个循环语句的执行 页B)只能在循环体内和switch语句体内使用break语句 C)在循环体内使用break语句或continue语句的作用相同 D)多层循环嵌套中不可以使用break语句 26、若有说明语句:“int a[3][4];”,则对数组元素的正确引用格式是( C ) A)a[2][4] B) a[1,3] C) a[1+1][0] D) a(2)(1) 27、若有说明:“int a[3][4]={0};”,则下面正确的叙述是( D ) A)只有元素a[0][0]可得到初值0 B)此数组说明语句不正确 C)数组a中各元素都可得到初值,但其值不一定为0 D)数组a中每个元素均可得到初值0 28、定义数组a和b的语句是: “char a[ ]=“ABCDEF”; char b[ ]={‘A’,‘B’,‘C’,‘D’,‘E’,‘F’};” 则以下叙述正确的是( D ) A)a和b数组完全相同 B)a与b数组元素个数相同 C)a和b中都存放字符串 D)a数组比b数组元素个数多 29、语句“int (*ptr) ( );”的含义是( C ) A)ptr是指向一维数组的指针变量 B)ptr是指向int型数据的指针变量 C)ptr是指向函数的指针,该函数返回一个int型数据 D)ptr是一个函数名,该函数返回值是指向int型数据的指针 30、若有定义:“int *p[4];”,则标识符p 是( B ) A)一个指向整型变量的指针 B)一个指针数组名 C)一个指针,它指向一个含有四个整型元素的一维数组 D)无效的数组名 31、在C语言中( B ) A) 函数定义可以嵌套,但函数调用不可以嵌套 B) 函数定义不可以嵌套,但函数调用可以嵌套 C) 函数定义和调用都可以嵌套 D) 函数定义和条用都不能嵌套 32、下面程序的输出结果是( D ) #include void main() { int i,j,x=0; for(i=0;i<=2;i++) { x++; for(j=0;j<=2;j++) 第 2 页 共 15 { if(j%2)continue; x ++;} x ++; } printf(\"%d\\n\A)4 B)6 C)8 D)12 33、执行下列语句后,m的值为( A ) int m=1,x=2,y=3,z=4; m=m=20) break; if(b%3==1) {b+=3;continue;} b+=5;} printf(“%d, %d”, a, b); } A) 8,20 B) 8,22 C) 7,20 D) 7,22 37、设 int a[5]={10,15,20,25,30}; int *p; p=a+2;则表达式++*p的值为(D) A) 20 B) 15 C) 16 D) 21 38、设w=1,x=2,y=3,z=4,a=5,b=6,则执行以下语句a,b的值分别为( C ) 页(a=w>x)&&(b=y>z); A) 0和0 B) 5和0 C) 0和6 D) 5和6 39、下列语句的输出为( D ) int x=-1; printf(“%d,%u,%o”,x,x,x); A) –1,-1,-1 B) –1,32767,-177777 C) –1,32768,177777 D) –1,65535,177777 40、下列函数调用语句中的实参个数为( A ) fun((a+b,x,y),fun(x,(x+z))); A) 2 B) 3 C) 4 D) 5 41、设有数组定义:char array[ ]=“china”;则数组array所占的内存空间为( C ) A) 4个字节 B) 5个字节 C) 6个字节 D) 7个字节 42、以下程序段的运行结果是( B )。 char c[5]={ ‘a’ , ‘b’ , ‘\\0’ , ‘c’ , ‘\\0’ } ; printf( “%s” , c ); A)’a’’b’ B)ab C)ab c D)a b 43、若C程序中出现死循则违背了算法的( C ) A)有效性 B)确定性 C)有穷性 D)有一个或多个输出 44、设 int a=20;则执行表达式:a/=a+a后,a的值是(A ) A)0 B)1 C)20 D)40 45、int x,y,z,m=5,n=5;则执行下面语句后的z值是( D ) x=(--m==n++)?--m:++n; y=m++; z=n; A)5 B)10 C)6 D)7 46、执行下列程序段后,i的正确结果是( D ) int i=10; switch(i) { case 9: i+=1; case 10: i++; case 11: ++i; default:i+=i; } 第 3 页 共 15 printf( \"%d\A)10 B)11 C)12 D)24 47、若有定义:int a[10];。则以下表达式中不能代表数组元素a[1]的地址的是( A ) A)&a[0]++ B)&a[1] C)&a[0]+1 D)a+1 48、变量的指针,其含义是指该变量的( B ) A)值 B)地址 C)变量名 D)一个标志 49、有以下函数定义: void fun(int n, double x) { „„ } 若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是( C ) A)fun(int y,double m); B)k=fun(10,12.5); C)fun(x,n); D)void fun(n,x); 50、设整型变量n=10,i=4,则赋值运算n%=i+1执行后,n的值是(A )。 A) 0 B) 1 C) 2 D) 3 51、若int a, b; scanf(\"%d%d\不可以用( A )作为输入的分隔符。 A) , B)空格 C)回车 D)TAB键 52、下面关于运算符优先顺序的描述中正确的是: ( C) A)关系运算符< 算术运算符< 赋值运算符< 逻辑与运算符 B)逻辑 运算符< 关系运算符< 算术运算符< 赋值运算符 C)赋值运算符< 逻辑与运算符< 关系运算符< 算术运算符 D)算术运算符< 关系运算符< 赋值运算符< 逻辑与运算符 53、为了判断两个字符串s1和s2是否相等,应当使用( D )。 A) if(s1 == s2) B) if(s1 = s2) C) if(strcpy(s1,s2)) D)if(strcmp(s1,s2)==0) 54、以下对二维数组进行正确初始化的是( B )。 A)int a[2][3]={{1,2},{3,4},{5,6}}; B)int a[][3]={1,2,3,4,5,6}; C)int a[2][]={1,2,3,4,5,6}; D)int a[2][]={{1,2},{3,4}}; 55、 若用数组名作为函数调用时的实参,则实际上传递给形参的是( A )。 A)数组的首地址 B) 数组的第一个元素值 C)数组中全部元素的值 D) 数组元素的个数 页
56、 以下错误的描述是(D )。 A) 不同的函数中可以使用相同的变量名 B) 形式参数是局部变量 C) 一个函数内部定义的变量只能在本函数范围内有效 D) 在一个函数内部的复合语句中定义的变量可以在本函数范围内有效 57、下列程序的运行结果是( B ) main( ) { int i=10; int *p=&i; i=8; printf(“%d”,*p); } A)10 B)8 C)程序错误,不能运行 D)结果不确定 58、C语言中,double类型的数据占字节数为( D ) A) 1 B) 2 C) 4 D) 8 59、可在C程序中用作用户标识符的一组标识符是( A ) A)as_b3 _123 If B) For -abc case C) 2c DO SIG D) void define WORD 60、以下字符中,不正确的C语言转义字符是( B ) A) ‘\\\\’ B) ‘\\018’ C) ‘\\Xaa’ D) ‘\’ 61、C语言中,数据在内存中都以( D )形式存放 A) 原码 B) 反码 C) ASCll码 D)补码 62、下列运算符中,优先级最高的是( C ) A) && B) ! C) ++ D) || 63、有输入语句:scanf (“a=%d ,b=%d ,c=%d” ,&a,&b,&c) ;为使变量a 的值为11,b 为12,c为13,则从键盘输入数据的正确形式应当是( D)。 A)11 12 13 B)11, 12, 13 C)a=11 b=12 c=13 D) a=11, b=12, c=13 64、为表示关系 -1≤x≤1应使用的c语言表达式是( D ) A) -1≤x≤1 B) -1==-1&&x<=1 65、若有以下定义: 第 4 页 共 15 double a; int b; float c; char d; 则表达式a*b/d+(d-c)值的类型为( D ) A)float B) int C) char D) double 66、下列程序输出的结果是( A ) main() {int a=18; a+=a-=a*a; printf(\"%d\} A) -612 B) 9 C) 0 D) 36 67、break语句( C ) A) 只能出现在if语句中 B) 只能出现在循环体中 C) 可用在循环体和switch语句中 D) 可用在函数中的任何语句 68、如 int k=11;则执行语句k=1/3*++k;后k取值为(D ) A) 12 B) 3C) 4 D) 0 69、以下程序的输出结果是( A ) main() { int x=12,y=012; printf(\"%d %d\\n\} A)12 9 B)11 11 C)11 12 D)12 11 70、 设 int x=1, y=5; 表达式(!x||y--||++x)的值是( B ) A) 0 B) 1 C) 5 D) 4 71、如果k为整数,则while循环执行次数(A) k=10; while(0) k=k-1; A) 一次都不执行 B) 1 C) 10 D) 无限次 72、 有以下程序( D ) fun(int a, int b) { if(a>b) return a; else return b; } main( ) { int x=3, y=8, z=6, r; r=fun (x, y+z); printf(\"%d\\n\页程序运行后的输出结果是( ) A) 3 B) 6 C) 8 D) 14 73、若有说明:int n=17,*p=&n,*q=p;,则以下非法的赋值语句是( D ) A) p=q; B) *p=*q; C) n=*q; D) p=n; 74、 以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,程序如下: main() { int n,k; float score ,sum,ave; sum=0.0; for(n=1;n<=10;n++) { for(k=1;k<=4;k++) { scanf(“%f”,&score); sum+=score;} ave=sum/4.0; printf(“NO%d:%f\\n”,n,ave); } } 上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是( A ) A) sum=0.0; B) sum+=score; C) ave=sun/4.0; D) printf(“NO%d:%f\\n”,n,ave); 75、数组定义为char a[10]={‘a’,‘b’,‘c’};该数组包括的元素个数是( D ) A) 3 B) 9 C) 4 D)10 76、下面程序的输出结果是( B ) main ( ) { int x = 2, y = -1,z = 2; if ( x < y ) if ( y < 0 ) z = 0; else z = -1+x++; printf (\"%d\\n\A) 3 B) 2 C) 1 D) 0 77、有以下程序 main( ) { int a[ ]={0,1,2,3,4,5,6,7,8,9}, *p ; for(p=&a[9];p>=a;p--) printf(\"%d,\第 5 页 共 15 } 程序运行后的输出结果是( D ) A)0 1 2 3 4 5 6 7 8 9 B)2,3,4,5,6,7,8,9,10,1 C)0,1,2,3,4,5,6,7,8, 9, D)9,8,7,6,5,4,3,2,1, 0, 78、 执行循环语句: for(x=y=0;y!=250||x<4;x++)y+=50; 其循环体执行的次数为( A ) A) 5 B) 4 C)3 D)2 79、如 int x=14; 下列求商y(需小数结果)的表达式哪一个不对( D ) A) y=x/(5+.0) B) y=x/5. C) y=1.*x/5 D) y=x/5*1.0 80、设有以下程序段( B ) int x=0,s=0; while(!x!=0)s+=++x; printf(\"%d\); 则 :A)运行程序段后输出0 B)运行程序段后输出1 C)程序段中的控制表达式是非法 D)程序无法运行 81、有以下程序,程序运行后的输出结果是( C ) #include\"stdio.h\" void main() { int i=0,j=2,m=3,n; n=i++<=1&&j>=2&&m++; printf(\"%d,%d,%d,%d \\n\} A)2,2,4,1 B)2,2,3,1 C) 1,2,4,1 D)2,1,3,1 82、下面程序的输出结果是( C ) #include void main() { int i,x=1,y=0,a=0,b=0; switch(x) { case 1:b++; case 2:a++;b++;break; case 3:a++;b++; } printf(\"%d,%d\\n\} A)2,1 B)2,2 C)1,2 D)4,2 页二、程序分析及填空 1.C语言的基本数据类型中,有两种实数类型变量,一种是float型,另一种是(double )型。 2.若程序中有语句“scanf(“a=%d,b=%d”,&a,&b);”,在执行程序时,要输入3和5两个数,应该键入( a=3,b=5↙ )。 3.包含数学类库函数的头文件名称是( math.h )。 4.字符串“ab\\034\\\\\\x79”的长度为( 5 )。 5.数组元素作函数参数进行的是 单向值 传递,数组名作函数参数进行的是_地址__传递。 6.设有函数调用语句f(x1,x1+x2,f1(x1,x2));则函数f()实参的数目有_3___个。 7.在数组 int score[10]={1,2,3,4,5,6}中,元素定义的个数有 10 个,其中score[8]的值为 0 。 8.C语言源程序文件的后缀是 .c 经过编译后,生成文件的后缀是 .obj ,经过连接后,生成文件的后缀是 .exe 。 结构化程序由 顺序 、 选择 、 循环 三种基本结构组成。 9、C语言提供的三中逻辑运算符是____!_____ 、__&&____、______||____。 10、若a=1,b=4,c=3, 则表达式!(a void main( ) { int m=5; if (m++>5)printf(\"%d\\n\else printf(\"%d\\n\14、以下程序运行后的输出结果是 17 。 #include void main() { int x=15; while(x>10 && x<50) { x++; if(x/3){x++;break;} else continue; } 第 6 页 共 15 printf(\"%d\\n\15、下面程序的运行结果是: 3 5 。 #include \"stdio.h\" void swap(int *a,int *b) { int *t; t=a; a=b; b=t; } void main() { int x=3,y=5,*p=&x,*q=&y; swap(p,q); printf(\"%d%d\\n\ } 16、在执行以下程序时,如果从键盘上输入:AdEf<回车>,则输出为 ____aDeF____ #include\"stdio.h\" void main() {char ch; while ((ch=getchar())!='\\n') {if (ch>='A'&&ch<='Z')ch=ch+32; else if (ch>='a'&&ch<='z')ch=ch-32; printf(\"%c\} printf(\"\\n\");} 17.设有以下宏定义,则执行赋值语句 a=PP*20;(a为int型变量)后,a的值是 10000 。 #define PR 100 #define PP PR+400 18、下列程序段的输出结果为 10,1 int x=10,y=1; y=y--||x++; printf(“%d,%d”,(y,x++),y); 19、有以下程序 #include \"stdio.h\" void main() { int a[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}}; int i,s=0; 页for(i=0;i<4;i++) s+=a[i][i]; printf(\"%d\\n\} 程序运行后的输出结果是 23 程序的功能为 求4×4矩阵主对角线元素值之和 20、有以下程序 #include void main( ) { int p=2, t=1; while(p<=5 ) t=t*p++; printf(\"%d,%d\\n\;} 该程序运行后变量p和t中的值分别为 6,120 。 21、有以下程序 #include void main() { int a,b,c=221; a=c/100%3; b=a&&-1; printf(“%d,%d”,a++,b--); } 该程序运行后的输出结果是 2,1 22、以下程序的输出结果为 1,6 。 #include main() { int a[ ]={1,2,3,4,5,6},*p=a; *(p+3)+=2; printf(“%d,%d”,*p,*(p+3)); } 23、以下程序的输出结果为 40,70 。 #include \"stdio.h\" int x1=40,x2=70; void main( ) { int x3=50,x4=60; int sub(int x3,int x4); printf(\"%d,%d\\n\} void sub(int x,int y) 第 7 页 共 15 { x1=x; x2=y;} 24、下面C程序的输出是: 4 main() { int m=6; if(m--<6) printf(\"%d\\n\ else printf(\"%d\\n\ } 25、下面C程序的输出是: a=10 #include \"stdio.h\" main() { int a=5,*p=&a; *p=a+*p; printf (\"a=%d\\n\26、下面C程序的输出是: 2 1 0 #include \"stdio.h\" void f(int n) { printf(\"%3d\if(n>0) f(n/10); } void main() { f(12);} 27、以下程序的输出结果是:5 2 #include \"stdio.h\" void main() { int y; for(y=6; y>0; y--) if(y%3==0) { printf(\"%d\28、在数组 int score[10]={1,2,3,6}中,score[7]的值为_0______。 29、程序运行后的输出结果是 5 #include \"stdio.h\" void main() { int a=1,b=2; printf(\"%d\30、以下程序运行后的输出结果是 3 5 7 #include void main() 页{ int i,x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++) printf(“%d”,x[i][2-i]); } 31. 以下程序运行后的输出结果是 0 #include main() { int a=5,b=7,c; printf(“%d\\n”,c=a>b); } 32. 以下程序运行后的输出结果是 k=0,m=5 #include \"stdio.h\" main( ) { int i,j,k=0,m=0; for(i=0;i<2;i++) { for(j=0;j<3;j++) k++; k-=j; } m=i+j; printf(\"k=%d,m=%d\\n\} 33. 以下程序运行后的输出结果是 13,12 #include \"stdio.h\" swap(int *p1, int *p2) { int p; p=*p1; *p1=*p2; *p2=p; } main() { int a=12,b=13; int *pointer_1,*pointer_2; pointer_1=&a; pointer_2=&b; if(a=’A’&&ch[k]<=’Z’||ch[k]>=’a’&&ch[k]<=’z’) ch[j++]=ch[k]; k++; } ch[j]=’\\0’; printf(“%s”,ch); } 37、以下程序运行后的输出结果是 5,9 。 #include void swap(int *a,int *b) { int *t; t=a; a=b; b=t; } void main() { int x=5,y=9,*p=&x,*q=&y; swap(p,q); printf(“%d,%d\\n”,*p ,*q); } 38、有以下程序, 该程序运行后的输出结果是 2,1 #include void main( ) { int a,b,c=222; a=c/100%3; b=-1&&-1; printf(“%d,%d”,a,b); } 三、补全程序题 1、输入三个整数x,y,z,把这三个数由小到大输出。 main( ) { int x,y,z,t; scanf(“%d%d%d”,&x,&y,&z); if (x>y) { t=x;x=y;y=t; } /*交换x,y的值*/ if(x>z) { t=x;x=z;z=t; } /*交换x,z的值*/ if(y>z) { t=y;y=z;z=t; } /*交换z,y的值*/ printf(“small to big: %d %d %d\\n”,x,y,z); } 2、求圆的面积和周长,请补全下面程序: #define PI 3.14159 void main( ) { float r,s,y; /* r表示半径;s表示面积;y表示周长*/ scanf(“%f”,&r); s=PI* r*r ; y=2* PI*r ; printf(“s=%f,y=f”,s,y );} 3、函数a1的功能是求一维数组中所有元素的平均值并返回给主调函数。请补全下面程序: float a1( ) { float b[10],sum= 0.0 ,aver; int i; for(i=0;i<10;i++) scanf(“%f“,&b[i]); for(i=0;i<10;i++) sum+= b[i] ; 第 9 页 共 15页
aver=sum/10; return aver ;} 4、从键盘上输入10个数,输出最大、最小元素的值以及它们的下标。 #include void main( ) {int i,j,k,max,min,a[5]; for( i=0;i<5;i++) scanf(“%d”,&a[i]); max=min=a[0]; j=k=0; for( i=0;i<5;i++) { if(maxa[i] ) { min=a[i];k=i;} } printf(“max:a[%d]= %d,min:a[%d] = %d”,j,max,k,min);} 5、以下程序从读入的整数数据中,统计大于零的整数个数和小于零的整数个数。用输入零来结束输入,程序中用i统计大于零的个数,用变量j统计小于零的整数。请填空。 void main() { int n,i,j; printf(“Enter INT numbers,with 0 to end\\n”); i=j=0; scanf(“%d”,&n); while _(n!=0)_________ { if (n>0) ___i++_______; if (n<0) ____j++______; scanf(“%d”,&n); } printf(“i=%4d j=%4d\\n”,i,j); } 6、输入一个3位正整数,反序输出。 #include void main( ) {int x,x1,x2,x3,y; printf(“please input x:”); scanf(“%3d”,&x); 页x1= x/100 ; x2=x/10%10; x3= x%10 ; y=x3*100+x2*10+x1; printf(“y=%d\\n”,y);} 7、计算s=1!+2!+3!+„„+n! #include long f(int n) {int i; long t=1; for(i=1;i<=n;i++) t=t*i 或t*=i; ; return t 或returnt(t) ;} void main() {int i,n; int s=0 ; scanf(“%d”,&n); for( i=1 ; i<=n ; i++ ) (以上三个空也可以为:i=n i>=1 i--) s=s+f(i); printf(“s=%ld\\n”,s);} 8. 输入两个数并判断两数是否相等,如果相等输出a==b,不相等输出a!=b。 #include main() { int a,b; printf(\"Enter integer a and b:\"); scanf(\"%d%d\&a,&b ); if(a==b) printf(\"a==b\\n\"); else printf(\"a!=b\\n\");} 9. 输出半径从1到10的圆面积,当面积大于100时停止 #define PI 3.14159 main() { int r; float area; for(r=1;r<=10;r++) 第 10 页 共 15 { area= PI*r*r ; if(area>100) break ; printf(\"r=%d,area=%.2f\\n\10.以下程序以每行输出8个数据的形式输出a数组。 #include void main( ) { int a[50],i; for(i=0;i<50;i++) scanf(“%d”,&a[i]); for(i=0;i<50;i++) { if(i%8==0) printf(“\\n”); 或putchar(‘\\n’); ; printf(“%3d”, a[i] );}} 11、以下程序的功能是:从键盘上输入20个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空。 main() {float x[20],sum=0.0,ave,a; int n=0,i; printf(\"enter mark:\\n\"); scanf(\"%f\\n\while (n>=0&&n<20) {sum+=_a___;x[n]=___a_; n++; scanf(\"%f\\n\} ave=__sum/n___; printf(\"Output;\\n\"); printf(\"ave=%f\\n\12.不用其它变量做为中间变量,交换a,b的值,请填空: main() {int a,b; scanf(\"%d%d\printf(\"a=%d,b=%d\\n\a= a+b ; b= a-b ; a= a-b ; printf(\"a=%d,b=%d\\n\13、用递归法求n!,递归公式如下,补全下面程序 1 (n=0或n=1) n!= n*(n-1) (n>=2) 页long fun(int n) { long t; if(n==0||n==1) t=1; else t= n*fun(n-1) ; return(t);} 14、函数a1的功能是求一维数组中所有元素的平均值并返回给主调函数。请补全下面程序: float a1( ) { float b[10],sum=0,aver; int i; for(i=0;i<10;i++) scanf(“%f”,&b[i]); for(i=0;i<10;i++) sum+= b[i] ; aver=sum/10; return aver (同3题);} 15、把100---200之间的能被3和7整除的数输出,请补全下面程序: viod main( ) { int n; for( n=100; n <=200 ;n++) { if( n%3!=0&&n%7!=0 ) continue; Printf(“%5d”,n); }} 16、下面程序的功能是输出1000以内的个位数为6,且能被3整除的所有数. main() { int i,j; for(i=0; i<1000或i<=99;i++) { j=i*10+6; if( j%3!=0 ) countinue; printf(\"%d\ 17、有以下程序段: s=1.0; for(k=1;k<=n;k++) s=s+1.0/(k*(k+1)); printf(\"%f\\n\ 填空完成下述程序,使之与上述程序的功能完全相同。 s=0.0; 第 11 页 共 15 d=1.0 ; for(i=1;i<=20;i++) __ i=0;i<20; _ k=0; { if(i/4=0) i%5==0 do printf(\\n); printf(“\\n”); _ { s=s+d; printf(\"%12d\ k++ ; d=1.0/(k*(k+1));} 3. void main( ) while( k<=n ); { printf(\"%f\\n\int x,y=z=5 y=5,z=5; 18、输入一个3位正整数,反序输出。 int aver; float #include x=7 ; void main() AVER=(x+y+z)/3; aver=(x+y+z)/3.0; { int x,x1,x2,x3,y; printf(“AVER=%d\\n”,aver); 最后一空按此该法没错误 printf(“please input x:”); }} scanf(“%3d”,&x); 4.下面程序希望实现的功能是:定义两个字符数组STR1、STR2,在键盘上输入STR2的值,然后将STR2连接到STR1后面,最后打印两个数组。划 x1= x/100 ; 线部分存在错误,请将改正后的结果填入右侧对应的横线 x2=x/10%10; #include string.h string.h加双引号(” ”)或尖括号(< >) x3= x%10 ; main( ) y=x3*100+x2*10+x1; { printf(“y=%d\\n”,y);} char str1[100]=\"abc\四、程序改错 scanf(\"%s\前不需要& 1.[程序说明] 以下程序的功能是在主程序中输入一个整数,在子程序中得for ( i=0;str1[i]!='\\0';i++) 不需要 到该数的绝对值,并在主函数中输出该数的绝对值。 for ( j=0;str2[j]!='\\0';j++) include “stdio.h” # str1[i]=str2[j]; strcat(str1,str2); 或str1[strlen(str1)+j] main( ) =str2[j]或 str1[3+j] =str2[j](数组下标不合要求功能) { int a; printf(“%c”,str1); %s scanf(“%d”,a); &a puts(str2); } printf(“%d\\n”,ABSB、);} abs(a) 5.请将改正后的结果填入右侧对应的横线 abs(int x) ; 无;号 #include \"stdio.h\"; { if(x>=0) define PI 3.14159; return(x); void main else {long int d; 无错误 return(x);} -x float x; double 2、求Fibonacci数列前20个数,以四行五列显示。 scanf(“%d\\n”,d); %ld &d main() x=1/2*SIN(d*pi/180.0); sin ,PI { int i; printf(“x=%f\\n”,x) ; int f[20]=(1,1); _ {1,1} _ } for(i=1;i<=20;i++) _i=0;i<20;或i=2 _ 五、编写程序 f[i]=f[i-2]+f[i-1]; 第 12 页 共 15 页1、定义求mn的函数int f(int m,int n)。并求解5。 long f(int m,int n) /*计算m的n次方*/ { long power=m; int i; for(i=1;i0 ) 编写一程序,输入一个x的值,输出对应的y值。 Void main( ) {int x , y; scanf (“%d”, &x); if (x < 0) y =x-1; else if (x= =0) y=x; else y=x+1; printf(“x =%d , y =%d \\n”,x , y); } 4、编写程序求出100到200之间的所有素数 #include void main() {unsigned i ,j,count,flag; count=0; 页4for(i=100;i<=200);i++) {flag=0; for(j=2;j<=sqrt(i);j++) if(i%j==0) {flag=1;break;} } if(flag==0) { printf(“%4d”,i);count++; if(count%8==0) printf(“\\n”);}}} 5、从键盘上输入10个数,输出最大、最小元素的值及它们的下标。 #include void main( ) {int i,j,k,max,min,a[10]; for( i=0;i<10;i++) scanf(“%d”,&a[i]); max=min=a[0]; j=k=0; for( i=0;i<10;i++) { if(maxa[i] ) { min=a[i];k=i;} } printf(“max:a[%d]= %d,min:a[%d] = %d”,j,max,k,min);} 6、输入两个整数m和n,求其最大公约数和最小公倍数。(见第5章习题5.3) 7、计算s=1!+2!+3!+„„+n! #include long f(int n) {int i; long t=1; for(i=1;i<=n;i++) t=t*i ; return t ;} void main() {int i,n; int s=0 ; scanf(“%d”,&n); 第 13 页 共 15 for( i=1;i<=n ; i++ ) s=s+f(i); printf(“s=%ld\\n”,s);} 8、输出1000以内的个位数为6,且能被3整除的所有数 void main() { int i,j; for(i=0; i<1000 ;i++) { j=i*10+6; if( j%3!=0 ) continue; printf(\"%d\}} 9.从键盘输入3名学生的5门课的成绩,分别统计出每个学生的平均分(要求:用数组实现)。 void main() {int i,j; float score[3][5],ave[3]={0,0,0}; for(i=0;i<3;i++) {for(j=0;j<5;j++) {scanf(“%f”,score[i][j]); ave[i]+=score[i][j]; } ave[i]=ave[i]/j; } for(i=0;i<3;i++) printf(“ave[i]=%6.2f\\n”,ave[i]); } 10、编程实现1,2,3,„„50这50个数的和,并输出结果。 void main( ) { int i, sum=0; i=1; while ( i <= 50) { sum = sum + i ; i++; } printf ( “%d” , sum );} 11、求4×4的二维数组主对角线上的所有数据之和及平均值,并将大于平均值的数进行输出。 #include \"stdio.h\" void main() { int a[4][4], sum=0; 页int i, j; float aver; printf(“enter data:\\n”); for(i=0;i<4;i++) for(j=0;j<4;j++) scanf(“%d”,&a[i][j]); for(i=0;i<4;i++) sum+=a[i][i]; aver=sum/i; if(a[i][i]>aver) printf(\"%d,%f,%d\\n\12.一个包含10个元素的整型数组,编写程序求出该数组中的最大数和最小数,并判断这两个数是否为互质数(互质数的判断条件是:除了1之外这两个数再也没有其他的公约数)。 #include \"stdio.h\" void main() { int a[10], max,min; int i; printf(“enter data:\\n”); for(i=0;i<10;i++) scanf(“%d”,&a[i]); max=min=a[0]; for(i=1;i<10;i++) if(a[i]>max) max=a[i]; if(a[i] void main() { int i,n; scanf(\"%d\ if(n>0) { for(i=2;i<=n-1;i++) if(i%2==0) { printf(\"It is not a prime number.\"); break; } if(i>=n) printf(\"It is a prime number.\"); } else printf(\"Input error!\"); } 第 15 页 共 15 页