1樓:寒寒家
a錯誤,char *a定義的是個字元指標。然後指向了常量字串"china",但後半句是錯誤的,*a代表字元,不再代表字元指標,所以不能指向字串。
b也是後半句錯誤,如果想用用字串對字元陣列初始化,只能在定義陣列的時候。 char str[10]; str = {}後面這句已經不是初始化的時候了。正確的做法:
1. char str[10] = "china" 2. char str[10] =
d是有語法錯誤的,會認為d[4]是之前定義好的。
c是正確的。
2樓:匿名使用者
a. 後半句,等價於後面的 char *a; *a="china"; 有問題,應該等價於char *a; a="china"; *a只代表第一個字母,*a不是指標
b.也是後半句的問題, char str[10]; str=; 只有在定義的時候,才可以用{}初始化,和前半句一樣 char str[10]=, 定義完了以後,如果還要對陣列賦值,只能用strcpy或者for迴圈來拷貝
d.後半句, c[4]=d[4]這本身沒問題,d[4]實際沒有定義,就賦值給c[4]是不可以的,且陣列之間也不可以直接賦值,只能用strcpy或者for迴圈來拷貝。但即使在定義後,這樣寫也不可以,c[4],d[4]這隻代表c和d陣列的第5個元素,並不代表整個陣列,所以,c[4]=d[4]="abc"; 意圖對整個陣列直接賦值,但卻把整個陣列賦給了一個元素,也是有問題的。
為什麼a b是正確的,c是錯誤的?可以解釋下嗎?
3樓:匿名使用者
首先拉測力計用力約等於摩擦力。拉白紙不但克服這摩擦力,還有紙與桌面的摩擦,所不省力。c錯。
拉白紙時,測力計與金屬盒相對靜止,此時金屬盒水平方向受力平衡,拉力=摩擦力,測力計的示數大小就是摩擦力的大小,這時白紙作什麼運動都不會影響金屬盒的狀態,所以a對。同樣由於金屬盒處於靜止狀態,測力計的位置不動,示數也較穩定。b對。
下面有一些關於c語言問題,希望大夥兒侃侃,最好解釋詳細,謝謝呢?
4樓:匿名使用者
第一題:3
這是一道位運算,a&0377等同於011&011111111的運算,這兩個與一下值為011,也就是3
第二題:11
這也是位運算,先把3,10,15化為二進位制,依次為:011,1010,1111.a|b&c先執行b&c得到1010,再跟a或運算(一位一位或)得到1011,也就是11.
第三題: d) h/2*(a+b)
h/2等於1,而代數中等於1.5.這是因為h為整型,h/2後也是整形,0.5捨去.
第四題:20 0
以上格式寫得讓人誤會,我重寫一下,你就會明白.
main() ,固if語句範圍只有第一個;為此
x=y;y=t;
printf("%d,%d\n",x,y);
}第五題:8 4
void f(int y,int*x) x是按地址傳,而y是按值傳,當值傳到函式裡時,*x可以改變x的值,而y不能返回.保持原來的值...
第六題:
這是c語言的記憶體動態分配,不是很掌握,沒有把握,希望其它好心人幫忙一下補齊.
第七題:efgh
這道我簡單說下,語言點太多,要是不明白,發訊息給我,我就這題說詳細.
return s+strlen(s)/2,返回的是一個指標,s指向首元素a,strlen(s)/2=4,固返回的指標指向第五個元素e.主函式中的 printf列印從第五個元素之後的字串.
第八題:6
這是一道遞規呼叫.主函式傳給函式時f()時,a=a[3]首元素是1;返回1+f(&a[1],2);f(&a[1],2)在呼叫函式時a=a[1],但此時首素是2而不是1;返回1+2+f(&a[1],1);最後呼叫函式,a=a[2],首元素為3,也只有一個;返回1+2+3,得到6
第九題:double max,&y
這題不需要解釋吧....還是簡單講一下,第一個空是函式宣告;要與定義的函式相符,第二個空,輸入時要加&,為什麼呢?我們要把輸入的值傳給變數對應的地址,固用地址符&
最後一題:14
位運算;12|012化簡得到:001100|001010=001110,換算成10進製得到14
其中注意,012是八進位制,1對應001,2對應010,一整個001010,因為兩個要等長,固補0;
哇,一口氣做完,真是夠累的...好久沒這麼做了...
呵呵,又來了;
我補充一下第六題,我看一下書,明白了.
p=(double *) malloc(3*sizeof(double));
5樓:
我說老兄,你到底學過程式設計沒有?
c語言初學者,有大佬能解釋下嗎?為什麼答案是11,11,11,12
6樓:孫毅超
對於這種問題復不能心急,咱們一條一制條看:
首先,定義了整數型x陣列,陣列的首位資料是10;
後面定義了整數型指標px,並且指標的初始地址被指向陣列的首位,也就是資料10所在的地址了;
好了,現在開始輸出;
a. 第一句printf輸出的是++*px,要搞清楚這裡有哪些操作:
1)取陣列首位地址中的資料,也就是10
2)進行加一,也就是11(注意!加一操作之後,陣列的第一位資料不再是10,已經變成11)
3)進行輸出(11)
b. 後面的printf輸出,操作:
1)取陣列首位地址中的資料,現在是11
2)進行輸出(11)
c. 第二句printf輸出的是(*p)++,操作(這一句之前有px=x,還是將px的指標指向了x陣列的首位):
1)取陣列首位地址中的資料,也就是11
2)進行輸出(11,這裡先輸出,後加一)
3)進行加一,也就是12(注意!加一操作之後,陣列的第一位資料不再是11,已經變成12)
d. 後面的printf輸出,操作:
1)取陣列首位地址中的資料,現在是12
2)進行輸出(12)
所以,綜上,所有的輸出是11,11,11,12
7樓:
結果是11,11,11,12正確啊。因bai
為第一行printf輸出的du是++*p,就是zhi對10先加1再輸出,dao當然回是11,接著再printf輸出*p,還是11不變;第二行答printf輸出的是(*p)++,是先輸出再加1,由於第一個printf中已經使10變為11了(就是*p),所以這裡先輸出11,然後再給11+1==12,最後一個printf輸出,自然是12。
C語言問題,求詳細解釋下,謝謝了
擁雲莊主 這個 表示的是輸出所佔的寬度。在這裡表示的是空格佔a 1個寬度,不足寬度用空格補齊 例如 printf s n 10,3,hello 表示的是右對齊 輸出寬度為10,不足10個字元空格補齊,限制輸出3個字元,所以,輸出是 7個空格 hel printf s n 10,hello 則輸出是 ...
c語言問題?詳細解答一下,謝謝,C語言問題,詳細解答一下,謝謝
密碼忘記了 遞迴呼叫,結果是輸出陣列中所有數的和,對這個例子結果是6.if n 這句話表示如果n 1,就以該陣列第二個數為輸出作為一個新陣列,n 1為新的n,遞迴呼叫該函式,將返回值和當前輸入陣列的第一個元素加起來的和作為返回值。else return a 0 表示n為1時,直接返回陣列第一個元素。...
c語言題,幫忙詳細解釋一下,c語言的題,幫忙解釋一下,謝謝!!!
i 5時開始執行 if 語句 if i 4 printlf d i 輸出5i 表示先取i操作,再自增1 1表示先自增1,再取i操作所以這裡輸出 5 i 6 break 跳出for迴圈 不執行for語句裡的 i 跳出執行 printf d i i 6 i 表示先取i操作 所以輸出 6 最後i的值是7輸...