以下c語言程式為什麼不會輸出Q,為什麼C語言程式執行輸入後沒有輸出

2022-06-02 04:31:46 字數 3718 閱讀 1479

1樓:匿名使用者

while(c!='q')//當c不等於q時,執行大括號內的語句

所以當輸入一個q時,c等於q,while語句的條件判斷變成了假,迴圈就結束,大括號內的列印語句沒有執行,自然也不會有q被列印出來了。

2樓:匿名使用者

c為q時,你的程式就退出了!

3樓:匿名使用者

當輸入為「q」時就不滿足while的條件自然不會輸出『q』,你的輸出是在while中做的

為什麼c語言程式執行輸入後沒有輸出

4樓:

輸入格式不對,要輸入「浮點數」並用 「逗號」 分隔輸入三個數兩個逗號後還要額外多加一回車才開始後面的流程,

如果把scanf("%f,%f,%f\n",&a,&b,&c);

改為scanf("%f%f%f",&a,&b,&c);

就可以用空白符做分隔了,現在你的程式是指定要用半形逗號做分隔符用回車做最後字元

另外程式邏輯也差一點,沒檢查(b*b-4*a*c)是否小於0,小於0則沒有實數解了

5樓:匿名使用者

一般輸入內容的時候不加'\n'

如果加了 你輸入第一次資料後 enter 在輸入一次

6樓:匿名使用者

1、原因可能是輸入格式不對,要輸入「浮點數」並用 「逗號」 分隔輸入三個數兩個逗號後還要額外多加一回車才開始後面的流程,

如果把scanf("%f,%f,%f\n",&a,&b,&c);

改為scanf("%f%f%f",&a,&b,&c);

就可以用空白符做分隔了

2、沒有輸出,不知道計算的結果那演算法就沒有意義了。輸出不一定是要列印到螢幕上的,可以是下一個程式的輸入,可以是一個檔案、一段語音、一張影象,甚至是機器人的步行動作等等。

7樓:簫聚星月

改成這樣#include

#include

void main()

輸入資料用逗號分開,標頭檔案是math.h

8樓:匿名使用者

試過多次回車嗎?你肯定你的輸入方式正確嗎?

9樓:匿名使用者

scanf("%f,%f,%f\n",&a,&b,&c);

改成scanf("%f,%f,%f",&a,&b,&c);

就可以了

10樓:葡萄味的栗子殼

是不是低階錯誤 scanf忘加&

關於一個很簡單的c語言程式設計,為什麼總是不能輸出?

11樓:

m=max(m-n,n);

n=min(m-n,n);

a=m-n;

這裡不正確,第一句m被重新賦值了,導致第二句的m與第一句的值不一樣。

12樓:

#include

int max(int x,int y)

int min(int p,int q)

int main()

if(m>n)

printf("兩者的最大公約數是%d,最小公倍數是%d\n",m,c/m);

}if(m0)//原來程式的m,n值被改變導致死迴圈printf("兩者的最大公約數是%d,最小公倍數是%d\n",n,c/n);

}return 0;}

c語言程式 為什麼不能執行

13樓:千鋒教育

你這裡去掉&c

不去掉輸出的是c變數的地址

c語言:分析以下程式的輸出結果

14樓:匿名使用者

f1()中,name是指標,所以,在函式中,可以改變其中的內容,進而改變了實參中的內容;而num是普通變數,所以,在函式中的變化,不會影響其實參的值

f2()中,q是指標,所以,在函式中,可以改變其中的內容,進而實參中的內容也就發生了變化

p=&s[1]; //p->name="lisiguo" p->num=20042

f1(p->name,p->num) 會改變p->name("sundan"),而p->num不變

f2(&s[0]); s[0]中的內容,全部由子函式中的資料所替換,變為:"sundan",20044

所以,輸出結果為:

sundan 20042

sundan 20044

以下c語言程式,輸出為什麼是17?

15樓:擁雲莊主

你這段**能編譯通過?最少有三個地方需要修改:

1,funa函式沒有返回值,按題目意思它應該返回int型

2,funb函式同1

3,sub函式,第一個引數是個函式指標,這個函式指標的定義如下:

int(*t)()

說明它返回int型,並且沒有引數,但是在sub裡呼叫的時候又是這樣的:

return(*t)(x,y);

這裡在編譯的時候肯定會報錯,因為函式的引數個數都不對,按題目意思,sub函式應該是這樣:

sub(int(*t)(int ,int),int x,int y) //函式指標t指標的函式應該有兩個int型的引數

而且,在main函式裡呼叫的時候,p這個函式指標也是有兩個int型引數的:

int x,(*p)(int,int);

所以,**應該修改成這樣才能編譯通過:

#include

int funa(int a,int b)

int funb(int a,int b)

int sub(int(*t)(int , int),int x,int y)

int main()

它的計算過程是通過函式指標來呼叫funa和funb兩個函式,並且把這兩個函式的計算的結果相加,而這兩個函式,funa用來計算兩個數的和,funb用來計算兩個數的差。

所以:x=sub(p,9,3);//計算9和3的和,結果是12

x+=sub(funb,8,3);//計算8和3的差,並和12相加,所以,最終x為17

測試截圖如下:

前兩個問題,有的編譯器能通過隱式轉換處理掉,也許不會報錯,但第三個問題是明顯的錯誤,編譯會有問題。

再補充一下,我剛才找了幾種編譯器試了一下,c語言支援這種寫法,編譯正常,但用c++編譯器編譯的時候報錯。樓主說明這是個c程式,那應該沒問題,不過這種**看上去會讓人很迷惑,建議還是把函式指標的引數列表寫全。個人意見,僅供參考。

16樓:匿名使用者

sub(int(*t)(),int x,int y) 是一個自定義的函式,函式體為return(*t)(x,y);意思是返回t指標指向的函式的返回值。比如後面x=sub(p,9,3)返回的就是以p代表的函式funa(),並且以9,3為實參的值,相當於求funa(9,3)

17樓:匿名使用者

sub(int(*t)(),int x,int y)是一個函式的實現

函式名sub

引數int(*t)()是函式指標

(*t)(x,y);

呼叫指標指向的函式。

一開始p=funa

x=funa(9,3) = 12

然後 x+=funb(8,3)

x = 12+(8-3) =17

c語言有以下程式c語言有以下c程式includestdiohintmain

第一次進switch的bai時候du由於你的case 0 printf another n 後面沒有zhibreak 所以繼續執行了case 1 printf number n 結果就dao列印出來了 another number 第二專次switch的時候關於字元 1 匹配屬 case 1 pri...

C語言初級有以下程式段輸出結果是

for i 1 i 15 j 4 一定是給錯了,應該是for i 1 i 15 i 4 取4個值1,5,9,13 for j 3 j 19 j 4 m 會執行5次m 也就是m 5,j分別取3,7,11,15,19 兩個迴圈是巢狀關係,合計執行為4 5 20。外層迴圈應該是 for i 1 i 15 ...

c語言 輸出之間素數 的程式,c語言 輸出 m,n 之間素數 的程式

首先根據數學規則,編寫判斷素數的程式。然後按照如下思路 1 輸入m和n 2 對 m,n 的整數進行遍歷。3 對每個數值進行判斷,如果是素數,則輸出。include include int is prime int n int main main 函式呼叫 f int x if floy 1 prin...