一.选择题:
1.设float x,y;则以下不合法的赋值语句是______。 x*=y+8; x=y=0; ++x; y=(x%2)/10; 2. 设int k=017,g=111; 执行语句printf(\的输出是_____。 15,6f f,6f f,111 15,111 3. 对语句for(i=0; ; i++);可理解为_____。 for(i=0;0;i++); for(i=0;!0;i++); for(i=0;3>4;i++); for(i=0;!5;i++); 4. 下面对数组的初始化,错误的是_____。 char s[5]=\char s[5]=\5. 设有程序段:int k=10;while(k=0)k=k-1;则下面描述中正确的是______。 是无限循环 while循环执行10次 循环体语句一次也不执行 循环体语句只执行一次 6. 如果x为int型且为5,则执行if(x--<5) printf(\
后输出结果是______。 3 4 5 6 7. 有如下函数调用语句func(rec1, rec2+rec3, (rec4, rec5));,该函数调用语句中,含
有的实参个数是____。 3 4 5 有语法错 8. 在C语言的if语句中,可用作条件判断的表达式为_____。 算术表达式 逻辑表达式 关系表达式 任意表达式 9. 若给定条件表达式(n)?(c++):(c--),则与表达式中(n)等价的表达式是_____。 n==0 n==1 n!=0 n!=1 10. 一个函数返回值的类型取决于_____。 调用该函数的主调函数的类型 定义函数时指定或缺省的函数类型 调用函数时临时决定 return语句中表达式的类型
答案:D A B D C B A D C B
二.填空题:
1.如果static int y=8;main(){ int y=3;printf(\则输出结果是______。 2. 若int x=120,y=50; 执行printf(\后输出结果是______。 3. 若int i, a[10]; 则执行语句 for(i=9;i>=0;i--) a[i]=i+5; 后,a[8]的值为
__________。 4. 在C语言中是没有输入输出语句的,而是通过提供库函数______和printf来完成输入输
出功能的。 5. 已知字母'A'的ASCII码值为65,ch1和ch2均为字符型变量,且ch1='A',ch2='B',则
printf(\语句输出结果是_________。 6. 假定有以下变量定义: int k=7, x=12; 在空白处填入运算符使表达式的值为3:
(x%=k)_____(k%=5) 。 7. 若i是整型变量,执行语句for(i=1;i<=7;i++) {if(i%2) printf(\
continue;printf(\后,输出结果是______。 8. 程序中定义宏#define w 3和#define L w+w,若定义int val;且命令val=L*L, 则变量
val的值为____。 9. 表示“整数x的绝对值大于5”时,值为“真”的C语言表达式是(利用逻辑运算符)
x>5____x<-5。 10. 请填空,完善如下语句:char a[___]=\。
答案:
1.3 2.120 3.13 4.scanf 5.A,B 6.- 7.*#*#*#*# 8.15 9.11 10.6
三.判断题:
1.所有的变量在使用前都必须予以定义。 2. 设x和y均为int型变量,且x=1,y=2,则表达式1.0+x/y的值为1.5。 3. 在switch结构中,break语句可使流程立即跳出switch语句体。 4. 已定义int i; 则for(;i=1;)printf(\中的循环体必执行无穷多次。 5.空语句是合法的C语句。 6. 以下程序段可以输出10个整数:for(i=0 ;i<=9; printf(\7.在main函数中定义的变量称为全局变量。 8. while语句的循环体中还可以包含for循环。 9. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是由实参传给
形参,再由形参传回实参。 10. 先要定义一个二维数组c[M][N]来存放字符串\、\、\,则
常量M和N的合理取值应为3和10。
答案:T F F T T F F T F T
4. 读程序,写结果。 1)指出程序运行结果。 # include \main() {
int x,a,b,c,d,e; char ch;
x=100; a=40; b=30; c=20; d=10; e=0;
ch='a';
if (ad) ;
else if (ch) if (e) x+=1; x+=x;
if (x) x*=2; else x-=x;
printf(\}
答案:400
2). 整个程序运行结果是: #include \main() {
char ch='a'; int x=10;
while (ch<'j') {
printf(\ ch+=2; } do { x--;
if (x%3==0) continue; printf(\ }
while (x>0); printf(\}
答案:a,c,e,g,i,8,7,5,4,2,1
5. 改错:
给定程序k:\\m.c中函数 fun 的功能是:把在字符串s中出现的每个字符, 紧随其后重复出现一次,放在一个新串t中,t中字符按原字符串中逆排列。 例如:当s中的字符串为:\时, 则t中的字符串应为:\。 注意:只能改动*found*下一行,不要改动main函数,不得增行或删行,也不得更改程序的结构!
/***** m.c 答案***/ #include
void fun (char s[], char t[]) {
int i, sl; sl=strlen(s);
/***********found************/ for(i=0;i t[2*i]=s[sl-i-1]; /***********found***********/ t[2*i+1]=s[sl-i-1]; } /***********found***********/ t[2*i]='\\0'; } main() { char s[100], t[100]; printf(\ fun(s, t); printf(\} 6. 编程: 在k:\\有程序文件p1.c,程序功能是计算并输出1000以内所有能被47整除的正整数之和。 其中函数calu的功能是:计算1000以内所有能被47整除的正整数之和,结果通过return返回。请完成calu的函数体。 注意:主程序及其他函数都不许修改!调试完成后,至少要运行一次才会保留评分依据! #include \ int calu() { int i,s=0; for(i=1;i<1000;i++) if(iG==0)s+=i; return s; } /*Caution: you can only change codes in function above*/ main() { printf(\ { int s[8]; FILE *fp1, *fp2; int i; if ((fp1=fopen(\ { printf(\ exit(0); }; if ((fp2=fopen(\ { printf(\ exit(0); }; for (i=0;i<8;i++) { fscanf(fp1,\ fprintf(fp2,\ } fclose(fp2); fclose(fp1); } } 7. 在k:\\有程序文件p2.c,程序功能是按显示出的a字符串中的10个字母,照着输入各字母到b数组,亦即“练习英文打字”。 其中函数count的功能是:与a数组中各元素对照,统计出b数组中对应字母共有多少是正确的,赋给r,多少是错误的,赋给e,再算出正确率,赋给rr。请完成count的函数体。 注意:主程序及其他函数都不许修改!调试完成后,至少要运行一次才会保留评分依据! 在k:\\有程序文件p2.c,程序功能是:输入一串1至7之间的简谱字符串,由已有的a数组中的对应字符,转变成音名字符串,规则是\中的各个字