CCF历年真题C语言答案Word文件下载.docx
《CCF历年真题C语言答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《CCF历年真题C语言答案Word文件下载.docx(31页珍藏版)》请在冰豆网上搜索。
t?
s:
t);
}
printf("
t);
return0;
}
题2:
ISBN号码
intsum=0;
chara[13]={'
\0'
};
gets(a);
sum=(a[0]-'
0'
)*1+(a[2]-'
)*2+(a[3]-'
)*3+(a[4]-'
)*4+(a[6]-'
)*5+(a[7]-'
)*6+(a[8]-'
)*7+(a[9]-'
)*8+
(a[10]-'
)*9;
if((sum%11==a[12]-'
)||(sum%11==10&
&
a[12]=='
X'
))//注意正确情况几种类型
printf("
Right"
);
else
if(sum%11==10)
a[12]='
;
else
a[12]=sum%11+'
puts(a);
题3:
相反数
inti,j,n,t=0;
inta[501];
a[i]);
n-1;
for(j=i+1;
j<
j++)
{
if(a[i]+a[j]==0)t++;
}
题4:
窗口
typedefstructwindow1{
intx1,x2,y1,y2,order;
}window;
voidInputwindow(windowws[],intn)
inti;
for(i=1;
i<
=n;
i++)
%d%d%d%d"
&
ws[n-i].x1,&
ws[n-i].y1,&
ws[n-i].x2,&
ws[n-i].y2);
ws[n-i].order=i;
intgetpos(windowws[],intn,intx,inty)
for(i=0;
n;
i++)
if(x>
=ws[i].x1&
x<
=ws[i].x2&
y>
=ws[i].y1&
y<
=ws[i].y2)
returni;
}
return-1;
voidmovewindow(windowws[],intn,intpos)
windoww=ws[pos];
for(i=pos-1;
i>
=0;
i--)
ws[i+1]=ws[i];
ws[0]=w;
inti,n,m,x,y,pos;
%d%d"
n,&
m);
windowws[n];
Inputwindow(ws,n);
m;
x,&
y);
pos=getpos(ws,n,x,y);
if(pos==-1){
printf("
IGNORED\n"
else{
%d\n"
ws[pos].order);
movewindow(ws,n,pos);
}
题5:
相邻数对
math.h>
inta[1001];
n-1;
if(abs(a[i]-a[j])==1)t++;
题6:
画图
inti,j,n,k,t=0;
inta[101][4];
a[i][0],&
a[i][1],&
a[i][2],&
a[i][3]);
101;
for(j=0;
for(k=0;
k<
k++)
{
if(j>
=a[k][0]&
a[k][2]&
i>
=a[k][1]&
a[k][3])
break;
}
if(k<
n)
t++;
题7:
门禁系统
inti,n,s=0;
inta[1001]={0};
%d"
a[s]);
题8:
z字形扫描
inti,j,k,n;
inta[500][500];
i<
j<
scanf("
a[i][j]);
for(k=0;
k<
2*n-1;
for(i=0;
for(j=0;
if(i+j==k)
{
if(k%2==0)
{
printf("
a[j][i]);
}
else
a[i][j]);
}
题9:
图像旋转
#defineN1000
inta[N][N];
inti,j,n,m;
n,&
m;
for(j=1;
=m;
if(i!
=0)
printf("
"
a[i][m-j]);
\n"
题10:
数字排序
inti,j,n,s=0;
inta[1001]={0};
//注意初始化赋值
for(i=1001;
0;
i--)//i为从后找起的频数
1001;
j++)//数组下标从小到大
if(a[j]==i)//找自己
%d%d\n"
j,a[j]);
题11:
数列分段
inti,n,t=0;
if(a[i]!
=a[i+1])t++;
t+1);
题12:
日期计算
inty,d,day,i;
intmouth[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
y,&
d);
if((y%4==0&
y%100!
=0)||(y%400==0))
mouth[2]++;
for(i=1;
13;
if(d>
mouth[i])
d=d-mouth[i];
if(d==0)
d=mouth[i];
elsebreak;
//注意中断,确保月份不出错
%d\n%d"
i,d);
题13:
数位之和
intn,sum=0;
while(n)
sum=sum+n%10;