交流学习数据分离分析
这个代码看了三个小时才理解,要真正学会不知道还要多久啊?欢迎各位大佬亲临来指导!
#include<stdio.h>
#include<stdlib.h>
int getwei(int num)//(2)(5)接收初始化数据和下面执行后的值,接收是接收值,再被返回值覆盖
{
int wei = 0;
for (int inum = num; inum; inum /= 10) //(3)计算位数,num赋值给了inum,num不变
{
wei++;
}
return wei;//(4)把结果wei的值返回给(int num)再次调用getwei()就是返回的数据
}
int get10(int n) //(14)(18)最后循环计算用的
{
int res = 1;
for (int i = 0; i < n; i++)//(15)从0到n进行循环
{
res*= 10; //(16)不断相乘
}
return res; //(17)返回值给赋予(int n)
}
int main()
{
int num;
scanf("%d",&num);
//初始化num值
printf("\n你输入的数是%d",num);//(1)num的值被赋予给了getwei(),并跳转到
int wei = getwei(num); //(6)调用getwei()赋值给wei
int lastres = 0;//(7)设定值保存最终结果
int inum=num; //(8)inum这时候等于初始化num的值,num值不变
for (int i = 0; i < wei; i++)
//(9)计算出的位(wei)有几次,下面就执行几次。依次取出了初始化输入的每一位数
{
int shu; //(10)用shu取出位数
shu = inum % 10; //(11)这里等于取出了初始化num的最后一位,比如123取出最后一位3,就等于120
inum/=10; //(12)这里等于上面取出最后一位数的值在除以10
lastres += shu*get10(wei-1-i);
//(13)第一步括号内(wei)位数减1减每次循环i加1的值进行get10函数内运算
//(19)第二步用循环取出的值去乘以第一步循环计算的值,在通过赋值的运算得到结果
}
printf("\n结果等于%d", lastres);//(20)计算的结果等于输入数据的相反数
system("pause");
}