C语言程序设计模拟试题A附答案.docx

上传人:b****5 文档编号:7497163 上传时间:2023-01-24 格式:DOCX 页数:15 大小:82.62KB
下载 相关 举报
C语言程序设计模拟试题A附答案.docx_第1页
第1页 / 共15页
C语言程序设计模拟试题A附答案.docx_第2页
第2页 / 共15页
C语言程序设计模拟试题A附答案.docx_第3页
第3页 / 共15页
C语言程序设计模拟试题A附答案.docx_第4页
第4页 / 共15页
C语言程序设计模拟试题A附答案.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

C语言程序设计模拟试题A附答案.docx

《C语言程序设计模拟试题A附答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计模拟试题A附答案.docx(15页珍藏版)》请在冰豆网上搜索。

C语言程序设计模拟试题A附答案.docx

C语言程序设计模拟试题A附答案

盛年不重来,一日难再晨。

及时宜自勉,岁月不待人。

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

单项选择题(每题2分,共20分)

AC语句必须以分号结束

B)任何一个C程序中有且只有一个主函数

C)复合语句在语法上可被看作一条语句

D)C程序中对数据的任何操作都可由运算符实现

2、以下不能定义为用户标识符的是(C)。

LINE1

3、以下能正确定义一维数组的是(C)。

x=9;

while(x>7)

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

strcpy(str1,str2);后,str1[]里是"XYZ",Z后面有字符串结束符

strcpy(str1,str2);执行后,函数返回的是str1,

因为str1[]里是新值"XYZ",而

strlen(strcpy(str1,str2))就是strlen(str1的新值),所以得3。

strlen统计到字符串结束符以前,即,不计入字符串结束符。

6若用数组名作为函数调用的实参,则传递给形参的是(A)。

A)数组的首地址B)数组第一个元素的值

C)数组中全部元素的值D)数组元素的个数

7、在C程序中,若未在函数定义时说明函数类型,则函数默认的类型为(C)。

A)voidB)doubleC)intD)char

8、下面不能正确进行字符串赋值操作的语句是(C)。

A)chars[5]={"ABCD"};B)chars[5];s="ABCD";

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

解析:

这样理论上的没错的把s指针指向字符串可以改变s指针但不能改变其指向的值正确的应该是这样

chars[]="ABCDEF";

或chars[8];strcpy(s,"ABCDEF");

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

A)++pB)++(*p)C)*(++p)D)*(p+=2)

解析:

A是把p得地址后移一个int单位长度,即使p指向数组的第二个元素。

B是取得p当前指向的元素值然后加1,即1+仁2;

C是先移动p,使其指向第二个元素,然后取得当前指针指向的元素值,即3.

D是先使p指向数组的第三个元素,然后去的当前指针指向的元素的值,即5。

10、下面程序的输出结果是(B)。

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);}

main()

{inta=7,b=5;

printf(“%dn”,fun(a,b)/m);}

A)1B)2C)3D)10

二、填空题。

(每空2分,共30分)

1.设有变量说明语句:

intx=1,y=2;

则执行下述printf语句的输出结果是__1.000000_

printf("%f\n",1.0+x/y);

2.执行下述程序:

#include

main()

{

intx,y;

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

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

}

若从键盘输入:

12345671

则程序的输出结果是_17_。

解析:

x,y为int类型,x的长度为2,y的长度为1,即x为12,y为5,故x+y=17

3.以下程序的功能是:

从键盘上输入若干名学生的成绩(百分制,可带小数,以输入负数或0为结束标志),统计并输出最高成绩和最低成绩。

请填空。

#include

main()

{

floatx,amax,amin;

scanf("%f",&x);

amax=x;

amin=x;

while(x>0)

{

if(x>amax)

amax=x;

elseif(x

amin=x;

scanf("%f,&x);

}

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

}

4.设n是整型变量,且已具有某正整数值。

根据下述数学式

1111111

22334nn1

求s的值并输出。

可编写如下之程序段来实现。

请填空。

intk;

doubles,d;

s=0.0;

d=1.0;

k=0;

do

{

s=s+d;

__k++_;

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

}while(k<=n);

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

5.执行下述程序的输出结果是-3-40443。

#include

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");

}

解析:

(i>3)为真时值为1,反之为0,

6.执行下述程序的输出结果是—6___o

#include

main()

{

inta[]={2,4,6,},*ptr=&a[0],x=8,y,z;for(y=0;y<3;y++)

z=(*(pt叶y)

*(pt叶y):

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

}

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

#include

main()

{

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

p=a;

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

}

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

#include

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,int*z)

{

*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实现将数组内所有数组元素的值逆置。

比如,执行本程序将输出:

10987654321

请填空。

#include

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(__t>s)

{

k=*s;

*s=*t;

*t=k;

s++;

t--;

}

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

unionaa

{

floatx;

floaty;

charc⑹;

};

structst

{

unionaav;

floatw[5];

doubleave;

}w;

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

#include

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

#include

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

#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)));

}

三、修改程序(在程序出错的语句下划横线并标号,把修改后的语句写在程序之后的横线上。

每小题5分,共10分)

1•下列给定程序的功能是:

读入一个整数(2<=k<=10000),打印它的所有质因子(即所有为素数的因子)。

例如,若输入整数2310,则应输出2、3、5、7、

11。

#includevconio.h>

#include

lsPrime(intn);

{inti,m;

m=1;

for(i=2;i

if!

(n%i)

{m=0;continue;}

return(m);

}

main()

{intj,k;

printf(“\nPleaseenteranintegernumberbetween2and

10000:

”);scanf(“%d,k);

printf(“\nTheprimefactor(s)of%dis(are):

”,k);

for(j=2;jv=k;j++)

if((!

(k%j))&(IsPrime(j))printf(“n%4d,j);

printf(“n”);

}

2.下列给定程序中,函数fun的功能是:

逐个比较a、b两个字符串对应位置中的字符,把ASCII值大或等于的字符一次存放到c数组中,形成一个新的字符串。

例如,若a中的字符串为aBCDeFgH,t中的字符串为:

ABcd,则c中的字符串为:

aBcdeFgh。

#include

#include

voidfun(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++;

}

}

main()

{chara[10]=“aBCDeFg”,b[10]=“ABcd',c[80]={“”};

fun(a,b,c);

printf(“Thestringa:

”);puts(a);

printf(“Thestringb:

”);puts(b);

printf(“Theresult:

”);puts(c);

}

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

1.#include

voidmain()

{charch;intk=0;

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

printf(“n”);

}

输出结果:

2.#include

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(“n”,k);

}

输出结果:

3.#include

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

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”);

}

输出结果:

五、编程题(本大题20分,第一题8分,第二题12分)

1、计算分段函数的值:

(xvO)

(x>=0)

编程实现

成绩

模拟试卷十一参考答案:

1、

1.000000

2、

17

3、

x>0.0

4、

k=k+1

5、

-3-40443

6、

6

7、

60

&

10

9、

int*z

10、

*(b++)

11、

t>s

12、

42

13、

95,Li

14、

fgetc(fp)!

=EOF

15、

29

三、改错题

1、lsPrime(intn);改为lsPrime(intn)scanf(“%d'改为scanf(“%&k);

if!

(n%i)

{m=0;continue;}改为

{if(!

(n%i))

m=0;continue;}

if((!

(k%j))&(IsPrime(j))改为if((!

(k%j)&(IsPrime(j)))

2、studio.h改为stdio.h

void;fun(char*p,char*q,char*c);改为voidfun(char*p,char*q,char*c)

k=1改为k=0

while(*p!

=*q)改为while((*p)|(*q))

k++后添加一个}

四、阅读程序

1、ACEG

2、8

3、4252716

4、1022571320

五、编程题

1、#includemain()

{

floatx,y;

scanf("%f",&x);

if(x<0){

y=1-x;

}

else{y=2*x*x-2;}printf("%f\n",y);

}2、#include

structstudent

{intnum;

floatscore[3];

}stu[10];

voidchosescore(structstudent*stu,intn){inti=0,j=0,k=0;

floattemp;

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

{temp=stu[0].score[i];

k=stu[O].num;

for(j=1;j

{

if(temp

{temp=stu[j].score[i];k=stu[j].num;}

}

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

}

}

voidmain()

{inti;

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

{printf("putin%dstudentinformtion\n",i+1);scanf("%d%f%f%f",

&stu[i].num,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);}

chosescore(stu,10);

}

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

当前位置:首页 > 法律文书 > 调解书

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

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