C语言程序设计模拟题.docx
《C语言程序设计模拟题.docx》由会员分享,可在线阅读,更多相关《C语言程序设计模拟题.docx(24页珍藏版)》请在冰豆网上搜索。
![C语言程序设计模拟题.docx](https://file1.bdocx.com/fileroot1/2023-2/1/c3174b57-bbea-4c51-b3ff-518c8a5a71cb/c3174b57-bbea-4c51-b3ff-518c8a5a71cb1.gif)
C语言程序设计模拟题
《C语言程序设计》模拟题(补)
一、简答题
1、简述C语言程序的结构。
二、选择题
1、下面程序段的输出结果是【1】。
inta=60;
a+=a-=a+a;
printf(“%d\n”,a);
A)
120
B)
60
C)
-120
D)
-60
2、下面正确的字符常量是【2】。
A)
‘c’
B)
‘//’’
C)
“w”
D)
‘’
3、以下不能用作标识符的是【3】。
A)
_26
B)
Scanf
C)
case
D)
Double
4、下面程序段中循环体执行的次数是【4】。
inta=10,b=0;
do{b+=2;a-=2+b;}while(a>=0);
A)
1
B)
2
C)
3
D)
4
5、以下关于函数的叙述正确的是【5】。
A)
函数中必须要有return语句
B)
函数中可以有多个return语句,但只有一个被执行
C)
return语句中必须有一个表达式
D)
函数中定义的变量不能与其它函数中的变量同名
6、满足x为奇数时值为真,x为偶数时值为假的表达式是【6】。
A)
!
(x%2==1)
B)
x%2==0
C)
x%2
D)
!
(x%2)
7、以下语句中无法正确赋值的是【7】。
A)
charb[10]={‘H’,‘e’,‘l’,‘l’,‘o’,‘!
’};
B)
charb[10];b=“Hello!
”;
C)
charb[10];strcpy(b,“Hello!
”);
D)
charb[10]=“Hello!
”;
8、若有以下的定义和语句,则值为5的表达式是【8】。
inta[]={1,2,3,4,5,6,7,8,9,10};
A)
a[5]
B)
a[a[4]]
C)
a[a[3]]
D)
a[a[5]]
9、若有定义:
intk=7;floata=2.5,b=4.7;则表达式a+k%3*(int)(a+b)%2/4的值是【9】。
A)
2.
B)
2.
C)
3.
D)
0.
10、已知ch是字符型变量,下面正确的赋值语句是【10】。
A)
ch=”\”
B)
ch=’123’
C)
ch=’\xff’
D)
ch=’\08’
11、下面程序的运行结果是:
【11】。
voidmain()
{
charc=’a’;
if(‘0’<=c<=’9’)printf(“YES”);
elseprintf(“NO”);
}
A)
语句有错误
B)
NO
C)
YESNO
D)
YES
12、已知:
inta=4,b=5,c;则执行表达式c=a=a>b后,变量a的值为【12】。
A)
0
B)
1
C)
4
D)
5
13、以下程序的运行结果是【13】。
#include
voidmain()
{intx1=3,x2=1,x3=1;
if(x1=x2+x3)printf(“****”);
elseprintf(“####”);
}
A)
存在语法错误
B)
无输出结果
C)
输出****
D)
输出####
14、下面程序段的输出结果是【14】。
#include
charp1[10]=“abc”,p2[]=“ABC”,str[50]=“xyz”;
strcpy(str+2,strcat(p1,p2));
printf(“%s\n”,str);
A)
xyabcABC
B)
zabcABC
C)
yzabcABC
D)
xyzabcABC
15、设有:
inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值为【15】。
A)
1
B)
2
C)
3
D)
0
16、若已定义x和y为double类型,则表达式:
x=1,y=x+3/2的值是【16】。
A)
1
B)
2
C)
2.0
D)
2.5
17、以下程序段的输出结果为【17】。
intx=1,y=2;
voidfun1()
{x=3;y=4;}
voidfun2(intx,inty)
{printf(“%d,%d\n”,x,y);}
voidmain()
{fun1();printf(“%d,%d,”,x,y);
fun2(5,6);
}
A)
3,4,5,6
B)
1,2,5,6
C)
1,2,3,4
D)
3,4,1,2
18、下面程序执行时,while的循环次数是【18】。
inti=0;
while(i<10)
{
if(i<1)continue;
if(i==5)break;
i++;
}
A)
1
B)
10
C)
6
D)
死循环,不能确定次数
19、对一维数组a的说明语句中正确的是【19】。
A)
inta(10)
B)
intn=10;a[n];
C)
#defineSIZE10
inta[SIZE];
D)
intn;
scanf(“%d”,&n);
inta[n];
20、若调用一个函数,且此函数中没有return语句,则该函数【20】。
A)
没有返回值
B)
返回若干个系统默认值
C)
能返回一个用户所希望的函数值
D)
返回一个不确定的值
21、下列运算符中优先级最高的是【21】。
A)!
B)%C)-=D)&&
22、若intj=10;执行下列程序后,变量j的正确结果是【22】。
switch(j){
case9:
j+=1;
case10:
j+=1;
case11:
j+=1;
default:
j+=1;}
A)10B)11
C)12D)13
23、下列程序的运行结果是【23】。
intii,x[3][3]={1,2,3,4,5,6,7,8,9};
for(ii=0;ii<3,ii++)
printf(“%d”,x[ii][2-ii]);
A)1,5,9B)1,4,7
C)3,5,7D)3,6,9
24、在定义inta[10];之后,对a的引用正确的是【24】。
A)a[10]B)a[6,3]
C)a(6)D)a[10-10]
25、在定义了a[2][3]之后,对a的引用正确的是【25】。
A)a(1,2)B)a[1,3]
C)a[1>2][!
1]D)a[2][0]
26、设有程序段
intk=10;
while(k=0)k=k-1;
则下面描述中正确的是:
【26】
A)while循环执行10次
B)循环是无限循环
C)循环体语句一次也不执行
D)循环体语句执行一次
27、判断两个字符串s1和s2相等的正确语句是【27】。
A)if(s1=s2)B)if(s1==s2)
C)if(strcpy(s1,s2))D)if(strcmp(s1,s2)==0)
28、以下正确的字符常量的定义为【】。
A、’c’B、“cj”
C、’abc’D、’’
29、若x、y都是int型变量,且x=100,y=200,则printf(“%d”,(x,y));的输出结果是【】。
A)
200
B)
100
C)
100200
D)
不确定
30、运行以下程序,如果从键盘输入ABCDE<回车>,则输出结果是【】。
#include
intfunch(charstr[])
{
intnum=0;
while(str[num]!
=‘\0’)num++;
return(num);
}
voidmain()
{charstr[10];
gets(str);
printf(“%d\n”,funch(str));
}
A)
7
B)
6
C)
5
D)
4
31、为表示关系x>=y>=z,下面C语言表达式中正确的是【】。
A)
(x>=y)&&(y>=z)
B)
(x>=y)and(y>=z)
C)
(x>=y>=z)
D)
(x>=y)&(y>=z)
32、下面程序段的输出结果是【】。
intx=2,y=0,z;
x*=3+2;printf(“%d”,x);
x*=y=z=4;printf(“%d”,x);
A)
840
B)
1040
C)
104
D)
84
33、下列程序段的输出结果为【】。
inta=9;
a+=a-=a+a;
printf(“%d\n”,a);
A)
18
B)
9
C)
-18
D)
-9
34、设有整型变量a的值为5,使整型变量b的值不为2的表达式【】。
A)
b=a/5
B)
b=6-(--a)
C)
b=a%2
D)
b=(a-a--,a/2)
35、语句printf(“a\bre\’hi\’y\\\bou\n”)的输出结果为【】。
A)
a\bre\’hi\’y\\\bou
B)
a\bre\’hi\’y\bou
C)
re’hi’you
D)
abre’hi’y\bou
36、设a,b,c,d均是int型变量,为了使以下程序输出为:
1234+123+12+1,正确的输入形式应当为【】。
scanf(“%4d+%3d+%2d+%1d”,&a,&b,&c,&d);
printf(“%4d+%3d+%2d+%1d”,a,b,c,d);
A)
<回车>
B)
41234<回车>
C)
1234+1234+1234+1234<回车>
D)
1234+123+12+1<回车>
37、以下程序的输出结果是【】。
voidmain()
{inta=1,b=1;
switch(a+b)
{case2:
printf("*\n");
case3:
printf("**\n");
}
}
A)
*
**
B)
**
C)
*
D)
***
38、分析以下程序,以下程序【】。
voidmain()
{intx=5,a=0,b=0;
if(x=a+b)printf(“****\n”);
elseprintf(“####\n”);}
A)
有语法错,不能通过编译
B)
通过编译,但不能连接
C)
输出****
D)
输出####
39、假定所有变量均已正确说明,下列程序段运行后x的值是【】。
a=b=c=0;x=35;
if(!
a)x=-1;
elseif(b);
if(c)x=3;
elsex=4;
A)
-1
B)
4
C)
35
D)
3
40、下面程序运行的结果是【】。
#include
voidmain()
{inti,j,x=0;
for(i=0;i<2;i++)
{x++;
for(j=0;j<=3;j++)
{if(j%2)continue;
x++;}
x++;
}
printf(“x=%d\n”,x);
}
A)
x=4
B)
x=8
C)
x=6
D)
x=12
41、下面程序的运行结果是【】。
#include“stdio.h”
voidmain()
{inti,j,a=0;
for(i=0;i<2;i++)
{for(j=0;j<4;j++)
{if(j%2)break;
a++;}
a++;
}
printf(“%d\n”,a);
}
A)
4
B)
5
C)
6
D)
7
42、下面程序的运行结果是【】。
voidmain()
{charch[7]={“12ab56”};
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)
1
B)
1256
C)
12ab56
D)
7
43、下面程序的运行结果是【】。
voidmain()
{chara[]=“morning”,t;
inti,j=0;
for(i=1;i<7;i++)
if(a[j]t=a[j];a[j]=a[7];a[7]=a[j];
puts(a);
}
A)
mogninr
B)
mo
C)
morning
D)
mornin
44、以下正确的函数说明形式是【】。
A)
doublefun(intx,inty)
B)
doublefun(intx;inty)
C)
doublefun(intx,inty);
D)
doublefun(intx,y);
45、以下程序的输出结果是【】。
voidfun(inta,intb,intc)
{a=456;b=567;c=678;}
voidmain()
{intx=10,y=20,z=30;
fun(x,y,z);
printf("%d,%d,%d",x,y,z);
}
A)
30,20,10
B)
10,20,30
C)
456,567,678
D)
678,567,456
三、程序选择题
1、下面程序是从键盘中输入学号,然后输出学号中百位数字为3的学号,输入0时结束循环,请选择填空。
#include
voidmain()
{longintnum;
scanf(“%ld”,&num);
do
{if(【1】)printf(“%ld”,num);
scanf(“%ld”,&num);
}while(【2】);}
【1】
A)
num%100/10==3
B)
num/10%10==3
C)
num%10/10==3
D)
num/100%10==3
【2】
A)
!
num
B)
!
num==0
C)
num>0==0
D)
!
num!
=0
2、下面程序段的运行结果是【3】。
(其中□表示空格)
charc[5]={‘a’,’b’,’\0’,’c’,’\0’};
printf(“%s”,c);
【3】
A)
‘a’’b’
B)
ab
C)
ab□c
D)
abc
3、下列程序的运行结果是【4】。
inti,x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
printf(“%d”,x[i][2-i]);
【4】
A)
1,5,9
B)
1,4,7
C)
3,5,7
D)
3,6,9
4.下面的程序将字符串s中的每个字符按升序插入到数组a中,请选择填空。
#include
#include
voidmain()
{chara[20]=“cehiknqtw”;chars[]=“bafl”;
inti,j,k;
for(k=0;【5】;k++)
{j=0;
while(s[k]>=a[j]&&a[j]!
=‘\0’)j++;
for(【6】)a[i+1]=a[i];
a[j]=【7】;
}
puts(a);
}
【5】
A)
s[k]!
=‘0’
B)
s[k]!
=‘0’
C)
s[k]==0
D)
s[k]!
=0
【6】
A)
i=strlen(a)+k;i>=j;i--
B)
i=strlen(a);i>=j;i--
C)
i=j;i<=strlen(a)+k;i++
D)
i=j;i<=strlen(a);i++
【7】
A)
a[k]
B)
s[k+1]
C)
s[k]
D)
s[k-1]
5.下面程序的功能是找出数组中的最大值和此元素的下标,请选择填空。
#include
voidmain()
{inta[10]={4,6,8,2,0,9,23,5,67,1},k,p;
【8】;
for(k=1;k<10;k++)
if(a[k]>a[p])
【9】;
printf(”最大值=%d,下标=%d\n”,a[p],【10】);
}
【8】
A)
p=a[0]
B)
p=0
C)
p=1
D)
p=a(0)
【9】
A)
p=k
B)
a[p]=a[k]
C)
a[k]=a[p]
D)
k=p
【10】
A)
k
B)
p
C)
a[k]
D)
a[p]
四、填空题
1、以下程序求解百钱百鸡问题,公鸡五元一只,母鸡三元一只,小鸡一元三只,用一百元买一百只鸡,且必须有公鸡、母鸡和小鸡,求解所有可能的方案。
请填空。
#include
voidmain()
{
【1】;
n=0;
for(i=1;i<=18;【2】)
for(j=1;j<=31;j++)
{k=【3】;
if(【4】==300)
{n++;
printf(“n=%d,cock=%d,hen=%d,chick=%d\n”,n,i,j,k);
}
}
}
2、以下程序段的输出结果是【5】。
intk,j,s;
for(k=2;k<6;k++,k++)
{s=1;
for(j=k;j<6;j++)
s+=j;
}
printf(“%d\n”,s);
3.输入一个整数10,以下程序的运行结果是【6】。
#include
main()
{inta,e[10],c,i=0;
printf(“输入一个整数\n”);
scanf(“%d”,&a);
while(a!
=0)
{c=sub(a);
a=a/2;e[i]=c;i++;
}
for(;i>0;i--)
printf(“%d”,e[i-1]);
}
sub(inta)
{intc;
c=a%2;
returnc;
}
4、下面的函数invert的功能是将一个字符串的内容颠倒过来.
voidinvert(charstr[])
{inti,j,【7】;
for(i=0,j=strlen(str);【8】;i++,j--)
{k=str[i];
str[i]=str[j];
str[j]=k;
}
}
5、在C语言中,要求对所有用到的变量,遵循先定义后【9】的原则。
6、C语言规定,可执行程序的开始执行点是【10】。
7.设floatx=2.5,y=4.7;inta=7;,则表达式x+a%3*(int)(x+y)%2/4的值为【11】。
8.判断变量a、b的值均不为0的逻辑表达式为【12】。
9.整型变量m的值为27,语句printf("m=%x",m);的输出结果为【13】。
10.如定义语句为chara[]="windows",b[]="95";,语句"printf("%s",strcat(a,b));"的输出结果为【14】。
11.inti=234,j=567;函数printf("%d%d\n",i,j)的输出结果是【15】。
12.求1至100的和,程序应写成for(s=0,i=1;【16】;++i)s+=i;
13.定义a为长度为10的字符串,同时为字符串赋初值"continue"的语句为【17】。
14.已知方程ax2+bx+c=0系数a、b、c且存在两个实根,计算其中一个实根的算术表达式为【18】。
15.若s='d',执行语句s=(s>='a'&&s<='z')?
s-32:
s;字符变量s的值为【19】。
16.函数change定义如下,若a=10、b=5,执行change(a,b)后a、b的值分别为【20】。
voidchange(inta,intb){intt=0;t=a;a=b;b=t;}
四、阅读程序题
1、以下程序的输出结果是 。
#include
intfun(intn)
{
intr;
if(n==1||n==2)
r=1;
else
r=fun(n-1)+fun(n-2);
returnr;
}
voidmain()
{
printf("%d\n",fun(8));
}
五、编程题
1.输入10个数据,用选择法对10个数由小到大排序,并输出。
2.写一个函数,用于求n个学生的平均成绩:
并设计主函数,定义一个一维数组score里面存放10个学生的成绩,输出这10位学生的平均成绩。
3.有一个3*4的矩阵,要求编写程序求出其中值最大的那个元素的值,以及所在的行号和列号。
4.写一个函数,求10个学生的平均成绩:
并设计主函数,定义一个一维数组score里面存放10个学生的成绩,输出这10位学生的平均成绩。
5.求Fibonacci数列的前40个数。
1,1,2,3,5,8,13…。
参考答案:
一、简答题
1、1)一个程序由一个或多个源程序文件组成。
预处理指令、全局声明、函数定义。
2)函数是C程序的主要组成部分。
3)一个函数包括两个部分:
函数首部和函数体(声明部分和执行部分)。
4)程序总是从main函数开始执行的。
5)程序中对