1樓:我是比丘猴
修改了一下,如下:
int main()
但是"1<=x<10"這種寫法並沒有出現編譯錯誤。因為程式理解成,"1<=x",1跟x比較,只要1<=x,則輸出"1"(代表正確的意思),然後這個"1"又和後面的"10"進行"<"比較,因此也是正確的,即1,所以就會執行後面的語句y=2*x-1,導致輸出的答案不正確。
2樓:匿名使用者
你好,問題在if(1<=x<10),你想表達的意思是x>=1且x<10,那麼應該寫成if(x >=1&& x < 10)
現在這種寫法因為關係運算子< 《優先順序一樣。當x<1時前面if(x<1)成立,不判定(1<=x<10),但x<1不成立時,if(1<=x>10)中條件判定先判定1<=x, 無論x是多少,判定結果只能是1(true)或者0(false),再判定(1<=x) <10, 即1<10,或者0<10,顯然恒為真。所以錯誤就出在這裡了。
應該改成else if(x >=1&& x < 10)
3樓:樂圖圖
程式中沒有包含x>10時程式該如何執行,所以會出錯。
4樓:fei仰角30度
改成這個:int main()
這裡if(1<=x<10)的判斷只做了1<=x的判斷,應該改為與邏輯的 if(1<=x &&x<10),好好想想,有不懂的追問。
5樓:網友
if(1<=x<10) 這樣計算機不懂什麼意思的。
這句要是if(1<=x&&x<10) &是並且的意思。
求助,c語言問題
6樓:鹹魚君的學習館
請把題目資料貼完整。比如隨機的這六個數字的範圍是多少。以及彩票中獎號碼會不會重複這些。
假設數字範圍是1~10 且號碼要求不重複。那麼**如下。若範圍不一致請自行修改。
**截圖。執行截圖。
手打不易,望採納~
c語言求助
c語言 求助 20
7樓:自我程式設計
方法很多,最直接的方法是,在函式中定義乙個臨時陣列,然後2次迴圈,先將n往後的值存入新陣列,再將n之前的值存入陣列。最後把臨時陣列的值全部賦值給原陣列。
#include
void move(int arr,int len,int n);
int main()
int i,arr[5]=,n;
printf("請輸入n的值:")scanf("%d",&n);
move(arr,5,n);
printf("陣列變為:")
for(i=0;i<5;i++)
printf("%d ",arr[i]);
return 0;
void move(int arr,int len,int n)int i,j,atemp[len];
if(n>=len)
printf("n值過大,陣列訪問越界!")
elsefor(i=n,j=0;iatemp[j]=arr[i];
for(i=0;iatemp[j]=arr[i];
for(i=0;iarr[i]=atemp[i];
8樓:網友
該題c**如下:
#include
void move(int arr,int len,int n)}int main()
;move(a,5,2);
//顯示執行結果。
for(i=0;i<5;i++)printf("%d ",a[i]);
return 0;
}如果是oj判分答題,需稍做修改,可追問。
9樓:我呀
#include
void move(int arr,int len,int n);
int main(),n;printf("請輸入n的值:")scanf("%d",&n);
move(arr,5,n);
printf("陣列變為:")
for(i=0;i<5;i++)
printf("%d ",arr[i]);
return 0;
}void move(int arr,int len,int n)for(i=0;iarr[i]=atemp[i];}
c語言 求幫助
10樓:匿名使用者
4、不知道,估計是答案錯了,因為實際執行結果也是b11、18、21一起。
auto 是區域性變數預設,宣告有效期在區域性變數範圍內extern 表示變數或函式在其它cpp檔案中定義,這裡只是使用static 最主要功能是隱藏(僅對本cpp可見),其次因為static變數存放在靜態儲存區,所以它具備永續性和預設值0。
register 已無效,在原來計算機中可以把變數放到暫存器而不是記憶體中。
14b 因為用括號括起來了,所以只有括號中最右邊的有效17b 標準庫不用重定義但必須包含,函式都是可以重定義的。
22a c語言的函式呼叫都是值傳遞,也就是說函式操作的是實參的副本,所以只能把實參的值傳送給形參,形參的值不能傳送實參,函式不能巢狀定義,不必須有返回值,可以不在乙個檔案中,只要宣告有這個函式存在就可以呼叫。
求助乙個c語言問題?
11樓:考驕
你在看看,還是不對,全1表示的是-1,1000...才表示-128
反碼概念,符號位不變,其他位取反(+1),全1反過來就全0,表示0的話就2個0了,所以負數在加個1
只有反碼才這樣。
12樓:金半田
二進位制11111111代表-127,是按原碼規則來算。若按補碼規則,二進位制11111111算出來是-1。
文中說的是10000000代表-128。
詳細描述如下:
[+1] =00000001]原 = 00000001]反 = 00000001]補。
[-1] =10000001]原 = 11111110]反 = 11111111]補。
計算機將第1位作為符號位,0表示正數,1表示負數。
原碼:原碼很好理解,第1位是符號位,其餘位表示數值。
反碼:(1)正數:正數反碼是其本身。
(2)負數:去掉原碼符號位,其餘位按位取反。
補碼:(1)正數:正數補碼是其本身。
(2)負數:在反碼基礎上加1。
由上述定義可知:
[+0] =00000000]原 = 00000000]反 = 00000000]補。
[-0] =10000000]原 = 11111111]反 = 00000000]補。
既然+0和-0的補碼一致,所以只需保留乙個(+0和-0原碼不同,注意看符號位)。
這樣一來,「[0] =10000000]原」相當於沒有使用,於是規定:「[10000000]」為-128。
既然是「規定」,就不能按原碼、反碼、補碼的規則計算了。設計計算機時就在硬體中設定為:10000000代表-128。
之所以引入補碼,是為了消除減法,用加負數來替代減法運算,這樣讓cpu設計更簡單。
13樓:自我程式設計
這裡說的是補碼,不是二進位制負數。
二進位制負數10000001到11111111表示-1到-127,而10000000表示的就是最小負數-128。
而負數在計算機中是以補碼儲存的。
負數->(原碼按位取反)反碼->補碼(反碼+1)。所以-1到-127的補碼就變成11111111到10000001。而0的原碼補碼還是0,-128的補碼是10000000。
所以如上題說的,-128~-1計時10000000~11111111。
14樓:
負數的補碼等於反碼+1
15樓:沙里波特
二進位制11111111不是代表-127嗎?
--是的。 11111111 是-127的原碼。
為什麼是-128 呢?
--誰說的? 騙你的。
請教c語言的問題
16樓:紀景明枚書
既然sum_power(n,k)=pow(n,k)+sum_power(n-1,k)
你至少要定義sum_power(0,k)及sum_power(1,k)兩個初值。
另外你的k是什麼?好象沒有意義喲。
C語言求助C語言問題,求助
1 c 求模運算的結果是餘數,參與運算的兩個運算元都必須為整型的。2 c x字元陣列存放的是字串,系統自動在其後加 0 作為結束標誌,故長度為字元 串中字元個數 1,而y字元陣列存放的是幾個字元,長度為其中字元的個數。3 c。語言中引數傳遞,只能進行單向的從實參到形參的傳遞。4 d。逗號運算是從左向...
c語言問題,求助,C語言問題,求助!!!
這種問題用哈夫曼樹的逆向思想就可以解決了,所以我建議還是自己按這思想好好研究一下。自食其力。c語言問題 因為 define s a p a a 定義後 是直接替換 運算過程是這樣的 3 3 5 3 5 所以是29 弱勢這樣定義的 p a a 結果就是192 3 3 5 3 5 9 15 5 29 巨...
c語言問題,求助,C語言問題,求助!!
include int flower int num int main include int flower int num int main t 0 for i m i n i if t printf no n else printf n return 0 先回答你第一個問題,遞迴函式確實是讓ch...