C语言程序设计模拟试题4附答案new.docx
《C语言程序设计模拟试题4附答案new.docx》由会员分享,可在线阅读,更多相关《C语言程序设计模拟试题4附答案new.docx(11页珍藏版)》请在冰豆网上搜索。
C语言程序设计模拟试题4附答案new
《C语言程序设计》模拟试卷四
一、 单项选择题(每题2分,共30分)
1、下列对C语言特点的描述中,错误的是 。
A)C语言不是结构化程序设计语言
B)C语言编程简洁明了
C)C语言功能较强
D)C语言移植性好
2、设变量a是整型,b是实型,c是双精度型,则表达式2+‘a’+b*c值的数据类型 。
A)int B)float C)double D)不确定
3、在a=2,b=0,c;则执行c=b||a--;语句后,a和c的结果是 。
A)0,1 B)1,0 C)1,1 D)2,0
4、在scanf()函数的给是说明符中,长整型数的输入格式说明符是 。
A)%d B)%ld C)%lf D)%x
5、以下程序的执行结果是 。
main()
{intn=1;
printf(“%d,%d,%d”,n,++n,n--);}
A)1,1,1 B)1,2,1 C)0,1,1 D)1,2,2
6、判断char型变量ch是否为大写字母的正确表达式是 。
A)‘A’<=ch<=‘Z’
B)(ch>=‘A’)&(ch<=‘Z’)
C)(‘A’<=ch)AND(‘Z’>=ch)
D)(ch>=‘A’)&&(ch<=‘Z’)
7、能够完成如下函数计算的程序段是 。
-1 x<0
y= 0 x=0
1 x>0
A)y=-1; B)if(x>=0)
if(x!
=0) if(x>0)y=1;
if(x>0)y=1; elsey=0;
else y=0; else y=-1;
C)y=0; D)y=-1;
if(x>=0) if(x>0)y=1;
if(x>0)y=1; elsey=0;
elsey=-1
8、下列循环语句中,执行循环体的次数是 。
inti,j;
while(10)printf(“ABC”);
A)10次 B)0次 C)1次 D)无限次
9、若i、j已定义为int类型,则以下程序段中的内循环体的执行次数是 。
for(i=4;i;i--)
for(j=0;j<5;j++){……}
A)10 B)15 C)20 D)25
10、数组赋初值时的数据项的个数与数组元素的个数的下列关系中,错误的是 。
A)大于 B)小于 C)等于 D)小于等于
11、下列数组初始化的定义中,错误的是 。
A)inta[5]={a}; B)chars[5]=“a123b”;
C)intn[]={6,5,4,3,2,1}; D)intb[3]={1,2,3};
12、已知:
staticinta[][3]={{5},{3},{13}};数值为0的元素是 。
A)a[0][0] B)a[0][2] C)a[1][0] D)a[2][0]
13、关于下列函数定义的描述中,错误的是 。
A)定义函数时必须指出函数名和函数的类型
B)定义函数时可以省略函数的类型
C)函数可以嵌套定义
D)函数不可以嵌套定义
14、下面程序的输出结果是 。
voidprtv(intx)
{printf(“%d\n”,++x);}
main()
{intt=10;
prtv(t); }
A)8 B)9 C)10 D)11
15、下面程序的输出结果是 。
main()
{inta[]={1,2,3},s,b,*p;
s=1;
p=a;
for(b=0;b<3;b++)
s*=*(p+b);
printf(“s=%d\n”,s);}
A)s=1 B)s=2 C)s=3 D)s=6
二、 判断(每空1分,共10分)
1、C语言有三种结构化程序设计方法,分别为顺序结构、选择结构和循环结构。
( )
2、C语言规定:
标识符应由字母、下划线和数字组成,且可以是上述字符的任意组合,其长度也是任意的。
( )
3、数组在定义时没有必要指定数组的长度,其长度可以在程序中根据元素个数再决定。
( )
4、if语句有多种使用方法,其中if子句和else子句也都可以单独使用。
( )
5、for语句作为循环控制语句时,从语法上将其括号内各个表达式都可缺省,但表达式内的分号却不可以却省。
()
6、字符串是C语言中一种基本数据类型,字符串总是以‘\n’作为结束标志。
( )
7、在C语言中,程序的最小编译单位是源文件,最小功能单位是函数。
( )
8、在定义指针型变量时指定的基类型为该指针变量所能指向的变量类型。
( )
9、结构体与数组一样,属于构造类型数据,且在结构体中的各个成员的类型也可不同。
( )
10、在发生函数调用时,主~被调函数中的参数可以是简单变量,也可以是数组名,当采用数组名作为参数时其数据传递方式为单向值传递。
( )
三、 程序填空(每小题2分,共12分)
1、求一个3位数各个位上值的和。
(如123为1+2+3=6)
#include
main()
{intm,s,a,b,c,d,e;
scanf("%d",&m);
a=m/100;
b=
(1);
c=
(2);
s=a+b+c;
printf("s=%d",s); }
2、求1!
+2!
+3!
+4!
+5!
的和。
main()
{ intn,s=0,t=1;
for(n=1;n<=5;n++)
{ t=(3);
s=(4);}
printf("1!
+2!
+3!
+4!
+5!
=%d\n",s); }
3、用起泡法对十个数由小到大排序。
main()
{inta[11],i,j,t;
printf(“input10numbers:
\n”);
for(i=1;i<11;i++)
scanf(“%d”,&a[i]);
printf(“\n”);
for(j=1;j<=9;j++)
for(i=1; (5) ;i++)
if( (6) )
{t=a[i]; a[i]=a[i+1]; a[i+1]=t;}
printf(“thesortednumbers:
\n”);
for(i=1;i<11;i++)
printf(“%d”,a[i]); }
四、 读程序写出结果(本大题共5道小题,每小题4分,共20分)
1、写出下面程序的执行结果
#include
main()
{int a,b,x;
x=(a=3,b=a--);
printf(“x=%d,a=%d,b=%d”,x,a,b); }
2、以下程序的运行结果是
#include
main()
{int a=2,b=3,c;
c=a;
if(a>b)c=1;
elseif(a==b)c=0;
else c=-1;
printf(“%d\n”,c); }
3、以下程序的运行结果是
#include
main()
{inti,j,k;
for(i=1;i<4;i++)
{for(j=1;j<4-i;j++)
printf("");
for(k=1;k<=2*i-1;k++)
printf("%c",'A'+i-1);
printf("\n");} }
4、以下程序的运行结果是
main( )
{inta[5][5],i,j;
for(i=0;i<5;i++)
{a[i][0]=1;a[i][i]=1;}
for(i=2;i<5;i++ )
for(j=1;j
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i<5;i++)
{for(j=1;j<=i;j++)
printf(“%5d”,a[i][j]);
printf(“\n”);} }
5、以下程序运行后,如果从键盘上输入ABCDE<回车>,则输出结果为
#include
#include
func(charstr[])
{intnum=0;
while(*(str+num)!
='\0')num++;
return(num);
}
main()
{charstr[10],*p=str;
gets(p);
printf("%d\n",func(p));}
五、 编程题(本大题28分,第一题8分,第二题9分,第三题11分)
1、计算分段函数的值:
1-x (x<0)
Y=
2*x2-2 (x>=0)
编程实现。
2、曾有一位印度国王要奖赏他的聪明能干的宰相达依尔。
达依尔只要求在国际象棋的棋盘格上放置小麦粒,第一格放1粒,第二格放两粒,第三格放4粒,第四格放8粒,……,最后能有多少小麦粒呢?
编程实现。
3、输入10个学生3门课(语文、英语、数学)的成绩,用函数求:
找出总分最高的分数所对应的学号和总成绩。
答案:
一、ACCBA,DBDCA,ABCDD
二、√、×、×、×、√、×、√、√、×、×
三、1、m/10%10,m%10。
2、n*t,t+s。
3、i<=10-j,a[i]>a[i+1]。
四、1、x=3,a=2,b=3。
2、c=-1。
3、A4、15、6
BBB121
CCCCC1331
14641
五、
1、
#include"stdio.h"
main()
{intx,y;
printf("%d",&x);
if(x<0)
y=1-x;
else
y=2*x*x-2;
printf("%d",y);
}
2、(已知1立方米麦子约1.42e8粒)总粒数为:
sum=1+2+22+23+…+264
方法一:
#defineCONST1.42e8
#include
#include
main()
{
intn;
doubleterm,sum=0;/*累加求和变量赋初值*/
for(n=1;n<=64;n++)
{
term=pow(2,n-1);/*根据累加项的规律计算累加项*/
sum=sum+term;/*作累加运算*/
}
printf("sum=%e\n",sum);/*打印总麦粒数*/
printf("volum=%e\n",sum/CONST);/*打印折合的总麦粒体积数*/
}
方法二:
#defineCONST1.42e8/*定义符号常量CONST值为1.42e8*/
#include
main()
{
intn;
doubleterm=1,sum=1;/*累乘求积、累加求和变量赋初值*/
for(n=2;n<=64;n++)
{
term=term*2;/*根据后项总是前项的2倍计算累加项*/
sum=sum+term;/*作累加运算*/
}
printf("sum=%e\n",sum);/*打印总麦粒数*/
printf("volum=%e\n",sum/CONST);/*打印折合的总麦粒体积数*/
}
3、
#include
structstudent
{intnum;
intchinese;
intenglish;
intmath;
intsum;
}stu[10];
main()
{
inti;
for(i=0;i<10;i++)
{
scanf("%d%d%d%d",&stu[i].num,&stu[i].chinese,&stu[i].english,&stu[i].math);
stu[i].sum=stu[i].chinese+stu[i].english+stu[i].math;
}
max();
}
max()
{inti,j,total=0,number=0;
for(i=0;i<1;i++)
for(j=i+1;j<10;j++)
if(stu[i].sum{
total=stu[j].sum;
number=stu[j].num;
}
printf("总分最高的学生成绩是%d,学号是%d",total,number);
}
另:
#include
structstudent
{intnum;
intchinese;
intenglish;
intmath;
intsum;
}stu[10];
main()
{
inti;
for(i=0;i<10;i++)
{
scanf("%d%d%d%d",&stu[i].num,&stu[i].chinese,&stu[i].english,&stu[i].math);
stu[i].sum=stu[i].chinese+stu[i].english+stu[i].math;
}
max();
}
max()
{inti,j,total=0,number=0;
i=0;
for(j=2;j<10;j++)
if(stu[i].sumi=j;
printf("总分最高的学生成绩是%d,学号是%d",stu[i].sum,stu[i].num);
}
.