剛剛入門C語言,有兩個問題不是很會想請教一下各位。
{
float a, b;
printf(“input two numbers:”);
scanf("x=%f, y=%f ", &a, &b);
*****(填寫在此處的a,b鍵盤輸入格式);
printf("a=%f,b=%f\n ",a,b);
printf("ab=%7.2f\n",ab);
}
怎么使最后輸出a=2.000000,b=3.200000
char a='0376'為什么最后輸出來是54?
uj5u.com熱心網友回復:
char a='0376'這是從哪里冒出來的?
uj5u.com熱心網友回復:
不知道,老師問的問題叫我們做。
uj5u.com熱心網友回復:
學校的老師啊不敢不聽啊
uj5u.com熱心網友回復:
x=2, y=3.2應該是這樣輸入吧
uj5u.com熱心網友回復:
可以這個程式有問題啊,我都執行不起。
uj5u.com熱心網友回復:
那char a='0376'又是幾個意思?
uj5u.com熱心網友回復:
他應該是想說要加點什么吧,因為錯誤是說xy無定義
uj5u.com熱心網友回復:
我也不曉得啊,程式上輸進去了就最后用%d表示出來就是54
uj5u.com熱心網友回復:
程式肯定是有問題呀printf("ab=%7.2f\n",ab);
這句是想a x b嗎,要改成a*b
uj5u.com熱心網友回復:
額對,應該是a*b,剛剛是我輸錯了。
uj5u.com熱心網友回復:
char'0367'這都超范圍了咱也沒學過呀
uj5u.com熱心網友回復:
不會呀
x=2, y=3.2
這是你要輸入的
其他的不用改
uj5u.com熱心網友回復:
我試了一下'0376'這種字符,編譯器直接取最后一位字符
但編譯器會警告
uj5u.com熱心網友回復:
char'0367'這都超范圍了
咱也沒學過呀
這樣啊
我去試試
uj5u.com熱心網友回復:
但令我不解的是為什么你們老師教你們搞這些
奇奇怪怪
危危險險
的東西
uj5u.com熱心網友回復:
我試了一下
'0376'這種字符,編譯器直接取最后一位字符
但編譯器會警告
為啥子會直接取最后一位數字哦
uj5u.com熱心網友回復:
但令我不解的是
為什么你們老師教你們搞這些
奇奇怪怪
危危險險
的東西
哈哈哈哈我也不解為啥子要教這些
uj5u.com熱心網友回復:
我試了一下
'0376'這種字符,編譯器直接取最后一位字符
但編譯器會警告
為啥子會直接取最后一位數字哦
我也不知道呀
本來就是違規操作了
有可能不同編譯器處理方法也不同
你可以試試別的編譯器
uj5u.com熱心網友回復:
嗯,這種寫法也看不出來想教你們什么知識點。是不是你問題轉述錯誤了?char a=0376,沒有單引號?
uj5u.com熱心網友回復:
嗯,這種寫法也看不出來想教你們什么知識點。是不是你問題轉述錯誤了?
char a=0376,沒有單引號?
不是吧,應該就是他搞錯了有可能,因為他直接發的圖片給我,反正我也不管了
uj5u.com熱心網友回復:
0376 這個是八進制0376 = 6 * 8*7 + 64*3 = 6 + 56 + 192 = 254 好吧
輸入問題前面都有答案了,不重復
uj5u.com熱心網友回復:
要注意字面量的定義描述, 0開頭的是八進制uj5u.com熱心網友回復:
第二個輸出a*b?uj5u.com熱心網友回復:
'0376' 和 八進制沒關系這是一個字符常量
具體值實作定義 常見實作是 808662838
至于為什么結果是 54
溢位唄
你直接 char ch = 808662838;
輸出ch 也是 54
uj5u.com熱心網友回復:
那個a只是一個字符,就是字符6,整數為54uj5u.com熱心網友回復:
char a字符,歸根到底運算的是阿斯卡碼加起來的值uj5u.com熱心網友回復:
你的scanf也不對吧?scanf里面能有東西嗎?uj5u.com熱心網友回復:
直接輸出就輸出第一個了,第二個字串,需要設定字符陣列,不能char a等于字串,要么你用指標uj5u.com熱心網友回復:
那char a='0376'又是幾個意思?
uj5u.com熱心網友回復:
那個a只是一個字符,就是字符6,整數為54
字符a不是=97嗎?
uj5u.com熱心網友回復:
你的scanf也不對吧?scanf里面能有東西嗎?
老師發的,為什么不能有東西啊?
uj5u.com熱心網友回復:
直接輸出就輸出第一個了,第二個字串,需要設定字符陣列,不能char a等于字串,要么你用指標
那'0376'表示什么哦
uj5u.com熱心網友回復:
請問,積分不夠該怎么辦?uj5u.com熱心網友回復:
ab 應該是a*buj5u.com熱心網友回復:
0376 應該是八進制uj5u.com熱心網友回復:
這個積分好難得啊,想下個東西都下不了uj5u.com熱心網友回復:
這個代碼我竟然看不懂,我對不起我老師uj5u.com熱心網友回復:
哈哈哈哈啊哈哈哈哈哈(水貼一波)
uj5u.com熱心網友回復:
最后那行錯了吧uj5u.com熱心網友回復:
char的范圍是0-255或者-128-127之間,你們啥老師,上面可是需要5個char來存的。換老師吧。'0376'也不對,應該是"0376",uj5u.com熱心網友回復:
char的范圍是0-255或者-128-127之間,你們啥老師,上面可是需要5個char來存的。換老師吧。'0376'也不對,應該是"0376",
uj5u.com熱心網友回復:
''里面只應該有一個字符,如果是轉義的最多加斜杠比如'\n',你這么多絕對不對.uj5u.com熱心網友回復:
''里面只應該有一個字符,如果是轉義的最多加斜杠比如'\n',你這么多絕對不對.
uj5u.com熱心網友回復:
沒規定只能有1個字符的
''里面只應該有一個字符,如果是轉義的最多加斜杠比如'\n',你這么多絕對不對.
是char, 不是char*. 一個char只能存一個位元組
uj5u.com熱心網友回復:
我只是路過打醬油的!!!!uj5u.com熱心網友回復:
直接輸出就輸出第一個了,第二個字串,需要設定字符陣列,不能char a等于字串,要么你用指標
那'0376'表示什么哦
uj5u.com熱心網友回復:
沒規定只能有1個字符的
''里面只應該有一個字符,如果是轉義的最多加斜杠比如'\n',你這么多絕對不對.
是char, 不是char*. 一個char只能存一個位元組
單引號只能存一個字符……要不然就用char陣列存雙引號的字串 直接輸出就輸出第一個了,第二個字串,需要設定字符陣列,不能char a等于字串,要么你用指標
那'0376'表示什么哦
問題是 C里面 '1'不是char 而是int
能表示不止1個位元組的資料
比如 這里的例子 '0376' 具體值實作定義 常見實作是 808662838
uj5u.com熱心網友回復:
這里好熱鬧,我是做5G芯片的。uj5u.com熱心網友回復:
輸入:x=2, y=3.2
uj5u.com熱心網友回復:
cout<<fixed<<setprecision (6)<<a<<” ”<<b;uj5u.com熱心網友回復:
頭檔案;#include<iomanip >uj5u.com熱心網友回復:
頭檔案沒有空格哈uj5u.com熱心網友回復:
應該是考精度控制?輸出 %.6fuj5u.com熱心網友回復:
char a是字符型的,不同型別直接 輸出會按阿斯科碼轉換。uj5u.com熱心網友回復:
完全還給老師了uj5u.com熱心網友回復:
'0376'的資料只取了'6',ASCII碼對應54uj5u.com熱心網友回復:
你問的是兩道題吧?uj5u.com熱心網友回復:
scanf為什么是這樣的uj5u.com熱心網友回復:
水貼
打醬油
uj5u.com熱心網友回復:
a=%.6f,b=.6f%uj5u.com熱心網友回復:
代碼還是有問題的uj5u.com熱心網友回復:
你把scanf里面的x=和y=刪掉,最后一個ab改成a*b是這意思吧uj5u.com熱心網友回復:
還有你最后那個char這什么鬼uj5u.com熱心網友回復:
%f保留6個小數位uj5u.com熱心網友回復:
做任務,不要管我uj5u.com熱心網友回復:
你問的是兩道題吧?
對,前面花括號里面是一道外面是一道
uj5u.com熱心網友回復:
還有你最后那個char這什么鬼
兩道題哈哈哈,寫的時候沒分開
uj5u.com熱心網友回復:
scanf為什么是這樣的
?為什么不對?不懂。
uj5u.com熱心網友回復:
輸出a.b的時候在%前加-8.6uj5u.com熱心網友回復:
輸入:x=2,y=3.2
uj5u.com熱心網友回復:
'0376'的資料只取了'6',ASCII碼對應54
uj5u.com熱心網友回復:
printf("ab=%7.2f\n",ab);ad什么意思,你沒定義這個變數吧uj5u.com熱心網友回復:
能細心否,254,0376八進制,0表示八進制數,3*64+7*8+6=254.uj5u.com熱心網友回復:
0376應該是一個八進制數,0代表八進制。以%d格式輸出,對應的十進制數是254。uj5u.com熱心網友回復:
ab應該是a*b吧uj5u.com熱心網友回復:
'0376' 和 八進制沒關系
這是一個字符常量
具體值實作定義 常見實作是 808662838
至于為什么結果是 54
溢位唄
你直接 char ch = 808662838;
輸出ch 也是 54
uj5u.com熱心網友回復:
能細心否,254,0376八進制,0表示八進制數,3*64+7*8+6=254.
你不夠細心,別個都說了是'0376', 你看漏了單引號
uj5u.com熱心網友回復:
printf("ab=%7.2f\n",ab);ad什么意思,你沒定義這個變數吧
那是另外一題了在花括號外面都嘛
uj5u.com熱心網友回復:
這基本語法沒掌握啊uj5u.com熱心網友回復:
你輸入char a了嗎?沒有啊!你那定義的不是float a嗎?哪里來的char a? 按你后面說的,不應該是定義char a,然后輸入char a的值(輸入控制符為%c),輸出的時候輸出控制符為%f,順便加上長度和精度,不就成了。而且char是字符,占一個位元組,你那后面應該是字串了,我印象中c的字符不能這樣吧?那一串叫字串了,是不是該用陣列存,或者指標指向呢,輸入變數的時候,輸入控制符是不是該寫成%s呢uj5u.com熱心網友回復:
#include<stdio.h>int main()
{
float a,b;
printf("請分別輸入a 和b 的值:\n");
scanf("%f %f",&a,&b);
printf("a=%f, b=%f\n",a, b);
printf("ab=%7.6f\n", a*b);
printf("=========1====================\n");
printf("a=%2.1f, b=%2.1f\n",a, b);
printf("ab=%3.2f\n", a*b);
printf("=========2====================\n");
char *c="0376";
printf("十進制:%d\n",*c);
printf("八進制:%o\n",*c);
printf("十六進制:%x\n",*c);
printf("=========3==================\n");
char d='0376';
printf("十進制:%d\n",d);
printf("八進制:%o\n",d);
printf("十六進制:%x\n",d);
}
說是說不清,不如直接測驗
uj5u.com熱心網友回復:
運行結果:請分別輸入a 和b 的值:
2 3.2
a=2.000000, b=3.200000
ab=6.400000
=========1====================
a=2.0, b=3.2
ab=6.40
=========2====================
十進制:48
八進制:60
十六進制:30
=========3==================
十進制:54
八進制:66
十六進制:36
Press any key to continue
uj5u.com熱心網友回復:
第一個問題是x=2.0, y=3.2第二個問題是因為'0376'轉換為字符型別時編譯器通常會取最后一個字符(比如'xyz'會取z),然后字符'6'轉化為整型,查ascii碼表對應的是54
uj5u.com熱心網友回復:
我覺得這就是正解了hhh覺得對的話請采納一下uj5u.com熱心網友回復:
我覺得你可能問題打錯了很多,首先解釋你的第一個人問題,你的輸出的意思是保留小數點后6位,那么就應該是%.6f 表示小數點后保留六位,第二個問題,我懷疑你是不是打錯了,0開頭是八進制,而0376轉換成10進制是254而不是54. .uj5u.com熱心網友回復:
a是變數,數值是字符6,整數是多少?uj5u.com熱心網友回復:
我覺得這就是正解了hhh覺得對的話請采納一下
哇感謝!感謝!太感謝了!
uj5u.com熱心網友回復:
我覺得這就是正解了hhh覺得對的話請采納一下
哇感謝!感謝!太感謝了!
hh不客氣,有時候的確會有這種奇怪的問題,知識體系扎實上機試一試就不難解決了,當時我遇到這個問題也是上機試了就解決了的
uj5u.com熱心網友回復:
我試了一下
'0376'這種字符,編譯器直接取最后一位字符
但編譯器會警告
為啥子會直接取最后一位數字哦
單引號里的字符常量默認是一位吧,所以按最后一位取,不是很確定
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/113094.html
標籤:新手樂園
上一篇:如何在程式中復位USB設備
