上海C二级考题3.docx

上传人:b****3 文档编号:5346507 上传时间:2022-12-15 格式:DOCX 页数:15 大小:180.46KB
下载 相关 举报
上海C二级考题3.docx_第1页
第1页 / 共15页
上海C二级考题3.docx_第2页
第2页 / 共15页
上海C二级考题3.docx_第3页
第3页 / 共15页
上海C二级考题3.docx_第4页
第4页 / 共15页
上海C二级考题3.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

上海C二级考题3.docx

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

上海C二级考题3.docx

上海C二级考题3

2009年C语言测试题3

一、选择题

二、填空题

1、

在C语言中,char类型的数据所占存储空间的字节数为_____,能够测试数据所占存储空间字节数的运算符是__________

2、

设有定义charx;写出判定x是否为大写字母的表达式________

3、

变量value已被定义为float型,对其小数部分进行四舍五入的C表达式为________

4、

设有以下程序段,则执行完该程序段后,变量i的值是________

inti;

chars[]="Hello!

",*p=s;

for(i=0;*(p+i)!

='\0';i++);

5、

阅读以下程序并写出运行结果___________

#include

main()

{

intk,n=0;

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

if(k%3==0&&k%5==0)

{

printf("%d",k);

n++;

if(n==3)break;

}

}

6、

一个C程序总是从_______函数开始执行的

7、

假定建立了如下图所示的链表结构,指针p、q分别指向相邻的2个结点,则将r所指结点插入p、q所指结点之间的C语句是___________;和____________;

三、程序填空

1、

以下程序输入n和n个大于1的正整数,输出其中素数。

如输入:

51993113715

则输出:

191137

例示说明:

先输入n为5,再输入5个正整数,输出5个整数中的素数

#include

voidmain()

{

intn,a,i,j,ct;

scanf("%d",&n);

for(i=0;____

(1)____;i++)

{

______

(2)______;

scanf("%d",&a);

for(j=2;j

if(____(3)____)

ct++;

if(ct==0)

printf("%d",a);

}

printf("\n");

}

2、

以下程序输入一个10进制整数,转换为16进制,计算16进制的各个位数,并从高位到低位依次输出。

如输入:

687

则输出:

2AF

例示说明:

10进制687等于16进制2AF,输出时2、A、F中间包含空格

源程序:

#include

voidmain()

{

inta[10],i,n;

scanf("%d",&n);

for(i=0;n>0;i++)

{

a[i]=____

(1)____;

n/=16;

}

for(i--;____

(2)____;____(3)____)

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

}

3、

以下程序从文件“student.txt”读取学生的学号、姓名、平时成绩和考试成绩,再从键盘上输入一个成绩,将所有考试成绩达到或超过该成绩的学生数据写到新的文本文件“studentD.txt”。

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

设文件student.txt的内容为

101Zhao9558

103Qian7581

105Sun9991

107Li8067

0

运行时键盘输入:

80

则生成新文件studentD.txt的内容为:

103Qian7581

105Sun9991

0

例示说明:

student.txt中考试成绩在80分以上的Qian与Sun信息写到studentD.txt

源程序:

#include

voidselect(FILE*fp1,FILE*fp2,intx)

{

intnum,score1,score2;

charname[20];

while

(1)

{

num=0;

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

if(num==0)

____

(1)____;

if(____

(2)____)

fprintf(fp2,"%3d%-7s%3d%3d\n",num,name,

score1,score2);

}

fprintf(fp2,"0");

}

voidmain()

{

FILE*fp1,*fp2;

intx;

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

fp2=fopen("studentD.txt",____(3)____);

if(fp1==NULL||fp2==NULL)

{/*文件打开失败*/

printf("FileOpenError!

\n");

return;

}

scanf("%d",&x);

select(____(4)____);

fclose(fp1);

fclose(fp2);

}

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

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

调试要求:

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

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

\KS\中。

功能说明:

以下程序计算并输出等差数列的累加和,数列的首项为a0,公差为d,项数为n。

如输入:

-354

则输出:

sumx=18

例示说明:

-3为首项,5为公差,4为项数,前4项之和为18

原程序(见C:

\KS\D_3_1.C):

#include

intsumx(inta0,d,n)

{

inti,k,s=0;

k=a0;

for(i=0;i

s+=k;

k+=d;

returns;

}

voidmain()

{

inta0,d,n;

scanf("%d%d%d",&a0,&d,&n);

printf("sumx=%d\n",sumx(a0,d,n));

}

 

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

调试要求:

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

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

\KS\中。

功能说明:

以下函数length返回字符串中字母A到字母Z所包含字符的长度。

主程序输入一行字符串,调用length函数输出该字符串中大写字母A到Z的子串长度。

如输入:

Z2009-AShanghaiZ

则输出:

Length=8

例示说明:

从A到Z的子串为Shanghai,其长度为8

原程序(见C:

\KS\D_3_2.C):

#include

intlength(char*p)

{

char*q,*r;

for(q=p;*q!

='\0'||*q!

='A';q++)

;

for(r=q;*r!

='\0'&&*r!

='Z';r++)

;

returnr-q;

}

voidmain()

{

charstr[81];

intn;

gets(str[0]);

n=length(str);

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

}

 

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

1.编程题1(D_5_1.C)

编程要求:

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

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

\KS\中。

功能说明:

键盘输入5个整数,按由小到大的顺序排序后输出。

如输入:

10020-531

则输出:

-50102031

 

2.编程题2(D_5_2.C)

编程要求:

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

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

\KS\中。

功能说明:

键盘输入正整数n,计算并输出

的值,输出结果保留6位小数。

如输入:

10

则输出:

0.645635

第3套参考答案

单选题

1.A2.A3.C4.B5.A6.C7.C8.B9.C10.D

填空题

1.1)【1】2)【sizeof】

2.【x>='A'&&x<='Z'】

3.【(int)(value*10+5)/10】【(int)(value+0.5)】

4.【6】

5.【153045】

6.【main】

7.【r->next=q】【p->next=r】

程序填空题

1.1)【i

2)【ct=0】

3)【a%j==0】

2.1)【n%16】

2)【i>=0】

3)【i--】

3.1)【break】

2)【score2>=x】

3)【"w"】

4)【fp1,fp2,x】

三、程序调试题

第1题(D_3_1.C)参考答案

#include

intsumx(inta0,intd,intn)/*modified*/

{

inti,k,s=0;

k=a0;

for(i=0;i

{/*modified*/

s+=k;

k+=d;

}/*modified*/

returns;

}

voidmain()

{

inta0,d,n;

scanf("%d%d%d",&a0,&d,&n);

printf("sumx=%d\n",sumx(a0,d,n));

}

第2题(D_3_2.C)参考答案

#include

intlength(char*p)

{

char*q,*r;

for(q=p;*q!

='\0'&&*q!

='A';q++)

;

for(r=q;*r!

='\0'&&*r!

='Z';r++)

;

returnr-q-1;/*modified*/

}

voidmain()

{

charstr[81];

intn;

gets(str);/*modified*/

n=length(str);

printf("Length=%c\n",n);

}

五、编程题

第1题(D_5_1.C),参考程序

#include

main()

{

inta[5],i,j,t;

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

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

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

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

if(a[j]>a[j+1])

{

t=a[j];

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

a[j+1]=t;

}

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

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

printf("\n");

}

第2题(D_5_2.C),参考程序

#include

main()

{

intn,i,k;

floats;

scanf("%d",&n);

s=0;

k=1;

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

{

s+=(float)k/i;

k*=-1;

}

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

}

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

当前位置:首页 > 自然科学 > 物理

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

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