北航C语言期末模拟试题20.docx

上传人:b****7 文档编号:15467868 上传时间:2023-07-04 格式:DOCX 页数:15 大小:19.02KB
下载 相关 举报
北航C语言期末模拟试题20.docx_第1页
第1页 / 共15页
北航C语言期末模拟试题20.docx_第2页
第2页 / 共15页
北航C语言期末模拟试题20.docx_第3页
第3页 / 共15页
北航C语言期末模拟试题20.docx_第4页
第4页 / 共15页
北航C语言期末模拟试题20.docx_第5页
第5页 / 共15页
北航C语言期末模拟试题20.docx_第6页
第6页 / 共15页
北航C语言期末模拟试题20.docx_第7页
第7页 / 共15页
北航C语言期末模拟试题20.docx_第8页
第8页 / 共15页
北航C语言期末模拟试题20.docx_第9页
第9页 / 共15页
北航C语言期末模拟试题20.docx_第10页
第10页 / 共15页
北航C语言期末模拟试题20.docx_第11页
第11页 / 共15页
北航C语言期末模拟试题20.docx_第12页
第12页 / 共15页
北航C语言期末模拟试题20.docx_第13页
第13页 / 共15页
北航C语言期末模拟试题20.docx_第14页
第14页 / 共15页
北航C语言期末模拟试题20.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

北航C语言期末模拟试题20.docx

《北航C语言期末模拟试题20.docx》由会员分享,可在线阅读,更多相关《北航C语言期末模拟试题20.docx(15页珍藏版)》请在冰点文库上搜索。

北航C语言期末模拟试题20.docx

北航C语言期末模拟试题20

单选题

下列关于单目运算符++、--的叙述中正确的是(D)。

A、它们的运算对象可以是int型变量,但不能是double型变量和float型变量

B、它们的运算对象可以是任何变量和常量

C、它们的运算对象可以是char型变量和int型变量,但不能是float型变量

D、它们的运算对象可以是char型变量、int型变量和float型变量

执行下列程序后,其输出结果是(D)。

main()

{inta=9;

a+=a-=a+a;

printf("%d\n",a);

}

A、18

B、-9

C、9

D、-18

打印语句printf("sTUDEND\bT\rS");在屏幕上正确的输出形式是(C).

A、sTUDENDS

B、TUDENTS

C、STUDENT

D、sTUDENTS

已知键盘输入a=4,b=3,下面程序输出的结果是(C).

main()

{inta,b,s;

scanf("%d%d",&a,&b);

s=a;

if(a

s=s*s;

printf("%d\n",s);

}

A、9

B、13

C、16

D、15

若给定条件表达式(m)?

(a++):

(a--),则其中表达式m(B)。

A、和(m==0)等价

B、和(m!

=0)等价

C、和(m==1)等价

D、和(m!

=1)等价

执行语句for(i=1;i++<4;);后变量i的值是(B)。

A、3

B、5

C、4

D、不定

以下描述中正确的是(C)。

A、由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句

B、do-while循环中,根据情况可以省略while

C、在do-while循环体中,必须有能使循环退出的操作。

D、do-while循环由do开始,用while结束,在while(表达式)后面不能写分号

inta[10];合法的数组元素的最小下标值为(D)。

A、10

B、9

C、1

D、0

以下正确的函数定义是(C).

A、doublefun(intx,inty){z=x+y;returnz;}

B、fun(x,y){intx,y;doublez;z=x/y;returnz;}

C、floatf(intx,inty){floatz;z=x/y;returnz;}

D、fun(intx,y){intz;returnz;}

chara1[]="abc",a2[80]="1234";将a1串连接到a2串后面的语句是(A)。

A、strcat(a2,a1);

B、strcat(a1,a2);

C、strcpy(a1,a2);

D、strcpy(a2,a1);

若有chars1[]="abc",s2[20],*t=s2;gets(t);则下列语句中能够实现当字符串s1大于字符串s2时,输出s2的语句是(C)。

A、if(strcmp(s2,s1)>0)puts(s2);

B、if(strcmp(s2,t)>0)puts(s2);

C、if(strcmp(s1,t)>0)puts(s2);

D、if(strcmp(s1,s1)>0)puts(s2);

已知有宏定义#defineSQR(a)2*a*a,则SQR(3+4)的值为(A).

A、22

B、32

C、98

D、18

若有说明:

int*p,m=5,n;以下正确的程序段是(D)。

A、scanf("%d",&n);*p=n;

B、p=&n;scanf("%d",*p)

C、p=&n;scanf("%d",&p);

D、p=&n;scanf("%d",p);

charh,*s=&h;可将字符H通过指针存入变量h中的语句是(A)。

A、*s='H';

B、s='H'

C、*s=H;

D、s=H;

定义结构体的关键字是(A)。

A、struct

B、typedef

C、enum

D、union

判断题

若a=3,b=2,c=1则关系表达式"(a>b)==c"的值为"真"。

T

a=(b=4)+(c=6)是一个合法的赋值表达式。

T

C语言程序中输入一个中间带有空格的字符串时,可以用scanf函数.F

格式字符%e以指数形式输出实数数字部分小数位数7位.F

设g=1,h=2,k=3,则逻辑表达式k+g||!

h&&k-h的值为0。

F

求解表达式max=(a>b)?

a:

b的步骤是,先求解条件表达式(a>b),再根据它的值将a或b赋给max.T

语句if(a>b)printf("%d",a);elseprintf("%d",b);可以用条件表达式a>b?

a:

b取代.F

break语句能够终止当前进行的多层循环.F

for循环的三个表达式都可以省略.T

for语句的循环体至少执行一次.F

字符串"Dalian"在内存中的存储长度是7.F

定义intx[5],n;则x=x+n;或x++;都是正确的.F

若有定义inta[10];则for(i=0;i<=10;i++)a[i]=i;编译时无语法错误.T

数组名作为函数调用时的实参,实际上传递给形参的是数组第一个元素的值.F

当变量的存储类型定义缺省时,系统默认为变量的存储类型为auto类型,分配在动态区.F

两个字符串中的字符个数相同时才能进行字符串大小的比较.F

如果被包含文件中有全局静态变量,它们在用#include命令的源文件中有效.T

假设有inta[10],*p;则p=&a[0]与p=a等价.T

共用体变量中起作用的成员是最后一次存放的成员.T

下面的定义和语句是合法的:

file*fp;fp=fopen("a.txt","r");F

 

填空题

若有定义:

inta=10,b=9,c=8;接着顺序执行下列语句后,变量c中的值是_____.

c=(a-=(b-5));c=(a%11)+(b=3);9

下列语句输出的结果是_____,inta=-1;printf("%x",a);(在vc环境下)ffffffff

设a=3,b=4,c=4,则表达式a+b>c&&b==c&&a||b+c&&b==c的值为_____.1

以下程序段要求从键盘输入字符,当输入字母为'Y'时,执行循环体,则下划线处应填写_____.

ch=getchar();

while(ch____'Y')

ch=getchar();==

staticinta[3][3]={{1,2,3},{4,5,6},{7,8,9}};其中a[1][2]的值为_____.6

静态变量和外部变量的初始化是在_____阶段完成的,而自动变量的赋初值是在_____时进行的.(编译),(运行/函数调用/调用)1752

将函数func的入口XXX赋给指针变量p的语句是_____.p=func;

设有以下结构类型说明和变量定义,则变量b在内存所占字节数是_____。

21

structstud{shortintage;charnum[3];floats[2];doubleave;}b,*p;

程序设计题

/*------------------------------------------------

【程序设计】1685

--------------------------------------------------

功能:

能计算从1开始到n的自然数的和,n由键盘输入,

并在main()函数中输出。

------------------------------------------------*/

#include"stdio.h"

intfun(intn)

{

/*********Begin**********/

intsum=0,i;

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

sum=sum+i;

return(sum);

/**********End**********/

}

main()

{

intm;

voidTestFunc();

printf("Enterm:

");

scanf("%d",&m);

printf("\nTheresultis%d\n",fun(m));

TestFunc();

}

voidTestFunc()

{

FILE*IN,*OUT;

intt;

into;

intc;

IN=fopen("in.dat","r");

if(IN==NULL)

{

printf("ReadFileError");

}

OUT=fopen("out.dat","w");

if(OUT==NULL)

{

printf("WriteFileError");

}

for(c=1;c<=5;c++)

{

fscanf(IN,"%d",&t);

o=fun(t);

fprintf(OUT,"%d\n",o);

}

fclose(IN);

fclose(OUT);

}

 

/*------------------------------------------------

【程序设计】1599

--------------------------------------------------

功能:

调用函数fun判断一个三位数是否"水仙花数"。

在main函数中从键盘输入一个三位数,并输

出判断结果。

请编写fun函数。

说明:

所谓"水仙花数"是指一3位数,其各位数字立方和

等于该数本身。

例如:

153是一个水仙花数,因为153=1+125+27。

------------------------------------------------*/

#include"stdio.h"

intfun(intn)

{

/*********Begin**********/

intbw,sw,gw;

bw=n/100;sw=(n-bw*100)/10;gw=n%10;

if(n==bw*bw*bw+sw*sw*sw+gw*gw*gw)return1;

elsereturn0;

/**********End**********/

}

TestFunc()

{

FILE*IN,*OUT;

intiIN,i;

intiOUT;

IN=fopen("in.dat","r");

if(IN==NULL)

{

printf("PleaseVerifyTheCurrerntDir..ItMayBeChanged");

}

OUT=fopen("out.dat","w");

if(OUT==NULL)

{

printf("PleaseVerifyTheCurrentDir..ItMayBeChanged");

}

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

{

fscanf(IN,"%d",&iIN);

iOUT=fun(iIN);

fprintf(OUT,"%d\n",iOUT);

}

fclose(IN);

fclose(OUT);

}

main()

{

intn,flag;

scanf("%d",&n);

flag=fun(n);

if(flag)

printf("%d是水仙花数\n",n);

else

printf("%d不是水仙花数\n",n);

TestFunc();

}

程序改错题

/*------------------------------------------------------

【程序改错】1246

--------------------------------------------------------

功能:

有一数组内放10个整数,要求找出最小数和它的下标,然后

把它和数组中最前面的元素即第一个数对换位置.

------------------------------------------------------*/

#include"stdio.h"

main()

{

inti,a[10],min,k=0;

printf("\npleaseinputarray10elements\n");

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

/***********ERROR***********/

scanf("%d",a[i]);//scanf("%d",&a[i]);

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

printf("%d",a[i]);

min=a[0];

/***********ERROR***********/

for(i=3;i<10;i++)//for(i=1;i<10;i++)for(i=0;i<10;i++)

//for(i=1;i<=9;i++)for(i=0;i<=9;i++)

/***********ERROR***********/

if(a[i]>min)//if(a[i]

{

min=a[i];

k=i;

}

/***********ERROR***********/

a[k]=a[i];//a[k]=a[0];

a[0]=min;

printf("\naftereschange:

\n");

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

printf("%d",a[i]);

printf("\nk=%d\nmin=%d\n",k,min);

}

 

/*------------------------------------------------------

【程序改错】1906

--------------------------------------------------------

功能:

以下程序把两个数按由大到小的顺序输出来.

------------------------------------------------------*/

#include"stdio.h"

/***********ERROR***********/

voidswap(int*p1,*p2)//swap(int*p1,int*p2)voidswap(int*p1,int*p2)

{

intp;

p=*p1;

*p1=*p2;

*p2=p;

}

main()

{

inta,b,*p,*q;

printf("inputa,b:

");

/***********ERROR***********/

scanf("%d%d",a,b);//scanf("%d%d",&a,&b);

p=&a;

q=&b;

if(a

swap(p,q);

printf("a=%d,b=%d\n",a,b);

/***********ERROR***********/

printf("max=%d,min=%d\n",p,q);//printf("max=%d,min=%d\n",*p,*q);

//printf("max=%d,min=%d\n",a,b);

}

 

程序填空题

/*-------------------------------------------------------

【程序填空】1324

---------------------------------------------------------

题目:

本程序的功能是输入一段数字后,将输出的数字颠倒输出。

请填空。

-------------------------------------------------------*/

#include"stdio.h"

main()

{

intnumb,rdigit;

scanf("%d",&numb);

/***********FILL***********/

while(_____)//numb!

=0numb

{

rdigit=numb%10;

/***********FILL***********/

printf("%d",_____);//rdigit

numb/=10;

}

printf("\n");

}

/*-------------------------------------------------------

【程序填空】1573

---------------------------------------------------------

题目:

本程序用printf函数输出字符串"Iamstudent",完善程序。

-------------------------------------------------------*/

#include"stdio.h"

main()

{

inti;

char*s1="Iamstudent";

/***********FILL***********/

for(i=0;s1[i]!

=____;i++)//'\0'

/***********FILL***********/

printf("_____",s1[i]);//%c

}

 

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

当前位置:首页 > IT计算机 > 计算机软件及应用

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2