一、填空。
1、c语言规定,在一个源程序中main函数的位置可以任意
2、c语言中的标识符只能由三种字符组成,它们是数字 、 字母和下划线
3、表达式18/4*sqrt(4.0)/8值的数据类型为双精度
4、当a=3,b=2,c=1时,表达式f=a>b>c的值是 0
5、在c语言中,char型数据在内存中的存储形式是 ascii值
6、对应scanf(“a=%d,b=%d”,&a,&b);语句的输入a为3,b为7的键盘输入格式是a=3,b=7
7、c语言提供的三种逻辑运算符是 &&
8、下面程序段的运行结果是 you?
char str=how are you?”;
printf(“%s”,str+8);
9、模块化程序设计要求: 高内聚、低偶合。
10、已知指针p的指向如图所示,则表达式*p++的值是 21
二、单项选择。
1、以下运算符中运算级别最高的是(d)
a) %b)/ c)< d)!
2、以下是字符常量的是 c
(a)"c" (bc) 'w' (d) '
3、sizeof(float)是 b 。
a)一个双精度型表达式
b)一个整型表达式。
c)一种函数调用
d)一个不合法的表达式。
4、已知i、j、k为int 型变量,若从键盘输入:1,2,3《回车》,使i的值为1,j 的值为2,k的值为3,以下选项中正确的输入语句是:(c)
a) scanf("%2d%2d%2d",&i,&j,&k);
a) scanf("%d %d %d",&i,&j,&k);
a) scanf("%d,%d,%d",&i,&j,&k);
a) scanf("i=%d,j=%d,k=%d",&i,&j,&k);
5、以下非法的赋值语句是:(c)
a)n=(i=2,++ib)j++;
c)++i+1d)x=j>0;
6、以下四个选项中,均是不合法的用户标识符的是(c)
a)a p_o do (b)float la0 _a
c)b-a goto int (d)_123 temp int
7、若有说明语句:char c= '72 ';则变量c(a)
a)包含1个字符 (b)包含2个字符。
c)包含3个字符 (d)说明不合法,c的值不确定。
8、下面不正确的字符串常量是:(a)
a) 'abc ' b) "12 '12" (c) "0" (d) "
9、执行下列程序段后, a值为: d
int a, b;
a=15; b=12;
a=(a-- b++)a%5 : a/5;
(a) 0 (b)2.8 (c)4 (d) 2
10、判断char型变量ch是否为大写字母的正确表达式是(c)
a)’a’<=ch<=’z
(b) (ch>=’a’)&ch<=’z’)
(c) (ch>=’a’)&ch<=’z’)
(d) (a’<=ch) and (‘z’>=ch)
11、以下程序的运行结果是(c)
main()
int m=5;
if(m++>5)
printf(“%d”,m);
elseprintf(“%d”,m--)
a)4 (b) 5 (c) 6 (d) 7
12、以下程序段的运行结果是:(b)
int x=0,s=0;
while(!x!=0) s+=+x;
printf(“%d”,s);
a)0(b)1(c)无限循环(d)程序段中的控制表达式是非法的。
13、c语言中while和do-while循环的主要区别是 (a)。
a)do-while的循环体至少无条件执行一次。
b)while的循环控制条件比do-while的循环控制条件严格。
c)do-while允许从外部转到循环体内。
d)do-while的循环体不能是复合语句。
14、有如下程序,该程序的执行结果是( c )
main()
int num=0;
while(num<=2)
num++;
printf(“%d”,num);
a)1 (b)12 (c)123 (d)1 2 3 4
15、以下程序运行后的输出结果是(a)
main()
int i=3, j=0;
do j=j+(-i); while(i<2);
printf(“%d”,j);
a)2 (b)3 (c) 4 (d)无限循环
16、如果char cc=12345”,做sizeof(cc)后的返回值应为( c )
a)2 (b) 5 (c)6 (d)1
17、判断字符串a和b是否相等,应当使用(d)。
(a)if(a==b
b)if(a=b)
c)if(strcpy(a,b
d)if(strcmp(a,b))
18、执行语句for(i=1;i++<4;);后变量i的值(c)
a)3 (b) 4 (c) 5 (d)不定。
19、下面程序行的结果是:(c)
func(int a,int b)
int c;
c=a+b;
return c;
main()
int x=6,y=7,z=8,r;
r=func((x--,y++,x+y),z--)
printf(“%d”,r);
a)11 (b) 20 (c)21 (d)31
20、有以下程序:
main()
char s=abcd",*p;
for(p=s+1;p}
程序运行后的输出结果是( d )
a) abcdb) a c) b d) bcd
bcd b c cd
cd c d d
d d三、改错题。
1、 以下程序段求两个数的和:
int a,b=4,c;
scanf(“%d”,a);
c=a+b;
printf(“%d”,c);
答案:scanf(“%d”,a);有错,应为:scanf(“%d”,&a);
2、 以下程序段将输入字符显示到屏幕上:
char ch;
ch=getchar(‘ch’);
putchar(‘ch’);
答案:一、ch=getchar(‘ch’);有错。
改为:ch=getchar()
二、putchar(‘ch’);有错。
改为:putchar(ch);
3、 以下程序段输出最大者:
int a=5,b=3;
if(aelse printf(“%d”,b);
答案:if(a改为:
if(a>b) printf(“%d”,a);
4、 以下程序段求1-10所有数的和:
int sum,i;
do sum=sum+i;
i++;while(i<10);
printf(“%d”,sum);
答案:int sum,i;有错。
改为:int sum=0,i=1;
while(i<10);有错。
改为。while(i<=10);
5、 以下程序段将输入的字符串显示到屏幕上:
char str[20];
scanf(“%s”,&str);
puts(str);
答案:scanf(“%s”,&str);有错。
改为。scanf(“%s”,str);
因为数组名本身就表示数组的首地址。
四、编程题。
答案:#include ""
void main()
double x,y;
printf("请输入x的值:")
scanf("%lf",&x);
if(x<1)
else if(x>=1 &&x<10)
elsey=3*x-1;}
printf("y=%lf",y);
2、求十个学生成绩的平均值。
答案:#include ""
void main()
double score[10],sum=0,**g;
int i;
printf("请输入10个学生的成绩:")
for(i=0; i<10; i++)
**g=sum/10;
printf("学生的平均成绩为:%.2lf",**g);
C 练习题答案
一 基本概念与基础知识自测题。3.1 程序阅读题。3.1.1 设有说明 int a 3,b 100 下面的循环语句执行 1 次,执行后a b的值分别为 2 3 while b a 5 假定a 10,b 4,c 5,下列语句的执行结果分别是 1 和 2 1 cout 答案 4.1.7下列程序的输出结果...
C 练习题答案
c 练习题。一 填空题。1 在c 中,函数的参数有两种传递方式,它们是值传递和地址或指针或引用传递 2 在公有继承的情况下,基类数据成员在派生类中的访问权限保持不变 3 描述命题 a小于b或小于c 的表达式为 ac b c 的值是 0 6 面向对象的程序设计有四大特征,它们是抽象 封装 继承 多态 ...
C 高级编程练习题
1.函数声明和函数定义有什么区别?答 1 函数声明是函数的原型,强调函数如何被使用,不包含函数的实现 2 函数定义给出函数的实现 2.const char p1 char const p2 的区别。答 1 const位于星号的左侧,const用来修饰指针所指向的变量,即指针指向为常量 2 const...