鱼C论坛

 找回密码
 立即注册
查看: 716|回复: 4

[已解决]C语言学校OJ题字符串反序,提交后运行错误

[复制链接]
发表于 2020-12-3 11:21:26 | 显示全部楼层 |阅读模式

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

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

x
题目描述
写一个函数,使输入的一个字符串(少于80个字符)按反序存放,在主函数中输入输出字符串。

样例输入
reverse a string
样例输出
gnirts a esrever
以下是我的代码:
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main(){
  4.     char x[81];
  5.     int i;
  6.     for(i=0;(x[i]=getchar())!='\n';i++);
  7.     x[i]='\0';
  8.     for(i=i-1;i>=0;i--)printf("%c",x[i]);
  9.     return 0;
  10. }
复制代码

学校OJ系统运行于Debian/Ubuntu Linux. 使用GNU GCC/G++ 作为C/C++编译器,编译器版本为gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
最佳答案
2020-12-3 11:59:43
本帖最后由 风过无痕1989 于 2020-12-3 12:04 编辑
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main() {
  4.         char ch, x[81];
  5.         int i, n;
  6.         for (i = 0;(x[i] = getchar()) != '\n';i++);
  7. /*     x[i + 1] = '\0';        */                              // 此行语句没有用处,可删除
  8.         n  = i - 1;
  9.         for (i = n;i >= n / 2;i--)
  10.         {
  11.                 ch = x[i];
  12.             x[i] = x[n - i];
  13.             x[n - i] = ch;
  14.     }

  15.         for (i = 0;i <= n;i++)
  16.                 printf("%c", x[i]);
  17.         printf("\n");
  18.         return 0;
  19. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-3 11:29:13 | 显示全部楼层
反序存放,不是反序输出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-3 11:31:24 | 显示全部楼层
巴巴鲁 发表于 2020-12-3 11:29
反序存放,不是反序输出

学校OJ是根据输入和输出判断的,而且问题是出在运行错误,应该不是这个问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-3 11:59:43 | 显示全部楼层    本楼为最佳答案   
本帖最后由 风过无痕1989 于 2020-12-3 12:04 编辑
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main() {
  4.         char ch, x[81];
  5.         int i, n;
  6.         for (i = 0;(x[i] = getchar()) != '\n';i++);
  7. /*     x[i + 1] = '\0';        */                              // 此行语句没有用处,可删除
  8.         n  = i - 1;
  9.         for (i = n;i >= n / 2;i--)
  10.         {
  11.                 ch = x[i];
  12.             x[i] = x[n - i];
  13.             x[n - i] = ch;
  14.     }

  15.         for (i = 0;i <= n;i++)
  16.                 printf("%c", x[i]);
  17.         printf("\n");
  18.         return 0;
  19. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-3 13:17:51 | 显示全部楼层
问题本人已解决,将'\n'换成EOF即可,估计是因为学校的测试数据里没有换行符导致数组溢出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-11 04:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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