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