第一、二章节必会试题:
1.以下叙述中正确的是_________(多选)
A)在编译时可以发现注释中的拼写错误
B)C语言程序的每一行只能写一条语句
C)main(){}必须位于程序的开始D)C语言程序可以由一个或多个函数组成
E)main()函数至少必须有一条语句
F)C程序总是从main函数的第一条语句开始执行
G)C程序总是在执行完main函数的最后一条语句后结束
第三章必会试题:
考点1:常量与变量
在程序执行过程中,值保持不变的量称为常量。变量是指向内存中的一个单元符号。在C语言中,规定变量只能由字母、数字和下划线组成,且第一个字符必须是字母、数字或下划线,常量分为:整型常量、实型常量、字符型常量、字符串型常量、标识符常量
(1)整型常量分为:八进制(以0开头,由数字0—7组成,且第一个数字必须为0),十进制(由数字0—9组成,且第一个数字不能为0),十六进制(以0x开头,由数字0—9,a--f组成)
(2)整型变量:基本整型(int)、短整型(short int)、长整型(long int),长整型以L结尾,无符号整数以U结尾(3)实型常量:十进制小数形式与指数形式(用e表示,e之前必须要有数字,且在E或e之后的指数必须是整数),
(4)实型变量:float,double
(5)字符型常量:用一对单括号引起来的一个字符或以’\’开头的字符序列
(6)字符变量:char
(7)字符串型常量:用一对双括号引起来的若干个字符,在字符串的最后有结束标记”\0”,在C语言中没有专门的字符串变量,只能以字符数组存储
1.设有四个常数:①4e0.5、②’\87’、③0x5A、④” \” ”,其中符合C语法规则的常量是_____
2.以下常数表示中不正确的是____________
A.’\55’B.’55’C.’\x55’D.0x55
3.以下选项中,不能作为合法常量的是_________
A.0X2AB.015C.2.8e9D.123.6e0.4
4.设有声明语句:char a=’\72’;则变量a__________
A.包含一个字符B.包含2个字符C.包含三个字符D.声明不合法
5.以下哪个是合法的常量______________
A.35uB.1.25e3.4C.’\96\45’D.0387
6.以下选项中不能用做用户自定义标识符的是__________
A. length_B._lengthC.length.dD.For
考点2:运算符与表达式
(1)算术运算符:单目运算符:+,-双目运算符:+,-,*,/,%
(2)关系运算符:> , =, <=,==,!=,关系成立时,运算结果为整数1,否则为整数0
(3)逻辑运算符:&&(逻辑与),||(逻辑或),!(逻辑非),优先级从高到底:!, ||, &&
&&与||有短路效应,&&只要第一个为假,则后面不再管结果,||只要有一个为真,则后面不再管结果
(4)赋值运算符:=,+=,-=,*=,/=,%=,^=
(5)自增、自减运算符:++,--,只有变量才能自增,常量是不能自增的
(6)逗号运算符:其运算顺序为从左到右依次计算各个表达式的值,并把最后一个表达式的值作为整个表达式的值
(7)sizeof()运算符:用来计算某种类型或数据做占用的字节数
(8)条件运算符:条件表达式”?:”为三目运算符,要求有三个操作对象
(9)各类运算符号的顺序:首先执行:!,++,--,然后算术运算符,然后关系运算符,然后逻辑运算符,然后条件运算符,然后赋值运算符,然后逗号运算符
例题:
1.设有语句int a=6, b=3; float x=8,y; y=b/a*x/2;,则y的值是________________
2.有数学式3xy/5ab中,变量x和y的取值为整数,而变量a和b的取值为实数,在C程序中对应的正确表达式是______________________
A.3/5*x*y/a/bB.3*x*y/5/a/bC.3*x*y/5*a*bD.3/a/b/5*x*y
3..设有语句”float x=2.9;int a=5,b;b=a+x;”,则变量b的值是___________
4.若a1、a2、a3和a4均为整型变量,则以下选项中符合C语法规则的表达式是______
A.a1=25%3.3B.a2=a1+a3=3*5C.a3=078D.a4=0xa2
5.设有语句”int a,b,c;a=b=c=5;”,执行语句”b+=++a>b &&++c>b;”,则a,b,c的值分别为____
6.设x为整数,C中能正确的表达数学式0≤x<5的是_______
A.0<=x<5B.x=0||x=1||x=2||x=3||x=4C.x>=0||x<5D.!(x<0||x>=5)
7.设有变量说明:”short int a=0,b=0;”,则表达式sizeof(‘a’+’b’)的值是_____
A.1B. 2C.4D.8
8.设有语句:char s[ ]=”Rep\0Ch”; int m=sizeof(s);则m的值是_________
9.执行以下语句后,a的值为___________ int a=0,m=3,n=10;a=(m++,m+n);
10.设有说明语句int a=3,b=2,c; c=--a==b++;则a,b,c的值为_____________________
11.设有说明语句”int a,b;”,执行语句”b=(a=3*5,a*4),a+15;”后,b的值为________
第四章考点:
考点一:字符输入函数(getchar)
考点二:格式输入函数(scanf)
1。设有说明语句:double x,不能通过scanf语句正确的输入数据的语句是________
A.scanf(“%lf”,x);B.scanf(“%f”,&x);C.scanf(“%lf”,&x)D.scanf(“%le”,&x);
例题2.
考点三:字符输出函数(putchar)
考点四:格式输出函数(printf)
2:如有声明”float f=123.45678;”,则执行语句”printf(“%.3f”,f);”后,输出结果为()
A.1.23e+02B.123.457C.123.456780D.1.234e+02
第五、六章考点:
考点一:分支结构(单分支与多分支结构)
1.以下函数中输入5,3,输出结果是_______
#include
int main()
{
int a,b,max;
scanf(“%d,%d”,&a,&b);
if(a>b)
max=a;
else
max=b;
printf(“%d%d”,a,b);
return 0;
}
考点二:switch语句
1.执行以下程序段后,变量i的值是___________
int i=10;
switch(i)
{
case 9: i+=1
case 10: i+=1;
case 11: i+=1;
default: i+=1;
}
考点三:while语句
1.在while(!a)中,其中的!a与表达式_____________等价
A.a==0B.a==1C.a!=1D.a!=0
2.有以下程序段,while循环次数为__________
int k=0;
while(k=1)k++;
考点四:do…while语句
1.以下程序输出的第一行是____________,第二行是______________
#include
void main(void)
{
int x=6;
do
{
x-=2;
printf(“%d\n”,x);
}while(--x);
}
2.设整型变量x的当前值为3,执行以下循环语句后,输出结果为___________
do
{
x-=2;
printf(“%d\n”,x);
}while(!(--x));
3。下面关于while与do……while循环语句的叙述中正确的是______
A.do……while的循环体至少执行一次
B.while的循环体至少执行一次
C.do……while的循环体不能是复合语句
D.do……while允许从循环体外跳转到循环体内
考点五:for循环语句
1.循环语句for(;;)中,执行情况是___________
A.至少执行一次B至少执行两次C.可能执行,也可能不执行D.不执行
2.有如下程序:
void main()
{
int i,sum=0;
for(i=1;i<=3;i++)sum+=i;
printf(“%d\n”,sum);
}
该程序的执行结果是_______________
A.6B.3C.无穷循环D.0
3.设有语句”for(int i=5,sum=0;i<10,sum++;i++) sum+=i;”,则for()语句的执行情况是_____________________
A.循环0次B.循环4次C.循环5次D.循环6次
考点六:break,continue
1。执行以下程序后,输出___________
int s1=0,s2=0,s3=0,s4=0;
for(int t=1;t<=4;t++)
switch(t)
{
case 4: s1++;break;
case 3: s2++;break;
case 2: s3++;
default: s4++;
}
printf(“%d,%d,%d,%d\n”,s1,s2,s3,s4);;
2.continue语句只能用在______________语句中
3.下面程序的功能是:输出100以内(不含100)能被3整除且个位数为6的所有整数,请填空:
#include
#include
main()
{
int i;
int j;
for(i=0;_____________;i++)
{
j=i*10+6;
if(_____________) continue;
else printf(“%d\n”, j);
}
}
考点3:switch语句
例题:下列程序运行后的输出结果,第一行是__________(2008春)
#include
main()
{
int i,a=0,c=2;
switch(++a,a*c)
{case 1: printf(“1”);
case 2: printf(“2”);
case 3:printf(“3\n”);break;
default:printf(“other\n”);
}
}
第六章:循环控制
考点1:while与do while语句实现循环
例题:程序”int x=3; do{printf(“%d”,x--);}while(!x);”的执行结果是____________(2006秋)
A.321B.2C.3D.无穷循环
例题:以下程序运行时输出的结果是_____________(2007秋)
main()
{
int s=1,n=235;
do
{
s*=n%10;
n/=10;
}while(n);
printf(“%d\n”,s);
}
例题:以下程序运行后输出结果的第一行为____________,第二行为_______________(2007春)
#include“stdio.h”
void main()
{ int i=5;
do
{switch(i%2)
{ case 0:i--;break;
case 1:i--;break;
}
i--;printf(“%d\n”,i);
}while(i>0);
}
考点二:for循环
例题:若有声明”int i,k=1;unsigned j;”,则下列语句执行时会出现无限循环的语句是___________(2008春)
A.for(j=15;j>0;j-=2) k++;B.for(j=0;j<15;j+=2)k++;
C.for(i=0;i<15;i+=2) k++;D.for(i=15;i>0;i-=2)k++;
例题:以下程序运行时输出结果为____________________(2007秋)
#include
void main()
{ int i,sum=0;
for(i=0;i<5;i++)
{switch(i)
{case 0:
case 1:sum++;
case 3:sum++;
case 4: sum--;break;
}
}
printf(“%d\n”,sum);
}
例题:以下程序执行后,输出结果的第一行为____________,第二行为________________(2006秋)
#include
void main()
{int w=0,i;
for(i=0;i<3;i++)
switch(w++)
{case 0:
case 1:
case 2:
case 3: printf(“%d\n”,w++);
}
}
例题:下列关于语句的说法中正确的是___________________(2004秋)
A.do…while语句的循环体至少会被执行1次
B.while语句的循环至少会被执行1次
C.for语句的循环体至少会被执行1次
D.在c语言中只能用do,do…while或for语句实现循环
例题:定理:对于任意一个正整数都可以找到至少一串连续奇数,它们的和等于该正整数的立方。例如:33=27=7+9+11,43=64=1+3+5+7+9+11+13+15。以下程序用[2,20]之间的所有正整数验证该定理。(2004秋)
#include
main()
{
long n,i,k,j,p,sum;
for(n=2;n<=20;n++)
{k=n*n*n;
for(i=1;i
{for(j=i;sum=0;__________;j+=2)sum+=j;
if(sum==k)
{printf(“\n%ld*%ld*%ld=%ld=”,n,n,n,sum);
for(p=i;p<___________ printf>
break;
}
}
if(i>=k/2) printf(“\n error!”);
}
}
例题:以下程序采用递推法计算
考点三:break,continue语句
例题:以下程序运行后输出结果的第一行为_______________-,第二行为_______________(2007春)
#include
void main()
{int i=5;
do
{switch(i%2)
{ case 0:i--;break;
case 1:i--;break;
}
i--;printf(“%d\n”,i);
}while(i>0);
}