180506春试题0606文档格式.docx
- 文档编号:22335353
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:15
- 大小:29.94KB
180506春试题0606文档格式.docx
《180506春试题0606文档格式.docx》由会员分享,可在线阅读,更多相关《180506春试题0606文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
分别计算表达式(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);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 180506 春试 0606