鱼C论坛

 找回密码
 立即注册
查看: 1081|回复: 11

[已解决]这程序有几个问题搞不懂

[复制链接]
发表于 2020-3-2 09:29:49 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 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()有什么区别
最佳答案
2020-3-2 10:32:20
2862593577 发表于 2020-3-2 10:29
明白了,最后一个问题:a = num % 10;        //原4位数的个位,转换后4位数的千位
                    ...

用Python给你简单写一下:
  1. >>> # 设num为1596
  2. >>> num = 1596
  3. >>> num % 10
  4. 6
  5. >>> num // 10 % 10
  6. 9
  7. >>> num // 100 % 10
  8. 5
  9. >>> num // 1000
  10. 1
  11. >>> # 分别是个,十,百,千位
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-2 09:41:19 | 显示全部楼层
num 是没有符号的和num_r  有符号的如-10
void main()和int main()一个可以不用返回值,一个返回一个整数类型的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

不用返回值,程序后面是printf(“*****结束***)就可以是吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-2 10:19:22 | 显示全部楼层
2862593577 发表于 2020-3-2 09:57
不用返回值,程序后面是printf(“*****结束***)就可以是吗?

就是不用return了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-2 10:23:27 | 显示全部楼层
ByTime 发表于 2020-3-2 10:19
就是不用return了

不用return,那用什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-2 10:24:34 | 显示全部楼层
2862593577 发表于 2020-3-2 10:23
不用return,那用什么?

就是什么都不用啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-2 10:26:02 | 显示全部楼层
2862593577 发表于 2020-3-2 10:23
不用return,那用什么?

但是通常是return 0的,所以建议用int main
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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;  //转化后的四位数
这几个程序我看不懂表达什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-2 10:32:20 | 显示全部楼层    本楼为最佳答案   
2862593577 发表于 2020-3-2 10:29
明白了,最后一个问题:a = num % 10;        //原4位数的个位,转换后4位数的千位
                    ...

用Python给你简单写一下:
  1. >>> # 设num为1596
  2. >>> num = 1596
  3. >>> num % 10
  4. 6
  5. >>> num // 10 % 10
  6. 9
  7. >>> num // 100 % 10
  8. 5
  9. >>> num // 1000
  10. 1
  11. >>> # 分别是个,十,百,千位
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-2 10:34:17 | 显示全部楼层
qiuyouzhi 发表于 2020-3-2 10:32
用Python给你简单写一下:

还是看不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-2 10:37:24 | 显示全部楼层

num % 10

>>> num // 10 % 10

>>> num // 100 % 10

>>> num // 1000
num后面的数看不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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(就剩一位了,不好往地下算了,所以他就是最高位)
然后他最后一步程序就是知道个十百千位求出这个数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 11:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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