鱼C论坛

 找回密码
 立即注册
查看: 992|回复: 17

[已解决]这个代码 什么意思?

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

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

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

x
#include<stdio.h>

main()
{
        int i;
        char c;
        for (i=0; (c=getchar())!='\n';i+=c);
        {
                printf("%c",c);
        }
}
最佳答案
2020-12-3 23:48:02
永恒的蓝色梦想 发表于 2020-12-3 23:24
不是很明白你说的是什么意思
  1. #include<stdio.h>
  2. int main()
  3. {
  4.         int i, j, c;
  5.         char s[2][5] = { "8980","9198" };

  6.         for (i = 3;i >= 0;i--)
  7.         {
  8.                 c = s[0][i] + s[1][i] - 2 * '0';
  9.                 s[0][i] = c % 10 + '\0';
  10.         }
  11.         for (i = 0;i <= 1;i++)
  12.         {
  13.                 puts(s[i]);
  14.         }
  15.         printf("\n");
  16.       
  17.         for (i = 0;i < 2;i++)             // 输出 s[2][5] 数组
  18.         {
  19.                 for (j = 0;j < 4;j++)
  20.                 {
  21.                         printf("%.2d ", s[i][j]);
  22.                 }
  23.                 printf("\n");
  24.         }
  25.         return 0;
  26. }
复制代码


*************************************************
运行过程(字符 0 没有参与运算):
i = 3 时
    c = s[0][3] + s[1][3] - 2 * '0'
       = 0 + 8 - 2 * '0'
       = 8 - 2 * '0'
       = 8
               
    s[0][3] = c % 10 + '\0'
            = 8 % 10 + '\0'
            = 8

i = 2 时
    c = s[0][2] + s[1][2] - 2 * '0'
       = 8 + 9 - 2 * '0'
       = 17 - 2 * '0'
       = 17
               
    s[0][3] = c % 10 + '\0'
            = 17 % 10 + '\0'
            = 7

i = 1 时
    c = s[0][1] + s[1][1] - 2 * '0'
       = 9 + 1 - 2 * '0'
       = 10 - 2 * '0'
       = 10
               
    s[0][3] = c % 10 + '\0'
            = 10 % 10 + '\0'
            = 0

i = 0 时
    c = s[0][0] + s[1][0] - 2 * '0'
       = 8 + 9 - 2 * '0'
       = 17 - 2 * '0'
       = 17
               
    s[0][3] = c % 10 + '\0'
            = 17 % 10 + '\0'
            = 7
运行结果:

9198

07 00 07 08
57 49 57 56          <- - - - - -     9 0 9 8 的 ASCII码
Press any key to continue . . .
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-3 22:08:03 | 显示全部楼层
本帖最后由 风过无痕1989 于 2020-12-3 22:12 编辑

  1. #include<stdio.h>

  2. main()
  3. {
  4.         int i;
  5.         char c;
  6.         for (i=0; (c=getchar())!='\n';i+=c);    // 输入字符,直到接收到回车键为止
  7.         {
  8.                 printf("%c",c);     // 输出接收到的字符
  9.         }
  10. }
复制代码


i+=c ?是 i++ 吧?若真是 i+=c 这个程序就有些问题了,需要运行进行验证,到底输出了什么
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-3 22:14:03 | 显示全部楼层
风过无痕1989 发表于 2020-12-3 22:08
i+=c ?是 i++ 吧?若真是 i+=c 这个程序就有些问题了,需要运行进行验证,到底输出了什么

emmm,小甲鱼视频上面是 i+=c
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-3 22:15:51 | 显示全部楼层
风过无痕1989 发表于 2020-12-3 22:08
i+=c ?是 i++ 吧?若真是 i+=c 这个程序就有些问题了,需要运行进行验证,到底输出了什么

有点儿奇怪,直接加ASCII码强制转换为整型好像也说得过去
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-3 22:22:55 | 显示全部楼层
昨非 发表于 2020-12-3 22:15
有点儿奇怪,直接加ASCII码强制转换为整型好像也说得过去


我前两天回答过一题目,ASCII 是不能参与整型的运算的(通过运行得出的结论)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2020-12-3 22:23:47 | 显示全部楼层
风过无痕1989 发表于 2020-12-3 22:22
我前两天回答过一题目,ASCII 是不能参与整型的运算的(通过运行得出的结论)

没注意过这个细节
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-3 23:23:26 | 显示全部楼层
风过无痕1989 发表于 2020-12-3 22:08
i+=c ?是 i++ 吧?若真是 i+=c 这个程序就有些问题了,需要运行进行验证,到底输出了什么

i+=c 和 i++ 没有任何区别,因为 i 根本没用。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-3 23:24:03 | 显示全部楼层
风过无痕1989 发表于 2020-12-3 22:22
我前两天回答过一题目,ASCII 是不能参与整型的运算的(通过运行得出的结论)

不是很明白你说的是什么意思
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-3 23:48:02 | 显示全部楼层    本楼为最佳答案   
永恒的蓝色梦想 发表于 2020-12-3 23:24
不是很明白你说的是什么意思
  1. #include<stdio.h>
  2. int main()
  3. {
  4.         int i, j, c;
  5.         char s[2][5] = { "8980","9198" };

  6.         for (i = 3;i >= 0;i--)
  7.         {
  8.                 c = s[0][i] + s[1][i] - 2 * '0';
  9.                 s[0][i] = c % 10 + '\0';
  10.         }
  11.         for (i = 0;i <= 1;i++)
  12.         {
  13.                 puts(s[i]);
  14.         }
  15.         printf("\n");
  16.       
  17.         for (i = 0;i < 2;i++)             // 输出 s[2][5] 数组
  18.         {
  19.                 for (j = 0;j < 4;j++)
  20.                 {
  21.                         printf("%.2d ", s[i][j]);
  22.                 }
  23.                 printf("\n");
  24.         }
  25.         return 0;
  26. }
复制代码


*************************************************
运行过程(字符 0 没有参与运算):
i = 3 时
    c = s[0][3] + s[1][3] - 2 * '0'
       = 0 + 8 - 2 * '0'
       = 8 - 2 * '0'
       = 8
               
    s[0][3] = c % 10 + '\0'
            = 8 % 10 + '\0'
            = 8

i = 2 时
    c = s[0][2] + s[1][2] - 2 * '0'
       = 8 + 9 - 2 * '0'
       = 17 - 2 * '0'
       = 17
               
    s[0][3] = c % 10 + '\0'
            = 17 % 10 + '\0'
            = 7

i = 1 时
    c = s[0][1] + s[1][1] - 2 * '0'
       = 9 + 1 - 2 * '0'
       = 10 - 2 * '0'
       = 10
               
    s[0][3] = c % 10 + '\0'
            = 10 % 10 + '\0'
            = 0

i = 0 时
    c = s[0][0] + s[1][0] - 2 * '0'
       = 8 + 9 - 2 * '0'
       = 17 - 2 * '0'
       = 17
               
    s[0][3] = c % 10 + '\0'
            = 17 % 10 + '\0'
            = 7
运行结果:

9198

07 00 07 08
57 49 57 56          <- - - - - -     9 0 9 8 的 ASCII码
Press any key to continue . . .
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-4 20:39:37 | 显示全部楼层
风过无痕1989 发表于 2020-12-3 23:48
*************************************************
运行过程(字符 0 没有参与运算):
i = 3 时

错误解释。把题目发出来
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-4 20:44:42 | 显示全部楼层
本帖最后由 风过无痕1989 于 2020-12-4 20:46 编辑
永恒的蓝色梦想 发表于 2020-12-4 20:39
错误解释。把题目发出来


早上就在上边呀。人家问的是 '0' 的值是多少
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-4 21:16:00 | 显示全部楼层
风过无痕1989 发表于 2020-12-3 23:48
*************************************************
运行过程(字符 0 没有参与运算):
i = 3 时

你可真是草率啊,
  1. i = 3 时
  2.     c = s[0][3] + s[1][3] - 2 * '0'
  3.        = '0' + '8' - 2 * '0'
  4.        = '0' - '0' + '8' - '0'
  5.        = ('0' - '0') + ('8' - '0')
  6.        = 0 + 8
  7.        = 8
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-4 21:26:16 | 显示全部楼层
风过无痕1989 发表于 2020-12-3 22:22
我前两天回答过一题目,ASCII 是不能参与整型的运算的(通过运行得出的结论)

至于“通过运行得出的结论”,我希望你在发表之前可以先思考一下。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-4 21:38:38 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-12-4 21:26
至于“通过运行得出的结论”,我希望你在发表之前可以先思考一下。

有什么问题,你指出来,我学习一下

我回答问题之前,都是通过运行程序的,按程序运行说话,不敢草率。没有经过软件运行的程序,我也从不说话。怕误人子弟
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-4 21:43:02 | 显示全部楼层
风过无痕1989 发表于 2020-12-4 21:38
有什么问题,你指出来,我学习一下

我回答问题之前,都是通过运行程序的,按程序运行说话,不敢草率。 ...

看看你9楼发的解释。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-4 22:18:23 | 显示全部楼层

那个解释有什么问题?软件一步一步是那么运行的,你可以试试,看是不是那样的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-4 22:20:32 | 显示全部楼层
风过无痕1989 发表于 2020-12-4 22:18
那个解释有什么问题?软件一步一步是那么运行的,你可以试试,看是不是那样的

不是,你可以看一下12楼。
至于“ASCII 是不能参与整型的运算的”,这个一听就是错的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-4 22:50:35 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-12-4 22:20
不是,你可以看一下12楼。
至于“ASCII 是不能参与整型的运算的”,这个一听就是错的。

学习了,被 0 给骗了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-8 21:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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