㈠ c語言問題,會的幫幫忙(x1和x2為什麼都是等於40)
要搞清楚C的形參值傳遞是單向的,即不能用形參返回值。還要注意各變數的作用域。
所以你的sub 函數不能起到交換值的作用,實際等效於:
void sub(int x,int y) //相當於把第一個參數的值賦給全局變數x1
{
x1=x;
}
你的程序相當於:
int x3=10,x4=20;
x1=x3;
x1=x2;
printf(……);
所以輸出40,40,10,20
可將sub改為:
void sub(int *x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
應用sub時參數加&,即sub(&x1,&x2),sub(&x3,&x4)用指針傳回變數值。
你的編譯環境VC的話,直接用C++別名解決值傳遞問題:
void sub(int &x,int &y)
{
int temp;
temp=x;
x=y;
y=temp;
}
應用sub時參數不加&,即sub(x1,x2),sub(x3,x4)用別名傳回變數值。
㈡ 怎麼用c程序定義x1到x100
除了手寫,沒辦法動態定義變數x1到x100
c語言不是腳本語言,需要經過預編譯,編譯,運行的。定義變數在編譯時就被確定了的,循環生成字元串只能在運行里執行。沒辦法做的。建議使用數組。
或者你講循環生成的字元串輸出到c語言的文件里
㈢ C語言關系運算符的使用和理解,麻煩哪位大佬解答下下述源代碼中x1,x2,x3分別是怎麼得來的
你前面int就已經定義了x1,x2,x3為整型變數啦,但是沒有賦初值而已
而你後面x1=a>b>d;就是判斷a是否大於b是否大於d,是的話x1=1,否則x1=0;下面的語句也是如此
㈣ c語言 為什麼第一個輸出1,2 我看的是0,1 還有第二個 x1不是等於x2嗎 輸
第一個圖:
第一個switch的第一個case後面沒有break,所以做完case 0還會把下面的case 1做一遍
這時a++做了一次,b++做了兩次,就是 1 , 2
第二個圖:
strcmp函數判斷字元串大小,先判斷第一個字元的ACSII碼值,如果相等就判斷第二個
x1 , x2共同的部分判斷都相等,但是x1更長,所以x1>x2輸出一個正數(相等輸出0)
㈤ c語言怎麼編寫x1,x2
請問你所述的x1,x2指的是什麼?
補充: c語言的乘號是 *
㈥ C語言問題
不能去掉。
當while(fabs(y)>=1e-4);成立的時候,do{}while循環體沒有終止還要繼續執行,首先執行的就是x=xpoint(x1,x2);如果沒有x1=x;那麼xpoint(x1,x2)裡面的x1仍舊是以前的值沒有變,這個循環體裡面一點改變都沒有,執行到while(fabs(y)>=1e-4);時它還是成立的,這樣就一直下去就變成無限循環了。如果有x1=x,
x=xpoint(x1,x2),x就會變,同時y=f(x);y也會改變,這樣while(fabs(y)>=1e-4);這個語句就不一定向先前一樣成立了。
㈦ C語言中x=x1什麼意思
x和x1 是不同的標識符,
= 是賦值語句
就是將右邊的值賦到左邊
也是說
將x1 的值給x
㈧ c語言中這樣寫是對的嗎
是一一對應的,
第一個%f對應第一個參數,
這個寫法是不推薦的,因為這里想要表達的是當x1=x2的時候 隨便輸出x1,x2都是一樣的結果
所以只需要寫x1或者x2就行了
㈨ C語言的問題
難道沒有下文了嗎,從你這半來看是沒什麼用
下面呢,下面沒有要用到的嗎
補充:
當然不是,X1,X2跟X,Y一樣,都是一個變數,等著你給它們賦值
㈩ C語言中,為什麼x1y不能作為標識符使用
x1y可以作為標識符使用,沒有任何問題