c語言問題,C語言問題?

2021-12-25 07:46:34 字數 2907 閱讀 3187

1樓:久病成

char的範圍是-128~127的

你362就溢位了嘛

是這樣的

0362 0是表示8進位制

於是362在10進位制下是242

242溢位了(-128~127)

於是結果變成242-128-128=-14

2樓:

要明白這個,首先要明白記憶體中 c 變數是什麼樣子的。

整數在記憶體中是以補碼的形式存取的。

c = 0362 這是一個 8 進位制的標識方法。換算成二進位制是:1111 0010

又因為,char 這個型別是有符號的 8 位型別(這個不確定,得看一下 c 標準和編譯器具體行為,但是你說的現象肯定是這樣的),最高位為符號位。

符號位為 1 ,所以為負數,負數的補碼是:取反,再加一。於是, 去掉符號位,c 取反就是 000 1101 再加一就是 000 1110,換算成十進位制就是 14,在加上符號位,於是就是 -14 了

不知道講清楚沒。。。。要學好 c 語言,一定要了解計算機。尤其是記憶體。還有~有的時候標準和實現是兩碼事。。。

3樓:匿名使用者

c = 0362 //八進位制數

二進位制表示為 011 101 010

由於c是char型別 只佔一個位元組 8位 就是 11 101 010

列印出來 就是-14 了

4樓:唯你只愛

char型的最大值是255,顯然溢位了,肯定出錯,至於為什麼是-14要看資料儲存了

5樓:匿名使用者

c=0362

這個是八進位制的,轉換成十進位制即正常的那麼就是-14了哦!

c語言問題

6樓:一個能通過的名

首先你的scanf語句不對,應該是:scanf("%lf %lf", &a, &b),正確格式是:scanf("《格式化字串》",《地址表》);

你的printf語句應該是:printf("得到一個和為%f + %f = %f\n" ,a,b,a+b);,正確格式是:printf("輸出格式型別",變數),前面的輸出格式型別的數量,要和變數的數量一樣

7樓:

printf("得到一個和為%f + %f = %f\n", a+b);

你寫了三個佔位符%f,為什麼後面只有一個值對應?

請把a、b、a+b這三個值都寫上去

另外,你的scanf為什麼要把&a和&b寫到引號裡面?請改

c語言問題

8樓:

#include

#define n 30

typedef struct student;

student r[n];

int main(void)

num=1;

for(i=0;ir[max].score)max=j;

if(max!=i)

if((i>0)&&(r[i].score小錯誤比較多,格式有點亂,整理**縮排就花了好久……基本都是小錯誤,對比看一下就知道了。

c語言程式設計問題

9樓:手機使用者

解題思bai路:完全跟百錢買百雞的問題是du一樣的!設大zhi馬,中馬,小馬dao的匹數分別為x,y,z;可以得到回兩個方程:

x+y+z=100; 3*x+2*y+z/2=100; 將第二個

答方程變形為:6*x+4*y+z=200; 從第二個方程變形的方程中,我們可以看到,x的最大值為200/6=33.3;即中馬,小馬都不用,只用大馬最多用34;1<=x<=34; 同樣中馬y的最大值為200/4=50;1<=y<=50;再將第三個方程減去第一方程變成5*x+3*y=100;這個方程就是我們簡化後的判斷條件用列舉法求可的如下的程式:

#include

int main()}

c語言問題

10樓:風林火陰山雷

先回答你第一個問題,遞迴函式確實是讓ch變數不斷獲得新的值,從1到5。需要注意的是,之後每一次的賦值只在當前的大括號內有效:

void get_put()

以此類推。

第一個問題,你已經注意到這是遞迴了,那麼輸入12345並按回車後,自然出現了get_put函式五層巢狀,也就有5次putchar了。

如有問題歡迎追問~

c語言問題

11樓:聽不清啊

當輸入abc時,輸出結果是(abc6789)

因為當執行gets(ss);時,

ss[10]就變為了"abc",其後就是串結束符。儘管3,4,5仍存在於陣列中,但是卻已經被忽略掉了。後面的"6789"就被連線到'c'的後面了。

12樓:樂酷科技

gets(ss)從ss首地址開始存放 原來的被覆蓋 即現在是abc'\0'了,strcat把後面的字串連線到前面字元的後面 從'\0'開始 最後新增新的'\0' 所以輸出結果就是abc6789了

c語言問題 10

13樓:

#include

#define n 10

int delnum(int a,int num,int n){int i,j=0;

/*用j記錄陣列a中不等於num的元

素個數(即需要儲存的元素個數),

邊掃描陣列a邊統計j,並將不等於num的元素向前放置在j位置上,最後修改陣列的長度

*/for(i=0;i

示例執行如下:

14樓:匿名使用者

如果有幾個相同的值都刪除嗎?

c語言問題,C語言問題?

include include int main max min i 0 sum i 0 i 1 i 2 i 3 i 4 i 5 i 6 for j 0 j 6 j printf 去掉一個最高分 0.6lf max printf 去掉一個最低分 0.6lf n min printf 該選手最後的得分...

C語言問題C語言問題,C語言小問題段錯誤是什麼

str2num char p num num k return num c語言問題c語言問題 include int main int h,m scanf d d h,m printf s num h if m 0 else printf o clock printf n return 0 c語言小...

c語言問題程式設計,C語言程式設計問題

程式修改輸出加個 元 後面執行結果可看到 編譯執行結果 如果輸入50 如果輸入90 如果輸入100 如果輸入110 include int main if x 50 y 80 x printf f n y return 0 c語言程式設計問題 解題思bai路 完全跟百錢買百雞的問題是du一樣的 設大...