Rating:2074 | C: #include<stdio.h> int main() { int n,m; char s[21][21]; while(scanf("%d%d",&n,&m)!=EOF) //首先输入n、m,如果到达文件末尾,scanf返回值为-1,就退出循环 { for(int i=0;i<n;i++) scanf("%s",s[i]); //总共n行,将第i行的字符保存在s[i]里面 int flag=1; //如果一个也没有flag为1,刚开始为1 for(int i=0;i<n;i++) for(int j=0;j<m;j++) { if(s[i][j]=='@') //遍历这个二维数组,如果存在@,那么就输出坐标 { if(flag==1) //第一个输出没有空格,后面的在(前加一个空格,这样最后一个后面就没有空格 { printf("(%d,%d)",i,j); flag=0; //输出一个后flag赋值为0 } else { printf(" (%d,%d)",i,j); } } } if(flag==1) printf("-1\n"); //如果flag为1,表示一个都没有,输出-1 else printf("\n"); //换行 } return 0; } D: #include<stdio.h> #include<string.h> int main() { //其实不难,只要去做 //最主要,不要被大量的字符、格式控制、输入什么的吓到,其实scanf("%s",s);最好用了 char s[3]; //存放变量名 while(scanf("%s%s",s,s)!=EOF) //int x,y; 第一个输入没有,第二个字符串有用 { char a=s[0]; //让a为x char b=s[2]; //让b为y int x,y,tmp; //x、y就是a、b的值 scanf("%s%s%d;",s,s,&tmp); //fu x 10; fu没用,s[0]就是x,tmp是值,后面有个; if(s[0]==a) x=tmp; //如果s[0]是a,那么x=tmp,否则y=tmp; else y=tmp; scanf("%s%s%d;",s,s,&tmp);//同上 if(s[0]==a) x=tmp; else y=tmp; while(1) //死循环,知道End!结束 { scanf("%s",s); //首先输入一个字符串,如果是End!就退出,其实也可以直接比较s[0]和'E'的 if(strcmp(s,"End!")==0) break; if(strcmp(s,"Add")==0) //也可以比较s[0]和'A'的 { scanf("%s%s",s,s); //输入两个字符串,因为不会出现x、x的情况,如果会出现,可以再弄一个s1,分别存放 if(s[0]==a) y+=x; //如果s[0]是a,那么说明是y+=x; else x+=y; //同上 } else if(strcmp(s,"Sub")==0) //这四个,代码都差不多 { scanf("%s%s",s,s); if(s[0]==a) y-=x; else x-=y; } else if(strcmp(s,"Mul")==0) { scanf("%s%s",s,s); if(s[0]==a) y*=x; else x*=y; } else { scanf("%s%s",s,s); if(s[0]==a) y/=x; else x/=y; } } printf("%d %d\n",x,y); //输出x、y } return 0; } E: #include<stdio.h> int fun(int x) { int tmp=x; //保存值 while(x!=1) //如果x==1,退出 { if(x%2==1) return -tmp; //如果x不等于1且是一个奇数,就输出负的原值 x>>=1; //x除等于2 } return tmp; //如果一直到1为之,x的值都是偶数,说明一开始x只包含2这个质因子,那么这一项是2的次方倍,那么是正的 } int main() { int n,sum; while(scanf("%d",&n)!=EOF) //输入一个n { sum=0; //对于每一个测试样例,刚开始总和为0 for(int i=1;i<=n;i++) //遍历这n项 { sum+=fun(i); //fun(i)为自定义的函数,表示第i项的值,把这i项相加 } printf("%d\n",sum); //输出 } return 0; } F: #include<stdio.h> #include<stdlib.h> #include<string.h> #include<time.h> int main() { int a[20][2]; int n; while(scanf("%d",&n)!=EOF) //首先输入提示的数量,因为有多个这样的测试样例,所以外边加一个while(scanf()!=EOF) { for(int i=0;i<n;i++) //输入n个提示 { scanf("%d%d",&a[i][0],&a[i][1]); //每个提示的x保存在a[i][0],y保存在a[i][1] } for(int i=1;i<=100000;i++) //士兵最多十万个,从1开始遍历这十万个,找出最先满足的那一个 { int j; for(j=0;j<n;j++) { if(i%a[j][0]!=a[j][1]) break; //如果有一个不满足,就提早退出 } if(j>=n) //如果没有提早退出,说明这个是满足条件的,就输出,并且结束查找 { printf("%d\n",i); break; } } } return 0; } |