1. 關於c語言習題和解釋
A. 第一個printf語句輸出的是數組a的首地址,是16進制輸出的。
10進制轉16進制的方法是用十進制數除16後自下而上取值。
194轉換成10進制數是404
int型佔2個位元組,則p+9表示地址後移9*2位。即404+18=422.這個值以16進制輸出,就是1a6。
B. 指針P指向數組a的首地址,對應的值是2.
p++,++在後,則先賦值,再執行p=p+1。則*(p++)這個表達式的值是首元素的值。
**k是指向地址的指針,指向地址p,而P經過上一個運算後已經移向值4了。所以第二個結果是4。
C. getchar()函數是從終端緩沖區讀一個字元。按照題目中的輸入,終端緩沖區的字元為「a<cr>b<cr>cdef<cr)」
請注意回車也是字元。因為數組只能存入6個字元。則數組中的元素為「a\nb\ncd」,故打出來結果如此。
D. 這題我就不給你詳細解釋了,每一步值說出來扁幅會很長。只有一點要提醒你。關於自增(++)自減(--)你學得不是很好。++在前,先執行再賦值;++在後先賦值再執行。如int i=10,j=20,c,d;c=i++,d=++j;則c值為10,d值為21.
E. 此程序找出最小值,找到後,列印該值和他的下標。
2. C語言概念題
*p++應該是取指針指向的變數,然後對指針P++(地址)
*(p+1)是指針P+1,然後取指針指向的變數
*(++p)是指針P先++,然後去指針指向的變數,=*(p+1)
(*P)++取指針指向的變數(顯示*p),最後對*p對其+1
其他幾個,沒見過
-i++等於-(i++),C語言是右結合
3. 簡單的C語言概念題
雖然,數組和指針,數組名理解為一維指針,二維數組名理解為二維指針,但是很多情況下不是通用的,這就是(潛在的)規定,記住就好,用到的時候調試一下就行,平時理解了就行,也別太深究。如果有人非的得拿這個出題,那的確很無聊了。
而且如果是這種很有爭議性的原則,有的還是ASCI標准不明確的部分,一般也是實際中很少用到的,即使是非用不可的地方,為了程序的安全性和可移植性也會用其他方案來避免這種奇異點。
下面就 你說的做了一些試驗 注釋部分為編譯不通過的,相鄰的為有比較性的。
////////////////// DEV C++ 下調試通過,
#include<iostream.h>
int main()
{
char* s1 = "string";
s1 = "other";
char s2[] = "string";
//s2 = "other";
char* s11[2] = {"string","string2"};
s11[0] = "other";
int a[] = {1,2,3,4};
char s12[2][20] = {"string","string2"};
//char s13[2][] = {"string","string2"};
//s12[0] = "other";
//s13[0] = {"other"};
system("pause");
return 0;
}
4. c語言題解釋
#include <stdio.h>
main()
{ int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;
for(i=0;i<12;i++) c[s[i]]++; /*就是s[i]=1有四次,即c[s[i]]=c[1]有四次,即c[1]自增4次,c[2]自增三次,c[3]自增三次,c[4]自增兩次*/
for(i=1;i<5;i++) printf("%d",c[i]); /* */
printf("\n"); getch();
}
5. C語言題目解釋
聯合體共享內存空間,
所以給s->i[0],s->i[1]賦值,就已經給long k,char c[4]賦值了。
一般通用計算機是little-endian低位對齊的
short占兩個位元組,
s->i[0]在內存中間為0011 1001 0000 0000 (0039)
s->i[1]在內存中間為0011 1000 0000 0000 (0038)
那麼long 型的s->k 就應該為0011 1001(38) 0000 0000(00) 0011 1000(39) 0000 0000(00)
所以
s->k 以lx列印就應該00380039
s->c[0] 為0011 1001
即9(ASC2碼的39就是字元9)
s->c[1] 為0000 0000
s->c[2] 為0011 1000
即8(ASC2碼的38就是字元8)
s->c[3] 為0000 0000
-------------------------------------
SO,結果是:
380039
9
空
8
空
6. C語言基本概念題--在線等
我覺得不是「精髓」,是錯誤!
這導致了,運行的結果是不可預期的(不確定的)。
我在VC上運行的結果是19
#include <stdio.h>
main()
{
int *p,s=0;
char a[]="program";
for(p=(int *)a;*p;p++)
s++;
printf("%d",s);
return (0);
}
7. c語言概念問題
D
A. 任何編譯器都要進行語法檢查和語義檢查。即使如HTML這種邊解釋邊執行得語言也需要檢查語義動作。相信您學過編譯原理後悔對此更加理解。這就好比人類語言,總是有語法存在的。
B. 過程和函數是典型的PASCAL風格,二者的區別是:函數據有返回值,過程沒有。C語言統一了二者,用返回值為void的函數代替了過程。因此C中沒有函數
C. 這也是PASCAL的風格。可能是為了強調程序的結構化,C語言不支持這點。這也使得C的編譯時間大大加快。
D. 與C相反,C錯,D當然就對了
註:對於這些細節的區別很重要,它們是基石。希望我這樣不厭其煩的解釋,能夠給你一些幫助。
8. 請教一道c語言概念題,
第一題A錯了,hello再加上結束符,5個字元不夠存
第2題應選A吧
9. 名詞解釋:題目:c語言程序設計譚浩強 用這一段話有效的解釋出來。。不少於50個子。。
譚浩強寫的一本書,叫做《C語言程序設計》,這本書適合大部分學習C語言的初學者。
10. c語言的一個概念題
C,因為當奇數時,余數為1,表示真,取非則變為假