CCF历年真题C语言答案

  • 格式:docx
  • 大小:12.09 KB
  • 文档页数:17

题1:出现次数最多的数 #include<> intmain() { inti,j,n,s; intt=1; inta[10001]={0}; scanf("%d",&n); for(i=0;i{

scanf("%d",&s);1,&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};ey=w; arr[2*i].action=0; arr[2*i].time=s; arr[2*i+1].key=w; arr[2*i+1].action=1; arr[2*i+1].time=s+c; } for(i=0;i{ for(j=i+1;j{ if(arr[i].time>arr[j].time) { temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } elseif(arr[i].time==arr[j].time) { if(arr[i].action==0&&arr[j].action==1) { temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; }

elseif(arr[i].action==arr[j].action&&arr[i].key>arr[j].key) { temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } } } for(i=0;i{ if(arr[i].action==0) { for(j=0;j{ if(keys[j]==arr[i].key) { keys[j]=0; break; } } } else { for(j=0;j{ if(keys[j]==0) { keys[j]=arr[i].key; break; } } } } for(i=0;i{

printf("%d%d%d\n",arr[i].key,arr[i].action,arr[i].time); } for(i=0;i{ printf("%d",keys[i]); } return0; } 题25:最小差值 #include<> #include<> intmain() { inti,j,n,t; inta[1001]={0}; scanf("%d",&n); for(i=0;i{ scanf("%d",&a[i]); } t=999;//注意t赋一个较大值,因为2<=n<=1000,差值最大为998 for(i=0;i{ for(j=i+1;j{ if(t>abs(a[i]-a[j])) { t=abs(a[i]-a[j]); } } } printf("%d",t); return0; } 题26:游戏 #include<> intmain() { inti,n,k,t; intcount=0; inta[1001]={0}; scanf("%d%d",&n,&k); for(i=0;i{ a[i]=1; } t=n; i=0;//注意赋值 while(t>1) { if(a[i]==1) {