《C程序设计》复习.docx
《《C程序设计》复习.docx》由会员分享,可在线阅读,更多相关《《C程序设计》复习.docx(10页珍藏版)》请在冰豆网上搜索。
《C程序设计》复习
《C程序设计》复习
一、单项选择
1.以下四个选项中,是合法的转义字符的选项是。
A)’\n’B)’\369’C)’\X3h’D)’\\r’
2.以下四个选项中,不是合法的整型常量的选项是。
A)369B)OX38C)127e6D)O38
3.表达式2<7&&8>4-!
0的值是。
A)0B)1C)2D)3
4.下列关于do…while语句和while语句的叙述中错误的是。
A)do…while语句先执行循环中的语句,然后再判断表达式
B)while语句是先进行判断,满足条件才去执行循环体
C)while语句至少要执行一次循环语句
D)do…while语句循环至少要执行一次循环语句
5.下列关于break语句和continue语句的叙述中错误的是。
A)break语句用来退出循环体
B)continue语句用来退出本次循环,提前进入下次循环的判定
C)break语句和continue语句都可以用在while、do…while、for循环体中
D)在循环语句中break语句不能和if语句连在一起使用
6.下面代表换行功能的转义字符是。
A)\tB)\nC)\rD)\b
7.使用字符串处理函数时,应该包含的头文件是。
A)stdio.hB)math.hC)string.hD)conio.h
8.若定义一个整型数组inta[10],则该数组第6个元素为。
A)a[6]B)a[7]C)a[5]D)a[8]
9.所有的编译系统都规定一个字符变量在内在中占个字节。
A)1B)2C)3D)4
10.以下对字符数组的初始化不正确的是。
A)charc[]={”china”};B)charc[]={‘c’,‘h’,‘i’,‘n’,‘a’};
C)charc[]=”china”;D)charc[]=china;
11.若charstr[10]={″Computer″},则printf(″%d″,strlen(str))输出的结果是。
A)7B)8C)9D)10
12.C语言程序的基本单位是。
A)字符B)语句C)程序行D)函数
13.C程序进行编译的基本单位是。
A)源程序文件B)语句C)程序行D)函数
14.C语言中规定函数的返回值类型是由。
A)return语句中的表达式类型决定
B)调用该函数时的主调函数类型所决定
C)在定义该函数时所指定的函数类型所决定
D)调用该函数时系统临时决定
二、填空题
1.上机运行一个C程序必须经过编辑、编译、和执行四个步骤。
2.设a=3,b=4,c=5,则逻辑表达式a||b+c&&b-c的值为。
3.设a=3,b=4,c=5,则逻辑表达式!
(a>b)&&!
c||1的值为。
4.C语言中的浮点型变量分为单精度、和长双精度。
5.C语言中表达式5/3的结果为。
6.C语言中表达式7%4的结果为。
7.C语言中,在函数调用时使用的参数,称为实际参数,在函数定义时函数头中列出的参数,称为。
8.程序的三种基本结构是顺序、和循环。
9.设a=4,则执行语句a+=3;后a的值为。
10.设a=4,则执行语句a-=3;后a的值为。
11.C语言程序都是从名为的函数开始执行的。
12.在C语言中,是以作为一个字符串的结束标记的。
三、判断题
1.函数是C程序的基本单位,C语言的这种特点使得容易实现程序的模块化。
()
2.’\0x41’这个转义字符代表大写字母“A”。
()
3.在C语言程序中,写012与写12是一样的含义。
()
4.在C语言中,数值也可以参加逻辑运算。
非0数值都表示逻辑真,因此结果是1。
至于逻辑假,无论是参与逻辑运算时还是求得的运算结果,都以数值0来表示。
()
5.若用双引号括住空格符,就是一个“空字符串”。
()
6.当一个运算对象左右两边的运算符优先级相同时,就要考虑对这个运算对象是采用自左向右的结合顺序进行运算,还是采用自右向左的结合顺序进行运算。
()
7.在switch的case语句里,必须出现break语句。
()
8.break只能出现在switch语句和各种循环语句中。
()
9.continue语句只能出现在各种循环语句中。
()
10.复合语句中最后一条语句的语句结束符分号“;”可以省略。
()
11.在数组中,每一个元素在内存里占用的单元数都是相同的。
()
12.数组中的每一个元素都是相同数据类型的变量。
()
四、读程修改题
1.从键盘输入一个小写字母,要求改用大写字母输出,将空缺的语句补充完整。
#include
voidmain()
{
charc;
c=getchar();
_________________;
printf("%c\n",c2);
}
答:
c=c-32
2.写出下面程序输出的结果。
#include
voidmain()
{
inti,j;
i=3;
j=++i;
printf("i=%d,j=%d\n",i,j);
}
答:
i=4,j=4
3.要正确输出a的值,请将下面程序中空缺的语句补充完整。
#include
voidmain()
{
inta=10;
int*p;
;
printf("a=%d\n",*p);
}
答:
p=&a
4.输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。
然后输出最后得到的字符。
请用条件表达式将空缺的语句补充完整。
#include
voidmain()
{charch;
scanf("%c",&ch);
;
printf("%c\n",ch);
}
答:
ch=(ch>='A'&&ch<='Z')?
(ch+32):
ch
5.修改以下程序,要求当score>100或score<0时必须提示重新输入,直到输入正确值为止。
请写出具体的修改方案。
#include
voidmain()
{floatscore;
printf("inputscore:
");
scanf("%f",&score);
switch((int)(score/10))
{
case10:
case9:
printf("grade:
A\n");break;
case8:
printf("grade:
B\n");break;
case7:
printf("grade:
C\n");break;
case6:
printf("grade:
D\n");break;
case5:
case4:
case3:
case2:
case1:
case0:
printf("grade:
E\n");
}
}
答:
可在canf("%f",&score);语句之后插入以下语句:
while(score>100||score<0)
{
printf("输入的分数应介于0-100之间,请重新输入:
");
scanf("%f",&score);
}
6.将下面程序改为用while语句实现。
#include
voidmain()
{
intcock,rabbit;
for(cock=0;cock<=100;cock++)
{rabbit=100-cock;
if(cock*2+rabbit*4==300)
printf("cock=%d,rabbit=%d\n",cock,rabbit);
}
}
答:
#include
voidmain()
{
intcock,rabbit;
cock=0;
while(cock<=100)
{rabbit=100-cock;
if(cock*2+rabbit*4==300)
printf("cock=%d,rabbit=%d\n",cock,rabbit);
cock++;
}
}
7.修改以下程序,要求通过指针变量输入和输出数组中各元素的值。
#include
voidmain()
{
inta[3],i;
for(i=0;i<3;i++)
scanf("%d",&a[i]);
printf("\n");
for(i=0;i<3;i++)
printf("%d",a[i]);
}
答:
#include
voidmain()
{
inta[3],i;
int*p;
p=a;
for(i=0;i<3;i++)
scanf("%d",&p[i]);
printf("\n");
for(i=0;i<3;i++)
printf("%d",p[i]);
}
五、程序设计题
1.输入一个华氏温度,要求输出摄氏温度。
公式为c=5/9(F-32),输出要求有文字说明,取2位小数。
答:
参考代码如下:
#include
voidmain()
{floatc,f;
printf("请输入一个华氏温度:
");
scanf("%f",&f);
c=(5.0/9.0)*(f-32);/*注意5和9要用实型表示,否则5/9值为0*/
printf("摄氏温度为:
%5.2f\n",c);
}
2.随机输入某一年份,判断是否是闰年。
(表示闰年的条件:
①能被4整除,但不能被100整除。
②能被400整除)。
答:
参考代码如下:
#include
voidmain()
{
intyear;
printf("请输入任一年份:
");
scanf("%d",&year);
if((year%4==0&&year%100!
=0)||year%400==0)
printf("%d是闰年!
\n",year);
else
printf("%d不是闰年!
\n",year);
}
3.假如你刚到某所中学参加工作,在新学期开学之初,该中学的校长委托你对刚入校的新生进行快速分班。
已知条件:
共有380名新生,新生入校成绩册已知。
分班要求:
依据"总分"由高到低进行"S"形分班(不考虑总分相同的情况,即总分相同的依据先后仍按原次序排序),共分6个班。
根据以上陈述,按以下要求编程实现。
(1)输入学生的任一名次,输出该学生的所在的班级。
(2)程序尽可能有一定的通用性,即分班的数目随机确定。
(3)程序能按“若要再次执行请按'Y'或'y',否则按其他任一键退出”提示信息循环执行。
答:
参考代码如下:
#include
#include
voidmain()
{
intm,n,k;
charc;
do
{
printf("请输入分班的数目:
");
scanf("%d",&n);
printf("输入学生的名次:
");
scanf("%d",&m);
k=m%(2*n);
if(k>n)printf("该生所在的班级为%d班\n",2*n+1-k);
elseif(k>=1)printf("该生所在的班级为%d班\n",k);
elseprintf("该生所在的班级为%d班\n",1);
printf("若要再次执行请按\'Y\'或\'y\',否则按其他任一键退出。
");
c=getche();
printf("\n");
}while(c=='y'||c=='Y');
}
4.一共有100匹马,110袋大米,每匹大马驮3袋,每匹中马驮2袋,每匹小马驮1袋,如果这些马一次将所有的大米都驮走,求需要大马、中马、小马的匹数,列出所有可能的解。
答:
参考代码如下:
#include
voidmain()
{
inti,j,k;
printf("Allthepossibleanswerare:
\n");
for(i=0;i<=100;i++)
for(j=0;j<=100-i;j++)
{k=100-i-j;
if(i*3+j*2+k==110)
printf("bighorse:
%d,middlehorse:
%d,littlehorse:
%d\n",i,j,k);
}
}
《C程序设计》复习_参考答案
一、单项选择
1.A2.D3.A4.C5.D6.B7.C8.C
9.A10.D11.B12.D13.A14.C
二、填空题
1.组建(或连接)2.13.14.双精度5.16.37.形式参数
8.选择9.710.111.main12.’\0’
三、判断题
1.√2.×3.×4.√5.×6.√7.×8.√
9.√10.×11.√12.√