上海市C语言二级考试模拟题.docx

上传人:b****5 文档编号:3171706 上传时间:2022-11-18 格式:DOCX 页数:20 大小:36.19KB
下载 相关 举报
上海市C语言二级考试模拟题.docx_第1页
第1页 / 共20页
上海市C语言二级考试模拟题.docx_第2页
第2页 / 共20页
上海市C语言二级考试模拟题.docx_第3页
第3页 / 共20页
上海市C语言二级考试模拟题.docx_第4页
第4页 / 共20页
上海市C语言二级考试模拟题.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

上海市C语言二级考试模拟题.docx

《上海市C语言二级考试模拟题.docx》由会员分享,可在线阅读,更多相关《上海市C语言二级考试模拟题.docx(20页珍藏版)》请在冰豆网上搜索。

上海市C语言二级考试模拟题.docx

上海市C语言二级考试模拟题

1,表达式sizeof(“C2009”)的值是_________

2,在C语言中,标识符只能由字母、数字和下划线字符组成,并且第一个字符不能是________字符。

3,定义intb=7;floata=5.2,c=6.9;

则表达式b*(int)(a+c)/2的值为_____________

4,设x、y均为整型变量,完成以下语句,以实现不借助任何其它变量将x、y的值进行交换:

x=x+y;y=x-______;x=x-______;

5,设有如下定义,并且结构体数组student中的元素都已有值,若要将这些元素写到fp指向的文件中,请将函数调用语句fwrite(student,sizeof(structst),50,_____);补充完整。

structst

{

charname[8];

intnum;

floats[3];

}student[50];

6,写出下列程序的输出结果________

#include

longfac(intn)

{

if(n==1)return1;

returnn*fac(n-1);

}

main()

{

printf("5!

=%ld\n",fac(5));

}

7,假定建立了以下链表结构,如图所示。

指针p及q指向2个不同的结点,t为及data同类型的数据变量,则交换2结点数据的语句为:

t=p->data;___________;和___________;

1)以下程序按每行5个数的格式输出1至n范围内能被7或17整除的整数,并求出其和。

如输入:

50

则输出:

714172128

34354249

Sum=247

源程序:

#include

voidmain()

{

inti,n,ct=0,sum=0;

scanf("%d",&n);

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

if(____

(1)_____)

{

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

_____

(2)_______;

ct++;

if(___(3)______)

printf("\n");

}

printf("\nSum=%d\n",sum);

}__

2)

以下程序输入10个整数到a数组,找到并输出其中最大的整数及其下标。

如输入:

80290150520330-160-9902009

则输出:

a[3]=520

源程序:

#include

#defineN10

intget_max_index(inta[],intn)

{

inti,k=0;

for(i=1;i

if(____

(1)____)

k=i;

return______

(2)_____;

}

voidmain()

{

inti,k,a[N];

for(i=0;i

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

k=_______(3)______;

printf("a[%d]=%d\n",k,a[k]);

}______

 

3)

以下程序从文件“student.txt”读取学生的学号、姓名、平时成绩和考试成绩,从键盘上输入平时成绩在总成绩中所占比重,计算每个学生的总成绩(四舍五入为整数)后输出到屏幕上。

文件的最后一行为0表示学生数据结束。

设文件student.txt的内容为

101Zhao9558

103Qian7581

105Sun9991

107Li8067

0

运行时键盘输入:

0.1

则屏幕输出:

101Zhao955862

103Qian758180

105Sun999192

107Li806768

源程序:

#include

voidcalc(FILE*fp,floatx)

{

intnum,score1,score2;

floatscore3;

charname[20];

while(!

feof(fp))

{/*文件还有未读数据时*/

num=0;

fscanf(fp,"%d%s%d%d",&num,name,&score1,&score2);

if(num>0)

{/*学生数据有效时*/

score3=score1*x+score2*(1-x);/*计算总成绩*/

printf("%3d%-7s%3d%3d%3d\n",num,name,score1,

score2,______

(1)______);/*总成绩四舍五入为整数*/

}

}

}

voidmain()

{

FILE*fp;

floatx;

fp=fopen("student.txt","r");

if(____

(2)____)/*如果文件打开失败*/

{

printf("Error!

\n");

return;

}

scanf("%f",&x);

calc(____(3)____);/*调用calc函数*/

fclose(____(4)____);/*关闭文件*/

}

 

四、程序调试题(本大题2小题,第1题4分,第2题6分,共10分)

1.程序调试题1(B_3_1.C)

调试要求:

下列程序不能得到正确的结果,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。

将结果(包括B_3_1.c文件和B_3_1.exe文件)保存到目录C:

\KS\中。

功能说明:

程序计算并输出1!

+2!

+……+n!

(1至n阶乘的累加和),其中函数fact(n)计算n!

的值,返回类型为double。

如输入:

10

则输出:

1!

+2!

+…+10!

=4037913

原程序(见C:

\KS\B_3_1.C):

#include

doublefact(intn)

{

inti;

doubleresult=1;

for(i=1;i

result=result*i;

returnresult;

}

voidmain()

{

inti,n;

doublesum=0;

scanf("%d",&n);

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

sum+=fact(inti);

printf("1!

+2!

+...+%d!

=%.0lf\n",n,sum);

}

2.程序调试题2(B_3_2.C)

调试要求:

下列程序有3处错误,请按题中的功能要求,在不改变程序结构(不增加、删除语句,不调整语句顺序)的情况下调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。

将结果(包括B_3_2.c文件和B_3_2.exe文件)保存到目录C:

\KS\中。

功能说明:

程序输入任意一行字符串(设字符数不大于20),提取该字符串中的数字字符并组成一个整数,输出该整数及其两倍的值。

如输入:

abc12e3fgh4i

则输出:

12342468

原程序(见C:

\KS\B_3_2.C):

#include

voidmain()

{

inti,n=0;

charstr[80];

gets(str[80]);

for(i=0;str[i]!

='\0';i++)

if(str[i]>=0&&str[i]<=9)

n=n*10+str[i];

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

}

 

五、编程题(本大题2小题,每题18分,共36分)

1.编程题1(B_5_1.C)

编程要求:

请按题中的功能要求,编写程序并能得到正确的结果。

将结果(包括B_5_1.C文件和B_5_1.exe文件)保存到目录C:

\KS\中。

功能说明:

输入5个整数,输出其中正整数的累加和及正整数的平均值,输入输出格式如以下示例。

如输入:

10020-531

则输出:

Sum=61,Average=20.3

2.编程题2(B_5_2.C)

编程要求:

请按题中的功能要求,编写程序并能得到正确的结果。

将结果(包括B_5_2.C文件和B_5_2.exe文件)保存到目录C:

\KS\中。

功能说明:

输入正整数m和n(设100≤m≤n≤999),输出m到n之间满足下列条件的三位数:

它的个位数的立方加十位数的平方再加上百位数等于该数的本身(例如135=1+3*3+5*5*5)。

如输入:

135555

则输出:

135175518

 

1,表达式strlen(“C2009”)的值是________

2,设inta=3,b=4,c=5;则a*a+b*b==c*c的结果为_____________

3,设a=2,b=3,x=3.5,y=2.5,表达式(float)(a+b)/2+(int)x%2/4的值为____________

4,设a,b,c为整型变量,写出表达式:

当a比b、c都大时结果为真__________

5,

及下列语句等价的条件表达式语句是_______

switch(x!

=0)

{

case0:

y=1;break;

case1:

y=-1;

}

6,

设有下述描述学生信息的结构定义及变量说明,则使学生变量s的出生年份为1990的赋值语句是___________

structdate

{intyear;/*年*/

intmonth;/*月*/

intday;/*日*/

};

structstudent

{intno;/*学号*/

char*name;/*姓名*/

charsex;/*性别*/

structdatebirth;/*出生年月日*/

}s,

7,假定建立了下图所示的链表结构,指针p、q分别指向如图所示的结点,则将q所指结点从链表中删除的C语句是__________

 

1),下面程序实现的功能是打印n以内的水仙花数,水仙花数是指其本身的值等于每一位数字的立方和,例如:

153是一个水仙花数,153=1*1*1+5*5*5+3*3*3.

如输入:

400

则输出:

1153370371

#include

voidmain()

{

intn,digit,k,m,s;

scanf("%d",&n);

for(k=1;____

(1)____;k++)

{

s=0;

m=k;

while(m!

=0)

{

digit=____

(2)____;

s=s+digit*digit*digit;

m

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

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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