C语言模拟题目及答案.doc
如有侵权,请联系网站删除,仅供学习与交流C语言模拟题目及答案【精品文档】第 6 页一选择题:1设float x,y;则以下不合法的赋值语句是_。 x*=y+8; x=y=0; +x; y=(x%2)/10; 2. 设int k=017,g=111; 执行语句printf("%d,%x",k,g); 的输出是_。 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 s5="abc" char s5='a','b','c' char s5=" " char s5;s="abc" 5. 设有程序段:int k=10;while(k=0)k=k-1;则下面描述中正确的是_。 是无限循环 while循环执行10次 循环体语句一次也不执行 循环体语句只执行一次 6. 如果x为int型且为5,则执行if(x-<5) printf("%d",x);else printf("%d",x+);后输出结果是_。 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("%d", y);则输出结果是_。 2. 若int x=120,y=50; 执行printf("%d",(y,x);后输出结果是_。 3. 若int i, a10; 则执行语句 for(i=9;i>=0;i-) ai=i+5; 后,a8的值为_。 4. 在C语言中是没有输入输出语句的,而是通过提供库函数_和printf来完成输入输出功能的。 5. 已知字母'A'的ASCII码值为65,ch1和ch2均为字符型变量,且ch1='A',ch2='B',则printf("%c,%c",ch1,ch2-ch1+'A');语句输出结果是_。 6. 假定有以下变量定义: int k=7, x=12; 在空白处填入运算符使表达式的值为3:(x%=k)_(k%=5) 。 7. 若i是整型变量,执行语句for(i=1;i<=7;i+) if(i%2) printf("*"); else 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_="Hello"。 答案: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("%dn",i+=2); 7.在main函数中定义的变量称为全局变量。 8. while语句的循环体中还可以包含for循环。 9. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是由实参传给形参,再由形参传回实参。 10. 先要定义一个二维数组cMN来存放字符串"China"、"Tianjin"、"Education",则常量M和N的合理取值应为3和10。 答案:T F F T T F F T F T4. 读程序,写结果。 1)指出程序运行结果。# include "stdio.h"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 (a<b) x+=1; else if (c>d) else if (ch) if (e) x+=1; x+=x; if (x) x*=2; else x-=x; printf("%dn",x);答案:400 2). 整个程序运行结果是: #include "stdio.h"main() char ch='a' int x=10; while (ch<'j') printf("%c,",ch); ch+=2; do x-; if (x%3=0) continue; printf("%d,",x); while (x>0); printf("n");答案:a,c,e,g,i,8,7,5,4,2,15. 改错:给定程序k:m.c中函数 fun 的功能是:把在字符串s中出现的每个字符, 紧随其后重复出现一次,放在一个新串t中,t中字符按原字符串中逆排列。例如:当s中的字符串为:"ABCDE"时, 则t中的字符串应为:"EEDDCCBBAA"。注意:只能改动*found*下一行,不要改动main函数,不得增行或删行,也不得更改程序的结构!/* m.c 答案*/#include <stdio.h>#include <string.h>void fun (char s, char t) int i, sl; sl=strlen(s);/*found*/ for(i=0;i<sl;i+) t2*i=ssl-i-1;/*found*/ t2*i+1=ssl-i-1;/*found*/ t2*i='0' main() char s100, t100; printf("nPlease enter string s:"); scanf("%s", s); fun(s, t); printf("The result is: %sn", t);6. 编程:在k:有程序文件p1.c,程序功能是计算并输出1000以内所有能被47整除的正整数之和。其中函数calu的功能是:计算1000以内所有能被47整除的正整数之和,结果通过return返回。请完成calu的函数体。注意:主程序及其他函数都不许修改!调试完成后,至少要运行一次才会保留评分依据!#include "stdio.h"int calu()int i,s=0;for(i=1;i<1000;i+)if(i%47=0)s+=i;return s;/*Caution: you can only change codes in function above*/main() printf("result: %dn",calu(); int s8; FILE *fp1, *fp2; int i; if (fp1=fopen("k:pin1.dat","r")=NULL) printf("Open file error,Please contact your teacher"); exit(0); if (fp2=fopen("k:you.dat","w")=NULL) printf("!Create file error,Please tell your teacher at once!"); exit(0); for (i=0;i<8;i+) fscanf(fp1,"%d",&si); fprintf(fp2,"%dn",si-calu(); fclose(fp2); fclose(fp1);7. 在k:有程序文件p2.c,程序功能是按显示出的a字符串中的10个字母,照着输入各字母到b数组,亦即“练习英文打字”。其中函数count的功能是:与a数组中各元素对照,统计出b数组中对应字母共有多少是正确的,赋给r,多少是错误的,赋给e,再算出正确率,赋给rr。请完成count的函数体。注意:主程序及其他函数都不许修改!调试完成后,至少要运行一次才会保留评分依据!在k:有程序文件p2.c,程序功能是:输入一串1至7之间的简谱字符串,由已有的a数组中的对应字符,转变成音名字符串,规则是"1234567"中的各个字符依次对应着"CDEFGAB"中的各个字符,例如输入555676533322到x数组,在y数组中成为GGGABAGEEEDD。其中函数tra的功能是:由x数组中的各简谱字符,对应a中元素,向y数组中写入音名字符串。请完成tra的函数体。提示:'1'的ASCII码值为49。注意:主程序及其他函数都不许修改!调试完成后,至少要运行一次才会保留评分依据!/* p2.c答案*/#include "stdio.h"char a8="CDEFGAB"char x80,y80;void tra()int i;for(i=0;xi!='0'i+)yi=axi-49;yi='0'/*Caution: you can only change codes in function above*/main() int i; FILE *fp1, *fp2; printf("n Input:"); scanf("%s",x); tra(); printf("Result:%sn",y); if (fp1=fopen("k:pin2.dat","r")=NULL) printf("Open file error,Please contact your teacher"); exit(0); if (fp2=fopen("k:my.dat","w")=NULL) printf("!Create file error,Please tell your teacher at once!"); exit(0); fscanf(fp1,"%s",x); tra(); for(i=0;i<9;i+) fprintf(fp2,"%cn",yi); fclose(fp2); fclose(fp1);