c語言問題,求大神改錯謝謝啦,我是小白

時間 2021-12-19 14:31:22

1樓:伊·梵

1.階乘要用整型

2.for迴圈中的i要用整型

3.for迴圈中的迴圈結束條件是i<=n;但是你在迴圈中不停的在修改n: 應該另外宣告乙個變數儲存乘積

4.整型計算階乘有限制,double型計算階乘精度不夠無法得到正確的值,大數的階乘需要特別的處理

//下面的程式可以計算足夠大的階乘

#include

void main()

printf("n的階乘是=%lf\n",m);}

2樓:匿名使用者

#include

void main()

printf("n的階乘是=%lf\n",sum);}

3樓:幫個忙好不

#include

void main()

printf("n的階乘是=%d\n",sum);}

4樓:匿名使用者

應該在for迴圈外定義乙個變數如double sum=1;讓後for迴圈裡寫sum=sum*i;sum就是n的階乘

原程式for迴圈中n的值每次因為n=n*i發生變化,你在用i<=n判斷就不對了

c語言問題,求大神解決,謝謝啦,我是小白,最好能夠解釋下。

5樓:

想法還是不錯的,把輸入的乙個字串,倒序存到另外乙個字串中,不過實現時有點問題

首先,兩個字元陣列未初始化,用puts函式當字串輸出時,由於可能沒有字串結束符'\0'而造成輸出亂碼的問題

第二,你接收字串的字元陣列str2是從最後乙個元素開始賦值的,一旦你第乙個字元被賦值為'\0'時,你再用puts(str2),不會有任何輸出,所以你首先應該確定你輸入的字串的長度

#include

void main()

,str2[16]=;//字元陣列可以設大一點,同時初始化為全0 char str1[6],str2[6];

int tmp,i,len=0;//加個len變數來統計你輸入的字串的長度

printf("input str1:");

gets(str1);

i=0;

while(str1[i]!=0)

len=i;

i=0;

while(str1[i]!=0)

puts(str2);}

6樓:

#include

void main()

,str2[6]=,tmp[1]=;//只要加初始化然後下面int i;

printf("input str1:");

gets(str1);

i=0;

while(str1[i]!='\0')

puts(str2);

}功能就是反向輸出乙個輸入的字串,長度為6

c語言問題,求大神改錯,謝謝拉,我是小白。。

7樓:匿名使用者

從題目來看,雞兔同籠表示應該有兩種動物,這是乙個數學上的不定方程問題,如果有i表示雞,那麼兔子的個數就是 (40 - 2i)/4 (這個利用普通的數學知識就應該可以得到了)

下面要確定的就是 (40- 2i)/4 必須是個整數才有意義。

所以只需要判斷 (40 - 2i ) % 4 == 0 是否成立就可以了,成立的時候 i就是雞的個數,(40-2i)/4 就是兔子的個數

完整的程式可以寫成

#include

void main()

}printf("一共有=%d種組合",m);}

8樓:百問誰度

其實都各有各的方法啊!而且你題目有說雞兔數能為0嗎?你的for(i=1;i<=20;i++)是說明了兔可以為0,而雞不可以啊~你可以對for(i=1;i<=20;i++)這裡進行修改,得到你想要的結果

#include

void main()

int i,m=0,n;

float j;

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

{n=(40-2*i);

j=n%4;

if(j==0)

{m++;

printf("雞有=%d只\t兔子有=%d只\n",i,n);

printf("一共有=%d種組合",m);

9樓:fbc大壯

可以用方程解答

我的方法比樓上的簡單

程式如下

#include

void main()

int i,j,m=0, n;

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

for(n=1;n<=20;n++)

if(n*4==(40-2*i))

m++;

printf("雞有=%d只 兔子有=%i只\n",i,n);

printf("一共有=%d種組合\n",m);

10樓:匿名使用者

二元二次方程都弱爆了。雞兔同籠新演算法:

已知雞和兔15只,一共有40乙隻腳,問雞和兔各有幾隻,演算法:假如雞和兔訓練有素,一吹口哨,他們就抬起乙隻腳(40-15=25)。再吹一聲他們又抬起乙隻腳,(25-15=10),這時雞都坐在地上了,兔子還用兩隻腳站著。

所以兔子有(10/2=5)只,雞有(15-5=10)只。

望採納o(∩_∩)o 哈哈

c語言問題,求大神改錯,謝謝拉,我是新人,小白

11樓:匿名使用者

這是乙個數學問題,首先你要先想好如何求得問題的解,也就是所謂的「演算法」

按照你的思路,

首先利用數學知識可以知道s是關於n的單調遞增函式,所以s與8最接近的值一定是

s(k)<8

void main()

s1 = s - 1.0/n;

if((8-s1) < (s-8))

printf("s=%f,n=%d",s,n);}

12樓:夏碧夢

int n=1;//這裡n應該賦初值1,否則下面的while實際上會成為死迴圈

double s=0,m=0;

while(s<=8)

13樓:匿名使用者

for(n=1;n<=n+1;n++)//這裡是死迴圈

c語言問題,求大神解決,謝謝啦,我是小白,最好能夠解釋下原因

14樓:木子思曰

#include

int main()

else if(*p1<*p2)

p1++;

p2++;

}printf("the 2 string is equal");}

15樓:匿名使用者

p1、p2要先分別指向兩個字元陣列才能開始比較啊,在進入while迴圈前增加:

p1=str1;

p2=str2;

c語言問題,求大神解決,謝謝啦,我是小白,最好能夠解釋下原因

16樓:玻璃麥田

#include

#include

#include

void pailie(int a[ ],int num1,int num2,int count)

}i = (i+1)%number;}}

}void main()

printf("%d, ",b[i]);}}

17樓:

思路沒什麼大錯,主要是判斷語句中的等值判斷應該用「==」,而不是用賦值「=」,如:if(*(q+i)=0)應改為 if(*(q+i)==0),if(n=count)應改為if(n==count)。另外,「if(i=n) i=0;」應該刪掉。

c語言問題,求大神解決,謝謝啦,我是小白,最好能夠解釋下原因..

18樓:匿名使用者

#include

#include

void main()

for(i=0; s1[i]!='\0'; i++) //再將排好序的s1中字元依次放入s中偶數下標處

s[2*i]=s1[i];

puts(s); // 輸出處理後的字串s*/}

c語言問題求大神解答,C語言問題,求大神解答 20

a 用結構體定義以下學生資訊,結構體名 student 學號 姓名和成績 包括3門課程的成績,可用一個陣列表示 struct student c語言問題,求大神解答! 奔安 include include include typedef unsigned int uint typedef struc...

求C語言大神解答這個問題,求C語言大神看看這問題,,,,

束已 這個和float表示的有效位有關係 float 是單精度 只能表示7個有效位,所以你111111.111相當於只能把111111.1賦值給x,y變是如此。如果你用double float x,y 就不會有這種情況了。因為雙精度double float 可以表示9個有效位。double floa...

C語言問題,求解答,C語言問題,求大神解答

f函式中的a每次使用外面傳入的2,b是區域性變數,後每次都是1,c是靜態變數,函式每次執行會在上次值 1 所以最後執行三次,輸出為789 聽不清啊 程式的輸出是 789 c語言問題,求解答 執行abc a 1 首先進行巨集代換過程,是把 a 1去替代 定義的巨集函式 x x 中的x,即得到式子 a ...