C语言考试复习专用三套题附答案(1)
- 格式:doc
- 大小:72.50 KB
- 文档页数:9
《C语言程序设计》习题集习题一一、语言基础(共20分,每题2分)(二)说明语句char s=‘\t’,使s包含了几个字符?。
A)1 B)2 C)3 D)说明有错(三)设a=6,b=4,则表达式b*=a+3A)3 B)18 C)(四)若给定表达式(m)?a++:a--和等价。
A)m==0 B)m!=0 C)m=0 D)m=1(五)设有说明语句int a[10],则数组a包括了个数组元素。
A)1 B)9 C)10 D)20(六)以下函数test返回值类型为。
test(int x){ printf(“%f\n”,(float)x);}A)int B)float C)void D)不确定或错误二、阅读下列程序,写出运行结果(共18分,每题3分)[程序1]#include <stdio.h>void main( ){ int a=1,b=4,c=2; 运行结果: 1a=(a+b)/c;printf(“%d \n”,--a);}[程序2]void main ( ){ char c1=67; /*‘A’的ASCII码值为65 */if (‘A’ <=c1 && c1<=’Z’) 运行结果: 67,Dprintf(“%d,%c”,c1,c1+1);else printf(“%c”,c1); }[程序3]viod main ( ){ int a=0, n=5; 运行结果: 1,5,4,3,2,0for ( ; ; ){ a++; n--;printf(“%d,”,a);a=n;if (n==0) break;}printf(“%d”,a);}[程序4]main ( ){ int i, j; 运行结果: 1,2,4,8,16,32,64,128,256,512 static int a[10]={1,1,1,1,1,1,1,1,1,1};for (i=0;i<10;i++)for (j=0;j<i;j++)a[i]=a[i]+a[j];for (i=0;i<10;i++)printf(“%d,”,a[i]);}[程序5]int k=2;f (int m) 运行结果: 6,8{ m+=k;k+=m; 5,9printf(“%d,%d \n”,m,k++);}main ( ){ int i=4;for (i++);printf(“%d,%d \n”,i,k); }[程序6]void main ( ){ static int a[10],i; 运行结果: 1 3 5 7 9for (i=0;i<10;i++)a[i]=i+1;for (i=0;i<10;i=i+2)printf(“%d”,*(a+i));}三、阅读分析下列程序,在处填上适当的内容使程序(或函数)完整(共21分,每空3分)(一)以下程序输出所有大写字母和其对应的ASCII码值。
void main ( ){ int ch;for (ch=’A’;ch<=’Z’;ch++)printf(“字母%c的ASCII码值是:%d\n”,ch, 1 );}答案: ch(二)以下函数的功能是将一个字符串S的内容颠倒过来。
void reserve( 2 ) 答案: char s[ ]{ int i, j, k;for (i=0,j=strlen(s)-1; 3 ;i++,j--) 答案: i<j{ k=s[i]; s[i]=s[j]; s[j]=k;}}四、编程题(共21分)1. 从键盘输入3个整数,输出其中最大数。
(5分)main ( ){ int i=0, x, mx=-32768;while ( i++<3){scanf (“%d”,&x);if (x>mx) mx=x;}printf (“\n %d \n”,mx);}2. 编写一函数uf(s),将字符串s中的第一个和最后一个字母改写成大写字母(如原来不是字母或已是大写字母,则不变)。
(5分)#include <stdio.h>uf (char s[]){ int i;i=strlen(s);if (i==0) return;if (s[0] >= ’a’ && s[0] <= ’z’)s[0] += ’A’ - ‘a’;if (s[i-1] >= ’a’ && s[i-1] <= ‘z’)s[i-1] +=’A’–‘a’;}main ( ){ char s[ ]=”asdfgh”;uf (s);printf(“ \n%s\n”,s);}3. 从键盘输入10个浮点数,输出其平均值及所有低于平均值的数。
(5分)#include <stdio.h>main ( ){float a[10], ave=0;int i;for (i=0; i<10;i++){scanf(“%f”,&a[i]);ave +=a[i];}ave /=10;for (i=0;i<10;i++)if (a[i]<ave)printf(“%f\t”,a[i]);}习题二一、语言基础(共20分,每题2分)(一)若a为float类型变量,且a=4.6785,则表达式(int)(a*100+0.5)/100.0的值为 4.68 。
(二)设有int x=11,y=10;则以下表达式的值为 10 。
x-- >y? 10:11>y++?’a’:’z’(三)若所有变量都已正确定义为int型则执行下列程序段后x 的值为 79 。
x=80;a=10;b=16;y=9;z=0;if (a<b)if(b!=15)if(!y) x=81;else if(!z) x=79;(四)i,j为int型的变量,则下面程序中的循环体的执行次数为 5 。
i=1;j=0;while(i+j<=10){ if (i>j j=j+2);else i=i+2;}(七)若有以下函数定义:int (*hs ) (){……/*函数体*/}则函数hs返回的值是整形。
(九)设有以下定义:#define a 6#define b a+4则执行语句c=b*10(c为int型数据)后,c的值为46 。
二、阅读下列程序,写出运行结果(共20分,每题4分)[程序1]#include <stdio.h>main(){int i; 运行结果:i= 18,J=29.44 float j;i=18;j=29.4361;printf(“i=%4d,j=%2.2f”,i,j );}[程序2]main(){ int k=10; char c=’b’;doswith(c++) 运行结果:12{case ‘a’:k++;case ‘b’:k--;case ‘c’:k+=3;brea k;case ‘d’:k=k%4;}while(c!=’c’);printf(“%d\n”,k );}[程序3]main(){char a[]=”computer”;char t;int i,j=0; 运行结果:utrpomecfor(i=0;I<8;I++)for(j=i+1;j<8;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}printf(“%s”,a);5、以下程序的输出结果为___hello wellcom______。
main( ){ char s1[40]=" hello",s2[20]=" wellcom";int i=0,j=0;while(s1[i]!='\0') i++;while(s2[j]!='\0') s1[i++]=s2[j++];printf("%s\n",s1);}6、#include <stdio.h>main(){int i, j, x = 0;for (i=0; i<2; i++){x++;for (j=0; j<3; j++){if (j % 2) break;x++;}x++;}printf("x=%d\n",x);}程序运行结果是: x=6三、阅读下列程序,在线处填上合适的内容使程序(或函数)完整(共18分,每空2分)1.以下程序的功能是求三个数的最小公倍数。
max (int x, int y ,int z){if (x>y &&x>z )return(x);else if (y>=x &&y>z)return(y) ;elsereturn(z);}main(){int a,b,c,I=1,j,s;scanf(“%d%d%d”,&a,&b,&c);s= max(a,b,c) ;while(1){j=s*i;if( (j%a==0)&&(j%b==0)&&(j%c==0) )break;i++;}prinf(“%d”,j);}四、编程题(共22分)1.有36块砖,共36人搬,成年男子一次搬4块砖,成年女子一次搬3块砖,儿童两人抬1块砖,恰好一次全部搬完,编程求出成年男子成年女子和儿童各有多少人。
(6分)main(){int men,women,child;for(men=0;men<9;men++)for(womem=0;women<12;women++){child=36-men-women;if((men*4+women*3+child/2.0)=36)printf(“%d,%d,%d\n”,men,women,child);}3.用循环语句编程将二维数组a[3][4]的第一行和第三行对调(如下图),并输出数组。
(8分)main(){int i,j,t;int a[3][4]={2,3,4,5,3,8,10,2,7,9,3,1};for (i=0;i<4;i++){t=a[0][i];a[0][i]=a[2][i];a[2][i]=t;}for (i=0;i<3;i++){for (j=0;j<4;j++)printf(“%3d”,a[i][j]);printf(“\n”);}}习题三一.语言基础(共20分,每题2分)(一)正确的C语言自定义标志符是 A 。
1. A)file_bak B)abc(10)C)continue D)class+3(二)设int x=8,y,z;执行y = z = x ++; x = y ==z后,变量x的值是 B 。