北京化工大学C语言复习题文档格式.docx
《北京化工大学C语言复习题文档格式.docx》由会员分享,可在线阅读,更多相关《北京化工大学C语言复习题文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
5.已知inti;
floatf;
下列语句正确的是______。
A)(intf)%i
B)int(f)%i
C)int(f%i)
D)(int)f%i
6.若inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为6的表达式为_____。
A)*(p+6)
B)*p+6
C)*p+=5
D)p+6
7.以下为一维整型数组a的正确说明是_________.
A)inta(10);
B)intn=10,a[n];
C)intn;
D)#defineSIZE10
scanf("
%d"
&
n);
inta[SIZE];
inta[n];
8.温度华氏和摄氏的关系是:
C=5/9(F-32)。
已知:
floatC,F;
由华氏求摄氏的正确的赋值表达式是____。
A)C=5/9(F-32)
B)C=5*(F-32)/9
C)C=5/9*(F-32)
D)三个表达式都正确
9.若有以下说明和语句:
structworker
{
intno;
char*name;
}work,*p=&
work;
则以下引用方法不正确的是____。
A)work.no
B)(*p).no
C)p->
no
D)work->
no
10.为了判断两个字符串s1和s2是否相等,应当使用____。
A)if(s1==s2)
B)if(s1=s2)
C)if(strcpy(s1,s2))
D)if(strcmp(s1,s2))
11.下述程序的输出是______。
main()
{charc='
A'
;
if('
0'
<
=c<
='
9'
)printf("
YES"
);
elseprintf("
NO"
}
A)YES
B)NO
C)YESNO
D)语句错误
二、读程序写结果(共18分)
1.下面程序段的运行结果是__________.
intn=0;
while(n++<
=2);
printf("
n);
2.下面程序的运行结果是__________.
#include<
stdio.h>
voidmain()
inta=15,b=21,m=0;
switch(a%3)
{
case0:
m++;
break;
case1:
switch(b%2)
default:
case0:
%d\n"
m);
3.下面程序的运行结果是______。
#include<
intx=10,y=20,t=0;
if(x==y)t=x;
x=y;
y=t;
printf(“%d,%d\n”,x,y);
4.下面程序的运行结果是______。
voidmain(){
inti,j,p,s;
s=0;
for(i=1;
i<
=4;
i++){
p=1;
for(j=1;
j<
=i;
j++)
p=p*j;
s=s+p;
printf(“s=%d\n”,s);
5.下面程序的运行结果是______。
string.h>
char*p=“abcdefg\0hjik\0”;
printf(“%d\n”,strlen(p));
6.下面程序的运行结果是______。
intFun(intx)
staticinty=0;
y+=x;
returny;
}
int
x=10,y=0,k;
for(k=0;
k<
2;
k++)
y=Fun(x);
y=%d\n"
y);
}
三、程序填空(共14分)
1.下面程序可求出矩阵a的主对角线上的元素之和。
{inta[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;
for(i=0;
3;
i++)
for(j=0;
if(i==j)sum=sum+
A
printf("
sum=%d\n"
sum);
2.下面程序用于求含有50个元素的一维数组中的最小值及负数的个数;
其中一维数组中的每个元素是由公式y[j]=600*sin(j*0.16)得到的。
math.h>
voidmain()
floaty[50],min;
intj,num=0;
voidfun(floaty[50],float*min,int*num);
for(j=0;
50;
y[j]=600*sin(j*0.16);
A
printf(“min=%f,Thenumberofnegativeis=%d”,min,num);
voidfun(floaty[50],float*min,int*num)
intj;
*min=y[0];
j++){
if(*min>
y[j])
B
;
if(y[j]<
0)
C
3.下面的程序对用户输入的一串字符进行处理,统计出其中小写字母字符的个数。
voidmain(){
chars[100];
intletter=0,i=0;
pleaseinputsomecharacters\n"
);
while(
B
){
if(
)
letter++;
i++;
};
letternum=%d”,letter);
四、改写程序(3分)
1.该程序的功能是根据键盘输入的学生考试分数,判断学生是否通过考试。
(60分以上为通过)
#include<
void
main()
ints;
scanf("
s);
if(s>
=60)
通过考试"
else
没有通过考试"
);
请用条件运算符
?
:
判断结构改写程序中的if
判断结构。
答案:
一、选择题:
CBABDCDBDDA
1.C
只能有字母、数字、下划线,但是第一个字符不可是数字
2.B
3.A
‘’中只能是一个字符,a+b不可以
‘\0’是转义字符,可以
数字是可以的(实际上就是输入了对应字符的ASCII码,char和int是近亲)
4.B
(D中~是位运算符号,40学时中没讲到)
5.D
%两侧必须是整数,注意强制转换符,括号的位置
6.C
数组下标从0开始
7.D
数组在定义的时候,中括号里必须是常量,不能是变量,否则系统不知道在定义的时候应该给这个数组多少存储空间;
但是#define是符号常量,也是常量,可以。
8.B
乘号不可以省略,主页君编程的时候经常忘记乘号;
5/9在C语言中得0;
5.0/9就不是0了。
9.D
结构体引用的三种方式:
(假设有一个结构体work有一个指针p指向work)
work.no
(*p).no
p->
第三种,左边必须是一个指针项,不可以是常项,所以错;
10.D
字符串不可以直接比大小要使用strcmp函数
11.A
‘0’<
=c<
=’9’:
先计算’0’<
=c,得1;
再计算1<
=’9’,得1;
所以输出YES
如果要实现数学上的“区间”概念,应该改写成’0’<
=c&
&
c<
=’9’
注意,一旦出现||和&
运算符,要考虑这两个符号的“短路问题”
即:
如果||的左边非零,||一定成立,右边的就不做了,即使右边有赋值,++符号等也不做了。
如果&
左边为零,%%一定不成立,右边也就不做了,同上。
二、读程序写结果
1.答案:
4
注意:
(1)while后面执行的是空语句;
(2)n++的意义是:
先把n拿出来用,参与运算,运算完了之后n再++
最后一次循环,也就是n等于3的时候,n++<
=2是先判断n<
=2,为假,准备退出循环,这个时候n再++,所以n=4
2.答案:
1
switch(b%2)嵌套在switch(a%3)之内的,所以case0后面执行了break,跳出大的switch,所以第二个switch就不执行了。
3.答案:
20,0
(1)有个逗号;
(2)if后面执行的语句理论上只有一句,如果想要在if后面执行好多句,需要加{}
此处没有加,所以t=x不执行,但x=y和y=t执行,所以答案是那样子。
4.答案:
s=33
(1)相当于求1的阶乘,2的阶乘,3的阶乘,4的阶乘,再把这四个加起来
(2)注意s=不能丢掉
5.答案:
7
strlen字符串长度统计函数,统计到第一个‘\0’之前有多少个字符,‘\0’不算在内
注意sizeof与之不同
charstr[10