一、 单项选择题
1、在C语言中,要求操作数必须是整型的运算符是( )。
A、/ B、+ C、!= D、%
2、C语言程序是由( )组成的。
A、函数 B、子程序 C、过程 D、主程序和子程序
3、以下叙述正确的是( )。
A、在C程序中,main()函数必须位于程序的最前面
B、C程序的每一行中只能写一个语句
C、在对一个C程序进行编译时,可发现注释中的拼写错误
D、C语言本身没有输入输出语句
4、一个C程序的执行是从( )。
A、本程序的main函数开始,到main函数结束
B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C、本程序的main函数开始,到本程序文件的最后一个函数结束
D、本程序文件的第一个函数开始,到本程序main函数结束
5、语句while(!n)中的条件!n等价于( )。
A、n==0 B、n==1 C、n!=1 D、n!=0
6、实参和和形参之间的数据传送是( )。
A、地址传送 B、实参传给形参,再由形参传给实参
C、单向值传送 D、由用户指定传送方式
7、下列自定义标识符中,符合C语言规定的是( )。
A、for B、3a C、*a D、_123
8、以下叙述错误的是( )。
A、for循环需要循环变量,while/do-while不需要循环变量
B、for循环、while循环先判断后执行
C、do-while循环总是至少执行一次
D、for、while、do-while循环的循环体均可为空语句
9、C语言标识符只能由字母、数字和下划线三种字符组成,且第一个字符( )。
A、必须是字母 B、必须为下划线
C、必须为字母或下划线
D、可以是字母、数字或下划线中任一字符
10、下列整数值中,不正确的八进制或十六进制的是( )。
A、0x18 B、016 C、086 D、0x5C
11、若有定义:int a,b;则表达式:(a=2,b=5,b++,a+b)的值是( A、2 B、6 C、7 D、8
12、对于int a=6;表达式1<=a<=5的值是( )。
A、0 B、1 C、不定 D、表达式有语法错误
13、执行下面的程序片段,描述正确的是( )。
int x=-1;
。
)
do { x=x*x; } while(!x);
A、是死循环 B、循环执行两次
C、循环执行一次 D、语法错误
14、C语言中的语句需要符号( )作为结尾。
A、: B、; C、 。 D、//
15、下列关于单目运算符++、--的叙述中正确的是( )。
A、它们的运算对象可以是任何变量和常量
B、它们的运算对象可以是char型变量和int型变量,但不能是float型变量
C、它们的运算对象可以是int型变量,但不能是double型变量和float型变量
D、它们的运算对象可以是char型变量、int型变量和float型变量
16、以下程序的输出结果是( )。
main()
{ int a=8,b=8;
printf(“%d %d\\n”,--a,++b);}
A、7 7 B、8 8
C、7 8 D、7 9
17、设a和b均为double型变量,且a=5.5,b=2.5,则表达式 (int)a+b/b是( )。
A、6.500000 B、6 C、5.500000 D、6.000000
18、设x,y 和z是int型变量,且x = 3,y= 4,z= 5,则下面表达式中值为0的是( )。
A、 'y'&&'y' B、 x < =y C、x||(y+z)&&(y-z) D、!(x19、结构化程序设计规定的三种基本控制结构是( )。A、输入、处理、输出 B、顺序、选择、循环
C、树形、网形、环形 D、主程序、子程序、函数
20、若x 为int型变量,则执行语句x=10; x+=x=0x-x后,x的值为_______。
A、0 B、10 C、20 D、30
21、执行下面的程序片段,描述正确的是( )。
int k=5;
while(k==1) k--;
A、while循环执行四次 B、循环体执行一次
C、循环体一次也不执行 D、死循环
22、在以下函数调用语句中,函数fun1参数的个数为( )。
fun1(x,y,fun2(a,b));
A、3 B、4 C、5 D、编译出错
23、 在C程序中,x + y是_______、x + y;是_______。
A)表达式、语句 B)表达式、表达式
C)语句、语句 D)语句、表达式
24、使用语句scanf(\"a=%f,b=%d\输入数据时,正确的数据输入是(A、a=4.5,b=3 B、a=4.5 b=3
C、4.5 3 D、4.5,3
。 )
25、判断char型变量ch是否为大写字母的正确表达式是( )。
A、‘A’<=ch<=‘Z’ B、(‘A’<=ch) AND (‘Z’>= ch)
C、(ch>=‘Z’)&(ch<=‘Z’) D、(ch>=‘A’)&&(ch<=‘Z’)
26、在下列选项中,不正确的赋值语句是 。
A、s=++t; B、n1=(n2=(n3=0)); C、k=i==j; D、b+c=1;
27、假设变量a是整型,b是实型,c是双精度型,则表达式30+a+c*b的值的数据类型是 。
A、int B、float C、double D、不确定
28、执行下列程序片段时输出结果是( )。
int x=13,y=5;
printf(“%d”,x%=(y/=2));
A、3 B、2 C、1 D、0
29、若有下列语句:
char c=‘A’ ;
printf(“%d”,c);
则输出的结果是( )。
A、c B、A C、65 D、错误的语句
30、下列函数中能够向终端输出一个字符或字符型变量值的是( )。
A、gets B、puts C、putchar D、getchar
31、能正确表示\"当x 的取值在[1,10]或[200,210]范围内为真,否则为假\"的表达式是 。
A、(x>=1) &&(x<=10) &&(x> = 200) &&(x<=210)
B、(x>=1) || (x<=10) ||(x>=200) ||(x<=210)
C、(x>=1) &&(x<=10)||(x>= 200) &&(x<=210)
D、(x > =1)||(x< =10) && (x> = 200)||(x<=210)
32、已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,正确的数据输入方式是( )。
int a1,a2; char c1,c2;
scanf(“%d%c%d%c”,&a1, &c1,&a2, &c2);
A、10A 20B (回车)
B、10 A 20 B (回车)
C、10 A20 B (回车)
D、10A20 B (回车)
33、下列运算符中优先级最高的是 。
A、< B、 十 C、&& D、!=
34、对于int a=4;表达式1<=a<=5的值是( )。
A、0 B、1 C、不定 D、错误的表达式
35、根据定义和数据的输入方式,输入语句的正确形式为 。
已有定义: float fl,f2;
数据的输入方式:4.52
3.5
A、scanf(\"%f,%f\ B、scanf(\"%f%f\
C、scanf(\"%3.2f%2.1f\、scanf(\"%3.2f%2.1f\
1、下列有关C程序的说法错误的是( B )。
A)一个C程序的执行总是从main函数开始的。
B)在C程序中,main函数必须位于程序的最前面。C)C语言本身没有提供输入/输出语句。
D)分号是C语言语句不可分割的组成部分。
2、下列有关算法的说法错误的是( B )。
A)为解决一个问题而采用的方法和步骤称为算法。
B)排序算法为数值运算算法。
C)算法的每个步骤应具有确定性和有效性。
D)一个算法应有一个或多个输出。
3、下列选项中不符合C语言语法的实型常量的是( )。1.5e2
D
A)-3.14 B)123f C)2.3E5 D)1E2.5
4、已知:char a; int b; float c; 则表达式a+b-c的结果为( D )型。
A)int B)char C)float D)double
5、有以下程序:
#includevoid main()
{
char a='a', b;
printf(\"%c\
printf(\"%3c\\n\
}
程序运行后输出结果是( A)b b B)b c A )。
C)a b D)a c
6、设有定义:int a=6,b=3,c=9,d=2; 则表达式aA)1 B)0 C)2 D)6
7、以下程序的输出结果是( D )。
#includevoid main()
{
int a=0, i;
for(i=0;i<5;i++)
{
switch(i)
{
case 1:
case 2: a+=3;
case 3: a+=2; break;
default: a+=5;
}
}
printf(\"%d\\n\
}
A)17 B)20 C)25 D)22
8、已知:int i=0,k; 有如下for语句:
for(k=-1;k=1;k++) printf(\"***\\n\");
下面有关语句执行情况的叙述正确的是( A )。
A)构成无限循环 B)循环体执行两次
C)循环体执行一次 D)循环体一次也不执行
9、下面对数组的初始化,不合法的是( A )。
A)int a[2][]={{1},{2,3,4}}; B)int a[4]={1,2,3};
C)char s[]={'\\04','\\0','\\n','\\0'}; D)char s[]=\"abccde\";
10、下列有关字符串处理函数的说法错误的是( C )。
A)strcat()函数可实现两个字符串的连接
B)strcmp()函数用于比较两个字符串的大小
C)用gets()函数可实现调用一次输入多个字符串
D)puts()函数一次只能输出一个字符串
11、在C语言中,引用数组元素时,其数组下标的数据类型允许是( A)整型常量 B)整型常量或整型表达式
C)整型表达式 D)任何类型的表达式
12、下列有关C函数的说法正确的是( B )。
A)main函数是无参函数
B)C函数中,形式参数必须指定确定类型
)。 B
C)C函数既可以嵌套定义,又可以递归调用
D)C函数必须有返回值,否则无法使用
13、下列关于C语言中return语句正确的说法是( C )。
A)只能在主函数中出现 B)在每个函数中必须出现
C)可以在一个函数中出现多次 D)只能在出主函数之外的函数中出现
14、用一维数组名作函数的实际参数,则传递给形式参数的是( C )。
A)数组中元素的个数 B)数组中第一个元素的值
C)数组首元素的地址 D)数组中全部元素的值
15、下列关于C语言全局变量与局部变量的叙述中,错误的是( C )。
A)函数中的形式参数是局部变量
B)全局变量的生存周期是从程序开始到程序结束
C)全局变量的作用域是整个程序范围
D)函数调用结束,函数中动态局部变量释放内存空间,变量值消失
16、下列有关指针的叙述中错误的是( D )。
A)一个变量的地址称为该变量的指针
B)指针变量中只能存放地址
C)指针变量可以进行加、减等算术运算
D)指针变量不占用存储空间
17、设有int a[10],则下列表达式不能表示数组元素a[1]地址的是(A)&a[1] B)a+1 C)&a[0]+1 D)*a+1;
18、下列给指针变量p赋值的方法不合法的是( C )。
A)int i, *p=&i; B)int a[10], *p=a;
C)int i, *p=2000; D)char *str= “I love China”;
19、下述有关结构体的说法正确的是( D )。
A)定义结构体时,其成员的数据类型不能是结构体本身
B)结构体内的成员不能是结构体类型
D )。
C)结构体变量可以整体进行输入和输出
D)结构体变量所占存储空间是各个成员所需存储空间之和
20、设fp已正确定义且执行某文件,当未遇到文件结束标志时函数feof(fp)的值为( A )。
A)0 B)1 C)-1 D)一个非0值
二、填空题
1、一个C语言源程序文件,经编译连接后生成的程序文件扩展名为( .exe 2、仅由顺序、选择、循环结构构成的程序是( 结构化 )程序。
3、表达式a+=a-=a=5的值是( 0 )。
4、C语言中,在程序运行期间,其值不能改变的量称为( 常量 )。
5、C语句分5类,分别是( 控制语句 )、函数调用语句、表达式语句、
复合语句和空语句。
6、设a=3,b=4,c=5,则表达式a+b>c&&b!=c的值为( 1 )。
7、从正整数i中取出个位数字的表达式为( i%10 )。
。
)
8、在调用一个函数的过程中又出现直接或间接调用该函数,称为函数的( 递归调用 )。
9、设有以下定义:struct person { int num; char name[10]; } s, *p=&s; 则通过指针p引用s的成员num的形式为( p->num )。 也可以是:(*p).num
10、C语言中,关闭数据文件使用的函数是(三、程序阅读题
1、 #includemain()
{
char ch;
scanf(\"%c\
ch=(ch>='A' && ch<='Z')?(ch+32):ch;
printf(\"%c\\n\
}
fclose( ) 。
)
2、 #includemain()
{
int n;
for(n=15;n<=21;n++)
{
if(n%3==0||n%2==0)
continue;
printf(\"%5d\
}
}
3、 #includemain()
{
int i,n=0,a[5]={5,2,0,11,1};
for(i=1;i<5;i++)
if(a[i]>a[n])
n=i;
printf(\"%3d\
}
4、 #includeint a=3,b=5;
main()
{
int a=8;
printf(\"max=%d\
}
int max(int a,int b)
{
int c;
c=(a>b)?a:b;
return c;
}
5、#includemain()
{
char *a=\"Chinese!\";
a=a+4;
printf(\"%c\\n\
}
6、main()
{ int a=5,b=4,c=3,d;
d=(a>b>c);
printf(\"%d\\n\
}
该程序执行后的输出结果为
7、#includemain()
{ int i,sum=0;
for(i=1;i<=100;i++)
{ if(i%5!=0) continue;
sum+=i;
}
printf(\"%d\\n\
}
写出运行结果:
8、main()
{ int i,sum=0;
for(i=1;i<=3;i++) sum+=i;
printf(“sum=%d\\n”,sum);
}
该程序执行后的输出结果为
9、#includemain()
{ int i,j,sum=0;
for(i=2;i<=20;i++)
{
for(j=2;jif(i%j==0)
break;
if(j==i)
sum+=i;
}
printf(\"%d\\n\
}
写出运行结果:
四、程序设计
1、有如下分数序列:
2358131,2,3,5,8,……
编写程序求出这个数列的前20项之和。
2、有如下函数:
xy2x2x210(x0)(0x10)(x10)
编写程序,从键盘输入x的值,在屏幕上输出相应的y的值。
3、输入10个学生成绩,存入数组score中,按从高到低的顺序输出成绩,并给出平均分。
4、编写程序求1~1000之间能同时被3,5,7整除的数,按每行10个数的格式输出这些数。
5、编程序,输出所有的水仙花数。水仙花数是一个三位数,其各位数字立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3 就是一个水仙花数。
6、编写程序实现:使用switch语句实现输入1-7之间的任意数字,输出相应的星期值。例如:输入1,则输出星期一。
7、自定义一函数,求从键盘上输入的3个整数的最大数,然后在主函数中调用该函数。