C语言 已修改 附答案.docx
《C语言 已修改 附答案.docx》由会员分享,可在线阅读,更多相关《C语言 已修改 附答案.docx(54页珍藏版)》请在冰点文库上搜索。
C语言已修改附答案
第一章C语言基础知识
一、选择题
1.C语言规定,必须用C作为主函数名。
A)FunctionB)includeC)mainD)stdio
2.一个C程序可以包含任意多个不同名的函数,但有且仅有一个B,一个C程序总是从开始执行。
A)过程B)主函数C)函数D)include
3.A是C程序的基本构成单位。
A)函数B)函数和过程C)超文本过程D)子程序
4.下列说法正确的是D。
A)main函数必须放在C程序的开头
B)main函数必须放在C程序的最后
C)main函数可以放在C程序的中间部分,但在执行C程序时是从程序开头执行的
D)main函数可以放在C程序的中间部分,但在执行C程序时是从main函数开始的
5.在C语言中,每个语句和数据定义是用结束。
C
A)句号B)逗号C)分号D)括号
6.以下说法正确的是C。
A)C语言程序总是从第一个定义的函数开始执行
B)在C语言程序中,要调用的函数必须在main()函数中定义
C)C语言程序总是从main()函数开始执行
D)C语言程序中的main()函数必须放在程序的开始部分
7.B不是C语言提供的合法关键字。
A)switchB)printC)caseD)default
8.一个C语言程序是由B。
A)一个主程序和若干个子程序组成;
B)函数组成,并且每一个C程序必须且只能由一个主函数;
C)若干过程组成;
D)若干子程序组成.
二、填空题
1.一个C程序至少包含一个主函数,即main函数。
2.一个函数由两部分组成,它们是说明部分和函数体。
3.函数体的范围是最外层的一对大括弧内地部分。
4.函数体一般包括变量定义和执行部分。
5.C语言是通过输入和输出函数来进行输入输出的。
6.在C语言中,凡在一个标识符后面紧跟着一对圆括弧,就表明它是一个函数。
7.主函数名后面的一对圆括号中间可以为空,但一对圆括号不能小写。
第二章C语言程序设计的初步知识
一、选择题
1.在C语言中,下列类型属于基本类型的是C。
A)整型、实型、字符型B)空类型、枚举型
C)结构体类型、实型D)数组类型、实型
2.下列字符串属于标识符的是A。
A)INTB)5_studentC)2ongD)!
DF
3.下列字符串属于标识符的是A。
A)_WLB)3_3333C)intD)LINE3
4.下列字符串不属于标识符的是D。
A)_aboveB)allC)_endD)#dfg
5.在C语言中,回车换行符是A。
A)\nB)\tC)\vD)\b
6.在ASCII码表中可以看到每个小写字母的ASCII码比它相应的大写字母的ASCII码A。
A)大32B)大64C)小32D)小64
7.设d为字符变量,下列表达式不正确的是C。
A)d=97B)d=’a’C)d=”a”D)d=’g’
8.如果i=3,则k=(++i)+(++i)+(i++)执行过后k的值为A,i的值为。
A)15,6B)12,5C)18,6D)15,5
9.如果inti=3,则printf(“%d”,-i++)的结果为A,i的值为。
A)-3,4B)-4,4C)-4,3D)-3,3
10.如果inti=3,intj=4,则k=i+++j执行之后k,i和j的值分别为C。
A)7,3,4B)8,3,5C)7,4,4D)8,4,5
11.已知在ASCII字符集中,数字0的序号为48,下面程序的输出结果为B。
main()
{charx,y;
x=’0’;y=’9’;
printf(“%d,%d\n”,x,y);
}
A)因输出格式不合法,输出错误信息B)48,57
C)0,9D)48,58
12.已知在ASCII字符集中,字母A的序号为65,下面程序的输出结果为C。
main()
{charc=’A’;inti=10;
c=c+10;
i=c%i;
printf(“%c,%d\n”,c,i);
}
A)75,7B)75,5
C)K,5D)因存在非图形字符,无法直接显示出来
13.C语言中最简单的数据类型包括B。
A)整型,实型,逻辑型B)整型,实型,字符型
C)整型,字符型,逻辑型D)整型,实型,逻辑型,字符型
14.下面程序的输出结果是A。
main()
{intx;
x=-3+4*5-6;printf(“%d”,x);
x=3+4%5-6;printf(“%d”,x);
x=-3*4%-6/5;printf(“%d”,x);
x=(7+6)%5/2;printf(“%d”,x);
}
A)11101B)11–321
C)12–321D)11121
15.下面程序的输出结果是B。
mian()
{intx=2,y=0,z;
x*=3+2;printf(“%d”,x);
x*=y=z=4;printf(“%d”,x);
}
A)840B)1040
C)10,4D)8,4
16.下面程序的输出结果是A。
main()
{inti,j;
i=16;j=(i++)+i;printf(“%d”,j);
i=15;printf(“%d%d”,++i,i);
}
A)321615B)331515
C)341516D)341615
17.表达式(int)2.1416的值为A。
A)2B)2.1C)0D)3
18.表达式(double)(20/3)的值为B。
A)6B)6.0C)2D)3
19.若有以下定义,则正确的赋值语句为A。
inta,b;
floatx;
A)a=1,b=2,B)b++;
C)a=b=5D)b=int(x);
20..C语言规定标识符由A等字符组成.
A)字母 数字 下划线 B)中划线 字母 数字
C)字母 数字 逗号 D)字母下划线中划线
21.若有如下定义:
inta=2,b=3;floatx=3.5,y=2.5;则表达式:
(float)(a+b)/2+(int)x%(int)y的值是B。
A)2.500000B)3.500000C)4.500000D)5.000000
22.有如下语句:
printf(“%s,%5.3s\n”,“COMPUTER”,“COMPUTER”);执行语句后的最终结果为B。
A)COMPUTER,CMP.B)COMPUTER,CMP.
C)COMPU,CMP.D)COMPU,CMP
23.已知ch是字符型变量,下面不正确的赋值语句是:
B。
A)ch=‘\0’B)ch=‘a+b’
C)ch=‘7’+‘9’D)ch=7+9
24.若x和y都为float型变量,且x=3.6,y=5.8执行下列语句后输出结果为:
B。
printf(“%f”,(x,y));
A)3.600000B)5.800000
C)3.600000,5.800000D)输出符号不够,输出不正确值
25.设变量a是整型,变量f是实型,变量I是双精度型,则表达式10+‘a’+I*f值的数据类型:
C。
A)intB)floatC)doubleD)不确定
26.已知字母A的ASCII码为十进制65,下面程序段的运行结果为:
A。
charch1,ch2;
ch1=‘A’+5-3;ch2=‘A’+6-3;
printf(“%d,%c\n”,ch1,ch2);
A)67,DB)B,CC)C,DD)不确定值
二、填空题
1.C语言的数据类型有四大类,分别是基本类型构造类型指针类型空类型
2.C语言数据类型中构造类型包括三种,他们是、、。
数组类型结构体类型共用体类型
3.C语言基本数据类型包括整型字符型实型枚举类型。
4.在C语言中,程序运行期间,其值不能被改变的量叫常量。
5.在C语言中,常量有不同的类型,包括、、和等。
整型常量实型常量字符常量字符串常量
6.在C语言中,在习惯上符号常量名用,变量用。
(大写或小写)大写小写
7.在C语言中,标识符只能由、和三种字符组成,且第一个字符必须或。
字母数字下划线字母下划线
8.可以用来表示C的整常数的进制是、、。
十进制十六进制八进制
9.在C语言中,实数有两种表现形式,是和。
十进制数形式指数形式
10.C的字符常量是用单引号括起来的一个字符。
11.在一个变量定义语句中可以同时定义多个变量,变量之间用逗号隔开。
12.C语言中规定,在变量定义的同时也可以给变量赋初值,叫做变量初始化。
13.下面的程序
mian()
{printf("abc\tde\rfg\n");/*空白处分别为两个和一个空格*/
printf("h\ti\b\bjk");/*空白处为三个空格*/
}
运行结果是fgabcde。
14.在C语言中,字符型数据和整型数据之间可以通用,一个字符数据既能输出,也可以输出。
字符形式整数形式
15.下面的程序
main()
{charc1,c2;
c1='a';c2='b';
c1=c1-32;c2=c2-32;
printf("%c%c",c1,c2);
}
运行结果为AB。
16.在ASCⅡ代码表中可以看到每一个小写字母比相应的大写字母的ASCⅡ代码大32。
17.在C语言中,系统在每一个字符串的结尾自动加一个“字符串结束标志符”即’\0’,以便系统据此数据判断字符串是否结束。
18.在C语言中,算术运算符的结合性是左结合。
19.下面的程序
mian()
{floatx;inti;
x=3.6;i=(int)x;
printf("x=%f,i=%d",x,i);
}
运行结果为。
x=3.600000,i=3
20.如果inti=3,则printf("%d",-i++)执行后输出是,i的结果是。
-3,4
21.表达式x=(a=3,6*3)和表达式x=a=3,6*a分别是表达式和表达式,两个表达式执行完的结果是和.执行后X的值分别是,.赋值逗号1818183
22.main()
{inti,j,m,n;
i=8;j=10;
m=++i;n=j++;
printf("%d,%d,%d,%d",i,j,m,n);
}
运行后i,j,m,n的值是.9,11,9,10
23.在C语言中,可以利用,将一个表达式的值转换成指定的类型。
强制类型转换
第三章顺序结构程序设计
一、选择题
1.C语言中调用printf进行输出时需要注意,在格式控制串中,格式说明与输出项的个数必须相同。
如果格式说明的个数小于输出项的个数,多余的输出项将A;如果格式说明的个数多于输出项的个数,则对于多余的格式将输出不定值(或0)。
A)不予输出B)输出空格
C)照样输出D)输出不定值或0
2.在scanf函数的格式控制中,格式说明的类型与输入的类型应该一一对应匹配。
如果类型不匹配,系统B。
A)不予接收
B)并不给出出错信息,但不可能得出正确信息数据
C)能接受正确输入
D)给出出错信息,不予接收输入
3.以下程序的输出结果是A。
main()
{
inti=010,j=10,k=0x10;
printf("%d,%d,%d\n",i,j,k);
A)8,10,16B)8,10,10C)10,10,10D)10,10,16
4.设有如下定义
intx=10,y=5,z;
则语句
printf("%d\n",z=(x+=y,x/y));
的输出结果是D。
A)1B)0C)4D)3
5.以下程序的输出结果是D。
main()
{intx=10,y=10;
printf("%d%d\n",x--,--y);
}
A)1010B)99C)910D)109
则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是。
A)scanf("x=%dy=%d",&x,&y);a=getchar();b=getchar();c=getchar();
B)scanf("%dy%d",&x,&y);a=getchar();b=getchar();c=getchar();
C)scanf("%d%d%c%c%c%c%c%c",&x,&y,&a,&a,&b,&b,&c,&c);
D)scanf("%d%d%c%c%c",&x,&y,&a,&b,&c);
6.若已知a=10,b=20,则表达式!
a
A)10B)20C)1D)0
7.printf函数中用到格式符"%4s",其中数字4表示输出的字符串站用4列。
如果字符串长度大于4,则按原字符长从左向右全部输出;如果字符串长度小于4,则输出方式为C。
A)从左起输出该字符串,右补空格B)按原字符长从左向右全部输出
C)右对齐输出该字符,左补空格D)输出错误信息
8.以下程序的输出结果是:
(注:
▂表示空格)D。
main()
{printf(“\n*s1=%8s*”,“china”);
printf(“\n*s2=%-5s*”,“chi”);}
A)*s1=china▂▂▂*B)*s1=china▂▂▂*
*s2=chi**s2=chi▂▂*
C)*s1=▂▂▂china*D)*s1=▂▂▂china*
*s2=▂▂chi**s2=chi▂▂*
二.填空题
1.putchar函数的作用是。
向终端输出一个字符
2.printf函数的“格式控制”包括两部分,他们是和。
格式说明普通字符
3.对不同类型的语句有不同的格式字符。
例如:
格式字符是用来输出十进制整数,格式字符是用来输出一个字符,格式字符是用来输出一个字符串。
d,c,s
4.如果要输出字符“&”,则应该在“格式控制”字符串中用表示。
连续两个%
5.getchar函数的作用是。
从终端输入一个字符
6.符号“&”是运算符,&a是指。
地址a在内存中的地址
7.scanf函数中的“格式控制”后面应当是,而不是。
变量地址变量名
8.C语言中的空语句就是。
一个分号
9.复合语句是由一对括起来的若干语句组成。
花括弧
10.下列程序的输出结果是。
65A
#include
main()
{chara;
a='A';
printf("%d%c",a,a);
}
三、编程题
1.从键盘上输入一个大写字母,要求改用小写字母输出。
#include
main()
{
charc1,c2;
c1=getchar();
printf("%c,%d\n",c1,c1);
c2=c1+32;
printf("%c,%d\n",c2,c2);
}
2.编写程序,求方程ax2+bx+c=0的解x。
#include
#include
main()
{floata,b,c,disc,x1,x2,realpart,imagpart;
scanf(“%f%f%f”,&a,&b,&c);
printf(“theequation”);
if(fabs(a)<=1e-6)
printf(“isnotquadratic”);
elsedisc=b*b-4*a*c;
if(fabs(disc)<=1e-6)
printf(“hastwoequalroots:
%8.4f\n”,-b/(2*a));
elseif(disc>1e-6)
{x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
printf(“hasdistincrrealroots:
%8.4f\n”,x1,x2);
}
else
{realpart=-b/(2*a);
imagpart=sqrt(-disc)/(2*a);
printf(“hascomplexroots:
\n”);
printf(“%8.4f+%8.4fi\n”,realpart,imagpart);
printf(“%8.4f-%8.4fi\n”,realpart,imagpart);
}
}
第四章选择结构程序设计
一、选择题
1.以下关于运算符优先级的描述中,正确的是A。
A)!
(逻辑非)>算术运算>关系运算>&&(逻辑与)>||(逻辑或)>赋值运算
B)&&(逻辑与)>算术运算>关系运算>赋值运算
C)关系运算>算术运算>&&(逻辑与)>||(逻辑或)>赋值运算
D)赋值运算>算术运算>关系运算>&&(逻辑与)>||(逻辑或)
2.能正确表示x的取值范围在[0,100]和[-10,-5]内的表达式是B。
A)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)
B)(x>=-10)&&(x<=-5)||(x>=0)&&(x<=100)
C)(x>=-10)&&(x<=-5)&&(x>=0)&&(x<=100)
D)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)
3.以下程序的运行结果是B。
main()
{
intc,x,y;
x=1;
y=1;
c=0;
c=x++||y++;
printf(“\n%d%d%d\n”,x,y,c);
}
A)110B)211C)011D)001
4.判断字符型变量ch为大写字母的表达式是C。
A)’A’<=ch<=’Z’B)(ch>=’A’)&(ch<=’Z’)
C)(ch>=’A’)&&(ch<=’Z’)D)(ch>=’A’)AND(ch<=’Z’)
5.以下if语句书写正确的是B。
A)if(x=0;)B)if(x>0)
printf(”%f”,x);{x=x+1;printf(”%f”,x);}
elseprintf(”%f”,-x);elseprintf(”%f”,-x);
C)if(x>0);D)if(x>0)
{x=x+1;printf(”%f”,x);}{x=x+1;printf(”%f”,x)}
elseprintf(”%f”,-x);elseprintf(”%f”,-x);
6.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是A。
main()
{intx;
scanf(“%d”,&x);
if(x++>5)printf(“%d”,x);
elseprintf(“%d\n”,x--);
}
A)7和5B)6和3C)7和4D)6和4
7.写出下面程序的执行结果D。
main()
{intx,y=1;
if(y!
=0)x=5;
printf(“%d\t”,x);
if(y==0)x=3;
elsex=5;
printf(“%d\t\n”,x);
}
A)13B)15C)53D)55
8.假定所有变量均已正确说明,下列程序段运行后x的值是B。
a=b=c=0;x=35;
if(!
a)x=-1;
elseif(b);
if(c)x=3;
elsex=4;
A)34B)4C)35D)3
9.能正确表示a>=10或a<=0的关系表达式是D。
A)a>=10ora<=0B)a>=10|a<=0
C)a>=10&&a<=0D)a>=10||a<=0
10.当a=1,b=3,c=5,d=4时,执行完下面程序段后x的值为B。
if(a
if(celse
if(aif(belsex=3;
elsex=6;
elsex=7;
A)1B)2C)3D)6
11.能表示整数x符合下面两个条件的语句是AA。
(1)“能被4整除,但不能被100整除”.
(2)能被4整除,又能被400整除.
A)(x%4==0&&x%100!
=0)||x%400==0
B)(x%4==0||x%100!
=0)&&x%400==0
C)(x%4==0&&x%400!
=0)||x%100==0
D)(x%100==0||x%4!
=0)&&x%400==0
12.设有如下定义:
charch=’z’,则执行下面语句后变量ch是值为:
D。
ch=(‘A’<=ch&&ch<=‘Z’)?
(ch+32):
ch
A)AB)aC)ZD)z
13.已知intx=30,y=50,z=80;以下语句执行后变量x、y、z的值分别为:
A。
if(x>y||xz)
z=x;x=y;y=z;
A)x=50,y=80,z=80B)x=50,y=30,z=30
C)x=30,y=50,z=80D)x=80,y=30,z=50
14.以下程序的输出结果是B。
main(){intx=2,y=-1,z=2;
if(xprintf(“%d\n”,z);}
A)3B)2C)1D)0
15.在C语言中,多分支选择结构语句为:
switch(c)
{case常量表达式1:
语句1;
……
case常量表达式n-1:
语句n-1;
default语句n;}
其中括号内表达式c的类型:
C。
A)可以是任意类型B)只能为整型
C)可以是整型或字符型D)可以为整型或实型
16.下面程序的输出结果是A。
main()
{intx,y,z;
x=y=1;
z=x++-1;
printf(“%d,%d\t”,x,z);
z+=-x+++(++y||++z);
printf(%d,%d”,x,z);
}
A)2,03,-1B)2,13,0
C)2,02,1D)2,10,1
二、填空题
1.在C语言中,对于if语句,else子句与if子句的配对约定是。
else与它前面最近的一个if配对
2.设有程序片段如下:
switch(class)
{case'A