鱼C论坛

 找回密码
 立即注册
查看: 1356|回复: 8

[已解决]求指正:C语言-字符串前移后移

[复制链接]
发表于 2020-12-13 20:03:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
求问:我这个变成结果按例子输出,少个f,这个是哪里错了?
  1. /*编写程序:将字符数组s中所有字母字符前移,其他字符后移。例如,数组s为:asd123fgh543df,处理后新字符串为asdfghdf123543.*/
  2. #include<stdio.h>
  3. #define M 50
  4. #include<string.h>
  5. void main()
  6. {
  7.         char s[M],str[M];
  8.         int i,j;
  9.         scanf("%s",s);
  10.         for(i=0,j=0;i<strlen(s)-1;i++){
  11.                 if((s[i]>='A'&&s[i]<='Z')||(s[i]>='a'&&s[i]<='z')){
  12.                         str[j]=s[i];
  13.                         j++;
  14.                 }
  15.         }
  16.         for(i=0;i<strlen(s)-1;i++){
  17.                 if(s[i]<'A'||(s[i]>'Z'&&s[i]<'a')||s[i]>'z'){
  18.                         str[j]=s[i];
  19.                         j++;
  20.                 }
  21.         }
  22.         str[j]='\0';
  23.         printf("%s",str);
  24. }
复制代码
最佳答案
2020-12-13 22:16:00
        这两句(第10、16行)
  1.         for(i=0,j=0;i<strlen(s)-1;i++){
  2. .  .  .  .  .  .
  3.        for(i=0;i<strlen(s)-1;i++){
复制代码

        得修改为:
  1.         for(i = j = 0 ; i < strlen(s) ; i ++) {
  2. .  .  .  .  .  .
  3.         for(i = 0 ; i < strlen(s) ; i ++) {
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-13 21:25:09 | 显示全部楼层
本帖最后由 风过无痕1989 于 2020-12-14 14:49 编辑

既然不被选为最佳,那我的代码留在这里也就没有意义了。下面的代码,是原文复制你自己的代码过来了,代码中的错误是你自己的
  1. /*编写程序:将字符数组s中所有字母字符前移,其他字符后移。例如,数组s为:asd123fgh543df,处理后新字符串为asdfghdf123543.*/
  2. #include<stdio.h>
  3. #define M 50
  4. #include<string.h>
  5. void main()
  6. {
  7.         char s[M],str[M];
  8.         int i,j;
  9.         scanf("%s",s);
  10.         for(i=0,j=0;i<strlen(s)-1;i++){
  11.                 if((s[i]>='A'&&s[i]<='Z')||(s[i]>='a'&&s[i]<='z')){
  12.                         str[j]=s[i];
  13.                         j++;
  14.                 }
  15.         }
  16.         for(i=0;i<strlen(s)-1;i++){
  17.                 if(s[i]<'A'||(s[i]>'Z'&&s[i]<'a')||s[i]>'z'){
  18.                         str[j]=s[i];
  19.                         j++;
  20.                 }
  21.         }
  22.         str[j]='\0';
  23.         printf("%s",str);
  24. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-13 22:16:00 | 显示全部楼层    本楼为最佳答案   
        这两句(第10、16行)
  1.         for(i=0,j=0;i<strlen(s)-1;i++){
  2. .  .  .  .  .  .
  3.        for(i=0;i<strlen(s)-1;i++){
复制代码

        得修改为:
  1.         for(i = j = 0 ; i < strlen(s) ; i ++) {
  2. .  .  .  .  .  .
  3.         for(i = 0 ; i < strlen(s) ; i ++) {
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-12-14 06:41:25 | 显示全部楼层
jackz007 发表于 2020-12-13 22:16
这两句(第10、16行)

        得修改为:

好的,非常感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-14 06:42:04 | 显示全部楼层

嗯呢,这样程序方便多了,非常感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-14 08:59:08 | 显示全部楼层
本帖最后由 风过无痕1989 于 2020-12-14 14:11 编辑
乐瑜 发表于 2020-12-14 06:42
嗯呢,这样程序方便多了,非常感谢


重新改写你的程序,不选我的,帮你改写你自己的,也不选我的。好,以后不再回答你的问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-15 07:05:03 | 显示全部楼层
风过无痕1989 发表于 2020-12-13 21:25
既然不被选为最佳,那我的代码留在这里也就没有意义了。下面的代码,是原文复制你自己的代码过来了,代码中 ...

啊,不好意思,这个我当时看的时候,没有发现你帮我就错了。我以为就提供了个改进方法
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-15 07:05:33 | 显示全部楼层
风过无痕1989 发表于 2020-12-14 08:59
重新改写你的程序,不选我的,帮你改写你自己的,也不选我的。好,以后不再回答你的问题

非常非常抱歉
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-15 07:08:47 | 显示全部楼层
风过无痕1989 发表于 2020-12-14 08:59
重新改写你的程序,不选我的,帮你改写你自己的,也不选我的。好,以后不再回答你的问题

也非常感谢你总是帮我回答我的问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-8 02:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表