elsex=3;
elsex=6;
elsex=7;
A)1B)2C)3D)6
()4、以下正确的描述是。
A)continue语句的作用是结束整个循环的执行
B)只能在循环体内和switch语句体内使用break语句
C)在循环体内使用break语句或continue语句的作用相同
D)从多层循环嵌套中退出时,只能使用goto语句。
()5、C语言规定,函数返回值的类型是由。
A)在定义该函数时所制定的函数类型所决定
B)return语句中的表达式类型所决定
C)调用该函数时的主调函数类型所决定
D)调用该函数时系统临时决定
()6、以下关于宏替换的叙述不正确的是。
A)宏替换不占用运行时间B)宏名无类型
C)宏替换只是字符替换D)宏名必须用大写字母表示
()7、以下程序的运行结果是。
#defineMIN(x,y)(x)<(y)?
(x):
(y)
main()
{inti=10,j=15,k;
k=10*MIN(i,j);
printf(“%d\n”,k);
}
A)10B)15C)100D)150
()8、____是C语言合法的变量说明。
A.floatm=n=3.45;B.inta1,a2=001;
C.charch={'A','B'};D.inta;b;
()9、以下正确的函数形式是。
A)doublefun(intx,inty){z=x+y ;returnz ;}
B)fun(intx,y){intz;returnz;}
C)fun(x,y){intx,y;doublez;z=x+y;returnz;}
D)doublefun(intx,inty){doublez ;z=x+y ;returnz ;}
()10、在C语言程序中以下正确的描述是。
A)函数的定义可以嵌套,但函数的调用不可以嵌套
B)函数的定义不可以嵌套,但函数的调用可以嵌套
C)函数的定义和函数的调用均不可以嵌套
D)函数的定义和函数的调用均可以嵌套
()11、下面函数调用语句含有实参的个数为。
A)5B)1C)2D)4
()12、以下不正确的说法是。
A)在不同函数中可以使用相同名字的变量B)形式参数是局部变量
C)在函数内定义的变量只在本函数范围内有效D)在函数内的复合语句中定义的变量在本函数范围内有效。
()13、以下程序的正确运行结果是。
#include
voidnum()
{externintx,y ;inta=15,b=10 ;
x=a-b;y=a+b;
}
intx,y;
main()
{inta=7,b=5 ;
x=a+b ;
y=a-b;
num()
printf(“%d,%d\n”),x,y);
}
A)12,2B)不确定C)5,25D)1,12
()14、在一个源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是。
A)externB)registerC)autoD)static
()15、如果这样定义:
inta[3][4];则数组a中各元素。
A)可在程序运行阶段得到初值0;
B)可在程序编译阶段得到初值0;
C)不能得到确定的初值;
D)可在编译阶段或在运行阶段得到初值0;
二、写出下列程序的运行结果。
(在书写结果的表格中,假定每一格代表屏幕上一个字符的位置,请在表格内书写运行结果。
共计10分)
1、(4分)
voidmain()
{floatx=6.7,y=8.5;
inti,j;
i=x+y;
j=(int)x+(int)y;
printf("x=%f,\ny=%f,\ni=%d,\nj=%d\n",x,y,i,j);
}
运行结果为:
2、(6分)
voidmain()
{
inti=0;charst[]="1234567";
while(i<6){
switch(st[i])
{case'1':
putchar('1');
case'2':
putchar('2');break;
case'3':
putchar('3');
case'4':
putchar('4'+1);
default:
printf("%s","56");
}
putchar('\n');i++;
}
}
运行结果为:
三、读程序(共16分)
1、(8分)写出其代表的数学运算的表达式,并给程序加注释。
#include
main()
{intn,i;
longlFactorial=1,lSum=0;
scanf(“%d”,&n);/**/
for(i=1;i<=n;i++)
{
lFactorial=lFactorical*i;
lSum=lSum+lFactorial;
}/**/
printf("sum=%ld\n",lSum);/**/
}
2、(8分)写出其代表的数学运算的表达式,并给程序加注释。
#include
main()
{intn,i;
longlFactorial=1,lSum=0;
scanf(“%d”,&n);/**/
for(i=1;i<=n;i++)
{
lFactorial=lFactorial*i;
if(i%2==1)lSum=lSum+lFactorial;
}/**/
printf("sum=%ld\n",lSum);/**/
}
四、编程题(共30分)
1、(20分)从键盘读入N个整数,存入一个一维数组中,输出这N个数,对这N个数排序后重新输出,请编写程序。
编程要求:
1)输出时,一行输出5个数;2)排序后为升序,即由小到大;3)程序框架采用函数调用的形式;4)N的大小可自由定义。
2、(5分)输入一个长整型数,计算该数的每位数字之和。
3、(5分)输出1到100之内所有能被4整除的数据,并计算这些数据的和。
五、算法题(8分)
1、方程ax2+bx+c=0,考虑以下几种可能:
1)a=0,不是二次方程;
2)b2—4ac=0,有两个相等实根;
3)b2—4ac>0,有两个不等实根;
4)b2—4ac<0,有两个共轭复根;
设计算法求解,用N—S图表示。
六、简答题(6分)
1、第一个人A写了一个文件,取名为a.cpp;第二个人B写了一个文件,保存的物理地址和名字为:
D:
\abc\b.cpp,B中有一个排序函数voidbsort(intarray[],intn){}。
a.cpp执行时,需要调用b.cpp中的排序函数,为了使上面的工作正常执行,请写出a.cpp文件和b.cpp文件的简单框架(排序函数可以用空函数代替)。
07-08第1学期《C语言程序设计基础》试卷B
一、单项选择题。
(每道选择题只有一个正确答案,请将答案填在题前的括号内,填写其它地方无效。
每题2分,共15题,共计30分。
)
()1、在C语言中,____既不是保留字,也不是合法的标识符。
A)a*bB)autoC)sharD)a2b
()2、以下程序的输出结果是。
(注:
□表示空格)
main()
{
printf(“\n*s1=%15s*”,“chinabeijing”);
printf(“\n*s2=%-5s*”,“chi”);
}
A)*s1=chinabeijing□□□*
*s2=**chi*
B)*s1=chinabeijing□□□*
*s2=chi□□*
C)*s1=□□□chinabeijing*
*s2=chi□□*
D)*s1=*□□chinabeijing*
*s2=□□chi*
()3、执行下列程序段:
for(i=0;i<5;i++)
for(j=1;j<6;j++)x+=3;
其中表达式“x+=3”共执行____次。
A)30B)24C)25D)20
()4、判断字符串a和b是否相等,应当使用。
A)if(a==b)
B)if(a=b)
C)if(strcpy(a,b))
D)if(strcmp(a,b))
()5、凡是函数中未指定存储类别的局部变量,其隐含的存储类别
为。
A)静态(static)
B)自动(auto)
C)外部(extern)
D)寄存器(register)
()6、#define能做简单的替代,用宏替代计算多项式4*x*x+3*x+2之值的函数f,正确的宏定义是。
A)#definef(x)4*x*x+3*x+2
B)#definef4*x*x+3*x+2
C)#definef(a)(4*a*a+3*a+2)
D)#define(4*a*a+3*a+2)f(a)
()7、下面程序的输出结果是。
#defineMUL(z)(z)*(z)
main()
{
printf(“%d”,MUL(1+2)+3);
}
A)12B)6C)36D)9
()8、在C语言中,表达式____的值是整数类型。
A.25.0B.34.5+0.5C.12.3*10D.3%10
()9、以下正确的函数声明形式是。
A)doublefun(intx,inty)B)doublefun(intx;inty)
C)doublefun(intx,inty) ;C)doublefun(intx,y)
()10、C语言规定,简单变量作为实参时,它和对应形参之间的数据传递方式是。
A)地址传递B)单向值传递
C)由实参传给形参,再由形参传回给实参D)由用户定义传递方向
()11、下面函数调用语句含有实参的个数为。
A)5B)1C)2D)4
()12、若用数组名作为函数调用的实参,则传递给形参的是。
A)数组的首地址B)数组第一个元素的值
C)数组中全部元素的值D)数组元素的个数
()13、以下不正确的说法是。
A)在不同函数中可以使用相同名字的变量B)形式参数是局部变量
C)在函数内定义的变量只在本函数范围内有效D)在函数内的复合语句中定义的变量在本函数范围内有效。
()14、以下程序的正确运行结果是。
#include
voidnum()
{externintx,y ;inta=15,b=10 ;
x=a-b;y=a+b;
}
intx,y;
main()
{inta=7,b=5 ;
x=a+b ;
y=a-b;
num()
printf(“%d,%d\n”),x,y);
}
A)12,2B)不确定C)5,25D)1,12
()15、C语言规定,函数返回值的类型是由。
A)在定义该函数时所制定的函数类型所决定
B)return语句中的表达式类型所决定
C)调用该函数时的主调函数类型所决定
D)调用该函数时系统临时决定
二、写出下列程序的运行结果。
(在书写结果的表格中,假定每一格代表屏幕上一个字符的位置,请在表格内书写运行结果。
共计10分)
1、(4分)
#include"stdio.h"
intfb(intn)
{inti,t=1;
for(i=1;i<=n;i++)
t=t*i;
returnt;
}
main()
{intj=1;
for(;j<5;j++)
printf("j=%d,fb(%d)=%d\n",j,j,fb(j));
}
2、(6分)
#include
voidmain(void)
{intx,y;
for(x=1;x<15;x+=3)
{if(x>10)continue;
printf("x=%d\n",x);
for(y=1;y<=10;y+=2)
{if(y%3)break;
printf("y=%d\n",y);
}
}
printf("x=%d,y=%d\n",x,y);
}
三、读程序(共26分)
1、(8分)写出其代表的数学运算表达式。
#include
voidmain()
{floatfac(intn);
intn;
floaty;
printf("inputanintegernumber:
");
scanf("%d",&n);
y=fac(n);
printf("%d!
=%10.0f\n",n,y);
}
floatfac(intn)
{
floatf;
if(n<0){printf("n<0,dataerror!
");}
elseif(n==0||n==1)f=1;
elsef=fac(n-1)*n;
return(f);
}
数学表达式:
2、(8分)写出其代表的数学运算表达式。
#include
voidmain()
{longfac(long);
longi,n;
scanf("%ld",&n);
for(i=1;i<=n;i++)
printf("%ld!
=%ld\n",i,fac(i));
}
longfac(longn)
{staticlongi,f=1;
for(i=1;i<=n;i++)
f=f*i;
return(f);
}
数学表达式:
3、(10分)分析程序的数学功能:
#include
main()
{intiN=0;intiNN=0;
intinsum;intiX=0;
intinprod;
for(iNN=10;;iNN++)
{
insum=0;
inprod=1;
iN=iNN;
do
{
iX=iN%10;
insum=insum+iX;
iN=iN/10;
}while(iN!
=0);
iN=iNN;
do
{
iX=iN%10;
inprod=inprod*iX;
iN=iN/10;
}while(iN!
=0);
if(insum==inprod)
{printf(”iNN=%d\n”,iNN);
break;
}
}
}
功能:
四、编程题(共20分)
1、(15分)用二分法求方程x3-3x2+2x-6=0在(-20,20)之间的根,要求绝对误差不超过0.001。
2、(5分)请编写程序:
如果3个班的成绩分别放在3个一维数组中,每个数组中学生数不一样,假设3个一维数组的初始化可以一次给出。
求解每个数组中的平均成绩并打印输出结果,假设主程序已经写出,请写出子程序。
#include
voidmain()
{floataverage(floatarray[],intn)
floatscore_1[5]={98.5,97,91.5,60,55};
floatscore_2[10]={67.5,89.5,99,69.5,77,89.5,76.5,54,60,99.5};
Floatscore_3[6]={58,65,90,89,85,94};
printf(“theaverageofclassAis%6.2f\n”,average(score_1,5));
printf(“theaverageofclassBis%6.2f\n”,average(score_2,10));
printf(“theaverageofclassCis%6.2f\n”,average(score_3,6));
}
floataverage(floatarray[],intn)
{
}
五、算法题(8分)
设计一个算法,求解从1908至2007年之间的闰年,输出闰年(四位数表示:
××××)。
用N—S图表示。
能定为闰年的条件:
1)能被4整除但不能被100整除;或2)能被100整除且能被400整除。
六、简答题(6分)
第一个人A写了一个文件,取名为a.cpp;第二个人B写了一个文件,保存的物理地址和名字为:
D:
\abc\b.cpp,B中有一个排序函数voidbsort(intarray[],intn){}。
a.cpp执行时,需要调用b.cpp中的排序函数,为了使上面的工作正常执行,请写出a.cpp文件和b.cpp文件的简单框架(排序函数可以用空函数代替)。
07-08第1学期《C语言程序设计》试卷A
一、选择题(每小题2分,共计30分)
题号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
得分
答案
1、设有如下程序段:
intx=2002,y=2003;
printf("%d\n",(x,y));
则以下叙述中正确的是()。
A)输出语句中格式说明符的个数少于输出项的个数,不能正确输出
B)运行时产生出错信息C)输出值为2002D)输出值为2003
2、已定义a、b、c为double类型,若要求通过输入分别给a、b、c输入1、2、3,输入形式如下(其中⊔代表空格):
1.0⊔2.0⊔3.0↙
则,下面能正确进行输入的语句是()
A)scanf("%f%f%f",a,b,c);B)scanf("%5.1lf%5.1lf%5.1lf",&a,&b,&c);
C)scanf("%lf%lf%lf",&a,&b,&c);D)scanf("%e%e%e",&a,&b,&c);
3、为了避免嵌套的if-else语句的二义性,C语言规定else总是与()组成配对关系。
A)缩排位置相同的ifB)与其之前未配对的if
C)与其之前未配对的最近的ifD)同一行上的if
4、判断字符串a和b是否相等,应当使用。
A)if(a==b)B)if(a=b)C)if(strcpy(a,b))D)if(strcmp(a,b))
5、以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是。
main()
{int*p,*q,a,b;
p=&a,
printf(“inputa:
”);
scanf(“%d”,*p);
…
}
A)*p表示的是指针变量p的地址
B)*p表示的是变量a的值,而不是变量a的地址
C)*p表示的是指针变量p的值
D)*p只能用来说明p是一个指针变量。
6、下列叙述不正确的是()
A)主函数中定义的变量在整个程序中都是有效的。
B)复合语句中定义的变量只在该复合语句中有效。
C)其他函数中定义的变量在主函数中不能使用。
D)形参是局部变量。
7、说明一