C语言考试复习专用三套题附答案(1)
《C语言程序设计》习题集
习题一
一、语言基础(共20分,每题2分)
(二)说明语句char s=‘\t’,使s包含了几个字符?。
A)1 B)2 C)3 D)说明有错
(三)设a=6,b=4,则表达式b*=a+3
A)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
void main( )
{ int a=1,b=4,c=2; 运行结果: 1
a=(a+b)/c;
printf(“%d \n”,--a);
}
[程序2]
void main ( )
{ char c1=67; /*‘A’的ASCII码值为65 */
if (‘A’ <=c1 && c1<=’Z’) 运行结果: 67,D
printf(“%d,%c”,c1,c1+1);
else printf(“%c”,c1); }
[程序3]
viod main ( )
{ int a=0, n=5; 运行结果: 1,5,4,3,2,0
for ( ; ; )
{ 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
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,9
printf(“%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 9
for (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 { 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 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 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] 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 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 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’; do swith(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; 运行结果:utrpomec for(i=0;I<8;I++) for(j=i+1;j<8;j++)