C語言出錯驗證3位黑洞數,C語言出錯驗證4位黑洞數

2022-09-23 09:21:52 字數 5891 閱讀 5687

1樓:聽不清啊

#include

int sub(int i)

int p,k,j,h,max,min,a[4];

a[1]=i/100;

a[2]=(i/10)%10;a[3]=i%10;

for(k=1;k<=2;k++)

for(j=k+1;j<=3;j++)

if(a[k]

max=a[1]*100+a[2]*10+a[3];

min=a[3]*100+a[2]*10+a[1];

p=max-min;

if(p<100 && p/10==p%10) p=0;

return (p);

int main()

int n,n1,y,i,m;

printf("\n驗證任意3位數'重排求差'操作,可於495或0.");

for(y=0,n=101;n<=999;n++)        //修改n的取值範圍,可求出最多的轉換次數

i=n;m=0;

while(i!=495 && i!=0)if(m>y)

printf("\n 當n=%d時,最多轉換%d次可至495或0:",n1,y);

printf("\n %d",n1);

i=n1;

while(i!=495 && i!=0)return 0;

2樓:自我程式設計

int sub(int i)函式需要宣告,你寫在main函式後面,又沒有宣告。

#include

int sub(int i);

void main()

c語言出錯驗證4位黑洞數

3樓:聽不清啊

#include

int sub(int i)

int p,k,j,h,max,min,a[5];

a[1]=i/1000;a[2]=(i/100)%10;

a[3]=(i%100)/10;a[4]=i%10;

for(k=1;k<=3;k++)

for(j=k+1;j<=4;j++)

if(a[k]

max=a[1]*1000+a[2]*100+a[3]*10+a[4];

min=a[4]*1000+a[3]*100+a[2]*10+a[1];

p=max-min;

if(p<1000 && p/100==(p/10)%10 && p/100==p%10)

p=0;

return (p);

int main()

int n,n1,y,i,m;

printf("\n所有4位數經'重排求差'操作,可至6174或0.");

for(y=0,n=1000;n<=9999;n++)

i=n;m=0;

while(i!=6174 && i!=0)

if(m>y)

printf("\n當n=%d時,最多%d次可至6174或0:",n1,y);

printf("\n%d",n1);

i=n1;

while(i!=6174 && i!=0)

return 0;

c語言 黑洞數

4樓:百度網友

#include

//獲取n重新排列後的最大值和最小值,

//type==0返回最小值, type==1返回最大值int get_max_min(int n, int type)}}else}}

return num;

}int main(void)

return 0;}

5樓:匿名使用者

這個應該比較容易理解,,,qwq

#include

int maxof3(int, int, int);

int minof3(int, int, int);

int main()

}return 0;

}/*求三位數重排後的最大數*/

int maxof3(int a,int b,int c)if(a

if(b

return(a*100+b*10+c);

}/*求三位數重排後的最小數*/

int minof3(int a, int b, int c)if(a

if(b

return(c*100+b*10+a);}

6樓:it孤鶩

#include

int main(void)

int number,x,y,a,b,c,t,i,max,min,mid;

scanf("%d",&number);i=1;

while(number!=495){

a=number/100;

b=number%100/10;

c=number%10;

mid=a+b+c;

max=a>b?a:b; max=max>c?max:c;

min=a>b?b:a; min=min>c?c:min;

mid=mid-min-max;

x=max*100+mid*10+min;

y=min*100+mid*10+max;

number=x-y;

printf("%d: %d - %d = %d\n",i,x,y,number);

i++;

return 0;

7樓:張咲帥

黑洞數也稱為陷阱數,且都能被9整除。

8樓:百度網友

如果三位數裡有兩位相同程式就錯了

c語言,任何一個數字不全相同的三位數,經有限次“重排求差”操作,總得到495。所得的495即為三位黑洞數

9樓:百度網友

/*重寫了一個,因為用你的變數定義排序很麻煩,而且你的變數使用有點兒亂*/

#include

//#include "stdlib.h"

int main(void)

//按位降序,並求出最大數和最小數

max=0;

min=0;

k=1;

for(i=0;i<=2;i++)

}max=max*10+d[i];

min=min+d[i]*k;

k=k*10;

}n=max-min;

printf("%d-%d=%d\n",max,min,n);

//system("pause");

num+=1;

}while(n!=495);

printf("number:%d",num);

return 0;}

10樓:雲帆00滄海

先提取三位數的個、十、百位,判斷個、十、百位不相等。進行排序比較,找出最大,最小數。再次組合成三位數,判斷組合的三位數是不是495.大概思路就是這樣了

11樓:讉莣熔燃氺

這個用陣列來做,給你提供一個思路吧:

int a[5],b[5]; //分別來存重排後的最大 最小數的 個 十 百 位。

int max,min。 //把a,b陣列裡的存的3個數轉化為3位數max ,min。

判斷max-min是否為495,不是的話再重新操作。

c語言中的一道題數字黑洞:

12樓:百度網友

沒有去考慮你的邏輯,但至少有一處你錯了,

main函式中,陣列a沒有指定大小,不能a[n]企圖通過輸入的n隨時改變陣列的大小。必須在執行前就指定。

c語言題,31、任意輸入一個3的倍數的正整數,呼叫函式fun31()利用m 驗證“數字黑洞153”

關於黑洞數的程式設計(學不好c語言的娃兒,求教)

13樓:匿名使用者

上面的回答很正確,要改一下這兒:

if(a>b)swap(&a,&b);

if(a>c)swap(&a,&c);

if(b>c)swap(&b,&c);

14樓:匿名使用者

if(a>b)swap(&a,&b);

if(b>c)swap(&b,&c);

if(a>c)swap(&a,&c);

// 應該改成這樣

if(a>b)swap(&a,&b);

if(a>c)swap(&a,&c);//確定a最小if(b>c)swap(&b,&c);//確定b第2小,因此y應該是組合成的最小三位數

求c語言高手幫忙,做一個程式,求出1~50000內的所有“黑洞數”。謝謝了!(內有關於黑洞數的東西)

15樓:匿名使用者

想了很久,在vc++6.0中除錯了差不多半天,現在把求三位數和四位數中的黑洞數的程式寫出來了(按定義可知一位和二位數中不存在黑洞數),現在貼出來供大家批評指正:(五位數中黑洞數的求解**待續)

#include

#include

using namespace std;

int maxof3(int,int,int); //求三位數重排後的最大數

int minof3(int,int,int); //求三位數重排後的最小數

int maxof4(int,int,int,int); //求4位數重排後的最大數

int minof4(int,int,int,int); //求4位數重排後的最大數

void main()

if(c>t)

else

}return(a*100+b*10+c);

}int minof3(int a,int b,int c)

if(c>t)

else

}return(c*100+b*10+a);

}int maxof4(int a,int b,int c,int d)

cout<<"maxof5(5,2,1,8,3) is : "<

cout<<"minof5(5,2,1,8,3) is : "<

//數是否正確

}int maxof5(int a,int b,int c,int d,int e)

if(c

if(a

if(b

if(b

if(e<=d)

{}else

if(d<=e&&e

else

if(c<=e&&e

else

if(b<=e&&e

else

if(a<=e)

else

return(a*10000+b*1000+c*100+d*10+e);

}int minof5(int a,int b,int c,int d,int e)

if(c

if(a

if(b

if(b

if(e<=d)

{}else

if(d<=e&&e

else

if(c<=e&&e

else

if(b<=e&&e

else

if(a<=e)

else

return(e*10000+d*1000+c*100+b*10+a);}

16樓:匿名使用者

醬油!想看看答案。。