模拟试题集6套答案.docx
- 文档编号:23226839
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:54
- 大小:68.76KB
模拟试题集6套答案.docx
《模拟试题集6套答案.docx》由会员分享,可在线阅读,更多相关《模拟试题集6套答案.docx(54页珍藏版)》请在冰豆网上搜索。
模拟试题集6套答案
模拟试卷1
第一部分:
基础知识(20题,共40分)
1.若有定义:
inta=8,b=5,C;,执行语句C=a/b+0.4;后,c的值为B。
A)1.4B)1
C)2.0D)2
2.若变量a是int类型,并执行了语句:
a=‘A'+1.6;,则正确的叙述是D。
A)a的值是字符C
B)a的值是浮点型
C)不允许字符型和浮点型相加
D)a的值是字符‘A’的ASCII值加上1。
3.不合法的main函数命令行参数表示形式是C。
A)main(inta,char*c[])
B)main(intarc,char**arv)
C)main(intargc,char*argv)
D)main(intargv,char*argc[])
4.以下选项中不属于C语言的类型的是D。
A)signedshortint
B)unsignedlongint
C)unsignedint
D)longshort
5.若有说明语句:
inta,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是A。
A)scanf("%d%d%d",&a,&b,d);
B)scanf("%d%d%d",&a,&b,&d);
C)scanf("%d%d%d",a,b,d);
D)scanf("%d%d%d",a,b,*d);
6.在16位C编译系统上,若定义longa;,则能给a赋40000的正确语句是D。
A)a=20000+20000;
B)a=4000*10;
C)a=30000+10000;
D)a=4000L*10L;
(长整数常量后面要加L。
没有加L,则默认为int类型,在16位系统下,int是16位的,占2个字节,有效围是-32768到+32767,A、B、C的选项都会超出这个围)
7.以下叙述正确的是B。
A)可以把define和if定义为用户标识符
B)可以把define定义为用户标识符,但不能把if定义为用户标识符
C)可以把if定义为用户标识符,但不能把define定义为用户标识符
D)define和if都不能定义为用户标识符
(标识符是指常量、变量、语句标号以及用户自定义函数的名称)
8.若定义:
inta=511,*b=&a;,则printf("%d\n",*b);的输出结果为D。
A)无确定值B)a的地址
C)512D)511
9.以下程序的输出结果是C。
A)5B)4C)6D)不确定
main()
{inta=5,b=4,c=6,d;
printf("%d\n",d=a>b?
(a>c?
a:
c):
(b));
}
10.以下程序中,while循环的循环次数是D。
main()
{
inti=0;
while(i<10)
{if(i<1)continue;(i的值没变,为0)
if(i==5)break;
i++;
}
}
A)1B)10
C)6D)死循环,不能确定次数
11.设有以下说明语句,则下面叙述中正确的是B。
typedefstruct
{intn;
charch[8];
}PER;
A)PER是结构体变量名
B)PER是结构体类型名
C)typedefstruct是结构体类型
D)struct是结构体类型名
12.设有以下说明语句
structex
{intx;floaty;charz;}example;
则下面的叙述中不正确的是B
A)struct结构体类型的关键字
B)example是结构体类型名
C)x,y,z都是结构体成员名
D)structex是结构体类型
13.设有以下语句
typedefstruct S
{ intg; char h;} T;
则下面叙述中正确的是B。
A)可用S定义结构体变量
B)可以用T定义结构体变量
C)S是struct类型的变量
D)T是struct S类型的变量
1.已知structstudent
{char*name;
intstudent_n;
chargrade;
};structstudenttemp,*p=&temp;
temp.name="chou";
则下面不正确的是B。
表达式值
A、p->namechou
B、(*P)->name+2h
C、*P->name+2e
D、*(P->name+2)O
14.若有以下程序
#include
voidf(intn);
main()
{voidf(intn);
f(5);
}
voidf(intn)
{printf("%d\n",n);}
则以下叙述中不正确的是C。
A)若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
B)若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f
C)对于以上程序,编译时系统会提示出错信息:
提示对对f函数重复说明
D)函数f无返回值,所以可用void将其类型定义为无值型
15.若有以下定义和语句:
ints[4][5],(*ps)[5];ps=s;
则对s数组元素的正确引用形式是C。
A)ps+1B)*(ps+3)
C)ps[0][2]D)*(ps+1)+3
16.在C语言中,形参的缺省存储类是A。
(定义的变量默认是auto类型)
A)autoB)register
C)staticD)extern
17.若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是A。
A)p=2*(int*)malloc(sizeof(int));
B)p=(int*)malloc(2*sizeof(int));
C)p=(int*)malloc(2*2);
D)p=(int*)calloc(2,sizeof(int));
18.在说明语句:
int*f();中,标识符f代表的是D。
A)一个用于指向整型数据的指针变量
B)一个用于指向一维数组的行指针
C)一个用于指向函数的指针变量
D)一个返回值为指针型的函数名
19.若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是B。
(复习fopen)
A)fopen("A:
\user\abc.txt","r")
B)fopen("A:
\\user\\abc.txt","r+")
C)fopen("A:
\user\abc.txt","rb")
D)fopen("A:
\\user\\abc.txt","w")
20.以下不能正确进行字符串赋初值的语句是D。
A)charstr[5]="good!
";
B)charstr[]="good!
";
C)char*str="good!
";
D)charstr[5]={‘g',‘o',‘o',‘d'};
21.若有下面的说明和定义:
(sizeof“对齐”处理,union取最大变量,struct成员字节数相加)
structtest
{intml;
(2)
charm2;
(1)
floatm3;(4)
unionuu{charul[5];intu2[2];}ua;(5)
}myaa;
则sizeof(structtest)的值是A。
A)12B)16
C)14D)9(13)
22.若有定义:
intaa[8];。
则以下表达式中不能代表数组元aa[1]的地址的是C。
A)&aa[0]+1B)&aa[1]
C)&aa[0]++D)aa+1
第二部分:
简单程序(12题,共30分)
23.以下程序的输出结果是A。
A)1B)0
C)非0的数D)-1
main()
{inta=4,b=5,c=0,d;
d=!
a&&!
b||!
c;(&&||判断返回0或者1)
printf("%d\n",d);
}
24.以下程序的输出结果是B。
A)3B)4
C)1D)9
main()
{intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;
for(i=0;i<3;i++)
for(j=i;j<=i;j++)t=t+b[i][b[j][j]];
printf("%d\n",t);
}
012t=0
012t=2
012t=4
25.以下程序的输出结果是D。
A)8B)3C)1D)7
#include
#include
main()
{charb1[8]="abcdefg",b2[8],*pb=b1+3;
while(--pb>=b1)strcpy(b2,pb);//循环3次,最后一次把“abcdefg”拷给b2。
printf("%d\n",strlen(b2));
}
26.以下程序的输出结果是A。
A)10B)18C)8D)15
f(intb[],intm,intn)
{inti,s=0;
for(i=m;i returns; } main() {intx,a[]={1,2,3,4,5,6,7,8,9}; x=f(a,3,7); printf("%d\n",x); } 27.以下程序的输出结果是B。 A)"AAAA"B)"BBB" C)"BBBCC"D)"CC" main() {charch[3][5]={"AAAA","BBB","CC"}; printf("\"%s\"\n",ch[1]); } 它表示一个3行5列二维数组。 第一行的数据是AAAA0 第二行的数据是BBB00。 第三行的数据是CC000 28.以下程序的输出结果是A。 A)31B)13 C)10D)20 main() {inta=0,i; for(i=1;i<5;i++) {switch(i){ case0: case3: a+=2; case1: case2: a+=3; default: a+=5; } } printf("%d\n",a); } (没有break语句,case不会中断) 17.以下程序的输出结果是(B) A)4211B) 0008 C) 4678D) 8888 main() {char*s="12134211";intv[4]={0,0,0,0},k,i; for(k=0;s[k];k++) {switch(s[k]) {case'1': i=0; case'2': i=1; case'3': i=2; case'4': i=3; } v[i]++; } for(k=0;k<4;k++)printf("%d",v[k]); } 29.以下程序的输出结果是B。 A)21B)32 C)33D)11 #include main(){inti=0,a=0; while(i<20) {for(;;) { if((i%10)==0)break; elsei--; } i+=11;a+=i; } printf("%d\n",a); } 第一次循环: i=0;(i%10)==0满足,break出循环;i+=11;i变为11;a+=i;a变为11; 第二次循环: i=11;(i%10)==0不满足,i--;i=10;运行for循环: (i%10)==0满足,break出循环;i+=11;i变为22;a+=i;a变为32. 30.以下程序的输出结果是B。 charcchar(charch) { if(ch>=‘A’&&ch<=‘Z')ch=ch-‘A'+‘a'; returnch; } main() {chars[]="ABC+abc=defDEF",*p=s; while(*p) { *p=cchar(*p); p++; } printf("%s\n",s); } A)abc+ABC=DEFdef B)abc+abc=defdef C)abcaABCDEFdef D)abcabcdefdef 31.以下程序的输出结果是D。 A)20B)24 C)25D)15 intf() {staticinti=0; ints=1; s+=i;i++; returns; } main() {inti,a=0; for(i=0;i<5;i++)a+=f(); printf("%d\n",a); } s=1i=1a=1 s=1+1i=2a=1+2 s=1+2i=3a=3+3 s=1+3i=4a=6+4 s=1+4i=5a=10+5 32.以下程序的输出结果是D。 A)4B)5 C)6D)0 unionmyun {struct{intx,y,z;}u; intk; }a; main() {a.u.x=4;a.u.y=5;a.u.z=6;a.k=0; printf(“%d\n”,a.u.x); } (这个是结构体和共用体的嵌套,共用体中套着结构体。 对于a这个共用体变量,它的域要么为a.u要么为.k这两个是不同时存在的,因为他们共用一个存储空间(虽然空间大小不同)。 共用体的域是并行的关系。 对于a.u这个结构体来说,它有3个域,分别是a.u.x、a.u.y和a.u.z。 他们是串行的关系,彼此互不影响。 故这个题目在输出的时候前面虽然给a.u的各个域都给了值,但是后面有给a.k赋值,就会把前面的覆盖掉。 最后x的会变成0。 当然因为a的这两个域的大小不同,所以a.k只覆盖了a.u.x,而a.u.y和a.u.z还是有值的) 33.下列程序执行后的输出结果是C。 A)helloB)hel C)hloD)hlm voidfunc1(inti); voidfunc2(inti); charst[]="hello,friend! "; voidfunc1(inti) {printf("%c",st[i]);ho if(i<3){i+=2;func2(i);}i=2 } voidfunc2(inti) {printf("%c",st[i]);l if(i<3){i+=2;func1(i);}i=4 } main() {inti=0;func1(i);printf("\n");} 34.下列程序执行后的输出结果是C。 A)14B)15 C)16D)13 #include inta[]={0,1,2,3,4,5,6,7,8,9}; floatf(intn) { if(n==1)returna[0]; else return((float)(n*f(n-1)+a[n])/n+1);1/10 } main() { intn=9; printf(“f(%d)=%f\n”,n+1,f(n)); } 模拟试卷2 第一部分: 基础知识(20题,共40分) 1.以下叙述中正确的是B。 A)C语言的源程序不必通过编译就可以直接运行 B)C语言中的每条可执行语句最终都将被转换成二进制的机器指令 C)C源程序经编译形成的二进制代码可以直接运行 D)C语言中的函数不可以单独进行编译 2.以下选项中不正确的实型常量是C。 A)2.6E-1B)0.8324e C)-78.8745D)456e-2 (在C语言中可以用两种形式表示一个实型常量,小数形式表示的实型常量必须要有小数点,C语言语法规定,字母e或E之前必须要有数字,且e或E后面的指数必须为整数。 如e3、5e3.6、.e、e等都是非法的指数形式。 注意: 在字母e或E的前后以及数字之间不得插入空格) 3.若以下选项中的变量x1、x2、x3、x4已正确定义,则正确的赋值语句是C。 A)x1=26.8%3 B)1+2=x2 C)x3=0x12D)x4=1+2=3; 4.有定义语句: intx,y;,若变量x得到数值11,变量y得到数值12,下面四组输入要通过scanf("%d,%d",&x,&y);语句使变量x得到数形式中,错误的是D。 A)1112<回车> B)11,12<回车> C)11,12<回车> D)11 ,<回车>12<回车> 5.设有以下定义 int a=0; double b=1.25; charc=’A’; #define d 2 则下面语句中错误的是D。 A)a++; B)b++ C)c++; D)d++; 6.有以下程序 main() { intx=102,y=012;y是八进制数 printf("%2d,%2d\n",x,y); } 执行后输出结果是C。 A)10,01B)002,12 C)102,10D)02,10 7.设有如下程序段: intx=2002,y=2003; printf("%d\n",(x,y)); 则以下叙述中正确的是D。 A)输出语句中格式说明符的个数少于输出项的个数,不能正确输出 B)运行时产生出错信息 C)输出值为2002 D)输出值为2003//逗号表达式 (逗号表达式的要领: (1)逗号表达式的运算过程为: 从左往右逐个计算表达式。 (2)逗号表达式作为一个整体,它的值为最后一个表达式(也即表达式n)的值。 (3)逗号运算符的优先级别在所有运算符中最低) 8.设有定义: inta,*pa=&a;以下scanf语句中能正确为变量a读入数据的是(A) A)scanf("%d",pa); B)scanf("%d",&a); C)scanf("%d",&pa); D)scanf("%d",*pa); 9.以下程序段中与语句k=a>b? (b>c? 1: 0): 0;功能等价的是A。 A)if((a>b)&&(b>c))k=1; B)if((a>b)||(b>c)) k=1 else k=0; else k=0; C)if(a<=b) k=0; D)if(a>b) k=1; elseif(b<=c) k=1; elseif(b>c) k=1; elsek=0; 10.有以下程序 main() { inti,s=0; for(i=1;i<10;i+=2) s+=i+1; printf("%d\n",s); } 程序执行后的输出结果是D。 A)自然数1~9的累加和 B)自然数1~10的累加和 C)自然数1~9中的奇数之和 D)自然数1~10中的偶数之和 11.若程序中定义了以下函数 double myadd(doublea,doubleb) {return(a+b);} 并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是A。 A)doublemyadd(doublea,b); B)doublemyadd(double,double); C)doublemyadd(doubleb,doublea); D)doublemyadd(doublex,doubley); 12.有以下函数定义 : voidfun(intn,doublex){……} 若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是C。 A)fun(inty,doublem); B)k=fun(10,12.5); C)fun(x,n); D)voidfun(n,x); 13.有以下程序段 inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b; b=p[5]; b中的值是D。 A)5 B)6 C)8 D)9 14.有以下程序 main() { chara[]="abcdefg",b[10]="abcdefg"; printf("%d %d\n",sizeof(a),sizeof(b));(尾巴有\0) } 执行后输出结果是C。 A)7 7 B)88 C)810 D)1010 15.有以下定义 #include chara[10],*b=a; 不能给数组a输入字符串的语句是B。 A)gets(a) B)gets(a[0]) C)gets(&a[0]); D)gets(b); 16.下列选项中正确的语句组是D A)chars[8];s={"Beijing"}; B)char*s;s={"Beijing"}; C)chars[8];s="Beijing"; D)char*s;s="Beijing"; 17.有以下程序 main() { unsignedchara,b; a=4|3; b=4&3; printf("%d%d\n",a,b) ; } 执行后输出结果是A。 A)7 0 B}0 7 C)1 1 D)430 |&是按位运算 4|3=00000100|00000011=00000111=7 4&3=00000100&00000011=0000
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模拟 试题 答案