这是题目和题目所给的测试样本,看不懂题目的输入输出之间的关系,也不知道这个字母E表示跳过循环,还是跳出程序
2条回答 默认 最新
- 技术专家团-小桥流水 2022-11-03 02:45关注本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报技术专家团-小桥流水 2022-11-03 03:20
代码如下:
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char s[2502][26]; int i, j, nmbW,nmbL; int n = 0; int flag = 0; while (scanf("%s", s[n]) != EOF) n++; //11分制 nmbW = 0; nmbL = 0; for (i = 0; i < n; i++) { for (j = 0; s[i][j] != '\0'; j++) { if (s[i][j] == 'W') { flag = 0; nmbW++; } else if (s[i][j] == 'L') { flag = 0; nmbL++; } else if (s[i][j] == 'E') break; //11分制度 if (nmbW + nmbL == 11) { printf("%d:%d\n", nmbW, nmbL); nmbW = 0; nmbL = 0; flag = 1; } } } if(flag == 0) //避免刚好结束比赛的时候重复输出 printf("%d:%d\n", nmbW, nmbL); printf("\n"); //空行 nmbW = 0; nmbL = 0; flag = 0; for (i = 0; i < n; i++) { for (j = 0; s[i][j] != '\0'; j++) { if (s[i][j] == 'W') { flag = 0; nmbW++; } else if (s[i][j] == 'L') { flag = 0; nmbL++; } else if (s[i][j] == 'E') break; //11分制度 if (nmbW + nmbL == 21) { printf("%d:%d\n", nmbW, nmbL); nmbW = 0; nmbL = 0; flag = 1; } } } if (flag == 0) //避免刚好结束比赛的时候重复输出 printf("%d:%d\n", nmbW, nmbL); return 0; }
赞回复技术专家团-小桥流水 2022-11-03 14:55代码更新如下:
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> typedef struct _score { int sw; int sl; }Score; int main() { char ch; Score sa[7000], sb[7000]; //11分和21分比赛记录 int na = 0, nb = 0; //组数 int cw1 = 0, cl1 = 0; //11分制 int cw2 = 0, cl2 = 0; //21分制 int i; while (scanf("%c",&ch)!=EOF) { if (ch == 'E') break; else if (ch == 'W') { cw1++; cw2++; } else if (ch == 'L') { cl1++; cl2++; } if ( (cw1 >= 11 && cw1-cl1>=2) || (cl1>=11 && cl1-cw1>=2) ) { sa[na].sw = cw1; sa[na].sl = cl1; na++; cw1 = 0; cl1 = 0; } if ( (cw2 >= 21 && cw2-cl2>=2) || (cl2>=21 && cl2-cw2 >=2) ) { sb[nb].sw = cw2; sb[nb].sl = cl2; nb++; cw2 = 0; cl2 = 0; } } //没有输入,输出0:0 if (na == 0 && nb==0 && cw1==0 && cl1==0) { printf("0:0\n\n0:0\n"); return 0; } //输出11分制结果 for (i = 0; i < na; i++) printf("%d:%d\n", sa[i].sw, sa[i].sl); if (cw1 != 0 || cl1 != 0) printf("%d:%d\n", cw1, cl1); printf("\n"); //输出21分制结果 for (i = 0; i < nb; i++) printf("%d:%d\n", sb[i].sw, sb[i].sl); if (cw2 != 0 || cl2 != 0) printf("%d:%d\n", cw2, cl2); return 0; }
赞回复