C語言10個數字判斷問題

2025-01-01 19:05:12 字數 3475 閱讀 6929

1樓:

這是個遞迴的演算法雖然複雜度比較高,但能解決問題。

如果要寫成遞推的話可能比較麻煩,既然問題規模不大就不去耗費精力了。

#include

void getnumber(int n, int num, int mod_3_0,int mod_3_1, int mod_3_2,int value, int *output)

if (num !=0)

output[n] =num;

value -=num;

int i;

if (n < 5)

for (i = num + 1; i <=10; i++)

if (i % 3 ==0 &&mod_3_0 > 0)

getnumber(n + 1, i, mod_3_0 - 1, mod_3_1, mod_3_2, value, output);

else if (i % 3 ==1 &&mod_3_1 > 0)

getnumber(n + 1, i, mod_3_0, mod_3_1 - 1, mod_3_2, value, output);

else if (i % 3 ==2 &&mod_3_2 > 0)

getnumber(n + 1, i, mod_3_0, mod_3_1, mod_3_2 - 1, value, output);

if (n ==5 &&value >=0 &&value <=4)

for (i = 0; i < 5; i++)printf("%d-",output[i]);

printf("%d", output[5]);

return ;

if (num !=0) value +=num;

int main()

int output[6];

getnumber(-1, 0, 2, 2, 2, 26, output);

return 0;

2樓:網友

你看下面的**是不是解決了你的問題:

note:your choice is c ide */#include ""

void main()

int i,j,k,l,n,m;

int yu0=0,yu1=0,yu2=0;

for(i=1;i<=5;i++)

for(j=i+1;j<=6;j++)

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

for(l=k+1;l<=8;l++)

for(n=l+1;n<=9;n++)

for(m=n+1;m<=10;m++)

if(m%3==0)

yu0++;

if(m%3==1)

yu1++;

if(m%3==2)

yu2++;

if(i%3==0)

yu0++;

if(i%3==1)

yu1++;

if(i%3==2)

yu2++;

if(j%3==0)

yu0++;

if(j%3==1)

yu1++;

if(j%3==2)

yu2++;

if(k%3==0)

yu0++;

if(k%3==1)

yu1++;

if(k%3==2)

yu2++;

if(l%3==0)

yu0++;

if(l%3==1)

yu1++;

if(l%3==2)

yu2++;

if(n%3==0)

yu0++;

if(n%3==1)

yu1++;

if(n%3==2)

yu2++;

21&&i+j+k+l+n+m<27)

printf("%d-%d-%d-%d-%d-%d",i,j,k,l,n,m);

yu0=0;yu1=0;yu2=0;

c語言中如何判斷輸入的是否數字?

3樓:開沙肇皛

這個程式不難寫,我告訴你思路和演算法,你根據這個編寫**就可以了。

1.由於你輸入的這一串資料可能都為數字,也可能包含其它字元,所以首先用一字元陣列存放這個字串。

2.用strlen函式計算這個字串的長度,在此基礎上藉助for迴圈或while迴圈實現陣列元素的遍歷。

3.遍歷每乙個元素的同時用if語句判斷這個元素的ascii碼所在的範圍是否在48~57之間,如果不在則中止迴圈,輸出判斷結果(即不是數字)。

4.如果最後乙個元素仍然是數字,則整個字串則為乙個大數。

4樓:逮長逸穆驪

你寫的這個有太多的錯誤。至於定義陣列的時候a[n]這種錯誤我就不講了。

還有在迴圈裡面(i=1;in沒賦值就呼叫的錯誤我也不講了。

講你的死迴圈問題。

你沒有給迴圈加乙個限制條件。

根據你continue的意思我暫時理解為。

如果輸入的不是數字。

那麼一直迴圈。

重新輸入。一直到你輸入的是數字為止跳出迴圈。

對嗎?while(1)

break;

這樣就可以。

如果輸入的是數字。

scanf的返回值為1

那麼迴圈的第一次。

不會進入if(ret==0)

也就是說。如果輸入的是數字。

直接執行break跳出迴圈。

如果輸入的不是數字。

迴圈的時候執行語句if(ret==0)

然後執行continue

continue的意思是跳出當前迴圈繼續下一次迴圈。

即執行到continue之後從新迴圈而不會執行到break以此類推。只要你輸入的不是數字。

則永遠迴圈。

輸入的如果是數字。

跳出迴圈。執行完畢。

大哥。如果小弟正常。

給點分吧。多謝。

另外對於一樓的同學。

我想你肯定不知道。

scanf("%d",&i)

如果你輸入的是int型則返回1

否則返回0換句話說即你輸入的型別和scanf()裡面預先定義的型別一致。

則返回1否則返回0

thankyou

5樓:忻璧計清馨

#include

voidmain()

printf("請輸入1~3000年的任意一年:")

c語言中數字問題

6樓:仝涵易

題目已經假定乙個整數佔4個位元組了,當然選d啊。

7樓:網友

選 d ;

型別*陣列長度。

比如:int a[10] sizeof(a)=4*10

8樓:網友

整形陣列求大小:sizeof(陣列名)。

sizeof(a) 為 20

c語言函式問題第10題,C語言問題求解第10題

sub1函式內會交換形參a b的值,但由於a b是形參且並非傳地址,故fun函式執行完後,對實參不會有影響。sub1 a,b 執行完後,a b仍然會維持原來的值不變,即a的值仍然是 a b的值仍然是 b putchar a putchar b 為輸出字元型變數a b的值,即輸出 ab 綜上所述,第1...

問個數位電路的問題,一個數位電路問題

高 低電平有個門限值 閥值 再代入 rc 充放電公式計算時間,麻煩。工程的問題多數可以通過實驗得出結果,產生一個近似的公式,對於電路設計精度足夠了。振盪器晶片手冊會給出計算公式。一般設計時鐘電路是不用閘電路的,專用晶片的效能比通用晶片好。如採用運放做比較器就不是好方法。一個數位電路問題 如果四捨五入...

C語言,小問題,C語言,一個小問題

n在c語言中的意思是 回車 照著麼說的,while c getchar n 就是 當 從鍵盤讀取一個值,並賦值給c 不等於回車 說白了就是當你輸入回車 就是恩一下 enter 鍵 時,這一段 就執行結束了。例如 while c getchar n 就是說當你敲入回車後,中的東西就不讀了 當然回車之前...