2862593577 发表于 2020-3-2 09:29:49

这程序有几个问题搞不懂

本帖最后由 2862593577 于 2020-3-2 10:17 编辑

#include <stdio.h>
void main()
{
        unsigned int num;   //待输入的4位数的整数
        int a, b, c, d, num_r;//a,b,c,d分别为个,十,百,千位的数字
        int i = 0;        //i++,++i
        int j = 10;//j--,--j
        printf("**********开始*********\n");
        printf("请输入一个4位数的整数:\n");
        scanf_s("%d", &num);
        a = num % 10;      //原4位数的个位,转换后4位数的千位
        b = num / 10 % 10;   //原4位数的十位,转换后4位数的百位       
        c = num / 100 % 10;    //原4位数的百位,转换后4位数的十位
        d = num / 1000;         //原4位数的千位,转换后4位数的个位
        num_r = 1000 * a + 100 * b + 10 * c +d;//转化后的四位数
        printf("第一步:i=%d,j=%d; \t你输入的数是%d,数位反转后变成%d\n", i, j, num, num_r);
        printf("第二步:i++=%d,j--=%d;\t你输入的数是%d,数位反转后变成%d\n", i++, j--, num, num_r);
        printf("第三步:i=%d,j=%d; \t你输入的数是%d,数位反转后变成%d\n", i, j, num, num_r);
        printf("第四步:++i=%d,--j=%d;\t你输入的数是%d,数位反转后变成%d\n", ++i, --j, num, num_r);
        printf("第一步:i=%d,j=%d; \t你输入的数是%d,数位反转后变成%d\n", i, j, num, num_r);
        printf("**************结束*************\n");

}


                   num和num_r表示什么
                   void main()和int main()有什么区别

ByTime 发表于 2020-3-2 09:41:19

num 是没有符号的和num_r有符号的如-10
void main()和int main()一个可以不用返回值,一个返回一个整数类型的

2862593577 发表于 2020-3-2 09:57:58

ByTime 发表于 2020-3-2 09:41
num 是没有符号的和num_r有符号的如-10
void main()和int main()一个可以不用返回值,一个返回一个整数 ...

不用返回值,程序后面是printf(“*****结束***)就可以是吗?

ByTime 发表于 2020-3-2 10:19:22

2862593577 发表于 2020-3-2 09:57
不用返回值,程序后面是printf(“*****结束***)就可以是吗?

就是不用return了

2862593577 发表于 2020-3-2 10:23:27

ByTime 发表于 2020-3-2 10:19
就是不用return了

不用return,那用什么?

qiuyouzhi 发表于 2020-3-2 10:24:34

2862593577 发表于 2020-3-2 10:23
不用return,那用什么?

就是什么都不用啊

qiuyouzhi 发表于 2020-3-2 10:26:02

2862593577 发表于 2020-3-2 10:23
不用return,那用什么?

但是通常是return 0的,所以建议用int main

2862593577 发表于 2020-3-2 10:29:36

qiuyouzhi 发表于 2020-3-2 10:26
但是通常是return 0的,所以建议用int main

明白了,最后一个问题:a = num % 10;      //原4位数的个位,转换后4位数的千位
                                 b = num / 10 % 10;   //原4位数的十位,转换后4位数的百位      
                                 c = num / 100 % 10;    //原4位数的百位,转换后4位数的十位
                                 d = num / 1000;         //原4位数的千位,转换后4位数的个位
                                    num_r = 1000 * a + 100 * b + 10 * c +d;//转化后的四位数
这几个程序我看不懂表达什么

qiuyouzhi 发表于 2020-3-2 10:32:20

2862593577 发表于 2020-3-2 10:29
明白了,最后一个问题:a = num % 10;      //原4位数的个位,转换后4位数的千位
                  ...

用Python给你简单写一下:
>>> # 设num为1596
>>> num = 1596
>>> num % 10
6
>>> num // 10 % 10
9
>>> num // 100 % 10
5
>>> num // 1000
1
>>> # 分别是个,十,百,千位

2862593577 发表于 2020-3-2 10:34:17

qiuyouzhi 发表于 2020-3-2 10:32
用Python给你简单写一下:

还是看不懂

2862593577 发表于 2020-3-2 10:37:24

2862593577 发表于 2020-3-2 10:34
还是看不懂

num % 10

>>> num // 10 % 10

>>> num // 100 % 10

>>> num // 1000
num后面的数看不懂

1239450295 发表于 2020-3-2 11:03:51

2862593577 发表于 2020-3-2 10:29
明白了,最后一个问题:a = num % 10;      //原4位数的个位,转换后4位数的千位
                  ...

首先%10就是这个数除以10余几
所以a=num%10表示这个数除以10余几,就是个位
b=mun/10%10,因为/的优先级比%高,所以先算/,再算%,然后整型的量num/整型的10就是整型的商,不用管小数还是余数,最后%10就是求得十位,下面同理,举个例子吧
假设num=1234
a=num%10=4(个位)
num/10=123
b=num/10%10=3(十位)
num/100=12
c=num/100%10=2(百位)
d=num/1000=1(就剩一位了,不好往地下算了,所以他就是最高位)
然后他最后一步程序就是知道个十百千位求出这个数
页: [1]
查看完整版本: 这程序有几个问题搞不懂