180506春试题0606文档格式.docx

上传人:b****7 文档编号:22335353 上传时间:2023-02-03 格式:DOCX 页数:15 大小:29.94KB
下载 相关 举报
180506春试题0606文档格式.docx_第1页
第1页 / 共15页
180506春试题0606文档格式.docx_第2页
第2页 / 共15页
180506春试题0606文档格式.docx_第3页
第3页 / 共15页
180506春试题0606文档格式.docx_第4页
第4页 / 共15页
180506春试题0606文档格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

180506春试题0606文档格式.docx

《180506春试题0606文档格式.docx》由会员分享,可在线阅读,更多相关《180506春试题0606文档格式.docx(15页珍藏版)》请在冰豆网上搜索。

180506春试题0606文档格式.docx

分别计算表达式(a+=2)&

&

(c=0)与

!

(a>

2)||(b-=5)||(c==0)的真假。

4.定义inta=12,b=6,c=2;

分别计算表达式(a&

b)|c与

(a^b)<

<

c的值(结果使用十进制形式)。

5.写出判断表达式:

a小于b且b小于c。

6.写出判断表达式:

n不是3的倍数或者n是7的倍数。

7.使用条件运算符(?

:

)写出表达式:

将a和b的最大值赋值给x。

8.定义inta[10];

写出语句片段:

输入a数组中的10个整数。

9.定义charwords[10][20];

使用printf写出语句:

输出words中

第一维下标i对应的字符串。

10.定义int*p;

使用malloc函数写出语句:

申请10个整数(int)

的内存空间,并将首指针赋值给p。

二、阅读程序(36分,每小题4分)

仔细阅读下列程序,将各程序的运行结果写在答卷纸上。

(1)程序

#include<

stdio.h>

main()

{intm,n,i,ct=0;

scanf("

%d%d"

&

m,&

n);

for(i=m;

i<

=n;

i+=3)

{printf("

%2d\t"

i);

ct++;

if(ct%5==0)

printf("

\n"

);

}

}

/*输入235*/

输出:

(2)程序

{intn,i,j;

%d"

for(i=0;

n;

i++)

{for(j=0;

j<

i;

j++)

"

for(j=0;

2*(n-i)-1;

*"

printf("

/*输入4*/

(3)程序

{inta[10],i;

10;

scanf("

a[i]);

if(a[i]%2==0)

%d\t"

a[i]);

printf("

/*输入:

11227766334488100990*/

(4)程序

string.h>

{chars[81];

intct[26]={0},i,k;

gets(s);

s[i]!

='

\0'

;

if(s[i]>

A'

&

s[i]<

Z'

{k=s[i]-'

ct[k]++;

}

26;

if(ct[i]>

0)

%c=%d\t"

'

+i,ct[i]);

abc=cBA,ABG=GBa,BGH.*/

(5)程序

{chars[81],a[81];

intn;

n=strlen(s);

Length=%d\n"

n);

strcpy(a,s);

strcat(a,s);

puts(a);

a[n+1]='

strcpy(s,a+1);

puts(s);

aBcDeF*/

(6)程序

intbuffa[16],buffn=0;

voidpush(intdata)

{

buffa[buffn++]=data;

intpop(void)

returnbuffa[--buffn];

{intn,i;

scanf("

8;

{push(n%2);

n/=2;

pop());

20*/

(7)程序

longjchen(intk,intn)

{if(k==n)

returnn;

else

returnk*jchen(k+1,n);

{intn;

longv;

for(n=1;

n<

=4;

n++)

{v=jchen(1,n);

%d!

=%ld\n"

n,v);

(8)程序

int*find(int*a,intn,intdata)

{/*数组为a,个数为n,查找的数为data*/

int*p,*q,*r;

p=a;

/*p指向待查找区域的首部*/

q=a+n;

/*q指向区域的尾部的下一个位置*/

while(p<

q)/*待查找区不为空时*/

{

r=p+(q-p)/2;

/*待查找区的中点位置*/

printf("

===%d===\n"

*r);

/*输出值*/

if(*r==data)

returnr;

/*如果找到,返回该指针*/

elseif(*r<

data)

p=r+1;

/*比中点大,在后半区*/

q=r;

/*比中点小,在前半区*/

returnNULL;

/*待查区为空,没找到*/

intx[]={11,22,33,44,55,66,77,88,99,100},d,*p;

d);

/*输入要查找的数*/

p=find(x,10,d);

/*调用查找,结果赋值给p*/

if(p!

=NULL)/*判断是否找到数*/

Foundat%d\n"

p-x);

/*找到,计算下标*/

NotFound.\n"

/*没找到*/

/*输入:

55*/

(9)程序

structworker

{charsex;

floatpay;

};

{FILE*ff;

structworkerper[10];

floatmax,min,sum1,sum2,x;

intct1,ct2,i;

ff=fopen("

worker.txt"

"

r"

if(ff==NULL)return;

5;

{fscanf(ff,"

%f%c"

x,&

per[i].sex);

per[i].pay=x;

fclose(ff);

max=min=per[0].pay;

sum1=sum2=ct1=ct2=0;

{if(max<

per[i].pay)

max=per[i].pay;

if(min>

min=per[i].pay;

switch(per[i].sex)

{

case'

m'

M'

sum1+=per[i].pay;

ct1++;

break;

f'

F'

sum2+=per[i].pay;

ct2++;

Max=%4.2f\n"

max);

Min=%4.2f\n"

min);

Male:

count=%dAver=%4.2f\n"

ct1,sum1/ct1);

Female:

ct2,sum2/ct2);

/***假设文件操作总是成功的,worker.txt包含以下内容:

200.11m

300.22f

500.22f

400.11m

100.99?

***/

三、改错程序(8分,每错误点2分)

下列程序各有两个错误(两个错误分别是在不同的行上,以注解行形式标注),按原来程序的要求,纠正错误,并将错误所在行号以及错误行完整的正确内容写在答卷纸的对应栏内。

(1)以下程序输入整数n和n个整数,判断它们是否有重复,如果没有重复输出Yes,否则输出No。

#include<

#defineN100

main()

inta[N],n,i,j,isyes=1;

/*1*/scanf("

d%"

/*2*/for(i=0;

/*3*/scanf("

/*4*/for(i=0;

/*5*/for(j=0;

/*6*/if(a[i]==a[j]&

i!

=j)

/*7*/isyes--;

if(isyes==0)/*本行及以下不做修改*/

printf("

No\n"

else

Yes\n"

/*若输入1012345678910则输出Yes*/

/*若输入101234567892则输出No*/

(2)以下函数countword用于统计字符串所包含的单词数,单词之间使用一个或多个空格分开,主函数main用于测试countword函数。

intcountword(chars[])

{/*计算字符串s的单词数,单词的分隔符为空格*/

intctw,cta,i;

/*ctw为单词计数*/

/*1*/ctw=cta=0;

/*cta为当前单词的字符计数*/

/*2*/for(i=0;

/*3*/{

/*4*/if(strcmp(s[i],"

)!

=0)

/*5*/{/*当前字符不是空格时*/

/*6*/if(cta=0)

/*7*/ctw++;

/*8*/cta++;

/*9*/}

/*10*/else

/*11*/cta=0;

/*12*/}

/*13*/returnctw;

{printf("

count=%d\n"

countword("

Hello123x@34%$."

));

}/*输出单词数为3*/

四、程序填空(12分,每填空2分)

阅读下列问题描述和相应的C程序,把应填入其中(n)处的内容写在答卷纸的对应栏内。

(1)以下程序输入年和月,输出该月的日历。

intgetdays(inty,intm)

{/*返回y年m月的天数*/

intdays[]={0,31,0,31,30,31,30,31,31,30,31,30,31};

if(y%400==0||y%4==0&

y%100!

=0)/*闰年判断*/

(1);

days[2]=28;

return

(2);

intgetweek(inty,intm)

{/*返回y年m月1日的星期数,星期天为0,星期一为1*/

intw,i;

/*以下公式计算y年1月1日的星期数*/

w=(y+(y-1)/4-(y-1)/100+(y-1)/400)%7;

for(i=1;

(3);

w=(w+getdays(y,i))%7;

/*y年i+1月1日的星期数*/

returnw;

inty,m,w,days,i;

y,&

m);

w=getweek(y,m);

days=getdays(y,m);

SunMonTueWedThuFriSat\n"

w;

(4);

%4d"

if((i+w)%7==0)

/**如输入20065则输出

SunMonTueWedThuFriSat

123456

78910111213

14151617181920

21222324252627

28293031

**/

(2)以下printlist函数输出链表所有结点的信息。

structnode

{/*链表结点定义*/

intnum;

/*学号*/

charname[20];

/*姓名*/

structnode*next;

/*指向下一结点的指针*/

};

voidprintlist(structnode*head)

{/*输出链表的内容*/

structnode*p;

p=head;

while((5))

%d%s\n"

p->

num,p->

name);

p=(6);

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

当前位置:首页 > 工程科技 > 材料科学

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

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