全国计算机编程大赛复赛试题1
下面这个全国计算机编程大赛复赛试题1教程由图老师小编精心推荐选出,过程简单易学超容易上手,喜欢就要赶紧get起来哦!
要求输出每轮调整后各战士手中的子弹数。
要求结果的输出格式为
0 10 2 8 22 16 4 10 6 14 20 各战士手中原始的子弹数
1 xx xx xx xx xx xx xx xx xx xx 第1轮各战士手中的子弹数
2 xx xx xx xx xx xx xx xx xx xx 第2轮各战士手中的子弹数
……
n xx xx xx xx xx xx xx xx xx xx 最后一轮各战士手中的子弹数(应相等) #include "stdio.h"
main()
{ int i,ip=0, a[10],b[10];
FILE *fp; a[0]=10; a[1]=2; /* 初始化 */
a[2]=8; a[3]=22;
a[4]=16; a[5]=4;
a[6]=10; a[7]=6;
a[8]=14; a[9]=20; if((fp=fopen("SH99vI1.dat","w"))==NULL) /* 建输出结果文件 */
{ printf("cannot open this file.");
exit(0);
} fprintf(fp,"%5d",ip); /* ID为序号 */
for(i=0;i10;i++)
fprintf(fp,"%5d",a[i]);
fprintf(fp,""); do{
for(i=0;i10;i++) /* 数为奇加1 */
{ if(a[i]%2!=0)
a[i]=a[i]+1;
}
for(i=0;i9;i++) /* 向下传一半 */
b[i+1]=(a[i]+a[i+1])/2; b[0]=(a[9]+a[0])/2; ip++;
fprintf(fp,"%5d",ip); /* 输出到文件 */
for(i=0;i10;i++)
fprintf(fp,"%5d",b[i]);
fprintf(fp,""); for(i=0;i10;i++)
a[i]=b[i]; /* 直到数相等 */ } while(!(a[0]==a[1]&&a[1]==a[2]&&a[2]==a[3]&&a[3]==a[4]&&a[4]==a[5]&&a[5]==a[6]&&a[6]==a[7]&&a[7]==a[8]&&a[8]==a[9])); fclose(fp);
}
以上是我编的程序,如你能有所改进或有别的方法实现,贴出来共同学习,分享吧!