C语言考试试题精选.doc
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
习题1
一、选择题:
1.按照C语言规定的用户标识符命名规则,不能出现在标
识符中的是(B)
A.大写字母
B.连接符
C.数字字符
D.下划线
2.下列数据中是合法的整型常量的是(BCDEF )
A. 3E2
B. -32768
C. 18)000
D. Oxffff
E. 029
F. 0xl2H
3.下列数据中是合法的字符常量的是(BEH)
A. “A”
B. '!'
C. 'AB'
D. h
E. '\\'
F. "\1234‘
G. '\xl23' H. '\0' I. '\k'
4.设有定义:intk=0;,以下选项的四个表达式中与其他
三个表达式的值不相同的是(A )
A. k++
B. k+=l
C. ++k
D. k+1
5.有以下程序,其中%11表示按无符号整数输出
main ()
(unsigned int x二OxFFFF; /* x的初值为十六进制数*/
printf ( "%u\n" , x);
}
程序运行后的输出结果是(B)
A. -1
B. 65535
C. 32767
D. OxFFFF
6.设变量x和y均已正确定义并赋值,以下if语句中,在
编译时将产生错误信息的是(C )
A. if (x++) ;
B.
if(x>y&&y!二0);
C. if (x>y) x一else y++;
D. if (y<0) (;} else x++;
7.以下选项中,当x为大于1的奇数时,值为0的表达式(D )
A. x%2=l
B. x/2
C. x%2!二0
D.
x%2=0
8.已知大写字母'A,的ASCII码值是65,小写字母'a' 的ASCII码值是97,以下不能将变量c中大写字母转换为对
应小写字母的语句是(D )
A. c=(c-A)%26+'a'
B. c二c+32
C. c=c~ A' +' a'
D. c=('A' +c) %26—' a'
9.有以下程序
void main ()
(unsigned char a二2, b二4, c二5, d;
d二a|b; d&二c; printf(〃%d\n〃, d); }
程序运行后的输出结果是(B )
A. 3
B. 4
C. 5
D. 6
二、填空题:
1.设x=
2. 5, a=7, y二4. 7,则x+a%3*(int) (x+y)%2/4的值
为_2. 5 o
2.设a=2 , b二3 , x二
3.5 , y二2.5 ,则
(float) (a+b) /2+ (int) x%(int) y 的值为_3. 500000
________________________________________________ 。
3.设a=12, n二5,则计算了表达式a%二(n%二2)后,a的值为—0 ,计算了表达式a+二a-二a*=a后,a的值为_0 。
4.设a二3, b=4, c=5,计算下面各表达式的值:
(1) a+b>c&&b=c 0 (2) a| |b+c&&b~c 1
(3) ! (a>b)&&!c| |1 1 (4) ! (x=a)&&(y=b)&&0 0
(5) !(a+b)+c-l&&b+c/2 1
三、写出下面程序运行后的结果。
1.#include "stdio.h"
void main()
{
int a,b;
a=077;
b=a&3;
printf("\40: The a & b(decimal) is %d \n",b);
b&=7;
printf("\40: The a & b(decimal) is %d \n",b); }
:The a & b(decimal) is %3
:The a & b(decimal) is %3
2.#include <stdio.h>
void main()
( int
i=8;
j=10;
m=++i;
n=j++;
printf(”%d,%d,%d,%d”,i,j,m,n);
}
9,11,9,10
3.#include <stdio.h>
void main()
( charcl='a',c2=,b',c3=,c',c4=,\10r,c5=,\116,;
printf("a%cb%c\tc%c\tabc\n n,cl,c2,c3);
printf(n\t\b%c %c”,c4,c5);
)
aabb cc abc
AN
4.#include "stdio.h"
void main()
{
int a,b;
a=077;
b=al3;
printf(n\40: The a & b(decimal) is %d \n",b);
bl=7;
printf("\40: The a & b(decimal) is %d \n",b);
}
:The a & b(decimal) is %63
:The a & b(decimal) is %63
5.#include "stdio.h"
void main()
{
int a,b;
a=077;
b=a A3;
printf("\40: The a & b(decimal) is %d \n",b);
b A=7;
printf("\40: The a & b(decimal) is %d \n",b);
:The a & b(decimal) is %60
:The a & b(decimal) is %59
习题2
一、看程序,写运行结果
1.以下程序运行结果是(2 )。
#include<stdio.h>
void main()
{
int x=2,y=-l,z=2;
if(x<y)
if(y<0) z=0; else z+=l;
printf("%d\n",z);
}
2.以下程序的执行结果是(20 )o
#include< stdio. h>
void main()
(
int a,b,c,d,x;
a=c=0;
b=l;
d=20;
if(a) d=d-10;
if(!c)
x=15;
else
x=25;
printf("d=%d\n n,d);
}
3.以下程序的执行结果是(first
third) o
#include<stdio.h>
void main()
(
int x=l,y=0;
switch(x)
{
case 1:
switch(y)
(
case O:printf(”first\n”);break;
case 1:printf(n second\n n);break;
}
case 2:printf(n third\n n);
}
4.以下程序在输入5, 2之后的执行结果是(s=2,t=3)。
#include<stdio.h>
void main()
{
int s,t,a,b;
scanf("%d,%d n,&a,&b);
s=l;
t=l;
if(a>0) s=s+l;
if(a>b) t=s+t;
else if(a==b)
t=5;
else
t=2*s;
printf("s=%d,t=%d\n",s,t);
)
5.以下程序的执行结果是(#&)。
#include<stdio.h>
void main()
{
int a=2,b=7,c=5;
switch(a>0)
(
case l:switch(b<0)
{
case 1:printf(" @ ");break;
case 2:printf("!");break;
}
case 0:switch(c==5)
(
case O:printf("*");break;
case 1:printf(n#H);break;
case 2:printf("$");break;
}
default: printf(" & ”);
}
printfC,\n H);
)
6.以下程序运行结果是(55 1 )o
#include <stdio.h>
void main()
int x,y=l;
if(y!=O) x=5;
printf(”\t%d\iT ,x);
if(y==O) x=4;
else x=5;
printf(n\t%d\n n ,x);
x=l;
if(y<o)
if(y>0) x=4;
else x=5;
printf(H\t%d\n n ,x);
)
7.以下程序的运行结果是(4 -2
4 0
4 -2 )
#include<stdio.h>
void main()
{
int x , y=-2, z=0;
if((z=y)<0) x=4;
else if (y==0)
x=5;
else
x=6;
printf("\t%d\t%d\n" ,x, z);
if(z=(y==O))
x=5;
x=4;
printf("\t%d\t%d\n" ,x,z);
if(x=z=y) x=4;
printf("\t%d\t%d\n" ,x,z);
)
二、程序填空。
1.输入两个整数,按从大到小的顺序输出。
#include<stdio.h>
void main()
{
int x,y,z;
scanf(”%d,%d”,&x,&y);
if( xvy)
(
z=x; x=y;y=z _________
)
printf("%d,%d",x,y);
2.输入一个小写字母,将该字母循环后移5个位置后输出。
如,a,变成f, 'w,变成,b,。
#include <stdio.h>
void main() {
char c;
c=getchar();
if(c>='a'&&c<='u,) c=c+5
else if(c>='v'&&cv='z') putchar(c);
}
3.以下程序实现:输入圆的半径r和运算标志m,按照运算标志进行指定运算。
其中a代表求
面积,c代表求周长,b代表求二者均计算。
#include<stdio.h>
#define PI 3.14159 void main() {
char m;
float r,c,a;
printf ("input mark a c or b && r\n");
scanf ("%c%f',&m,&r);
if ( m= ='a,)
( a= PI*r*r;printf ("area is %f",a);}
if ( m= ='c,)
( c=2* PI*r;printf ("circle is %f',c);}
if ( m= ='b,)
( a= PI*r*r;c=2* PI*r;printf ("area && circle are %f %f",a,c);} }
4.以下程序的功能是计算一元二次方程ax2+bx+c=0的根。
#include<math. h>
#include<stdio.h>
void main() {
double a,b,c,t,disc,twoa,terml ,term2;
printf( "enter a,b,c:");
scanf("%lf%lf%lf H,&a,&b,&c);
if( a>-0.000001 && avO.OOOOOl )
if(b>-O.OOOOOl && bvO.OOOOOl )
printf(" input error\n n); else
printf(H the single root is%lf\n",-c/b);
else
disc=b*b-4*a*c;
twoa=2*a;
terml=-b/twoa;
t=fabs(disc);
term2=sqrt(t)/twoa;
if( b*b-4*a*cv0 )
printf("complex root\n real part=%lf imag part=%lf\n H,terml ,term2);
else
printf(n real roots\n rootl=%lf root2=%lf\n n,term 1 +term2,term 1 -term2);
}
)
5.以下程序根据输入的三角形的三边判断是否能组成三角形,若可以则输出它的面积和三角
形的类型。
#include <stdio.h>
#include <math.h>
void main()
{
float a,b,c,s,area;
scanf(n%f%f%f',&a,&b,&c);
if ( a+b>c && a+c>b && b+c>a)
{
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf(H%f\n n,area);
if( -= =b &&b= =c)
printf("等边三角形\n”);
else if( a= =bll b= =cll c= =a)
printf(”等腰三角形\n”);
else if( a*a+b*b==c*c II a*a+c*c==b*b II b*b+c*c==a*a)
printf("直角三角形\n");
else printf("—般三角形曲');
}
else
printf("不能组成三角形\n”);
)
6.服装店经营套服,也单件出售,若买的不少于50套,每套80元;不足50套的每套90
元;只买上衣每件60元;只买裤子每条45元。
输入所买上衣c和裤子t的件数,计算应付款m。
#include<stdio.h>
void main()
{
int c,t,m;
printf("input the number of coat and trousers your want buy:\n");
scanf(" %d%d" ,&c,&t);
if(c==t)
if(c>=50)
m=80*c;
else
m=90*c;
else
if(c>t)
if(t>=50)
m=80*t + 60*(c-t);
else m=90*t + 60*(c-t);
else
if( c>=50 )
m=c*80+(t-c)*45;
else m=c*90+(t-c)*45; printf(”%d”,m);。