1樓:文刀大口
第乙個題目應該這樣理解,首先a是乙個二維陣列,第一維可以認為為指標,指向字串(或字元陣列),teacher按道理後面應該有個\0,不過這個在初始賦值時應該被覆蓋了,而且變成連續的了,其長度若按字串(strlen)理解確實大於7(為10),按陣列理解當然不能超過7了,但是列印的時候是按字串列印的。 這種初始化算是一種不正確的初始化,應該盡量避免。
所以p+3可以理解為p現在指向第一維的字串偏移為3的位置處。
第二個題目主要是考慮運算子結合的優先順序別的。
(*p)[7],首先是乙個指標,他指向陣列,這個陣列有7個元素。他每次加1相當於加了陣列長度7*(sizeof(陣列元素型別))。而a此時可以認為陣列指標,型別相同,不過a為常量,p為變數。
明顯,你現在還沒有輸出good! ,想輸出很簡單printf("%s\n%s\n",a[0],++p);
printf("%s\n",++p);
*p[7],首先是乙個陣列,他的元素是7個指標。這個可以簡單的認為7個連續的指標。
這樣應該算是清楚了。。。。
2樓:慶韶容
char a[7]申請的是連續的一塊記憶體,程式是不會檢查陣列是否越界的,因為teacher無\0而tom有,所以不輸出good
3樓:匿名使用者
char[7]=;
這個變數名也沒有,就是有變數名,也會報錯的error: initializer-string for array of chars is too long
不知道,你編譯過沒,答案怎麼出來的。
4樓:匿名使用者
char[7]=;
這個只是初始化,按照規定進行儲存!我們計算機會在大二開「資料結構」這門課,講述的就是怎樣儲存資料!
儲存為t e a c h e r
t o m \0 \0 \0 \0
g o o d \0 \0 \0
char *p=a[0];
p指標指向t,printf(「%s」,p);是字串輸出,直到遇到\0停止。當字串沒有終止符時,向後尋找,直到找到\0為止。
p定義為char *p=a[0]型別,所以p=p+1,就是p指向下乙個char內容!
char (*p)[7]是定義指向字元陣列的指標,p=p+1,p指向跳過後面7個char型別的數,即p=&a[1][0];
char *p[7]是定義連續的7個指標的一維陣列,即p[0]=&a[0][0],p[1]=&a[0][1]。
所以第二題為
teachertomtom
5樓:匿名使用者
其實您已經接近答案了。
char a[7]=;在記憶體中的布局是:
't''e''a''c''h''e''r''t''o''m''\0'(然後三個位置沒有用)'g''o''o''d''\0'(然後2個位置沒有用)
為什麼能初始化,因為編譯器不會檢查您賦值的邊界問題,它只會檢查您的語法是否符合語義要求。
所以輸出a[0]的話就會輸出teachertom,因為r後面沒有'\0',會繼續輸出,直到'\0',而tom的m後面剛好有'\0',所以輸出上述答案就是正確的了。
p=p+3,所以p指向teacher中的'c'所以輸出p會輸出chertom。答案是ok的。
char (*p)[7]是指p指向乙個有7個元素的陣列,而
char *p[7]是指乙個陣列有7個元素,每個元素都是指向char值的char*指標。
初學者請教 兩道簡單的c語言程式設計題目
6樓:沐沐
我沒有改你的輸入語句,如果改了會更短一點。
#include
void main()
else if(j%2==0)t++;
} for(j=1;j else if(j%2==0)t++; } day=(30-d1)+(12-m1)*30+(y2-y1-1)*365+(m2-1)*30+d2+t; printf("total day:%d\n",day);} 7樓:中華知識鋪子 [回答] 1. 用c語言自己的時間函式 difftime(time_t time1, time_t time0) / 86400 這樣做得缺點是,這裡的time_t型別,只支援到2037年 2. 自己定義函式 樓主用的方法,在實際程式設計裡不常用,變化比較大。 下面這個方法是直接計算兩個日期到公元元年的天數 然後相減,這個是實際程式設計時的演算法,經過很多程式設計師的洗鍊,已經被廣泛使用 #include #define leap(y) (y%(y%100?4:400)==0) /*公元y年是否閏年*/ long totaldays(int year,int month,int day)/*公元紀年的總天數*/ ; int c=day,m,y=year-1; days[2]=28+leap(year); for(m=1;m return c+y/4-y/100+y/400+y*365l; } void main() 這應該是全部的實現方法了 樓主的方法沒必要簡化了 尤其是刻意追求短**就更沒有必要了 要知道,**短了,可讀性就差 兩者協調好,才能稱為好程式^^ 悉雨辰寂 8樓: 第二題有什麼簡單的方法嗎?期待高手~ 9樓:高金山 樓上寫的比較簡潔,也很正確 樓主寫的太亂了 本來我打算幫樓主改改的,鑑於樓上說要鍛鍊他的自學能力,我也不費這個心了 求一適合c語言程式設計題,適合初學者,要有點難度滴 10樓:匿名使用者 1.實現乙個+ - * / ( )的運算 由左向右運算,*/優先順序高於+/,()優先順序最高2.請在十分鐘內實現10個字串處理函式,要求格式規範、有適當的判斷語句 樓下那個查重複出現子串的,我認為使用strcmp函式更為方便 初學者求解一道資料結構[c語言版]的題目 11樓:匿名使用者 struct lnode *head; lnode* lnodecom(lnode* h1,int h1len, lnode* h2,int h2len ) else while(p1->next != null)p1 = p1->next; p1->next = p2; return p1; } 複雜度: o(hlen) (hlen為短表的長度) 參考 如下 include int sum int a,int n int main include int sum int a,int n int main include int sum int n1,int n2,int n3,int n4 void main 首先你寫的就有點問題,給你解釋下... 1 輸出字元型,並且希望顯示為字元,就用c,如果希望顯示的是數字,則用d,他們的對應關係可以檢視ascii表,2 int和char的大小不同,char 只1個位元組,int為4個位元組,也就是char 只有256個字元,而int則有2的32次方個數。表示的範圍是不同的 3 a和101的關係可以檢視a... c語言規定,在定義列舉型時,可以給列舉常量賦初值,方法是在列舉常量的後面跟上 整型常量 例如,表示三原色的列舉型可以定義如下 enum colorl 則列舉常量,red的值為2,yellow的值為4,blue的值為7。1 給變數或陣列元素賦值,格式為 列舉型變數或陣列元素 同一種列舉型常量名 c語言... 力挺 21天學通c jesse liberty bradley jones著.主要是基礎知識,講解很細緻.而且全書的風格很適合初學者,沒有令人頭暈的乙個個視窗,資料.而是通過 講解用法,很實用,而且初學者看的時候也不會覺得煩,我當時就是看的這個.c 程式設計教程 閔聯營 何克右 主編 這本書很基礎,... 根據我最初學習 c 語言的體會就是 首先購買一本難度適合自己的教材。當然了,至於說哪一本書適合自己,這個因人而異,沒有一定之規,需要自己去書店仔細閱讀,然後確定下來哪一本書籍難度適合自己。然後就是必須在電腦上安裝乙個 c 編譯器 例如 windows 系統下面的 microsoft visual c...C語言初學者問題,C語言初學者問題
c語言程式設計問題(初學者),C語言程式設計問題(初學者)
c語言我是初學者,C語言 我是初學者
c 適合初學者的書,推薦幾本適合c 初學者入門的書
C語言初學者看什麼書 C語言初學者適合看什麼書