C语言程序设计题库模拟试题10套期末考试卷带答案_第1页
C语言程序设计题库模拟试题10套期末考试卷带答案_第2页
C语言程序设计题库模拟试题10套期末考试卷带答案_第3页
C语言程序设计题库模拟试题10套期末考试卷带答案_第4页
C语言程序设计题库模拟试题10套期末考试卷带答案_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《C语言程序设计》模拟试卷一一、

单项选择题(每题2分,共30分)1、下列有关C语言的叙述中错误的是()。A)C语句必须以分号结束

B)任何一个C程序中有且只有一个主函数C)复合语句在语法上可被看作一条语句

D)C程序中对数据的任何操作都可由运算符实现2、以下不能定义为用户标识符的是()。

A)MAIN

B)_HJ

C)2ong

D)LINE13、下列符号中用来表示C语言中的回车换行的是()。

A)\r

B)\n

C)\b

D)\t4、如有如下定义:int

a=1,则语句printf(“%d,%d”,a,++a);的运行结果为()。

A)1,

1

B)1,

2

C)2,

2

D)2,

15、已知ch为字符型变量,下面表达式中正确的是()。

A)ch=’\xff’

B)ch=’\ff’

C)ch=’ff’

D)ch=”ff”6、以下能正确定义一维数组的是()。

A)int

a[5]={0,1,2,3,4,5};

B)int

a[5]=”012345”;

C)char

a[]=”012345”;

D)char

a[5]={0,1,2,3,4,5};7、以下语句中能正确定义变量并赋初值的是()。

A)char

c=65;

B)float

f=f+1.1;

C)double

x=12.3e3.6;

D)int

m=n=2.0;8、在执行下列程序时输入:1357924,则程序的运行结果为()。

main()

{int

x,y;scanf(“%2d%2d”,&x,&y);printf(“%2d”,x*y);

}A)13

B)1357

C)74

D)7419、执行下列程序段后输出的结果是()。

x=9;

while(x>7)

{

printf(“*”);x--;}A)****

B)***

C)**

D)*10、设charstr1[10]=“ABCDE”,str2[10]=“xyz”;则执行语句

printf(“%d”,strlen(strcpy(str1,str2)));后的输出结果是()A)

9

B)8

C)5

D)311、若用数组名作为函数调用的实参,则传递给形参的是()A)数组的首地址

B)数组第一个元素的值C)数组中全部元素的值

D)数组元素的个数12、在C程序中,若未在函数定义时说明函数类型,则函数默认的类型为(

)A)void

B)double

C)int

D)char13、下面不能正确进行字符串赋值操作的语句是()A)chars[5]={"ABCD"};

B)chars[5];

s="ABCD";C)char*s;s="ABCDEF";

D)char*s="ABCD";14、设有说明ints[5]={1,3,5,7,9};int*p=s;则下列表达式中值为3的是()A)++p

B)++(*p)

C)*(++p)

D)*(p+=2)15、下面程序的输出结果是()int

m=13;int

fun(intx,

int

y){intm=3;

return(x*y-m);}main(){inta=7,b=5;

printf(“%d\n”,fun(a,b)/m);}A)1

B)

2

C)3

D)10

二、

判断(每空1分,共10分)1、C语言有三种结构化程序设计方法,分别为顺序结构、选择结构和循环结构。

)2、C语言规定:标识符应由字母、下划线和数字组成,且可以是上述字符的任意组合,其长度也是任意的。(

3、数组在定义时没有必要指定数组的长度,其长度可以在程序中根据元素个数再决定。(

)4、if语句有多种使用方法,其中if子句和else子句也都可以单独使用。

)5、for语句作为循环控制语句时,从语法上将其括号内各个表达式都可缺省,但表达式内的分号却不可以却省。()

6、字符串是C语言中一种基本数据类型,字符串总是以‘\n’作为结束标志。(

)7、在C语言中,程序的最小编译单位是源文件,最小功能单位是函数。(

)8、在定义指针型变量时指定的基类型为该指针变量所能指向的变量类型。(

)9、结构体与数组一样,属于构造类型数据,且在结构体中的各个成员的类型也可不同。(

)10、在发生函数调用时,主~被调函数中的参数可以是简单变量,也可以是数组名,当采用数组名作为参数时其数据传递方式为单向值传递。(

三、

程序填空(每小题2分,共12分)1、以下程序可求出所有水仙花数(指3位正整数中各位数字立方和等于该数本身,如153=13+53+33),请填空。main()

{int

x,y,z,m;printf(“shuixianhuanshu:\n”);for(m=100;m<1000;m++){x=m/100;

y=

(1)

;

z=m%10;if(

(2)

)printf(“%6d”,m);

}

}2、输入一个字符,如果是大写字母,则把其变成小写字母;如果是小写字母,则变成大写字母;其它字符不变。请补充()内缺省的内容。#include<stdio.h>main()

{

char

ch;

ch=getchar();

if(___(3)____)

{ch=ch+32;

putchar(ch);}

elseif(__(4)___)

{ch=ch-32;

putchar(ch);}else

putchar(ch);}3、以下程序使用递归法求n!,请填空。main(){

int

n,y;

printf(“input

a

integer

number”);scanf(“%d”,&n);y=(5);

printf(“%d!

=%6d”,n,y);

}int

fac(int

n){

int

f;if(n<0){printf(“n<0”dataerror);f=-1;}

elseif(n==0||n==1)

f=1;

else

f=(6)

;

return(f);

}

四、

读程序写出结果(本大题共5道小题,每小题4分,共20分)1、写出下面程序的执行结果

#include<stdio.h>

main()

{int

a,b,x; x=(a=3,b=a--);printf(“x=%d,a=%d,b=%d”,x,a,b);

}2、以下程序的运行结果是

#include<stdio.h>

main()

{int

a=2,b=3,c;c=a;if(a>b)c=1;elseif(a==b)c=0;

else

c=-1;printf(“%d\n”,c);

}3、以下程序的运行结果是

#include<stdio.h>main(){inti,j,k;

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

{for(j=1;j<4-i;j++)

printf("");

for(k=1;k<=2*i-1;k++)

printf("%c",'A'+i-1);

printf("\n");}

}4、以下程序的运行结果是

main(

){inta[5][5],i,j;

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

{a[i][0]=1;a[i][i]=1;}

for(i=2;i<5;i++

)

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

a[i][j]=a[i-1][j-1]+a[i-1][j];

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

{for(j=1;j<=i;j++)

printf(“%5d”,a[i][j]);printf(“\n”);}

}5、以下程序运行后,如果从键盘上输入ABCDE<回车>,则输出结果为

#include<stdio.h>#include<string.h>intfunc(charstr[]){intnum=0;while(*(str+num)!='\0')num++;return(num);}main(){charstr[10],*p=str;gets(p);printf("%d\n",func(p));}

五、

编程题(本大题28分,第一题8分,第二题9分,第三题11分)1、请编程实现下列分段函数的值:

(1-x)1/2

(x≤0)

y=

1-x

(x≤1)

(1-x)2

(x>1)2、百钱百鸡问题:用100元钱买100只鸡,公鸡每只5元,母鸡每只3元,小鸡每3只1元,要求每种鸡至少买1只,试编程求各种鸡各买多少只。3、输入20位学生的成绩,分别用函数实现:(1)将20位学生的成绩按从高到低进行排名。(2)求所有成绩的平均分,并输出所有成绩中比平均分低的分数。参考答案:单项选择题1、D 2、C 3、B 4、B 5、A 6、C 7、A 8、D 9、C 10、D11、A 12、A 13、A 14、B 15、B二、判断题1、T 2、F 3、F 4、F 5、T 6、F 7、T 8、T 9、T 10、F三、程序填空题1、(1)m/10%10 (2)m==x*x*x+y*y*y+z*z*z2、(3)ch>’A’&&ch<’Z’ (4)ch>’a’&&ch<’z’3、(5)fac(n) (6)n*fac(n-1)四、读程序写结果1、x=3,a=2,b=32、-13、ABBBCCCCC4、 1 2 1 3 3 1 4 6 4 15、 5五、编程题1、#include<stdio.h>#include<math.h>voidmain(){ intx; doubley; printf("Pleaseinputxvalue:"); scanf("%d",&x); if(x<=0) y=sqrt(1-x); elseif(x<=1) y=1-x; else y=(1-x)*(1-x); printf("y=%f\n",y);}2、#include<stdio.h>voidmain(){ intx,y,z;/*分别代表所买的公鸡数,母鸡数,小鸡数*/ for(x=1;x<99;x++) for(y=1;y<99;y++) for(z=1;z<99;z++) if((x*5+y*3+z/3==100)&&(z%3==0)&&(x+y+z==100)) printf("公鸡数为%d只,母鸡数为%d只,小鸡数为%d只\n",x,y,z);}3、#include<stdio.h>voidsort(intb[20]){ inti,j; inttemp; for(i=0;i<20;i++) for(j=0;j<20;j++) { if(b[i]<b[j]) {temp=b[i];b[i]=b[j];b[j]=temp;} } for(i=0;i<20;i++) printf("%d",b[i]); printf("\n");}doubleave(intc[20]){ doublesum=0.0; inti; for(i=0;i<20;i++) sum=sum+c[i]; sum=sum/20; returnsum;}voidmain(){ inti; inta[20]; doublepingjun; printf("Pleaseinput20studentsscore!\n"); for(i=0;i<20;i++) { printf("Pleaseinput%dstudentscore:",i+1); scanf("%d",&a[i]); } for(i=0;i<20;i++) printf("%d",a[i]); printf("\n"); sort(a); pingjun=ave(a); printf("平均分为:%f\n",pingjun); printf("比平均分低的有:\n"); for(i=0;i<20;i++) if(a[i]<pingjun) printf("%d",a[i]); printf("\n");}《C语言程序设计》模拟试卷二

一、填空题。(每空2分,共30分)1.设有变量说明语句

intx=1,y=2;则执行下述printf语句的输出结果是______

_____。

printf("%f\n",1.0+x/y);2.执行下述程序

#include<stdio.h>

main()

{

intx,y;

scanf("%2d%*2s%1d",&x,&y);

printf("%d\n",x+y);

}若从键盘输入

12345671则程序的输出结果是________。3.以下程序的功能是:从键盘上输入若干名学生的成绩(百分制,可带小数,以输入负数或0为结束标志),统计并输出最高成绩和最低成绩。请填空。

#include<stdio.h>

main()

{

floatx,amax,amin;

scanf("%f",&x);

amax=x;

amin=x;

while()

{

if(x>amax)

amax=x;

elseif(x<amin)

amin=x;

scanf("%f',&x);

}

printf("\namax=%f\namin=%f\n",amax,amin);

}4.设n是整型变量,且已具有某正整数值。根据下述数学式求s的值并输出。可编写如下之程序段实现之。请填空。

intk;

doubles,d;

s=0.0;

d=1.0;

K=0;

do

{

s=s+d;

___

_________;

d=1.0/(k*(k+1));

}while(k<=n);

printf("%f\n",s);5.执行下述程序的输出结果是____

____。

#inclued<stdio.h>

main()

{

inta[6],i;

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

{

a[i]=9*(i-2+4*(i>3))%5;

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

}

printf("\n");

}6.执行下述程序时的输出结果是_________

________。

#include<stdio.h>

main()

{

inta[]={2,4,6,},*ptr=&a[0],x=8,y,z;

for(y=0;y<3;y++)

z=(*(ptr+y)<x)?*(ptr+y):x;

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

}7.执行下述程序的输出结果是_____

_______。

#include<stdio.h>

main()

{

inta[][2]={10,20,30,40,50,60},(*p)[2];

p=a;

printf("%d\n",*(*(p+2)+1));

}8.执行以下程序的输出结果是___

______。

#include<stdio.h>

main()

{

ints,i,sum();

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

s=sum(i);

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

}

sum(intk)

{

intx=0;

return(x+=k);

}9.下述函数定义用来求出两个整数之和,并通过函数的模拟传地址调用,传回两整数相加之和值,请填空。

voidadd(intx,inty,____

___)

{

*z=x+y;

}10.函数func的功能是将整型变量x的值转换成二进制数,并将该二进制数的每一位存入由整型指针b所指向的一维数组a,最低位存放于a[0]中,次低位存放于a[1]中,依此类推。请填空。

voidfunc(intx,int*b)

{

intr;

do

{

r=x%2;

_____________=r;

x/=2;

}while(x);

}11.以下程序中函数invert实现将数组内所有数组元素的值逆置。比如,执行本程序将输出

10

9

8

7

6

5

4

3

2

1请填空。

#include<stdio.h>

main()

{

inta[10]={1,2,3,4,5,6,7,8,9,10},i,n=10;

invert(a,n-1);

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

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

printf("\n");

}

invert(int*s,intnum)

{

int*t,k;

t=s+num;

while(____

________)

{

k=*s;

*s=*t;

*t=k;

s++;

t--;

}

}12.若有以下定义和说明,则结构体变量w在内存中所占的字节数是_____unionaa

{

floatx;

floaty;

charc[6];

};

structst

{

unionaav;

floatw[5];

doubleave;

}w;

13.执行下述程序的输出结果是______

_______。

#include<stdio.h>

structstr

{

floatx;

char*y;

}*m;

structstrgroup[3]={

95.0,"Li",

82.5,"Wang",

73.5,"Sun"

};

main()

{

m=group;

printf("%.lf,%s\n",m->x,m->y);

}14.下面的程序用来统计某文件文件中字符的个数。请填空。

#include<stdio.h>

#include<stdlib.h>

main()

{

FILE*fp;

longnum=0;

if((fp=fopen("fnam.dat","r"))==NULL)

{

printf("Can'topenthisfile!\n");

exit(0);

}

while(____

_____)

{

fgetc(fp);

num++;

}

printf("num=%d\n",num);

fclose(fp);

}15.执行下述程序后,输出结果为____________。

#include<stdio.h>

#defineFUN1(a,b)a+b

#defineFUN2(a,b)a-b

#defineCAL(a,b)a*b+a+3

main()

{

printf("%d\n",CAL(FUN1(3,5),FUN2(4,5)));

}

二、单项选择题。(每题1分,共20分)1.以下不是c语言规定保留字的是(

)。(A)float

(B)integer

(C)signed

(D)unsigned2.设int型变量x有初始值3,则表达式x++*5/10的值是(

)(A)0

(B)1

(C)2

(D)33.下述程序执行后的输出结果是(

)

#include<stdio.h>

main()

{

intx='f';

printf("%c\n",'a'+(x-'a'+1));

}(A)g

(B)h

(C)i

(D)j4.设有程序#include<stdio.h>main(){

inti,j;

for(i=0,j=1;i<=j+1;i+=2,j--)

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

}在运行上述程序时,for语句中循环体的执行次数是(

)(A)3

(B)2

(C)1

(D)05.在下述选项时,没有构成死循环的程序是(

)

(A)inti=100

while(1)

{

i=i%100+1;

if(i>100)

break;

}(B)for(;;);(C)intk=1000;

do

{

++k;

}while(k>=10000);(D)ints=36;

while(s);--s;6.假定a和b为int型变量,则执行下述语句组后,b的值为(

)。

a=1;

b=10;

do

{

b-=a;

a++;

}while(b--<0);

(A)9

(B)-2

(C)-1

(D)87.设有变量说明语句

int

a=1,b=0;则执行以下程序段的输出结果为(

)。

switch

(a)

{

case1:

switch

(b)

{

case0:printf("**0**");break;

case1:printf("**1**");break;

}

case2:printf("**2**");break;

}

printf("\n");

(A)**0**

(B)**0****2**

(C)**0****1****2**

(D)有语法错误8.以下合法的数组说明是(

)。

(A)chara[7]="string";

(B)inta[5]={0,1,2,3,4,5};

(C)chara="string";

(D)INTa[]={0,12,3,4,5};9.下述程序代码中有语法错误的行是(

)。

inti,ia[10],ib[10];

/*第1行*/

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

/*第2行*/

ia[i]=0;

/*第3行*/

ib=ia;

/第4行*/

(A)第1行

(B)第2行

(C)第3行

(D)第4行10.若已定义

inta[9],*p=a;并在以后的语句中未改变p的值,则不能表示a[1]地址的表达式是(

)。(A)p+1

(B)a+1

(C)a++

(D)++p11.若有下述说明和语句

int**pp,*p,a=10,b=20;

pp=&p;

p=&a;

p=&b;

printf("%d,%d\n",*p,**pp);则输出结果是(

)。

(A)10,10

(B)10,20

(C)20,10

(D)20,2012.执行下述程序后的输出结果是(

)。

#include<stdio.h>

func(inta)

{

intb=0;

staticintc=3;

a=c++,b++;

return(a);

}

main()

{

inta=2,i,k;

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

k=func(a++);

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

}

(A)3

(B)0

(C)5

(D)413.执行下述程序的输出结果是(

)。

#include<stdio.h>

main()

{

intaa[3][3]={{2},{4},{6}};

inti,*p=&aa[0][0];

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

{

if(i==0)

aa[i][i+1]=*p+1;

else

++p;

printf("%d",*p);

}

printf("\n");

}

(A)23

(B)26

(C)33

(D)3614.读下面的程序,正确的输出结果是(

)。#include<stdio.h>staticinta=50;voidf1(inta){printf("%d,",a+=10);}voidf2(void){printf("%d,",a+=3);}voidmain() {inta=10;f1(a);f2();printf("%d\n",a);}

(A)60,63,60

(B)20,23,23

(C)20,13,10

(D)20,53,1015.执行下述程序的输出结果是(

)。

#include<stdio.h>

intpower(intx,inty);

main()

{

floata=2.6,b=3.4;

intp;

p=power((int)a,(int)b);

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

}

intpower(intx,inty)

{

inti,p=1;

for(i=y;i>0;i--)

p=p*x;

return(p);

}

(A)8

(B)9

(C)27

(D)8116.已知函数scopy的定义如下

voidscopy(char*s,char*t)

{

while(*s++=*t++);

}

则该函数的功能是(

)。

(A)串复制

(B)求串长度

(C)串比较

(D)串反向17.执行下述程序的输出是(

)。

#include<stdio.h>voidmain(){structcomplex{intre;intim;};structcomplexcp[3]={2,5,4,7};cp[2].re=cp[0].re+cp[1].re;cp[2].im=cp[0].im+cp[1].im;printf("%d%d\n",cp[2].re,cp[2].im);}(A)711

(B)612

(C)99

(D)12618.执行下述程序的输出结果是(

)。

#include<stdio.h>

main()

{

union

{

intk;

chari[2];

}

*s,a;

s=&a;

s->i[0]=0x39;

s->i[1]=0x38;

printf("%x\n",s->k);

}

(A)cccc3839

(B)3938

(C)380039

(D)39003819.有以下程序,则结果为。structabc{inta,b,c;};main(){

structabcs[2]={{1,2,3},{4,5,6}};intt;

t=s[0].a+s[1].b;printf(“%d\n”,t);}A)5B)6C)7D)820.以下程序for语句循环体中printf语句执行次数是(

)。

#include<stdio.h>

#defineN2

#defineMN+1

#defineNUM(M+1)*M/2

main()

{

inti;

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

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

}

(A)5

(B)6

(C)8

(D)9三、程序分析题(每题5分,共30分)1.阅读程序,写出执行该程序的输出结果。

#include<stdio.h>

main()

{

chars[]="pressakey.";

inti;

charch;

for(i=0;(ch=s[i])!='\0';i++)

{

switch(ch)

{

case'p':

case'a':

case'k':putchar(ch-32);continue;

case'

':putchar('*');break;

case'.':putchar('!');break;

default:putchar(ch);continue;

}

putchar('\n');

}

}

2.阅读程序,写出执行该程序的输出结果。

#include<stdio.h>

#defineN5

main()

{

inti,j;

inta[N][N];

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

for(j=0;j<N;j++)

if(i>=j)

a[i][j]=1;

else

a[i][j]=a[i][j-1]+1;

for(i=0;j<N;j++)

{

for(j=0;j<N;j++)

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

printf("\n");

}

}

3.阅读程序,写出执行该程序的输出结果

#include<stdio.h>

main()

{

intm[5],n[5],*px,*py,k;

px=m;py=n;

for(k=1;k<4;k++,px++,py++)

{

*px=k;*py=2*k;

printf("%d,%d",m[k-1],n[k-1]);

}

printf("\n");

px=&m[1];

py=&n[1];

for(k=1;k<3;k++)

{

*px+=k;*py*=k;

printf("%d,%d,",*px++,*py++);

}

printf("\n");

}

4.阅读程序,写出执行该程序的输出结果。#include<stdio.h>voidf(inty){staticinti=5;intj=3;j++;printf("%d%d%d=%d\n",i,j,y,i+j+y);i*=2; }voidmain(){intx;for(x=1;x<+3;++x)f(x);}

5.阅读下列程序,写出程序运行的输出结果。#include<stdio.h>voidmain(){chara[20]={"1A2B3C"},b[20],*p1,*p2;p1=a,p2=b; do{if(!(*p1>='\0'&&*p1<='9')) {*p2=*p1;p2++;*p2=*p1;}else*p2=*p1;p1++,p2++;}while(*p1='\0');*p2=*p1;printf("%s\n",b);}6.阅读下列程序,写出程序的主要功能。

main(){intn,I;printf("\npleaseinputanumber:\n");scanf("%d",&n);printf("%d=",n);for(i=2,i<=n,i){while(n!=i){if(n%i==0){printf("%d*",i);n=n/i;}elsebreak;}}printf("%d",n);}四、程序设计题(每小题10分,共20分)1、编写.程序求1、2、3、4个数字能组成多少个互不相同且无重复数字的三位数?都是多少?。2、有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

试卷二参考答案一、填空题。1. 1.0000002. 173. x!=0&&x<100&&x>04. k++5. -3-404436. 67. 608. s=109. int*z10. *(b++)11. t>s12. 1813. 95,Li14. !feof(fp)15. 29二、单项选择题。1、 B 2、 B 3、 A 4、 C 5、 C 6、 D7、 B 8、 A 9、 D 10、C 11、D 12、D13、A 14、D 15、A 16、A 17、B 18、A19、B 20、C三、程序分析题1、PressAKey!2、无任何输出结果。3、 1,22,43,6 3,4,5,12,4、 541=10 1042=165、16、求一个正整数分解质因数。四、程序设计题1、#include"stdio.h"main(){inti,j,k;printf("\n");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("%d,%d,%d\n",i,j,k);}}2、#include"stdio.h"main(){longf1,f2;intI;f1=f2=1;for(i=1;i<=20;i++){printf("%ld%ld",f1,f2);if(i%2==0)printf("\n");/*控制输出,每行四个*/f1=f1+f2;/*前两个月加起来赋值给第三个月*/f2=f1+f2;/*前两个月加起来赋值给第三个月*/}}《C语言程序设计》模拟试卷三

一、填空题。(每空2分,共16分)1.在内存中,短整型变量占

字节,单精度实型变量占

字节,字符型变量占

字节。2.一个C语言文件是由若干个

组成。3.设有以下变量定义,并已赋确定的值charw;intx;floaty;doublez;则表达式:w*x+z-y所求得的数据类型为

。4.若x为int类型,请以最简单的形式写出与逻辑表达式!x等价的C语言关系表达式

。5.若有如下图所示五个连续的int类型的存储单元并赋值如下图,a[0]的地址小于a[4]的地址。p和s是基类型为int的指针变量。请对以下问题进行填空。a[0]a[1]a[2]a[3]a[4]2233445566(1)若p已指向存储单元a[1]。通过指针p,给s赋值,使s指向最后一个存储单元a[4]的语句是

。(2)若指针s指向存储单元a[2],p指向存储单元a[0],表达式s-p的值是

。二、单项选择题。(每题2分,共40分)1.设有intx=11;则表达式(x++*1/3)的值是()。A)3B)4C)11D)122.下列程序的输出结果是()。A)3

B)3.2

C)0

D)3.07main(){doubled=3.2;intx,y;x=1.2;y=(x+3.8)/5.0;printf(“%d\n”,d*y);}3.下列程序执行后的输出结果是(小数点后只写一位)()。A)6

6

6.0

6.0B)6

6

6.7

6.7C)6

6

6.0

6.7D)6

6

6.7

6.0main(){doubled;floatf;longl;inti;i=f=l=d=20/3;printf("%d%ld%f%f\n",i,l,f,d);scanf("%d",&d);}4.下列变量定义中合法的是()。A)short_a=1-.le-1;

B)doubleb=1+5e2.5;C)longdo=0xfdaL;D)float2_and=1-e-3;5.设intx=1,y=1;表达式(!x||y--)的值是()。A)0B)1C)2D)-16.与y=(x>0?1:x<0?-1:0);的功能相同的if语句是()。A)if(x>0)y=1;

B)if(x)elseif(x<0)y=-1;

if(x>0)y=1;elsey=0;elseif(x<0)y=-1;

elsey=0;C)y=-1

D)

y=0;if(x)if(x>=0)if(x>0)y=1;

if(x>0)y=1;elseif(x==0)y=0;elsey=-1;

elsey=-1;7.以下循环体的执行次数是()。A)3B)2C)1D)0main(){inti,j;for(i=0,j=1;i<=j+1;i+=2,j--)printf(“%d\n”,i);}8.以下叙述正确的是()。A)do-while语句构成的循环不能用其它语句构成的循环来代替。B)do-while语句构成的循环只能用break语句退出。C)用do-while语句构成的循环,在while后的表达式为非零时结束循环。D)用do-while语句构成的循环,在while后的表达式为零时结束循环。9.下列程序执行后的输出结果是()。A)GB)HC)ID)Jmain(){intx=’f’;printf(“%c\n”,’A’+(x-‘a’+1));}10.执行下面的程序段后,变量k中的值为()。A)不定值B)33C)30D)10intk=3,s[2];s[0]=k;k=s[1]*10;11.若已定义:inta[]={0,1,2,3,4,5,6,7,8,9],*p=a,i;其中0≤i≤9,则对a数组元素不正确的引用是()。A)a[p-a]B)*(&a[i])C)p[i]D)a[10]12.下列程序执行后的输出结果是()。A)6B)7C)8D)9voidfunc(int*a,intb[]){b[0]=*a+6;}main(){inta,b[5];a=0;b[0]=3;func(&a,b);printf(“%d\n”,b[0]);}13.下列程序的运行结果是()。A)a=%2,b=%5

B)a=2,b=5C)a=d,b=dD)a=%d,b=%d#include<stdio.h>main(){inta=2,c=5;printf(“a=%d,b=%d\n”,a,c);}14.下列程序执行后的输出结果是()。A)3B)6C)9D)随机数main(){

inta[3][3],*p,i;p=&a[0][0];for(i=0;i<9;i++)p[i]=i+1;printf(“%d\n”,a[1][2]);}15.设有数组定义:chararray[]=“China”;则数组array所占的空间为()。A)4个字节B)5个字节C)6个字节D)7个字节16.下列程序的输出结果是()。A)4B)6C)8D)10intb=2;intfunc(int*a){b+=*a;return(b);}main(){inta=2,res=2;res+=func(&a);printf(“%d\n”,res);}17.有以下定义和语句inta[3][2]={1,2,3,4,5,6,},*p[3];p[0]=a[1];则*(p[0]+1)所代表的数组元素是()A)a[0][1]B)a[1][0]C)a[1][1]D)a[1][2]18.下列程序的输出结果是()。A)5B)6C)7D)8structabc{inta,b,c;};main(){

structabcs[2]={{1,2,3},{4,5,6}};intt;

t=s[0].a+s[1].b;printf(“%d\n”,t);}19.若有以下调用语句,则不正确的fun函数的首部是()。A)voidfun(intm,intx[])B)voidfun(ints,inth[41])C)voidfun(intp,int*s)

D)voidfun(intn,inta)main(){…inta[50],n;…fun(n,&a[9]);…}20.在C程序中,可把整型数以二进制形式存放到文件中的函数是()。A)fprintf函数B)fread函数

C)fwrite函数

D)fputc函数三、修改下列程序:(在程序出错的语句下划横线并标号,把修改后的语句写在程序下面的横线上。)(每小题5分,共10分)1.下列给定程序的功能是:读入一个整数(2<=k<=10000),打印它的所有质因子(即所有为素数的因子)。例如,若输入整数2310,则应输出2、3、5、7、11。#include<conio.h>#include<stdio.h>*******************************IsPrime(intn);{inti,m;m=1;for(i=2;i<n;i++)******************************if!(n%i){m=0;contitue;}return(m);}main(){intj,k;clrscr();printf(“nPleaseenteranintegernumberbetween2and10000:”);scanf(“%d”,k);printf(“nnTheprimefactor(s)of%dis(are):”,k);for(j=2;j<=k;j++)if((!(k%j))&(IsPrime(j))) printf("%4d",j);getchar();})

2.下列给定程序中,函数fun的功能是:逐个比较a、b两个字符串对应位置中的字符,把ASCII值大或等于的字符一次存放到c数组中,形成一个新的字符串。例如,若a中的字符串为aBCDeFgH,b中的字符串为:ABcd,则c中的字符串为:aBcdeFgh。#include<stdio.h>#include<string.h>***************************************void;fun(char*p,char*q,char*c);***************************************{intk=1;**************************************while(*p!=*q){if(*p<*q)c[k]=*q;elsec[k]=*p;if(*p)p++;if(*q)q++;k++;}K=’\0’;}***************************************

main(){chara[10]=“aBCDeFgh”,b[10]=“ABcd”,c[80]={“”};fun(a,b,c);printf(“Thestringa:”);puts(a);printf(“Thestringb:”);puts(b);printf(“Theresult:”);puts(c);}

四、阅读下列程序,在程序后面的横线上,写出该程序的功能或给出运行结果。(每小题4分,共16分)1.

#include<stdio.h>

voidmain()

{

charch;intk=0;

for(ch=’A’;ch<’H’;ch++,k++)if(k%2==0)printf(“%c”,ch);

printf(“\n”);

}

输出结果:

2.

#include<stdio.h>

voidmain()

{

intk=0;

charc=’A’;

do{switch(c++){case‘A’:k++;break;

case‘B’:k--;

case‘C’:k+=2;break;

case‘D’:k=k%2;break;

case‘E’:k=k*10;break;

default:k=k/3;

}

k++;

}while(c<’G’);

printf(“k=%d\n”,k);}

输出结果:

3.

#include<stdio.h>

voidmain()

{

inta[6]={12,4,17,25,27,16},b[6]={27,13,4,25,23,16},i,j;

for(i=0;i<6;i++){

for(j=0;j<6;j++)if(a[i]==b[j])break;

if(j<6)printf(“%d”,a[i]);

}

printf(“\n”);

}

输出结果:

4.

#include<stdio.h>

voidmain()

{

inta[8]={1,0,1,0,1,0,1,0},i;

for(i=2;i<8;i++)a[i]+=a[i-1]+a[i-2];

for(i=0;i<8;i++)printf(“%d”,a[i]);

printf(“\n”);

}

输出结果:

五、按给出的程序功能,在空格处,填写正确的程序语句,使程序完整。(每空1分,共6分)1.将两个数从小到达输出。

main(){float

a,b,

;scanf(

,&a,&b);if(a>b)

{t=a;

;

b=t;

}printf(“Thenumsmalltobig:%d%d”,a,b);

}2.输出购买总价值和数量。#define

30

main()

{

;

num=10;

total=num*PRICE;printf(“total=%d,num=%d\n”,

);}六、按要求编写下列程序。(每题6分,共12分)1.输出下图。

*

*

*

*

*

*

*

*

*

*

2.编程判断输入的正整数是否既是5又是7的整数倍数。若是,则输出yes;否则输出no。《C语言程序设计》模拟试卷三答案一、填空题。(每空2分,共16分)12

4

12.

函数

3.double

4.

x==0||x==1

5.

s=p+3

2

二、单项选择题。(每题2分,共40分)1.A2.C3.A4.A5.B6.A7.C8.D9.A10.A11.D12.A13.B14.B15.C16.B17.C18.B19.D20.C三、修改下列程序:(在程序出错的语句下划横线并标号,把修改后的语句写在程序下面的横线上。)(每小题5分,共10分)1

IsPrime(intn)

if(!(n%i))

scanf(“%d”,&k);

2.

voidfun(char*p,char*q,char*c)

k=0;

while(*p||*q)

四、阅读下列程序,在程序后面的横线上,写出该程序的功能或给出运行结果。(每小题4分,共16分)1.

ACEG

2.

k=8

3.

4252716

4.1022571320

五、按给出的程序功能,在空格处,填写正确的程序语句,使程序完整。(每空1分,共6分)1.

t

“a=%f,b=%f”

a=b

2.

PRICE

intnum

,total

total,num

六、按要求编写下列程序。(每题6分,共12分)1.main(){ inti,j; for(i=0;i<=3;i++) { for(j=0;j<=i;j++) printf("*"); printf("\n"); } getchar();}2.main(){ intn; printf("请输入整数n:"); scanf("%d",&n);if(!(n%5)||!(n%7)) printf("Yes!"); else printf("No!");}《C语言程序设计》模拟试卷四一、

单项选择题(每题2分,共30分)1、下列对C语言特点的描述中,错误的是

。A)C语言不是结构化程序设计语言

B)C语言编程简洁明了C)C语言功能较强

D)C语言移植性好2、设变量a是整型,b是实型,c是双精度型,则表达式2+‘a’+b*c值的数据类型

。A)int

B)float

C)double

D)不确定3、在a=2,b=0,c;则执行c=b||a--;语句后,a和c的结果是

。A)0,1

B)1,0

C)1,1

D)2,04、在scanf()函数的给是说明符中,长整型数的输入格式说明符是

。A)%d

B)%ld

C)%lf

D)%x5、以下程序的执行结果是

main()

{intn=1;printf(“%d,%d,%d”,n,++n,n--);}A)1,1,1

B)1,2,1

C)0,1,1

D)1,2,26、判断char型变量ch是否为大写字母的正确表达式是

。A)‘A’<=ch<=‘Z’

B)(ch>=‘A’)&(ch<=‘Z’)

C)(‘A’<=ch)AND(‘Z’>=ch)D)(ch>=‘A’)&&(ch<=‘Z’)7、能够完成如下函数计算的程序段是

-1

x<0

y=

0

x=0

1

x>0

A)y=-1;

B)if(x>=0)

if(x!=0)

if(x>0)y=1;

if(x>0)y=1;

elsey=0;

else

y=0;

else

y=-1;C)y=0;

D)y=-1;

if(x>=0)

if(x>0)y=1;

if(x>0)y=1;

elsey=0;

elsey=-18、下列循环语句中,执行循环体的次数是

inti,j;

while(10)printf(“ABC”);A)10次

B)0次

C)1次

D)无限次9、若i、j已定义为int类型,则以下程序段中的内循环体的执行次数是

for(i=4;i;i--)

for(j=0;j<5;j++){……}A)10

B)15

C)20

D)2510、数组赋初值时的数据项的个数与数组元素的个数的下列关系中,错误的是

。A)大于

B)小于

C)等于

D)小于等于11、下列数组初始化的定义中,错误的是

。A)inta[5]={a};

B)chars[5]=“a123b”;

C)intn[]={6,5,4,3,2,1};

D)intb[3]={1,2,3};12、已知:staticinta[][3]={{5},{3},{13}};数值为0的元素是

。A)a[0][0]

B)a[0][2]

C)a[1][0]

D)a[2][0]13、关于下列函数定义的描述中,错误的是

。A)定义函数时必须指出函数名和函数的类型B)定义函数时可以省略函数的类型C)函数可以嵌套定义D)函数不可以嵌套定义14、下面程序的输出结果是

voidprtv(intx)

{printf(“%d\n”,++x);}

main()

{intt=10;prtv(t);

}A)8

B)9

C)10

D)1115、下面程序的输出结果是

。main()

{inta[]={1,2,3},s,b,*p;

s=1;

p=a;

for(b=0;b<3;b++)

s*=*(p+b);

printf(“s=%d\n”,s);}A)s=1

B)s=2

C)s=3

D)s=6二、

判断(每空1分,共10分)1、C语言有三种结构化程序设计方法,分别为顺序结构、选择结构和循环结构。(

)2、C语言规定:标识符应由字母、下划线和数字组成,且可以是上述字符的任意组合,其长度也是任意的。(

3、数组在定义时没有必要指定数组的长度,其长度可以在程序中根据元素个数再决定。(

)4、if语句有多种使用方法,其中if子句和else子句也都可以单独使用。

)5、for语句作为循环控制语句时,从语法上将其括号内各个表达式都可缺省,但表达式内的分号却不可以却省。()

6、字符串是C语言中一种基本数据类型,字符串总是以‘\n’作为结束标志。(

)7、在C语言中,程序的最小编译单位是源文件,最小功能单位是函数。(

)8、在定义指针型变量时指定的基类型为该指针变量所能指向的变量类型。(

)9、结构体与数组一样,属于构造类型数据,且在结构体中的各个成员的类型也可不同。(

)10、在发生函数调用时,主~被调函数中的参数可以是简单变量,也可以是数组名,当采用数组名作为参数时其数据传递方式为单向值传递。(

三、

程序填空(每小题2分,共12分)1、求一个3位数各个位上值的和。(如123为1+2+3=6)#include<s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论