C語言程式為什麼此程式的執行結果為3,5,5,3??我自己分析是5,3,

2021-03-29 13:01:31 字數 3654 閱讀 2394

1樓:

首先你的自定義函式沒有返回值 是void的,所以fun函式只做輸出x,y值的作用

那麼來分析一下,你給fun函式傳遞進去 ,5,3首先賦值運算這,1.x=x+y;x=5+3;x=8;

2.y=x-y;y=8-3;y=5;

3.x=x-y;x=8-5;x=3;

所以輸出個 3,5;

既然fun函式沒有返回值,所以x,y的值不影響main函式的執行,也就是說main函式中,x,y的值沒有被改變

所以輸出 5,3

2樓:匿名使用者

首先fun函式內

x=5 y=3

x=x+y 後 x=8

y=x-y 後 y=5

x=x-y 後 x=3

所以第一

組輸出是3,5,

至於為什麼第二組是5,3,

那是因為你函式使用的是值參 而函式執行完成後 值參的傳參方式不改變引數的值

3樓:匿名使用者

void fun()功能為互換兩個數,結果:3,5,

main()呼叫fun(a,b)後,由於引數傳遞為值傳遞,單向傳遞,結果不能傳回主調函式,所以main()內a和b之不變,結果5,3

所以,此程式的執行結果為 3,5,5,3

為什麼我這個c語言程式執行完結果還是a=3,b=5?不是應該互換嗎?求解答

4樓:陌路賣醬油

你傳來的引數是值,在函式裡交換完後源,會bai釋放空間,而du且你並沒有接收函式傳zhi出的資料。

# include

void f(int*

dao i, int* j)

}int main(void)

5樓:匿名使用者

c語言給函式傳遞引數的時候,實際上傳遞的是引數的副本(陣列除外),所以在函式內對引數的修改對原引數沒有影響。

6樓:匿名使用者

f函式不能修改你主函式中定義的變數a和b的值。函式需要傳址引數才可以。就是說你必須將f函式的兩個引數定義為指標型別。

c語言中%5.3s 是什麼意思?

7樓:匿名使用者

%5.3s中:

5是佔幾個字元的寬度,

3是擷取幾個字元,

本題中:擷取3個字元,前面加2個空格,總佔位長度5

8樓:雲南萬通汽車學校

前兩來個都是e格式符,以指數形自式輸出實數。

1.%e:不指bai

定輸出數

du據所佔的寬度和數zhi字部分的小數位數dao,有的c編譯系統自動指定給出數字部分的小數位數為6位,指數部分佔5位(如e+002),其中"e"佔1位,指數符號佔1位,指數佔3位,總的指數部分佔5位。數值按規範化指數形式輸出。例如:

printf("%e",123.456);輸出如下:1.

234560e+002(共13列,有的系統的規定有所不同);

2.%m.ne 輸出的資料共佔m列,其中有n位小數。如果數值長度小於m,則左端補空格。

後兩個都是s格式符,用來輸出字串。

%m.ns 輸出佔m列,但只取字串中左端n個字元。這n個字元輸出在m列的右側,左補空格。

c語言將10個數字從小到大排列,為什麼我的**輸入是1,2,3,4,5,6,7,8,9,10輸出是1,10,9,8,7,6,5,4,3,2呢?

9樓:

程式來#include

#include

int main()

void array(int x,int n);

array(a,10);

printf("從小du

到大zhi

排列為dao:\n");

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

getch();

return 0;

}void array(int x,int n)}}}

10樓:匿名使用者

這種問題一般是

抄邊界定義出錯,就襲是for()裡面的迴圈的條件定義出錯,用冒泡去排序效果會好一點,我把你的程式改了改,現在可以完成你的排序要求了

#include

#include

void array(int x,int n)}}}int main()

array(a,10);

printf("從小到大排列為:\n");

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

getch();

return 0;}

11樓:匿名使用者

1. void array中的引數

復int n沒用到,刪去制吧bai

。2. 氣泡排序有問題

du,從大到小zhi,應為:

daofor( i = 0; i < 10; i++)for( j = 0 ; j < 9 - i; j++)if( x[j] < x[j + 1] )

12樓:還是已被佔用

最後一bai個for迴圈   j=0  而不是duj=1給你標上了

#include

#include

int main()

void array(int x,int n);

array(a,10);

printf("從小到大排列為:\n");

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

getch();

return 0;

}void array(int x,int n)}}}而且dao n是多餘的專  有沒有不影

響    還佔用屬資源!

13樓:星雅樂

排序排錯了

第一輪:i=0判斷 1>2false 1>3false.........1>9false

第二輪:i=1判斷 2>2 false 2>3false...........2>9false

第三輪:i=2判斷 3>2true交換 3>3false.....

.......

第十輪迴:i=9判斷 10>2turn交換........

明白沒,答

14樓:匿名使用者

最後一個for迴圈,試試

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

急求c語言程式:將1,2,3,4,5,6,7,8,9共9個數分成三組,組成3個三位數,且使這3個三

15樓:匿名使用者

int check(int a,int b,int c),i;long num = a*1000000+b*1000+c;

if(b>1000 || c>1000)return 0;//確保是三位數

for(i = 0;i < 10;i++)else return 0;

}return 1;

}int main()}}

}}}return 0;

}上面剛寫的,實現思路:先把所有三位數找出來(並且三位數不能相同),上面**的關鍵在check方法,我先把它傳遞進來的三個資料進行檢查,因為傳遞過來的時候就是構成1:2:

3的比例,我現在就是要檢查是否是從1到9所有數字都有並且不重複(不懂就追問。)

c語言求解閱讀下面程式,程式執行後的輸出結果為

c忘記,c 的話bai 是一個轉換,du一個型別zhi強制轉換,因為字元可dao以轉化為整內形,整形可以轉化為字容符,只要對應ascii表就可以知道 這個表是用整數表示 第一次迴圈,0轉化,9轉化,然後自增自減,a輸出0到4 化字元,askii碼 b是9到5 一樣ascii 碼 c 對應的是 0為空...

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

輸入格式不對,要輸入 浮點數 並用 逗號 分隔輸入三個數兩個逗號後還要額外多加一回車才開始後面的流程,如果把scanf f,f,f n a,b,c 改為scanf f f f a,b,c 就可以用空白符做分隔了,現在你的程式是指定要用半形逗號做分隔符用回車做最後字元 另外程式邏輯也差一點,沒檢查 b...

在c語言程式的執行是從a本程式的main函

從main函式開始到main函式結束。答案選a。c語言常考考點 1 一個c語言源程式可以由一個或多個原始檔組成。2 每個原始檔可由一個或多個函式組成。3 一個源程式不論由多少個檔案組成,都有一個且只能有一個main函式,即主函式。是整個程式的入口。4 源程式中可以有預處理命令 包括include 命...