c语言模拟试题.docx
- 文档编号:16083698
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:66
- 大小:49.41KB
c语言模拟试题.docx
《c语言模拟试题.docx》由会员分享,可在线阅读,更多相关《c语言模拟试题.docx(66页珍藏版)》请在冰点文库上搜索。
c语言模拟试题
《C语言程序设计》模拟试题
(时间:
120分钟总分:
100分)
一、判断题(每小题1分,共10分)
1、定义数组charc1[]={‘A’},c2[]={“A”},则数组c1与c2的长度都为1。
2、同一个程序文件中可同时有多个main()函数,运行时从第一个开始执行。
3、在函数内定义的变量称为全局变量。
4、在一个函数内不可以同时出现多个return语句。
5、若有语句:
’A’/5;因为被除数和除数的类型不一致,编译时出错。
6、已知m和n都是正整型量,则不论m的值有多大,表达式(m+n)%n值永远小于n。
7、有三个表达式a+=1,++a和a++,若每个表达式在执行前a的值都为2,则执行完毕后,a的值都变为3。
8、定义二维数组时,如果在定义时赋了初值,则第二维的大小可以不用指定。
9、continue语句只能用在for循环语句中,不能用在while循环语句中。
10、若有:
inta=5;则语句--a和--5 的效果是一样的,结果都为4。
二、单项选择题(每小题2分,共40分)
1,下面哪个标识符是不合法的()
A)sumB)mus#C)true_D)false5
2,下面哪个不是定义整型变量的合法式子()
A)inta;B)longb;C)intergerc;D)shortd;
3,有语句:
inta=0,b=2;则printf(“a=%d,b=%d”,a++,--b);的输出结果为()
A)a=0,b=2B)a=1,b=1C)a=1,b=2D)a=0,b=1
4,系统函数getchar()的功能是()
A)在屏幕上输出一个字符B)在屏幕上输出多个字符
C)从键盘获取一个字符D)从键盘获取多个字符
5,从键盘输入一个整数值放入整型变量a中,下面哪个语句是正确的()
A)scanf(“%a”,&a);B)scanf(“%d”,&a);
C)scanf(“%c”,a);D)scanf(“%z”,a);
6,已知关系表达式的取值规则为:
“满足”为1(真),“不满足”则为0(假)。
据此,若有定义:
inta=3,b=2,c=1;则表达式:
a>b>c与a
A)0,0B)0,1C)1,0D)1,1
7,若有语句:
inta=-1,b=0,c=1,d=2;则表达式:
a||b&&c||d的值为()
A)-1B)0C)1D)2
8,若有语句:
doubled=123.4;printf(“%.3f”,d);则输出为:
()
A)123.400000B)000123.4C)123.400D)123.40
9,若有语句:
inta=1,b=1,表达式a>b?
a:
b值为()
A)0B)1C)2D)不确定
10,有如下语句:
inti=0,j=5,k=0;;
for(;i<5;i++)
for(j=0;j<5;j+=2)
++k;
printf(“k=%d”,k);
则执行结果为()
A)k=0B)1C)15
D)因为第一个for语句后的括号中缺少一个表达式,所以出错
11,有如下语句:
inti=1,sum=0;
while(i<=3){sum=sum+i;i++;}
则执行结束后,sum的值为()
A)6B)4C)2D)0
12,若有语句:
floata[5]={1,2,3,4,5};则a[5]的值为()
A)5B)4C)0D)不确定
13,若有二维数组定义:
doublea[][3]={{1,2},{3,4}};则a数组中最多能存储多少个元素()
A)12个B)6个C)4个D)3个
14,若有如下代码:
inta;
floatf1(){……}
charf2(){……}
则下面关于变量a的有效范围的描述正确的是()
A)a在函数f1()和f2()中都可用
B)a在函数f1()和f2()中都不可用
C)a仅在函数f1()中可用,在f2()中不可用
D)a仅在函数f2()中可用,在f1()中不可用
15,以下哪个语句可用于定义符号常量PI()
A)#definePI3.14B)#includePI3.14
C)definePI3.14D)includePI3.14
16,有以下程序:
main()
{inta,b,c=246;
a=c/100%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b);
}输出结果是()
A)2,1B)3,2C)4,3D)2,-1
17以下关于break语句的说法中不正确的是()
A)break语句可以出现在for循环语句中。
B)break语句可以出现在while循环语句中。
C)break语句可以出现在do{}while循环语句中。
D)break语句可以出现在任何语句中。
18,若有如下三个函数:
intf1(){
intk;
k=f2();
}
intf2(){
f3();
}
voidf3(){
printf(“Excutef3()”);
}
则以下说法中不正确的是()
A)f1()是主调函数B)f2()是主调函数
C)f2()是被调函数D)f3()是主调函数
19,以下程序的输出结果是()
intd=1;
fun(intp)
{staticintd=5.7;
d+=p;
printf("%d",d);
return(d);}
main()
{inta=3;
printf("%d\n",fun(a+fun(d)));}
A).699B).669C).61515D).6615
20,有以下程序
#include“stdio.h”
main()
{charstr[][20]={"Hello","Beijing"},*p=str;
printf("%d\n",strlen(p+22));
}
程序运行后的输出结果是
A)0B)5C)7D)20
三、填空题(每空2分,共12分)
1、若有以下程序
main()
{intp,a=5;
if(p=a!
=0)
printf("%d\n",p);
else
printf("%d\n",p+2);
}
执行后输出结果是【1】。
2、若有以下程序
main()
{inta[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}};
inti,j,s=0;
for(i=0;i<4;i++)
{for(j=0;j<4;j++)
{if(a[i][j]<0)continue;
if(a[i][j]==0)break;
s+=a[i][j];
}
}
printf("%d\n",s);
}
执行后输出结果是【2】。
3、以下程序输出结果是【3】
main()
{inta[]={1,2,3,4,5,6},*p;
p=a;
*(p+3)+=2;
printf(“%d,%d”,*p,*(p+2));
}
4、以下程序的输出结果是【4】。
#defineMCRA(m)2*m
#defineMCRB(n,m)2*MCRA(n)+m
main()
{inti=2,j=3;
printf("%d\n",MCRB(j,MCRA(i)));
}
5、以下函数的功能是删除字符串s中的所有数字字符。
请填空。
vioddele(char*s)
{intn=0,i;
for(i=0;s[i];i++)
if(___【5】_____)s[n++]=s[i];
s[n]=____【6】____;
}
四、编程题(共38分)
1、输入一个字符,请判断是字母、数字还是特殊字符。
若是小写(大写)英文字母,则输出相应的大写(小写)字母及其ASCII码值。
(8分)
1、
2、杨辉三角形(要求打印出10行如下图)(10分)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
………………………………
3、编一个函数fun(int*a,intn,int*odd,int*even),函数的功能是分别求出数组中所有奇数之和以及所有偶数之和。
形参n给了数组中数据的个数:
利用指针odd返回奇数之和,利用指针even返回偶数之和。
例如:
数组中的值依次为:
1,9,2,3,11,6;则利用指针odd返回奇数之和24;利用指针even返回偶数之和8。
(20分)
《C语言程序设计》模拟试题2
(时间:
120分钟总分:
100分)
一、选择题(本题共15道小题,每题2分,共30分。
)
1.以下程序运行后,输出结果是
main()
{char*s="abcde";
s+=2;
printf("%ld\n",s);
}
A)cdeB)字符c的ASCII码值C)字符c的地址D)出错
2.下面程序的运行结果是
main()
{charch[7]={"65ab21"};
inti,s=0
for(i=0;ch[i]>='0'&&ch[i]<'9';i+=2)
s=10*s+ch[i]-'0'
printf("%d\n",s);
}
A)12ba56B)6521C)6D)62
3.若有说明,double*p,a;则能通过scanf语句正确给输入项读入数据的程序段是
A)*p=&a;scanf("%lf",p);B)p=(double*)malloc(8);scanf("%f",p);
C)p=&a;scanf("%lf",a);D)p=&a;scanf("%le",p);
4.若k是int型变量,且有下面的程序片段:
k=-3
if(k<=0)printf("####")
elseprintf("&&&&");
上面程序片段的输出结果是
A)####B)&&&&C)####&&&&D)有语法错误,无输出结果
5.以下程序运行后,输出结果是
#include
#definePT5.5
#defineS(x)PT*x*x
main()
{inta=1,b=2;
printf("%4.1f\n",S(a+b))
}
A)49.5B)9.5C)22.0D)45.0
6.当a=1,b=3,c=5,d=4时,执行下面一段程序后,x的值为
if(a
if(c elseif(a if(b elsex=3; elsex=6; elsex=7; A)1B)2C)3D)6 7.执行以下程序后,y的值是 main() {inta[]={2,4,6,8,10}; inty=1,x,*p; p=&a[1]; for(x=0;x<3;x++)y+=*(p+x); printf("%d\n",y);} A)17B)18C)19D)20 8.若有说明: inti,j=7,*p=&i;,则与i=j;等价的语句是 A)i=*p;B)*p=*&j;C)i=&j;D)i=**p; 9.执行语句: for(i=1;i++<4;)后;变量i的值是 A)3B)4C)5D)不定 10.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是 main() {intx; scanf("%d",&x); if(x++>5)printf("%d",x); elseprintf("%d\n",x--);} A)7和5B)6和3C)7和4D)6和4 11.有以下程序 intfun(intx,inty,int*cp,int*dp) {*cp=x+y;*dp=x-y;} main() {inta,b,c,d; a=30;b=50; fun(a,b,&c,&d); printf("%d,%d\n",c,d); } 输出结果是 A)50,30B)30,50C)80,-20D)80,20 12.设有数组定义: chararray[]="China";则数组array所占的空间为 A)4个字节B)5个字节C)6个字节D)7个字节 13.设j为int型变量,则下面for循环语句的执行结果是 for(j=10;j>3;j--) {if(j%3)j--; --j;--j; printf("%d",j); } A)63B)74C)62D)73 14.设C语言中,一个int型数据在内存中占2个字节,则unsignedint型数据的取值范围为: A)0-255B)1-32767C)0-65535D)0-2147483647 15.设有如下定义: int(*ptr)[5]; 则以下叙述中正确的是 A)ptr是指针变量,指向5个int型数据 B)ptr是指针变量,指向包含int型数据的一维数组 C)ptr是一维数组,包含5个元素,每个元素为int型数据的指针变量 D)ptr是一个数组名,该数组包含有5个指针类型的数据 二、判断题(本题共10道小题,共10分。 ) 1.若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数() 2.全局变量使得函数之间的"耦合性"更加紧密,不利于模块化的要求() 3.若调用一个函数,且此函数中没有return语句,则返回一个不确定的值() 4.用户若需要调用标准库函数,调用前必须重新定义() 5.函数调用: strcat(strcpy(str1,str2),str3)的功能是将串str2复制到串str1中后再将串str3连接到串str1之后() 6.在实际编程中,do-while循环完全可以用for循环替换() 7.C程序的注释只能是一行() 8.自增运算符(++)或自减运算符(--)只能用于变量,不能用于常量或表达式() 9.在函数内的复合语句中定义的变量在本函数范围内有定义() 10.一个变量在内存中占据一定的存储单元() 三、填空题(每空1分,共10分。 ) 1.C语言数组的下标总是从__________开始,不可以为负数;构成数组各个元素具有相同的__________。 2.在C语言中(以16位PC机为例),一个char数据在内存中所占字节数为_______,一个int数据在内存中所占字节数为_______,一个long数据在内存中所占字节数为_______,一个float数据在内存中所占字节数为_______。 3.C程序是由________构成的,一个C程序中至少包含________。 因此,________是C程序的基本单位。 4.假定一个二维数组为a[M][N],则a[i]的地址值(以字节为单位)为__________。 四、读程序写结果题(本题共5道小题,每题3分,共15分。 ) 1、有以下程序 floatfun(intx,inty) { return(x+y); } main() {inta=2,b=5,c=8; printf("%3.0f\n",fun((int)fun(a+c,b),a-c)); } 程序运行后的输出结果是____________。 2、以下程序运行后的输出结果是_______________。 main() {chars[]="9876",*p; for(p=s;p } 3、若有说明inti,j,k;则表达式i=10,j=20,k=30,k*=i+j的值为___________。 4、以下程序运行后的输出结果是。 main() {intx=15; while(x>10&&x<50) { x++;if(x/3){x++; break;} elsecontinue; }printf("%d\n",x); } 5、以下程序运行后的输出结果是。 voidfun(intx,inty) {x=x+y;y=x-y;x=x-y;printf("%d,%d,",x,y);} main() {intx=2,y=3; fun(x,y);printf("%d,%d\n",x,y); } 五、编程题(本题共2道小题,共35分。 ) 1.计算1-1/2+1/3-1/4-...+1/99-1/100的值,并显示出来。 (10分) 2.从键盘输入一个5*5整型数组赋值,找出其中的最小值并显示出来。 (10分) 3、求数组a[N]中的所有素数的和,定义函数isprime用来判断数组元素是否为素数。 (注: 素数是只能被1和本身整除且大于1的自然数)。 (15分) 《C语言程序设计》模拟试题3 一、选择题(每题2分,共40分) 1.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是 A)1B)2C)2.0D)2.5 2.在C语言中,不正确的int类型的常数是 A) 32768B) 0C) 037D) 0xAF 3.语句: printf("%d",(a=2)&&(b=-2));的输出结果是 A) 无输出B) 结果不确定C) -1D) 1 4.能正确表示a和b同时为正或同时为负的逻辑表达式是 A) (a>=0‖b>=0)&&(a<0‖b<0)B) (a>=0&&b>=0)&&(a<0&&b<0) C) (a+b>0)&&(a+b<=0)D) a*b>0 5.以下程序的输出结果是 A) -11B) 01C) 10D) 00 main() {inta=-1,b=1,k; if((++a<0)&&! (b--<=0))printf("%d%d\n",a,b); elseprintf("%d%d\n",b,a); } 6.以下循环体的执行次数是 A)3B)2C)1D)0 main() {inti,j; for(i=0,j=1;i<=j+1;i+=2,j--)printf("%d\n",i); } 7.有以下程序 main() {inta,b,c=246; a=c/100%9;b=(-1)&&(-1); printf("%d,%d\n",a,b); } 输出结果是: A)2,1B)3,2C)4,3D)2,-1 8.以下叙述正确的是 A)do-while语句构成的循环不能用其它语句构成的循环来代替。 B)do-while语句构成的循环只能用break语句退出。 C)用do-while语句构成的循环,在while后的表达式为非零时结束循环。 D)用do-while语句构成的循环,在while后的表达式为零时结束循环。 9.以下程序的输出结果是 A) 20B) 31C) 321D) 210 main() {intn=4; while(n--)printf("%d",--n); } 10.以下程序的输出结果是 A) #*#*#B) #####C) *****D) *#*#* main() {inti; for(i=1;i<6;i++) {if(i%2){printf("#");continue;} printf("*"); } printf("\n"); } 11.设有数组定义: chararray[]="China";则数组array所占的空间为 A)4个字节B)5个字节C)6个字节D)7个字节 12.若已定义: inta[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是 A) a+1B)a++C) p+1D) ++p 13.若有以下定义和语句: doubler=99,*p=&r; *p=r; 则以下正确的叙述是 A) 以下两处的*p含义相同,都说明给指针变量p赋值 B) 在"doubler=99,*p=&r;"中,把r的地址赋值给了p所指的存储单元 C) 语句"*p=r;"把变量r的值赋给指针变量p D) 语句"*p=r;"取变量r的值放回r中 14.有如下程序段 int*p,a=10,b=1 p=&a;a=*p+b; 执行该程序段后,a的值为 A)12B)11C)10D)编译出错 15.以下程序的输出结果是 A)6B) 6789C) '6'D) 789 main() {chara[10]={'1','2','3','4','5','6','7','8','9',’\0’},*p; inti=8; p=a+i; printf("%s\n",p-3); } 16.下面程序把数组元素中的最大值放入a[0]中。 则在if语句中的条件表达式应该是 A) p>aB) *p>a[0]C) *p>*a[0]D) *p[0]>*a[0] main() {inta[10]={6,7,2,9,1,10,5,8,4,3},*p=a,I; for(i=0;i<10;i++,p++) if(________)*a=*p; printf("%d",*a); } 17.以下程序的输出结果是 A) 52B) 51C) 53D) 97 main() {inti,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1]; for(i=0;i<4;i+=2)printf("%d",p[i]); } 18.以下程序的输出结果是 A)12345678 B)123456780C)147258360 D)123456780 main() {charch[3][4]={"123","456","78"},*p[3];inti; for(i=0;i<3;i++)p[i]=ch[i]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 模拟 试题