C语言模拟题(61页).doc
-C语言模拟题(一)一、选择题1、以下字符中不是转义字符的是(A )。A、'c'B、'b'C、''D、'a'2、设a=12,且a定义为整型变量。执行语句a+=a-=a*=a;后a的值为(A)。A、0B、144C、132D、123、 已定义float x=1.25,y=3.37;根据下面的输出结果,正确的输出语句是(C ).y+x=4.62,y-x=2.12A、printf("y+x=%6.2f,y-x=%6.2fn",y+x,y-x);B、printf("y+x=%f,y-x=%fn",y+x,y-x);,lC、printf("y+x=%.2f,y-x=%.2fn",y+x,y-x);D、printf("y+x=%5.2f,y=%5.2fn",y+x,y-x);4 、执行下面程序段后,b的值为(A ).int s=35;char t='A'int b;b=(s&&4)&&(t<'a');A、1B、3C、2D、05 k是整型,则以下程序段的执行结果是:(B ) k=-3; if(k<=0) printf("#") else printf("&&&&");A、#B、有语法错误,无结果C、&&&&D、#&&&&6 设j和k都是int类型,则下面的for循环语句(D)。 for(j=0,k=0;j<=9&&k!=876;j+) scanf("%d",&k);A、最多执行9次B、是无限循环C、循环体一次也不执行D、最多执行10次7 以下正确的描述是(A ).A、只能在循环体内和switch语句内使用break语句B、continue语句的作用是终止整个循环的执行C、从多层嵌套的外层循环中退出时,只能使用goto语句D、在循环体内使用break和continue语句的作用相同8 以下能对一维数组a进行正确初始化的语句是(B)。A、int a10=;B、int a=0;C、int a10=10*1;D、int a10=(0,0,0,0,0)9 以下正确的说法是(A ).A、函数的类型决定返回值的类型B、定义函数时,形参的类型说明可以放在函数体内C、return后面不能为表达式D、如果形参与实参的类型不一致,以实参类型为准10 以下程序的输出结果为(C)。int func(int x,int y) return(x+y); main() int a=1,b=2,c=3,d=4,e=5; printf("%dn",func(a+b,b+c,c+a),(d+e); A、9B、15C、13D、函数调用出错11 以下正确的说法是(D)。A、用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调B、用户若需调用标准库函数,调用前必须重新定义C、系统根本不允许用户重新定义标准库函数D、用户可以重新定义标准库函数,若如此,该函数将失去原有含义12 在#include命令中,文件名可用双引号或尖括号括起来,对于二者的下列说法中正确的是(A ).A、用尖括号时,直接按系统标准方式检索文件目录.B、用双引号时,直接按系统标准方式检索文件目录.C、用双括号和尖括号时,都不检查源文件所在的文件目录.D、以上说法都不对.13 当说明一个结构体变量时系统分配给它的内存是(D)。A、成员中占内存量最大者所需的容量B、结构中第一个成员所需内存量C、结构中最后一个成员所需内存量D、各成员所需内存量的总和14 以下程序段给数组所有的元素输入数据,请选择正确答案填入(C )。#include <stdio.h>main() int a10,i=0; while(i<10) scanf("%d",(_); . . .A、&ai+1B、a+iC、a+(i+)D、&a+i15 在定义构造数据类型时,不能(A)。A、末尾不写分号B、说明存储类型C、初始化D、说明变量二、判断题1、在C程序中,%作为运算符时,是只能用于整数运算。Y2、若有 int i=10,j=2;则执行完i*=j+8;后的值为28。格式字符%g选用%e或%f格式中输出宽度较长的一种格式输出实数.N3、格式字符%g选用%e或%f格式中输出宽度较长的一种格式输出实数.N4 char c6="abcde" printf("%3s", c)表示输出的字段的宽度为3位,如果被输出的数据的位数大于3,只输出3位数.N5 设x=1,y=2,z=3,则逻辑表达式x-y>z&&y!=z的值为0.Y6 运算符的级别由高向低依次为!->算术运算符->关系运算符->逻辑运算符->赋值运算符.Y7 已知a=3,b=4,c=5,则逻辑表达式!(a>b) && !c|1的值为1.Y8 for循环语句只能用于循环次数确定的情况下.N9 break语句能够终止当前进行的多层循环.Nh10 for循环的三个表达式都可以省略.Y11 下列程序段是否正确: N int a10; . a+;kl12 定义一维数组的形式为:类型说明数组名表达式,其中表达式必须是整型常量.N13 字符串"Da lian"在内存中的存储长度是7. N 14 字符串"Da lian"在内存中的存储长度是7. N 15 字符处理函数strcpy(str1,str2)的功能是把字符串1接到字符串2的后面.Nlllllllll16 静态局部变量是在编译时被初始化的,故它只被赋初值一次.Y17 被包含文件是在编译时先单独生成目标文件,然后连接到可执行文件中去.N18 假设有int a10, *p;则p=&a0与p=a等价Y19 typedef可以定义生成新的数据类型.N20 用fopen("file","r+");打开的文件"file"可以进行修改。Y三、填空题1、设a、b、c为整型数, 且a=2、b=3、c=4, 则执行完以下语句: a*=16+(b+)-(+c); 后,a的值是 _28_.2 若所用变量都已正确定义,请填写以下程序段的输出结果_OK_. for(i=1;i<=5;i+); printf("OK");3 c语言表达式!(4>=6)&&(3<=7)的值是_1_.4 设x和y均为int型变量,则以下for循环中的scanf语句最多可执行的次数是_3_. for (x=0,y=0;y!=123&&x<3;x+) scanf ("%d",&y);5 按内存排列顺序, 数组char a2中的所有元素是a0和_a1_.6 函数不可以进行嵌套定义,但可以进行嵌套_调用_.7 将数组a的首地址赋给指针变量p的语句是_p=a;_.8 设有以下结构类型说明和变量定义,则变量a在内存所占字节数是 _30_。 struct stud char num6; float s4; double ave; a,*p;四、程序设计1、【程序设计】功能:把20个随机数存入一个数组,然后输出该数组中的 最小值。其中确定最小值的下标的操作在fun函数中 实现,请给出该函数的定义。 -#include "stdio.h"#include "stdlib.h"#define VSIZE 20 int vectorVSIZE ; int fun(int list,int size) /*Begin*/ /* End */ main() int i; void NONO(); for (i=0;i<VSIZE;i+) vectori=rand(); printf("Vector%d=%6dn",i,vectori); i=fun(vector,VSIZE); printf("nMininum: Vector%d=%6dn",i,vectori); NONO(); void NONO() int i,t; FILE *fp ; fp = fopen("out.dat", "w") ; for (i=0;i<VSIZE;i+) fprintf(fp,"Vector%d=%6dn",i,vectori); t=fun(vector,VSIZE); fprintf(fp,"nMininum: Vector%d=%6dn",t,vectort); fclose(fp) ; 2、功能:求k!(k13),所求阶乘的值作为函数值返回。 (要求使用递归)-*/#include "stdio.h"#include "conio.h" long fun(int k) /*Begin*/ /* End */ main() int m; void TestFunc(); printf("Enter m: "); scanf("%d", &m); printf("nThe result is %ldn", fun(m); TestFunc(); void TestFunc() FILE *IN,*OUT; int s ; int t; long o; IN=fopen("in.dat","r"); if(IN=NULL) printf("Read File Error"); OUT=fopen("out.dat","w"); if(OUT=NULL) printf("Write File Error"); for(s=1;s<=5;s+) fscanf(IN,"%d",&t); o=fun(t); fprintf(OUT,"%ldn",o); fclose(IN); fclose(OUT);五、程序改错1、 功能:求1到10的阶乘的和。-*/#include "stdio.h"main() int i; float s=0; float fac(int n); /*ERROR*/ for(i=1;i<10;i+) /*ERROR*/ s=fac(i); printf("%fn",s);float fac(int n)/*ERROR*/ int y=1; int i; for(i=1 ;i<=n;i+) y=y*i; /*ERROR*/ return;2、 功能:实现交换两个整数的值。例如:给a和b分别输入3和6 ,输出为a=6 b=3-*/#include "stdio.h"/*ERROR*/void fun (int a, b) int t; /*ERROR*/ t=a; /*ERROR*/ a=b; /*ERROR*/ b=t;main() int a,b; printf("enter a,b:");scanf("%d%d",&a,&b); fun(&a,&b); printf("a=%d b=%dn",a,b);六、程序填空1 、 功能:调用函数fun计算m=1-2+3-4+9-10,并输出结果。-*/#include "stdio.h"int fun( int n) int m=0,f=1,i; /*FILL*/ for(i=1;_;i+) m+=i*f; /*FILL*/ _; /*FILL*/ return _;main() printf("m=%dn", fun(10);2 、 题目:输出连接后的字符串。-*/#include "stdio.h"/*FILL*/_main() char ss10="12345" strcat(ss,"6789"); /*FILL*/ printf(_,ss);C语言模拟题(二)一、判断题1 若变量均已正确定义并赋值,以下合法的C语言赋值语句是(C )。A、x+n=I;B、x=5;C、x=n/2.5;D、5=x=4+1;2 下述错误的C语言常量是:(C ).A、0xfB、5.C、090D、.253 根据下面的程序,使a=123,c1='o',c2='k'哪一种是正确的键盘输入方法?(B )。(规定用字符串CR表示回车,U表示空格)main()int a; char c1,c2; scanf("%d%c%c", &a,&c1,&c2);A、123UoUkCRB、123okCRC、123UokCRD、123oUkCR4 已知键入a=4,b=3,执行下面程序输出的结果是(B ).main() int a,b,s; scanf("%d%d",&a,&b); s=a; if(a>b) s=b; s=s*s; printf("%dn", s);A、13B、9C、16D、155 执行下面程序段后,i的值是(A ).int i=10;switch(i)case 9: i+=1; case 10: i-; case 11: i*=3; case 12: +i;A、28B、10C、9D、276 以下不是无限循环的语句为(D)。A、while(1)x+;B、for(;x+=i);C、for(i=10;i-) sum+=i;D、for(y=0,x=1;x>+y;x=i+) i=x;7 下面程序段运行的结果是( A).x=-1;do x=x*x; while (!x);A、循环执行一次B、有语法错误C、死循环D、循环执行两次8 若有说明:int a3=1,2,3,4,5,6,7;则a数组第一维的大小是(A)。A、3B、无确定值C、4D、29 若定义int a12=1,2,3,4,5,6,7,8,9,10,11,12;char c='a',d,g;则数值为4的表达式是 (D ).A、a4B、ag-cC、a'd'-'c'D、a'd'-c10 以下叙述中正确的是(C)。A、可以在一个函数中定义另一个函数B、main()函数必须放在其它函数之前C、构成C程序的基本单位是函数D、所有被调用的函数一定要在调用之前进行定义11 下述函数的功能是(C ).int fun(char *x) char *y=x; while(*y+); return y-x-1; A、比较两个字符串的大小B、求字符串存放位置C、求字符串的长度D、将字符串x连接到字符串y后面12 在执行"文件包含"命令时,下列说法正确的是( A).A、作为一个源程序编译,得到一个目标文件.B、一个 include 命令可指定多个被包含文件.C、在编译时作为两个文件联结.D、被包含的文件可以是源文件或目标文件.13 在说明语句:int *f();中,标识符f代表的是(A)。A、一个返回值为指针型的函数名B、一个用于指向函数的指针变量C、一个用于指向一维数组的行指针D、一个用于指向整型数据的指针变量14 下面程序的输出结果应该是(B ). char s ="ABCD" main() char *p; for ( p=s;p<s+4;p+) printf("%s",p);A、DCBAB、ABCDBCDCDDC、ABCDABCABAD、ABCD15 设有如下定义: struct sk int a; float b; data,*p; 若要使p指向data中的a域,正确的赋值语句是(C)。A、p=(struct sk*) data.a;B、*p=data.a;C、p=&data.a;D、p=&data,a;二、判断题1 在C程序中,%作为运算符时,是只能用于整数运算。Y2 若 a=3,b=2,c=1 则关系表达式"(a>b)=c" 的值为"真"。Y3 格式字符%g选用%e或%f格式中输出宽度较长的一种格式输出实数.N4 整型变量在全部范围内可以用字符格式输出.N5 已知a=3,b=4,c=5,则逻辑表达式!(a+b)+c-1 && b+c/2的值为0.N6 语句if(a>b) printf("%d",a); else printf("%d",b);可以用条件表达式a>b?a:b取代N.7 已知a=4,b=2,c=3,d=5,表达式a>b?a:c<d?c:d的值为4.Y8 for循环的三个表达式都可以省略.Y9 continue语句对于while和do-while循环来说,意味着转去计算While表达式Y.10 for语句的循环体至少执行一次.N11 语句 char ch12="C Program"与语句 char ch ="C Program"具有不同的赋初值功能.N12 定义char s9;gets(s);若输入的字符串是Turbo c(代表按回车键操作) 则输入给数组s中的字符个数是7.Y13 对静态数组的初始化是在编译阶段完成的. Y 14 C语言中,通过函数调用只能获得一个返回值.N15 字符处理函数strcpy(str1,str2)的功能是把字符串1接到字符串2的后面.N16 函数的返回值可以通过函数中的return语句获得。Y17 被包含文件是在编译时先单独生成目标文件,然后连接到可执行文件中去.N18 char *p="girl"的含义是定义字符型指针变量p,p的值是字符串"girl"。N19 对于不同类型的数据,若想合成一个有机的整体,可以引用结构体进行定义。Y20 用fopen("file","r+");打开的文件"file"可以进行修改。Y三、填空题1 设x的值为15,n的值为2,则表达式x%=(n+=3)运算后x的值是_0_.2 以下程序的输出结果为_9,10_, #include "stdio.h" main()int a=010,j=10;printf("%d,%dn",+a,j-);3 设a,b,c,t为整型变量,初值为a=3,b=4,c=5,执行完语句t=!(a+b)+c-1&&b+c/2 后,t的值是_1_.4 若输入字符串:abcde<回车>,则以下while循环体将执行 _0_ 次. while(ch=getchar()='e') printf("*");5 若有以下数组a,数组元素:a0a9,其值为 9 4 12 8 2 10 7 5 1 3 该数组的元素中,数值最小的元素的下标值是_8_.6 函数不可以进行嵌套定义,但可以进行嵌套_调用_.7 在c程序中,只能给指针变量赋NULL值和_地址_值.8 设有以下共用体类型说明和变量定义,则变量a在内存所占字节数是 _16_。 union stud char num6; float s4; double ave; a,*p;四、程序设计1 、功能:将字符串中的小写字母转换为对应的大写字母, 其它字符不变。-*/#include "string.h"#include "stdio.h"void change(char str) /*Begin*/ /* End */main() void change(); char str40; void TestFunc(); gets(str); change(str); puts(str); TestFunc(); void TestFunc() FILE *IN,*OUT; char i200; IN=fopen("in.dat","r"); if(IN=NULL) printf("Read File Error"); OUT=fopen("out.dat","w"); if(OUT=NULL) printf("Write File Error"); fscanf(IN,"%s",i); change(i); fprintf(OUT,"%sn",i); fclose(IN); fclose(OUT);2 、功能:从低位开始取出长整型变量s中偶数位上的数,依次 构成一个新数放在t中。 例如:当s中的数为:7654321时,t中的数为:642。 -*/#include "stdio.h" long fun (long s,long t) /*Begin*/ /* End */return t; main() long s, t,m; void TestFunc(); printf("nPlease enter s:"); scanf("%ld", &s); m=fun(s,t); printf("The result is: %ldn", m); TestFunc();void TestFunc() FILE *IN,*OUT; int n; long i,t,m; IN=fopen("in.dat","r"); if(IN=NULL) printf("Read File Error"); OUT=fopen("out.dat","w"); if(OUT=NULL) printf("Write File Error"); for(n=0;n<5;n+) fscanf(IN,"%ld",&i); m=fun(i,t); fprintf(OUT,"%ldn",m); fclose(IN); fclose(OUT);五、程序改错1 、功能:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半, 还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉 一半,又多吃了一个。以后每天早上都吃了前一天剩下的一 半零一个。到第10天早上想再吃时,见只剩下一个桃子了。 求第一天共摘了多少。-#include "stdio.h"main() int day,x1,x2; day=9; /*ERROR*/ x2=1; while(day>0) /*ERROR*/ x1=(x2+1)/2; x2=x1; /*ERROR*/ day+; printf("the total is %dn",x1);2 、功能:将s所指字符串的反序和正序进行连接形成一个新串放在 t所指的数组中。例如:当s所指的字符串的内容为"ABCD"时,t所指数组中 的内容为"DCBAABCD"。-*#include "conio.h"#include "stdio.h"#include "string.h"/*ERROR*/void fun (char s, char t) int i, d; /*ERROR*/ d = len(s); /*ERROR*/ for (i = 1; i<d; i+) ti = sd - 1 - i ; for (i = 0; i<d; i+) t d + i = si; /*ERROR*/ t2*d = '/0'main() char s100, t100; printf("nPlease enter string S:"); scanf("%s", s); fun(s, t); printf("nThe result is: %sn", t);六、程序填空1 、题目:从键盘上输入10个整数,输入负数不算。-*/#include "stdio.h"main() int i=0,a; do scanf("%d",&a); /*FILL*/ if (_) i+; printf("na=%d,i=%d",a,i); /*FILL*/ while(_);2 、功能:通过函数的递归调用计算阶乘。-*/#include "stdio.h"long power(int n) long f; if(n>1) /*FILL*/ f=_; else f=1; return(f);main() int n; long y; printf("input a inteager number:n"); /*FILL*/ scanf("%d",_); y=power(n); /*FILL*/ printf("%d!=%ldn",n,_);C语言模拟题(三)一、 选择题1 下列变量说明语句中,正确的是(D)。A、char a;b;c;B、char:a b c;C、int x;z;D、int x,z;2 设以下变量均为int类型,则值不等于7的表达式是(A)。A、(x=6,x+1,y=6,x+y)B、(x=y=6,x+y,y+1)C、(y=6,y+1,x=y,x+1)D、(x=y=6,x+y,x+1)3 设:long w=65535,t=7654321;根据下面的输出结果,正确的程序段是 (C).w=65535,t=7654321endA、printf("w=%5d,t=%7dn",w,t);printf("%s","end');B、printf("w=%5ld,t=%7ld",w,t);printf("%c","end");C、printf("w=%5ld,t=%7ldn",w,t);printf("%s","end");D、printf("w=%5u,t=%7un",w,t);printf( "end");4 设x,y,z,t均为整型变量,则执行以下语句后,t的值为:(B )x=y=z=1;t=+x|+y&&+z;A、0B、1C、2D、不定值5 如果int a=2,b=3,c=0,下列描述正确的是( B)。A、a&&b>c的结果为假B、!a!=(b!=c)表达式的值为1C、a|(b=c)执行后b的值为0D、a>b!=c和a>(b!=c)的执行顺序是一样的6 从键盘输入的整数中找出最小值min,输入0时结束.请在A处填写正确语句(D )。#include "stdio.h"main() int min=0,a; do scanf("%d",&a); if(min>a) min=a; while(_A_); printf("%d",min);A、a=0B、a=0C、a>0&&a<0D、a!=07 设有如下程序段: int k=10; while(k=0) k-;则下述说明中正确的是(A ).A、循环体一次也不执行B、循环体执行一次C、死循环D、循环体执行10次8 static char str10="China"数组元素个数为(D)。A、6B、9C、5D、109 函数调用:strcat(strcpy(str1,str2),str3)的功能是( D)。A、将串str1复制到串str2中后再连接到串str3之后B、将串str2连接到串str1之后再将串str1复制到串str3中C、将串str1连接到串str2之后再复制到串str3之后D、将串str2复制到串str1中后再将串str3连接到串str1之后10 C语言程序中必须有的函数是(B)。A、#include "stdio.h"B、mainC、printfD、scanf11 程序运行结束后,屏幕上输出值为(B ).static int x=10;main( ) int x=3; f( ); x- -; printf("%d",x); f( ) x+; A、10B、2C、11D、312 file1.c中有命令,#include <file2.c>,若file2.c中有全局静态变量a,则(B ).A、a在file1.c中应用extern说明.B、a在file1.c中有效,不必用extern说明.C、a在file1.c中不生效D、a