5:
以下描述正确的是
A)goto语句只能用于退出多层循环
B)switch语句中不能出现continue语句
C)只能用continue语句来终止本次循环
D)在循环中break语句不能独立出现
6:
若有说明:
inta[10];则对a数组元素的正确引用是__
A)a[10]B)a[3.5]C)a[5.5]D)a[10-10]
7:
fun((exp1,exp2),(exp3,exp4,exp5)),以上函数调用语句中含有实参的个数为:
A)1B)2C)4D)5
8:
以下叙述不正确的是
A)一个C源程序可由一个或多个函数组成
B)一个C源程序必须包含一个main函数
C)C程序的基本组成单位是函数
D)在C程序中,注释说明只能位于一条语句的后面
9:
已有如下定义和输入语句,inta1,a2;charc1,c2;scanf("%d%d",&a1,&a2);scanf("%c%c",&c1,&c2);若要求a1,a2,c1,c2的值分别为10,20,A,B,当从第一列开始输入数据时,正确的数据输入方式是:
A)1020AB(回车)B)1020(回车)AB(回车)
C)1020AB(回车)D)1020AB(回车)
10:
设有说明:
charw;intx;f1oaty;double?
z;则表达式w*x+z一y值的数据类型为:
A)floatB)charC)intD)double
第二题:
C语言改错题(总题数:
4总分数:
20)在下面的程序中存在一处错误,请找出来,将错误的行号(2分)和正确答案(3分)填写在每题后面的空格中
1:
求ax^2+bx+c=0方程的根,a,b,c由键盘输入,设b^2-4ac>0
行号语句
1:
#include
2:
#include
3:
main()
4:
{
5:
floata,b,c,disc,x1,x2,p,q;
6:
scanf(“a=%f,b=%f,c=%f”,&a,&b,&c);
7:
disc=b*b-4*a*c;
8:
p=-b/2a;
9:
q=sqrt(disc)/(2*a);
10:
x1=p+q;x2=p-q;
11:
printf(“x1=%5.2fx2=%5.2f”,x1,x2);
12:
}
错误行号为:
8。
正确答案为:
p=-b/(2*a);
2:
设圆半径r=1.5,圆锥高h=3,求圆周长和圆锥体体积。
用scanf输入数据,输出计算结果时要求有文字说明,取小数点后2位数字。
行号语句
1:
#include
2:
main()
3:
{
4:
floatpi,h,r,l,v;
5:
pi=3.1415926;
6:
printf(“inputr&h:
”);
7:
scanf(“%f%f”,&r,&h);
8:
l=2*pi*r;
9:
v=1/3*pi*r*2*h;
10:
printf(“l=%6.2fv=%6.2f”,l,v);
11:
}
错误行号为:
9。
正确答案为:
v=1/3*pi*r*r*h;
3:
求前100个自然数的和。
行号语句
1:
#include
2:
voidmain()
3:
{
4:
inti,sum;
5:
i=1;
6:
while(i<=100)
7:
{
8:
sum+=i;
9:
i++;
10:
}
11:
printf(“%d”,sum);
12:
}
错误行号为:
4。
正确答案为:
inti,sum=0;
4:
求前10个自然数的阶乘之和
行号语句
1:
#include
2:
main()
3:
{
4:
longf,s;
5:
intk;
6:
s=0;f=0;
7:
for(k=1;k<=10;k++)
8:
{
9:
f*=k;
10:
s+=f;
11:
}
12:
printf(“sum=%d”,s);
13:
}
错误行号为:
6。
正确答案为:
s=0;f=1;
第三题:
C语言程序填空题(总题数:
2总分数:
20)根据试题要求将正确答案填到空中(每空5分)
1:
从键盘输入一个年份,判断是否是闰年。
#include
main()
{
intyear,leap;
printf(“inputtheyear:
”);
scanf(“%d”,&year);
if((year%4==0&&year%100!
=0)||(year%400==0))
leap=1;
else
leap=0;
if(leap==1)
printf(“%disaleapyear!
”,year);
else
printf(“%disnotaleapyear!
”,year);
}
2:
下面程序的功能是检查一个二维数组是否对称(即:
对所有i和j都有a[i][j]=a[j][i])。
请填空
#include
main()
{
inta[4][4]={1,2,3,4,2,2,5,6,3,5,3,7,4,6,7,4};
inti,j,found=0;
for(j=0;j<4;j++)
for(i=0;i<4;i++)
if(a[j][i]!
=a[i][j])
{
found=1;
break;
}
if(found==1)
printf(“No”);
else
printf(“Yes”);
}
第四题:
C语言编程题(总题数:
2总分数:
40)
1:
编写程序,用矩形法求一元函数f(x)=ln(x+1)+x/2(其中ln为自然对数),在区间[1,5]上的积分近似值S,保留2位小数(小区间数n=15,此参数不能改动,否则影响答案)。
#include
#include
main()
{
doublea=1,b=5,h,s0,s=0,f0,x;
intn=15;
h=(b-a)/n;
x=a;
for(n=1;n<=15;n++)
{
f0=log(x+1)+x/2;
s0=f0*h;
s=s+s0;
x=x+h;
}
printf("方程的近似根为%.2lf.\n",s);
}
/*
方程的近似根为10.95.
Pressanykeytocontinue*/
2:
任意使用一种方法将数据14,35,82,33,22,61,26,12,43,12按从小到大的顺序排序,并输出排序前、排序后的数据。
#include
main()
{
inti,j,t;
inta[10]={14,35,82,33,22,61,26,12,43,12};
printf("冒泡法排序前的顺序为:
\n");
for(i=0;i<10;i++)
printf("%3d",a[i]);
printf("\n");
for(i=0;i<10-1;i++)
{
for(j=0;j<10-1-i;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
printf("排序后的顺序为:
\n");
for(i=0;i<10;i++)
printf("%3d",a[i]);
printf("\n");
}
/*
冒泡法排序前的顺序为:
14358233226126124312
排序后的顺序为:
12121422263335436182
Pressanykeytocontinue*/
模拟二
第一题:
选择题(总题数:
10总分数:
20)
1:
解释程序和编译程序的主要区别之一在于______
A)单用户与多用户的差别B)对用户程序的查错能力
C)机器执行的效率D)是否生成目标程序
2:
已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'十'6'一'3';后,c2中的值为
A)DB)68C)不确定的值D)C
3:
以下程序的运行结果是:
main(){intm=5;if(m++>5)printf("%d",m);elseprintf("%d",m--);}
A)4B)5C)6D)7
4:
为了避免在嵌套的条件语句If一else中产生二义性,C语言规定else子句总是与(?
)配对。
A)缩排位置相同的ifB)其之前最近的if
C)之后最近的ifD)同一行上的if
5:
以下描述正确的是
A)goto语句只能用于退出多层循环
B)switch语句中不能出现continue语句
C)只能用continue语句来终止本次循环
D)在循环中break语句不能独立出现
6:
以下能对二维数组a进行正确初始化的语句是__
A)inta[2][]={{1,0,1},{5,2,3}};
B)inta[][3]={{1,2,3},{4,5,6}};
C)inta[2][4]={{1,2,3},{4,5},{6}};
D)inta[][3]={{1,0,1,0},{},{1,1}};
7:
以下说法不正确的是:
A)在不同函数中可以使用相同名字的变量
B)形参是局部变量
C)在函数内定义的变量只在本函数范围内有效
D)在函数内的复合语句中定义的变量在本函数范围内有效
8:
C程序的基本组成单位是
A)文件B)函数C)程序D)工程
9:
有输入语句:
scanf("a=%d,b=%d,c=%d",&a,&b,&c);为使变量a的值为1,b为3,c为2,从键盘输入数据的正确形式应当是
A)132(回车)B)1,3,2(回车)
C)a=1b=3c=2(回车)D)a=1,b=3,c=2(回车)
10:
设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为
A)intB)floatC)doubleD)不确定
第二题:
C语言改错题(总题数:
4总分数:
20)在下面的程序中存在一处错误,请找出来,将错误的行号(2分)和正确答案(3分)填写在每题后面的空格中
1:
设圆半径r=1.5,圆锥高h=3,求圆周长和圆锥体体积。
用scanf输入数据,输出计算结果时要求有文字说明,取小数点后2位数字。
行号语句
1:
#include
2:
main()
3:
{
4:
floatpi,h,r,l,v;
5:
pi=3.1415926;
6:
printf(“inputr&h:
”);
7:
scanf(“%f%f”,&r,&h);
8:
l=2*pi*r;
9:
v=1/3*pi*r*2*h;
10:
printf(“l=%6.2fv=%6.2f”,l,v);
11:
}
错误行号为:
9。
正确答案为:
v=1/3*pi*r*r*2*h;
2:
行号语句
1:
#include
2:
main()
3:
{
4:
floata=10,b=5,c;
5:
c=(int)a%(int)b/n;
6:
printf("%d",c);
7:
}
错误行号为:
4。
正确答案为:
floata=10,b=5;intc,n;
3:
求解分段函数的值
行号语句
1:
#include
2:
main()
3:
{
4:
intx,y;
5:
scanf(“%d”,&x);
6:
if(x>=0);
7:
if(x==0)
8:
y=0;
9:
elsey=1;
10:
elsey=-1;
11:
printf(“x=%d,y=%d”,x,y);
12:
}
错误行号为:
6。
正确答案为:
if(x>=0)(无“;”)
4:
输入30名学生一门课的成绩,计算平均分,找出最高分和最低分
行号语句
1:
#include
2:
main()
3:
{
4:
intmax,min,x,k;
5:
floatsum,ave;
6:
scanf(“%d”,&x);
7:
max=min=sum=x;
8:
for(k=1,k<30,k++)
9:
{
10:
scanf(“%d”,&x);
11:
sum+=x;
12:
if(max13:
elseif(min>x)min=x;
14:
}
15:
ave=sum/30;
16:
printf(“average=%6.2fmax=%dmin=%d”,ave,max,min);
17:
}
错误行号为:
7。
正确答案为:
max=min=x;sum=0;
第三题:
C语言程序填空题(总题数:
2总分数:
20)根据试题要求将正确答案填到空中(每空5分)
1:
输入一个小写字母,按大写输出。
#include
main()
{
charch;
ch=getchar();
putchar(ch-32);
}
2:
以下程序的功能是求数组num中小于0的数据之和。
请填空。
#include
main()
{
intnum[20]={10,20,1,-20,203,-21,2,-2,-2,11,-21,22,12,-2,-234,-90,22,90,-45,20};
intsum=0,i;
for(i=0;i<=19;i++)
{
if(num[i]<0)
sum=sum+num[i];
}
printf(“sum=%6d”,sum);
}
第四题:
C语言编程题(总题数:
2总分数:
40)
1:
编写程序,用牛顿切线法求方程f(x)=2x+cosx-2.6=0在区间[0,4]上的近似实根r,迭代初值自选,精确到0.0001。
〔提示:
牛顿切线法的计算公式为x=x-f(x)/f’(x)〕。
#include
#include
main()
{
doublex,x0,f,f1;
x=2;
do
{
x0=x;
f=2*x0+cos(x0)-2.6;
f1=2-sin(x0);
x=x0-f/f1;
}while(fabs(x-x0)>=1e-4);
printf("方程的近似根为:
%.4lf.\n",x);
}
/*方程的近似根为:
1.0521.
Pressanykeytocontinue*/
2:
任意使用一种方法将数据14,35,82,33,22,61,26,12,43,12按从小到大的顺序排序,并输出排序前、排序后的数据。
(同模拟一)
模拟三
第一题:
选择题(总题数:
10总分数:
1:
一个C语言程序是由
A)一个主程序和若干子程序组成B)函数组成
C)若干过程组成D)若干子程序组成
2:
假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是:
A)7B)8C)6D)2
3:
能正确表示"当x的取值在[1,10]和[200,210]范围内为真,否则为假"的表达式是
A)(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)
B)(x>=1)||(x<=10)||(x>=200)||(x<=210)
C)(x>=1)&&(x<=10)||(x>=200)&&(x<=210)
D)(x>=1)||(x<=10)&&(x>=200)||(x<=210)
4:
intx=10,y=20,z=30;if(x>y)z=x;x=y;y=z;以上语句执行后,x,y,z的值是:
A)x=10,y=20,z=30B)x=20,y=30,z=30
C)x=20,y=30,z=10D)x=20,y=30,z=20
5:
以下描述正确的是
A)goto语句只能用于退出多层循环
B)switch语句中不能出现continue语句
C)只能用continue语句来终止本次循环
D)在循环中break语句不能独立出现
6:
在c语言中,引用数组元素时,其数组下标的数据类型允许是__
A)变量B)表达式
C)整型常量或整型表达式D)任何类型的表达式
7:
以下说法不正确的是:
A)在不同函数中可以使用相同名字的变量
B)形参是局部变量
C)在函数内定义的变量只在本函数范围内有效
D)在函数内的复合语句中定义的变量在本函数范围内有效
8:
C程序的基本组成单位是
A)文件B)函数C)程序D)工程
9:
putchar函数可以向终端输出一个:
A)整型变量表达式值B)实型变量值
C)字符串D)字符或字符型变量值
10:
设有说明:
charw;intx;f1oaty;double?
z;则表达式w*x+z一y值的数据类型为:
A)floatB)charC)intD)double
第二题:
C语言改错题(总题数:
4总分数:
20)在下面的程序中存在一处错误,请找出来,将错误的行号(2分)和正确答案(3分)填写在每题后面的空格中
1:
行号语句
1:
#include
2:
#defineN10
3:
main()
4:
{
5:
floata=10,b=5,c;
6:
c=(int)a%(int)b/N;
7:
printf("%d",c);
8:
}
错误行号为:
7。
正确答案为:
printf(“%f”,c);
2:
设圆半径r=1.5,圆锥高h=3,求圆周长和圆锥体体积。
用scanf输入数据,输出计算结果时要求有文字说明,取小数点后2位数字。
行号语句
1:
#include
2:
main()
3:
{
4:
floatpi,h,r,l,v;
5:
pi=3.1415926;
6:
printf(“inputr&h:
”);
7:
scanf(“%f%f”,&r,&h);
8:
l=2*pi*r;
9:
v=1/3*pi*r*2*h;
10:
printf(“l=%6.2fv=%6.2f”,l,v);
11:
}
错误行号为:
9。
正确答案为:
v=1/3*pi*r*r*2*h;
3:
把100~200之间的不能被3整除的数输出。
行号语句
1:
#include
2:
main()
3:
{
4:
intn;
5:
for(n=100;n<=200;n++)
6:
{
7:
if(n%3==0)
8:
break;
9:
printf(“%d”,n);
10:
}
11:
printf(“”);
12:
}
错误行号为:
8。
正确答案为:
continue;else
4:
输入30名学生一门课的成绩,计算平均分,找出最高分和最低分
行号语句
1:
#include
2:
main()
3:
{
4:
intmax,min,x,k;
5:
floatsum,ave;
6:
scanf(“%d”,&x);
7:
max=min=sum=x;
8:
for(k=1,k<30,k++)
9:
{
10:
scanf(“%d”,&x);
11:
sum+=x;
12:
if(max13:
elseif(min>x)min=x;
14:
}
15:
ave=sum/30;
16:
printf(“average=%6.2fmax=%dmin=%d”,ave,max,min);
17:
}
错误行号为:
7。
正确答案为:
max=min=x;sum=0;
第三题:
C语言程序填空题(总题数:
2总分数:
20)根据试题要求将正确答案填到空
1:
输入两个正整数m和n,求最大公约数和最小公倍数。
#include
main()
{
intp,r,n,m,temp;
printf(“Pleaseinputtwonumbers:
”);
scanf(“%d%d”,&n,&m);
if(n{
temp=n;
n=m;
m=t