关于c语言指针变量做函数参数中题目的一些疑问

题目如下:我的问题都在代码的备注里了,求解答!!谢谢!!!
验证卡布列克运算。即:任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律:
(1)将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数;
(2)将组成该四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数(如果四个数字中含有0,则得到的数不足四位);
(3)求两个数的差,得到一个新的四位数(高位零保留)。
重复以上过程,最后得到的结果总是6174。这个数被称为卡布列克常数。请编写一个递归函数,完成以上的卡布列克运算。

**输入格式要求:"%d" 提示信息:"Enter number:"
**输出格式要求:" [%d]:%d-%d=%d\n"
程序运行示例如下:
Enter number: 1234

#include <stdio.h>
int count=0;
main()
{
    int n;
    printf("Enter number:");
    scanf("%d",&n);
    vr6174(n);
}
vr6174(int num) //为什么函数前面没有类型?这样也可以吗?
{
    int each[4],max,min;
    if(num!=6174&&num) //这里的第二个num是什么意思?
    {
        parse_sort(num,each);
        max_min(each,&max,&min);
        num=max-min;
        printf(" [%d]:%d-%d=%d\n",++count,max,min,num);
        vr6174(num);
    }
}
parse_sort(int num,int *each)
{
    int i,*j,*k,temp;
    for(i=0;i<=4;i++)
    {
        j=each+3-i;//each是什么?j又是什么?
        *j=num%10;
        num/=10;
    }
    for(i=0;i<3;i++)
        for(j=each,k=each+1;j<each+3-i;j++,k++)
            if(*j>*k)
            {   temp=*j; *j=*k; *k=temp;}
    return; //return什么???
}
max_min(int *each,int *max,int *min)
{
    int *i;
    *min=0;
    for(i=each;i<each+4;i++)//这里的each是什么
        *min=*min*10+*i;
    *max=0;
    for(i=each+3;i>=each;i--)
        *max=*max*10+*i;
    return;
}

1个回答

vr6174(int num) //为什么函数前面没有类型?这样也可以吗?
这个是turbo c语言的写法,包括前面的main,如果返回值是void,可以省略
在现在看来,当然不符合规范。

if(num!=6174&&num)
相当于
if(num!=6174&&num != 0

each代表一个数组的指针,它是那个4位数的每一位,开始指向第一个元素。随着循环,然后依次指向每一位

weixin_43408535
-cfyjbjonn 回复操作员马善福(贵阳专业挖机): 好的谢谢
9 个月之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复-cfyjbjonn: return写在函数最后,是可有可无的。这里因为没有返回值,return单纯就是结束函数执行的意思,不返回任何东西
9 个月之前 回复
weixin_43408535
-cfyjbjonn 请问最后的return又是什么意思?
9 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问