C语言试卷及答案

更新时间:2023-11-10 03:27:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一、选择题(每题2分,共40分)

1、 C语言源程序的基本单位是( )

A.程序行 B.语句 C.函数 D.字符 2、 C语言规定:在一个源程序中,main函数的位置( )。 A.必须在最开始 B.必须在系统调用的库函数的后面 C.可以任意 D.必须在最后

3、 在下列字符列中,合法的标识符是( )

A.p12&.a B.stud_100 C. water$12 D.88sum 4、 在C语言中,要求运算的数必须是整数的运算符是( ) A./ B.! C.% D.= =

5、 设有语句 int a =3;则执行了语句a + = a - = a*a;后,变量a的值是( )

A、3 B、0 C、9 D、-12 6、 设a=5,b=6,c=7,d=8,m=2,n=2,执行(m=a > b)&&(n=c>d)后n的值为( )

A、1 B、2 C、3 D、4 7、 执行下列程序时输入:1234567,程序的运行结果是( ) main() {

int x,y;

scanf(“-%*2c”,&x,&y); printf(“%d\\n”,x+y); }

A.17 B.46 C.15 D.9 8、 下述程序的输出结果是( )

#include void main() {int x=-1,y=4; int k;

k=++x<=0&&!(y--<=0);

printf(\

A.0,0,3 B.0,1,2, C.1,0,3, D.1,1,2 9、 为了避免嵌套的if-else语句的二义性,C语言规定else总是与( )组成配对关系。

A.缩排位置相同的if B.在其之前未配对的if

C.在其之前未配对的最近的if D.同一行上的if

10、两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是( ) main() {int x;

scanf(“%d“,&x);

if(x++>5)printf(“%d”,x); else printf(“%d\\n”,x--); }

A.7和5 B.6和3 C.7和4 D.6和4 11、若变量c为char类型,能正确判断出c为小写字母的表达式是( ) A. 'a'<=c<= 'z' B. (c>= 'a')||(c<= 'z') C. ('a'<=c)and ('z'>=c) D. (c>= 'a')&&(c<= 'z') 12、已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是 。 if(x>y) z=x; x=y; y=z;

A.x=10, y=20, z=30 B.x=20, y=30, z=30

第 1 页 共 6 页

C.x=20, y=30, z=10 D.x=20, y=30, z=20 13、以下程序的输出结果为 main( ) {int i,f1,f2; f1=f2=1;

for(i=0;i<4;i++)

{printf(“%d%d”,f1,f2); f1+=f2;

f2+=f1; } }

A.1 2 3 4 5 6 7 8 B.1 1 2 3 5 8 13 21 C.1 1 3 5 7 9 11 13 D.1 3 5 7 9 11 13 15

14、以下程序段( )。

x=-1; do

{ x=x*x;} while(! x);

A.是死循环 B.循环执行二次 C.循环执行一次 D.有语法错误 15、执行语句 for (i=1;i++<4;) ; 后变量 i 的值是( )。

A.3 B.4 C .5 D.不定 16、在定义int a[10];之后,对a的引用正确的是( )。

A.a[10] B.a[6.3] C.a(6) D.a[10-10] 17、在定义int a[5][6];后,第10个元素是( )。 A.a[2][5] B.A[2][4] C.a[1][3] D.a[1][5] 18、定义如下变量的数组: int i;

int x[3][3]={1,2,3,4,5,6,7,8,9};

则下列语句的输出结果是( )

for(i=0;i<3;i++)printf(“%d”,x[i][2-i]);

A.159 B.147 C.357 D.369

19、在C语言中,若对函数类型未另显示说明,则函数的隐含类型是( )类型。

A.void B.double C.int D.char 20、设int * p,i;以下正确的语句是( )。

A.* p=10; B.i=p ; C.i=* p; D.p=2* p+1;

二、填空题(每空1分,共10分)

1、 结构化设计中的三种基本结构是_________、__________、

__ __。 2、 C语言源程序文件的后缀是___________,经过编译后生成文件的后

缀是___________,经过链接后生成文件的后缀是____________。 3、 定义int x,y;执行y=(x=1,++x,x+2);语句后,y的值是___________。 4、 若执行以下程序段:

int a=1,b=2,m=2,n=2;

(m=a>b)&&++n;则n的值是______________。 5、 下述语句执行后,

int k=1; while (k++<10); 变量 k 的值是____________。 6、 定义如下变量的数组:

int i;

int x[3][3]={1,2,3,4,5,6,7,8,9};

for(i=0;i<3;i++)printf(“%d”,x[i][2-i]); 则上列语句的输出结果是____________。

三、补充完整程序(每题5分,共20分)

1、已知能被4整除而不能被100整除的或者能被400整除的年份是润年,

第 2 页 共 6 页

则判断某一年是否是润年的程序如下,请填空: main() {

int year,leap;

scanf(“%d”,&year);

if( ① ) leap=1; else leap=0;

if( ② ) printf(“是润年”); else printf(“不是润年”); }

2、用辗转相减法求两个正整数m和n的最大公约数。main() {int m,n;

________①_______; while(m-n!=0)

if(m>n)____②_____; else _____③_____; printf(\

3、计算1+1/2+1/4+?+1/50的值,并显示出来。 main() { int i=2;

float sum=1.0;

while(i<= ① ) { sum+=1/ ② ; i+=2; }

printf(“sum=%f\\n”,sum); }

4、利用一维数组求显示fibonacci数列的前20项,每行显示5个数,每个数宽度5位,即:0,1,1,2,3,5,8,13??。 main() {int i;

int x[20]=________①__________; for(i=2;i<20;i++)

______②_______ ; for(i=0;i<20;i++)

{if(i%5==0)printf(“\\n”); _______③_________; }

printf(“\\n”);}

四、编程题(7+8+7+8,共30分)

1、 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位

数?都是多少?

2、一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,求1000以内满足条件的数。

第 3 页 共 6 页

3、输出打印九九乘法表。

4、一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

第 4 页 共 6 页

一、选择题(每题2分,共40分)

1、C 2、C 3、B 4、C 5、D 6、B 7、A 8、C 9、C 10、A } }

2、#include \11、D 12、B

13、B 14、C 15、C 16、D 17、C 18、C 19、C 20、B 二、填空题(每空1分,共10分)

1、顺序结构、选择结构、循环结构 2、.c,.obj,.exe 3、4 4、2 5、11 6、357 三、补充完整程序(每题5分,共20分)

1、 ①year%4==0&&year0!=0||year@0==0 ②leap 2、 ①scanf(“%d%d”,&m,&n) ②m=m-n ③n=n-m 3、 ① 50 ②i

4、①{0,1} ②x[i]=c[i-1]+x[i-2] ③printf(“]”,x[i]) 四、编程题(7+8+7+8,共30分)

1、main() {

int i,j,k; printf(\

for(i=1;i<5;i++) /*以下为三重循环*/ for(j=1;j<5;j++) for (k=1;k<5;k++) {

if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/ printf(\

main() {

long int i,x,y,z;

for (i=1;i<100000;i++)

{ x=sqrt(i+100); /*x为加上100后开方后的结果*/ y=sqrt(i+268); /*y为再加上168后开方后的结果*/

if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/ printf(\ } }

3、#include \main() {

int i,j,result; printf(\

for (i=1;i<10;i++) { for(j=1;j<10;j++) { result=i*j;

printf(\表示左对齐,占3位*/ }

printf(\每一行后换行*/ } }

4、main( ) {

long ge,shi,qian,wan,x;

第 5 页 共 6 页

scanf(\wan=x/10000; qian=x000/1000; shi=x0/10; ge=x;

if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/ printf(\else

printf(\}

第 6 页 共 6 页

本文来源:https://www.bwwdw.com/article/wr9v.html

Top