C模拟卷子.docx

上传人:b****6 文档编号:3712889 上传时间:2022-11-24 格式:DOCX 页数:44 大小:94.60KB
下载 相关 举报
C模拟卷子.docx_第1页
第1页 / 共44页
C模拟卷子.docx_第2页
第2页 / 共44页
C模拟卷子.docx_第3页
第3页 / 共44页
C模拟卷子.docx_第4页
第4页 / 共44页
C模拟卷子.docx_第5页
第5页 / 共44页
点击查看更多>>
下载资源
资源描述

C模拟卷子.docx

《C模拟卷子.docx》由会员分享,可在线阅读,更多相关《C模拟卷子.docx(44页珍藏版)》请在冰豆网上搜索。

C模拟卷子.docx

C模拟卷子

2007-2008学年第1学期期末考试试卷及参考答案

07-08第1学期《C语言程序设计基础》试卷A

班级姓名学号分数

一、单项选择题。

(每道选择题只有一个正确答案,请将答案填在题前的括号内,填写其它地方无效。

每题2分,共15题,共计30分。

()1、一个C语言程序是由。

A)一个主程序和若干子程序组成B)函数组成

C)若干过程组成D)若干子程序组成

()2、已知各变量的类型说明如下:

intk,a,b;

unsignedlongw=5;

doublex=1.42;

则以下不正确的表达式是。

A)x%(-3)B)w+=-2

C)k=(a=2,b=3,a+b)D)a+=a-=(b=4)*(a=3)

()3、当a=1、b=3、c=5、d=4时,执行以下程序段后x的值是。

if(a

if(c

else

if(a

if(b

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、说明一

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1