👉一、选择题
1、 现有定义int a;double b;floatc;char k;,则表达式a/b+c-k值的类型为:.(B)
A、 float B、double C、int D、char
2、 以下正确的字符串常量是©.
A、 thank you B、“\\” C、“abc” D、‘opqrst’
3、 设有定义:int k=0;,下列选项的4个表达式中与其他3个表达式的值不相同的是(A).
A、 k+1 B、++k C、k++ D、k+=1
4、执行下面程序段后,s的值是(B).
int s=5;
switch(++s)
{case 6:
case 7:s+=2;
case 8:
case 9:s+=2;
}
A、7 B、10 C、6 D、8
5. 有以下程序:(C)
#include<stdio.h>
main(){
int n=2,k=0;
while(k++&&n++>2);
printf("%d%d\n",k,n);
}
A、0 2 B、1 3 C、1 2 D、5 7
6. 有以下程序:(D)
#include<stdio.h>
main(){
int c=0,k;
for (k=1;k<3;k++)
switchk{
default:
c+=k;
case 2:
c++; break;
case 4:
c+=2; break;
}
printf("%d\n",c);
}
A、7 B、9 C、5 D、3
7、程序main(){char s[10];s="abcd";printf("%s\n",s);}的运行结果(以下U代表空格)是(B).
A、输出abcd B、编译不通过 C、输出a D、输出abcdUUUUU
8、以下对二维整型数组的正确说明是(D)
A、int n; sacnf(“%d”,&n);int array[n][n]
B、int arry()
C、int n=10,array[n][n]
D、#define M 10(换行) int array[M][M]
9、int a[10];合法的数组元素的最小下标值为(C).
A、10 B、1 C、0 D、9
10、下述对C语言字符数组的描述中错误的是(D).
A、字符数组中的字符串可以整体输入,输出
B、不可以用关系运算符对字符数组中的字符串进行比较
C、字符数组中可以存放字符串
D、可以通过赋值运算符“=”对字符数组整体赋值
11、已有声明"int x,a=3,b=a;",则执行赋值语句"x=a>b++?a++:b++;"后,变量x,a,b的值分别是(D).
A、3 3 4 B、3 3 3 C、343 D、4 3 5
12、以下对C语言函数的有关描述中正确的是(D).
A、在C中调用函数时,只能把实参值传给形参,形参值不能返回给实参
B、C程序中有调用关系的所有函数必须放在同一个源程序文件中
C、没有返回值的函数不能被使用
D、C函数可以递归调用也可以嵌套调用
13、执行以下程序段后,输出结果和a的值是(C).
int a=10;printf("%d",a++);
A、11和10 B、10和10 C、10和11 D、11和11
14、若有定义:int j=3;,则下列语句的结果是(B).
printf("%d,",++j);
A、3,3 B、4,4 C、4,3 D、3,4
15、已知int a=6;则执行a+=a-=a*a;语句后,a的值为(B).
A、-24 B、-60 C、36 D、0
16、以下叙述正确的是(B).
A、用do-while 语句构成的循环,在while后的表达式为非零时结束循环
B、用do-while 语句构成的循环,在while后的表达式为零时结束循环
C、do-while语句构成的循环只能用break语句退出
D、do-while语句构成的循环不能用其它语句构成的循环来代替
17、以下叙述正确的是(B)
A、在一个函数体内可以定义另外一个函数
B、用户定义的函数可以被一个或多个函数调用任意多次
C、C语言系统以函数为单位编译源程序
D、main()函数必须放在程序开始
18、下列叙述中错误的是(B).
A、复合语句在语法上被看作一条语句
B、空语句出现在任何位置都不会影响程序运行
C、赋值表达式末尾加分号就构成赋值语句
D、C语句必须以分号结束
19、C语言源程序名的后缀是(B).
A、.exe B、.C C、.cp D、.obj
20、任何一个C语言的可执行程序都是从(main()函数的入口处)开始执行的.
👉二、程序填空
1、下述语句的输出为__2,2.555556___。
int x=2.5555555;
float y=2.5555555;
printf("%d,%f",x,y);
2、int x=12;z=x+1; 则z的值为__13___.
3、以下程序的执行结果是___9__。
main()
{
int k=8;
switch(k)
{
case 9: k+=1;
case 10: k+=1;
case 11: k+=1; break;
default: k+=1;
}
printf("%d\n",k);
}
4、数组char a[2]中的所有元素是a[0]和__a[1]___.
5、已知char s[]={"book"}; 数组s中字符串长度是_4____.
6、在函数中,需要返回一个结果时,可以使用__return___语句.
7、经过下述赋值后,变量x的数据类型是__int___。
int x=2;
double y;
y=(int)(float)x;
8、函数体由符号__{__开始,用符号___}__结束。
9、int x=2;x*=4; 则x的值为__8___.
10、C语言中,数组名是一个不可变的___地址__常量,不能对它进行加减和赋值运算.
👉 三、 程序改错
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:编写函数fun计算下列分段函数的值:
x*20 x<0且x≠-3
f(x)= sin(x) 0≤x<10且x≠2及x≠3
x*x+x-1 其它
------------------------------------------------------*/
#include "math.h"
#include "stdio.h"
float fun(float x)
{
/**********ERROR**********/
float y改为float y;
/**********ERROR**********/
if (x<0 || x!=-3.0)
y=x*20;
else if(x>=0 && x<10.0 && x!=2.0 && x!=3.0)
y=sin(x);
else y=x*x+x-1;
/**********ERROR**********/
return x;
}
main()
{
float x,f;
printf("Input x=");
scanf("%f",&x);
f=fun(x);
printf("x=%f,f(x)=%f\n",x,f);
}