1樓:谷歌地
小夥子這個題不用仔細分析
那麼一大段迴圈就是唬人的
就相當於一
個人出題問你版1 * 2 * 3 * 5 一直乘,乘到1000,然權後乘以0,等於多少一樣
都是唬人的
很明顯,這個陣列搞來搞去就是把陣列a的最後一個元素變成指標陣列的最後一項唄
那就找找陣列a的最後一項,還有p的最後一項,或者pp的最後一項
看下答案
選項a,看起來很像是正確答案,但陣列下標從0開始,最大下標是11,所以a錯
b,很明顯是這個指標陣列的最後一項,那就是12唄
cd不要看了
當然你要深究,那麼,這個指標陣列長度是3,最後一項是p[2]存放a[8]的地址
然後p[2][3] = a[8 + 3]
2樓:威封凜凜
int a[12]=, 陣列a包含12個元素,為1到12*p[3], 指標陣列
**p,i; 指向指標的指標和變數i
for(i=0;i<3;i)應該為for(i=0;i<3;++i) 迴圈
p[i]=&a[i*4]; 意思是p[i]的值為a[i*4]的地版址,這裡權p[i]是指標
也就是p[0]指向a[0]地址
p[1]指向a[4]地址
p[2]指向a[8]地址
pp=p;pp指向指標陣列p的地址 pp是指向指標的指標,p是指標陣列,所以p也是指向指標的指標,可以pp=p
我覺得解釋到這裡差不多了,我相信你可以的
3樓:匿名使用者
int*p[3];定義來
指標陣列
自p,它由3個指向整型資料的指標元素組成,也就是說p[0],p[1],p[2]均是指標。
p[2]=&a[8]
p[2][3]=*(p[2]+3)
*(p[2]+3)=a[11]=12
一道c語言題,求解答,謝謝啦
4樓:匿名使用者
a選項,pp[i][j] 非法,抄不能表示陣列a中元襲素的bai地址。
c選項,*(*(p+i)+j) 表示的是數du組a某個元素的zhi內容,而不是元dao素的地址。
d選項,p無法表示陣列a元素的地址,p是一個指標陣列,從它取一遍才能得到陣列a元素的地址。
c語言資料結構題,求大佬解答,萬分感謝!!!! 5
5樓:哈米哈達
之前儲存的
原始碼:#include
#include
typedef int elemtype;
struct btreenode
;//1、輸出二叉樹,可在前序遍歷的基礎上修改。採用廣義**式,元素型別為int
void printbtree_int(struct btreenode* bt)}}
//2、根據陣列 a 中 n 個權值建立一棵哈夫曼樹,返回樹根指標
struct btreenode* createhuffman(elemtype a, int n)
for (i = 1; i < n; i++)//進行 n-1 次迴圈建立哈夫曼樹
if (b[j] != null)
}for (j = k2; j < n; j++)//從當前森林中求出最小權值樹和次最小
else if (b[j]->data < b[k2]->data)
k2 = j;}}
//由最小權值樹和次最小權值樹建立一棵新樹,q指向樹根結點
q = malloc(sizeof(struct btreenode));
q->data = b[k1]->data + b[k2]->data;
q->left = b[k1];
q->right = b[k2];
b[k1] = q;//將指向新樹的指標賦給b指標陣列中k1位置
b[k2] = null;//k2位置為空
}free(b); //刪除動態建立的陣列b
return q; //返回整個哈夫曼樹的樹根指標
}//3、求哈夫曼樹的帶權路徑長度
elemtype weightpathlength(struct btreenode* fbt, int len)//len初始為0
}//4、哈夫曼編碼(可以根據哈夫曼樹帶權路徑長度的演算法基礎上進行修改)
void huffmancoding(struct btreenode* fbt, int len)//len初始值為0
else//訪問到非葉子結點時分別向左右子樹遞迴呼叫,並把分支上的0、1編碼儲存到陣列a}}
//主函式
void main()
a = malloc(n*sizeof(elemtype));
printf("從鍵盤輸入%d個整數作為權值:", n);
for (i = 0; i < n; i++)
scanf(" %d", &a[i]);
fbt = createhuffman(a, n);
printf("廣義表形式的哈夫曼樹:");
printbtree_int(fbt);
printf("\n");
printf("哈夫曼樹的帶權路徑長度:");
printf("%d\n", weightpathlength(fbt, 0));
printf("樹中每個葉子結點的哈夫曼編碼:\n");
huffmancoding(fbt, 0);
}來自yaoowei2012
一道c語言問題,請詳細說明一下運算過程,萬分感謝。
6樓:super豔豔
大致的功能是將a的內容反向輸出,4,3,2,1. 難理解的是static int t = 3; 這個變數只初始化一次,因為是靜態變數所以資料在堆區,當fun結束後不會被釋放,下次繼續可以使用這個變數,且值是上次使用後的,當j=0時,t=3,*y=x[3];當j=1時,t=2,*y=x[2];以此類推,當然fun的傳參不夠安全,很容易陣列越界
7樓:找自己_做自己
t, 只能在void fun中使用,,先執行
void main() 在執行void fun(int*x,int*y );跳轉到定義。執行void fun(int*x.int*y)裡面的,在執行 int a=,j,x=0; 接下來執行for(j=0;j<4;j++) j=5時不執行。
8樓:匿名使用者
核心問題是 static int t=3;儲存在靜態資料區的變數會在程式剛開始執行時就完成初始化,也是唯一的一次初始化,main函式中迴圈呼叫4次fum函式,第一次呼叫把a[3]賦給x並輸出,因為t--,第二次把a[2]賦給x並輸出……
一道c語言題,求解答
9樓:江湖有痴人
從main函式開始來,第一個switch判斷a與3取餘源為1,則程式進入case 1,c++,變bai量c此時自加du1為1,然而並未遇zhi
到break,所以並未跳出switch語句,dao進入case 2,此時進入第二個switch判斷b與2取餘為1,後面並未有case 1這個選擇語句,所以出錯進入default語句,變數c再次自加1為2,跳出程式,用printf函式輸出變數c,結果顯示為2. ok,搞定
10樓:煙火夜空
題目 考 switch 語句的特bai性,duswitch語句,找到 入口zhi後dao(就是對應值),跳轉到入口處,往下執行回。(如遇到break 就結束switch 語句)答
題目中,a=10,a%3=1,選擇入口case 1:執行 c++,c=1;未遇見break 語句,繼續往下執行 case 2:又switch(b%2);
b=11,b%2=1,無case 1入口,選擇default 入口:執行c++,c=2;結束2個switch ,列印c《回車》→2《回車》
11樓:天雲一號
switch(a%3)}
一道c語言程式題目,求解答,一道C語言程式題目,求解答
上面的 中,沒有對s進行輸入,所以如果輸出s的話,指定會是亂碼的啊把指標調回p 0 的話,可以p 回去 或者在p改變之前,用tmp p儲存起始位置。struct stu tmp p p p tmp p 此外,我猜,這個程式中的s是為了儲存平均值?struct stu int main int i,l...
一道c語言程式題,求解答過程,一道C語言程式題,求解答過程
小孚天天推 第一次convleft 1234 1000 1234 1000 10 1 234 10 2341 可以看出向左移動看一位 第二次convright 2341 10 1000 2341 10 1 1000 234 1234 可以看出向右移動了一位 第三次convright 當然就是把123...
c語言題目求解答,一道c語言題目,求解答!!!!!!!
include stdio.h void dfs int k int main int argc,char argv dfs n printf n return 0 執行樣例 一道c語言題目,求解答!scanf 函式中沒有精度控制。如 scanf 5.2f a 是非法的。不能企圖用此語句輸入小數為2...