鱼C论坛

 找回密码
 立即注册
查看: 325|回复: 2

[已解决]13课课后作业

[复制链接]
发表于 2024-1-31 18:02:08 | 显示全部楼层 |阅读模式

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

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

x
  1. #include <stdio.h>

  2. int main()
  3. {
  4.         int ch;
  5.         int num = 0;

  6.         printf("请输入待转换的字符串:");

  7.         do
  8.         {
  9.                 ch = getchar();

  10.                 if (ch >= '0' && ch <= '9')
  11.                 {
  12.                         num = 10 * num + (ch - '0');//看不懂
  13.                 }
  14.                 else
  15.                 {
  16.                         if (num)
  17.                         {
  18.                                 break; // 如果已有数字,则退出循环
  19.                         }
  20.                 }

  21.         }
  22.         while (ch != '\n');

  23.         printf("结果是:%d\n", num);

  24.         return 0;
  25. }
复制代码

请问第十六行是什么意思,谢谢
最佳答案
2024-1-31 20:54:28
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.         char c , s[] = {'1' , '3' , '5' , '4' , '2' , '0' , '\0'} ;
  5.         int n                                                     ;
  6.         n = 0                                                     ;
  7.         c = s[0] - '0'                                            ; c = '1' - '0' = 1
  8.         n = n * 10 + c                                            ; n = 0 * 10 + 1 = 1
  9.         c = s[1] - '0'                                            ; c = '3' - '0' = 3
  10.         n = n * 10 + c                                            ; n = 1 * 10 + 3 = 13
  11.         c = s[2] - '0'                                            ; c = '5' - '0' = 5
  12.         n = n * 10 + c                                            ; n = 13 * 10 + 5 = 135
  13.         c = s[3] - '0'                                            ; c = '4' - '0' = 4
  14.         n = n * 10 + c                                            ; n = 135 * 10 + 4 = 1354
  15.         c = s[4] - '0'                                            ; c = '2' - '0' = 2
  16.         n = n * 10 + c                                            ; n = 1354 * 10 + 2 = 13542
  17.         c = s[5] - '0'                                            ; c = '0' - '0' = 0
  18.         n = n * 10 + c                                            ; n = 13542 * 10 + 0 = 135420
  19.         printf("%d\n" , n)                                        ;
  20. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-1-31 18:02:40 | 显示全部楼层
主要问题:
1. `getchar()` 函数只能读取一个字符,如果需要输入多个字符组成字符串,可以使用 `gets()` 函数或者 `fgets()` 函数。
2. 缺少处理换行符的代码。

修改后的代码如下:

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     char str[100];
  5.     int num = 0;

  6.     printf("请输入待转换的字符串:");
  7.     gets(str);

  8.     for (int i = 0; str[i] != '\0'; i++) {
  9.         if (str[i] >= '0' && str[i] <= '9') { // 判断字符是否是数字
  10.             num = num * 10 + (str[i] - '0'); // 将字符转换成数字
  11.         }
  12.     }

  13.     printf("转换后的数字为:%d\n", num);

  14.     return 0;
  15. }
复制代码


修改说明:
1. 将 `ch` 改为字符数组 `str`,并增加一个大小为 100 的数组来存储待转换的字符串。
2. 使用 `gets()` 函数来读取字符串。
3. 使用循环遍历字符串,判断每个字符是否为数字,并将其转换为数值。
4. 输出转换后的数字。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-31 20:54:28 | 显示全部楼层    本楼为最佳答案   
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.         char c , s[] = {'1' , '3' , '5' , '4' , '2' , '0' , '\0'} ;
  5.         int n                                                     ;
  6.         n = 0                                                     ;
  7.         c = s[0] - '0'                                            ; c = '1' - '0' = 1
  8.         n = n * 10 + c                                            ; n = 0 * 10 + 1 = 1
  9.         c = s[1] - '0'                                            ; c = '3' - '0' = 3
  10.         n = n * 10 + c                                            ; n = 1 * 10 + 3 = 13
  11.         c = s[2] - '0'                                            ; c = '5' - '0' = 5
  12.         n = n * 10 + c                                            ; n = 13 * 10 + 5 = 135
  13.         c = s[3] - '0'                                            ; c = '4' - '0' = 4
  14.         n = n * 10 + c                                            ; n = 135 * 10 + 4 = 1354
  15.         c = s[4] - '0'                                            ; c = '2' - '0' = 2
  16.         n = n * 10 + c                                            ; n = 1354 * 10 + 2 = 13542
  17.         c = s[5] - '0'                                            ; c = '0' - '0' = 0
  18.         n = n * 10 + c                                            ; n = 13542 * 10 + 0 = 135420
  19.         printf("%d\n" , n)                                        ;
  20. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 22:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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