为什么b得不到8

P1597 语句解析

三个问题。 1. for循环的i递增有问题。i应该+=5而不是遍历每一个字符,否则类似a:=b这种会将a和b都进行赋值。 2.大括号问题。switch应该在for循环里面,否则只会在最后进行一次switch。 3.初始化问题。abc应该初始为1。 4.赋值问题。a:=a这种会将a直接设为字符a,应在输入环节加入特判。 修改后的代码如下
by PC114514 @ 2024-03-29 19:32:13


```#include <stdio.h> #include <string.h> int main() { char p[300]; gets(p); char a='0',b='0',c='0'; for(int i=0;i<=strlen(p);i+=5){ if(p[i]=='a' && p[i+3]!='a'){ a=p[i+3]; } if(p[i]=='b' && p[i+3]!='b'){ b=p[i+3]; } if(p[i]=='c' && p[i+3]!='c'){ c=p[i+3]; } switch(a){ case 'b':a=b;break; case 'c':a=c;break; } switch(b){ case 'a':b=a;break; case 'c':b=c;break; } switch(c){ case 'a':c=a;break; case 'b':c=b;break; } } printf("%c %c %c",a,b,c); return 0; } ``` 我也没啥水平,希望大家共同进步,再见
by PC114514 @ 2024-03-29 19:33:57


@[xrpo0](/user/1239657)
by PC114514 @ 2024-03-29 19:34:12


@[PC114514](/user/813765) ```c #include <stdio.h> #include <string.h> int main() { char p[300]; gets(p); char a='0',b='0',c='0'; for(int i=0;i<=strlen(p);i++){ if(p[i]=='a'&&p[i+1]==':'&&p[i+3]!='a'){ a=p[i+3]; } if(p[i]=='b'&&p[i+1]==':'&&p[i+3]!='b'){ b=p[i+3]; } if(p[i]=='c'&&p[i+1]==':'&&p[i+3]!='c'){ c=p[i+3]; } switch(a){ case 'b':a=b;break; case 'c':a=c;break; case 'a':a='0';break; } switch(b){ case 'a':b=a;break; case 'c':b=c;break; case 'b':b='0';break; } switch(c){ case 'a':c=a;break; case 'b':c=b;break; case 'c':c='0';break; } } printf("%c %c %c",a,b,c); return 0; } ``` 谢谢大佬总算过了,第一点我在您回复之前想出来了,但是还是没过,所以就没改了,所以写的很粗糙。我总是把<=strlen(p)搞忘记了,以后还是得多用调试,我这个devc++调试很容易崩溃,不知道为什么
by xrpo0 @ 2024-03-29 20:08:15


|