本文目錄一覽:
C語言詳解(第5版)這本書怎麼樣?適合自學者看嗎?
對於初學者偏難,但是也不是不能用來自學,關鍵看你能不能堅持下去了。圖靈系列的書籍都非常不錯,希望你能夠好好利用。
嚴蔚敏 的 《數據結構(C語言版)》 這本書在豆瓣評分為什麼不高?
嚴蔚敏的《數據結構(C語言版)》這本書在豆瓣評分挺高的。數據結構(C語言版)的具體內容:
數據結構分為8類有:數組、棧、隊列、鏈表、樹、散列表、堆、圖。數據結構是指相互之間存在着一種或多種關係的數據元素的集合和該集合中數據元素之間的關係組成 。
1、數組
數組是可以再內存中連續存儲多個元素的結構,在內存中的分配也是連續的,數組中的元素通過數組下標進行訪問,數組下標從0開始。例如下面這段代碼就是將數組的第一個元素賦值為 1。
2、棧
棧是一種特殊的線性表,僅能在線性表的一端操作,棧頂允許操作,棧底不允許操作。 棧的特點是:先進後出,或者說是後進先出,從棧頂放入元素的操作叫入棧,取出元素叫出棧。
3、隊列
隊列與棧一樣,也是一種線性表,不同的是,隊列可以在一端添加元素,在另一端取出元素,也就是:先進先出。從一端放入元素的操作稱為入隊,取出元素為出隊。
4、鏈表
鏈表是物理存儲單元上非連續的、非順序的存儲結構,數據元素的邏輯順序是通過鏈表的指針地址實現,每個元素包含兩個結點,一個是存儲元素的數據域 (內存空間),另一個是指向下一個結點地址的指針域。根據指針的指向,鏈表能形成不同的結構,例如單鏈表,雙向鏈表,循環鏈表等。
C語言,求大神詳解24 25 27
24.把a[0]是什麼搞清楚就好弄了:a[0]是第0行第0個元素的地址,p=a[0]後p就是第0行第0個元素的地址。那麼——
A:*(p+i)+j就是第0行第i個元素值+j,錯;
B:*(*(a+i)+j)是把第0行第i個元素值+j的和作為指針來用了,錯;
C:p[i]+j是第0行第i個元素值+j,這與A同義,只是寫法不同,錯;
D:p+4*i+j是第0行第0個元素的地址+一個整數(4*i+j),仍然是地址,且4*i+j表示第i行第j個元素相對第0行第0個元素的位置數,所以正確。
25.D正確。此題與24不同之處是求第i行第j列的元素值而不是地址,但分析完全可以參照24題。
27.此題要搞清p是指向有4個int型元素的數組的指針,就是說p+1要跳過4個int型數據所佔有的空間——所以:
A:p+4*i+j因4*i+j是個整型數使整體還是指向一個數組的指針而不會是元素a[i][j]的指針,所以錯,所以選A正確。
B:*(a+i)+j——a+i是第i行的指針,*(a+i)就是第i行第0個元素的指針,*(a+i)+j就是第i行第j個元素的指針,亦即a[i][j]的指針,正確。
C:p[i]+j——p[i]是第i行第0個元素指針,p[i]+j就是第i行第j個元素的指針,正確。
D:*(p+i)+j——*(p+i)不就是p[i]嗎?*(p+i)和p[i]是同一目標的兩種寫法而已,所以與C同,正確。
C語言求詳解
//找到它的流程和作用
#include stdio.h
int main()
{
int v1 = 0,v2 = 0;char ch;
//while()默認控制一個語句或一個結構塊
while((ch = getchar()) != ‘#’)
//一直獲取輸入,直到輸入有’#’就跳出while
switch(ch)
{
//遇到’a’字符就從這裡開始執行switch()
case ‘a’:
//遇到’h’字符就從這裡開始執行switch()
case ‘h’:
//遇到其他字符就從這裡開始執行switch()
default: v1++;
//遇到’0’字符就從這裡開始執行,不跳出switch()
case ‘0’:v2++;
//switch()執行結束
}
printf(“%d,%d\n”,v1,v2);
}
/*
china#
-c 非’#’執行default 然後執行case ‘0’跳出switch,執行while
-h 非’#’執行default 然後執行case ‘0’跳出switch,執行while
-i 非’#’執行default 然後執行case ‘0’跳出switch,執行while
-n 非’#’執行default 然後執行case ‘0’跳出switch,執行while
-a 非’#’執行default 然後執行case ‘0’跳出switch,執行while
-# ‘#’跳出循環
*/
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/152683.html