鱼C论坛

 找回密码
 立即注册
查看: 862|回复: 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
不是很明白你说的是什么意思
#include<stdio.h>
int main()
{
        int i, j, c;
        char s[2][5] = { "8980","9198" };

        for (i = 3;i >= 0;i--)
        {
                c = s[0][i] + s[1][i] - 2 * '0';
                s[0][i] = c % 10 + '\0';
        }
        for (i = 0;i <= 1;i++)
        {
                puts(s[i]);
        }
        printf("\n");
       
        for (i = 0;i < 2;i++)             // 输出 s[2][5] 数组
        {
                for (j = 0;j < 4;j++)
                {
                        printf("%.2d ", s[i][j]);
                }
                printf("\n");
        }
        return 0;
}

*************************************************
运行过程(字符 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 . . .
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

main()
{
        int i;
        char c;
        for (i=0; (c=getchar())!='\n';i+=c);    // 输入字符,直到接收到回车键为止
        {
                printf("%c",c);     // 输出接收到的字符
        }
}

i+=c ?是 i++ 吧?若真是 i+=c 这个程序就有些问题了,需要运行进行验证,到底输出了什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

emmm,小甲鱼视频上面是 i+=c
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

有点儿奇怪,直接加ASCII码强制转换为整型好像也说得过去
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


我前两天回答过一题目,ASCII 是不能参与整型的运算的(通过运行得出的结论)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

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

没注意过这个细节
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

i+=c 和 i++ 没有任何区别,因为 i 根本没用。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

不是很明白你说的是什么意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

        for (i = 3;i >= 0;i--)
        {
                c = s[0][i] + s[1][i] - 2 * '0';
                s[0][i] = c % 10 + '\0';
        }
        for (i = 0;i <= 1;i++)
        {
                puts(s[i]);
        }
        printf("\n");
       
        for (i = 0;i < 2;i++)             // 输出 s[2][5] 数组
        {
                for (j = 0;j < 4;j++)
                {
                        printf("%.2d ", s[i][j]);
                }
                printf("\n");
        }
        return 0;
}

*************************************************
运行过程(字符 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 . . .
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

错误解释。把题目发出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


早上就在上边呀。人家问的是 '0' 的值是多少
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

你可真是草率啊,
i = 3 时
    c = s[0][3] + s[1][3] - 2 * '0'
       = '0' + '8' - 2 * '0'
       = '0' - '0' + '8' - '0'
       = ('0' - '0') + ('8' - '0')
       = 0 + 8
       = 8
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

至于“通过运行得出的结论”,我希望你在发表之前可以先思考一下。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

我回答问题之前,都是通过运行程序的,按程序运行说话,不敢草率。没有经过软件运行的程序,我也从不说话。怕误人子弟
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

看看你9楼发的解释。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

那个解释有什么问题?软件一步一步是那么运行的,你可以试试,看是不是那样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

不是,你可以看一下12楼。
至于“ASCII 是不能参与整型的运算的”,这个一听就是错的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

学习了,被 0 给骗了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 12:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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