一道C語言指標類問題有答案,解釋一下過程

2021-05-31 23:04:24 字數 6217 閱讀 3427

1樓:匿名使用者

從i=0;i<2;i++

j+=2

這兩句,可以得知,分析的字元是p[0][0]、p[0][2]、p[1][0]、p[1][2],即

'3'、'9'、'2'、『8』

if((p[i][j]-'0')%2) 是判斷上述字元轉換為數字後,哪個是奇數(模2不等於0),可以得知是'3'、'9'

num初始值是0,第一次分析出3後

num = '3' - '0' = 3

num值是3,第二次分析出9後

num = 3*10 + '9' - '0' = 39答案是39.

一道c語言指標問題,求大神解答。萬分感謝。

2樓:匿名使用者

#include

int main(int argc, char const *argv)

,,};// 初始

化二維陣列

int i,(*p)[4]=a,*q=a[0];//定義變數i//陣列指標p 初始化為二維陣列首地址

//一級指標q 初始化為二維陣列首元素地址for ( i = 0; i < 3; i++)//for迴圈,迴圈3次

for ( i = 0; i < 3; ++i)return 0;}

3樓:馮小氣氣

如果最後printf是printf("%d ",a[i][i])的話就可以這樣解釋:

1.二維陣列實際是3個一維陣列的結合a[0]= a[1]= a[2]=

2.(*p)[4]: *p指向的是a[0],*(p+1)指向的是a[1],*(p+2)指向的是a[2]

3.*q實際指向也是a[0][0]

4.第一個迴圈體中只有i==0時才有對陣列元素的操作,表示式實際為(*p)[0 + 0 /2] = (*q)+1,即是(*p)[0]=(*q)+1,也就是a[0][0]=a[0][0]+1,即a[0][0]=1+1=2

5.輸出的時候是第i行第i列元素,也就是a[0][0] a[1][1] a[2][2]

4樓:匿名使用者

第二,是否能產生安全感,來自多方面的因素,有主觀的和客觀的。這裡我們就主要談談

主觀方面。要讓對方產生安全感,首先要做的就是讓對方相信自己。讓對方相信自己這是一件不容易的事,你必須在言談舉止方面能夠體現出來,比如:

說話要算數,說得到做得到,做不到就不要亂承諾;經常給她說說心裡話,說說你的想法,經常問候和關心一下她的生活;無論多忙都不要不理她,經常給她一些驚喜;不要再對其它女孩太好,言談和行動上都一樣;願意為他改掉你的不良習慣。

5樓:匿名使用者

你的return四遍完全就是沒有任何用的,你已經定義了全域性變數了,不用return。問題在於你雖然敲擊了回車,但那並不會被輸入。所以你while迴圈可能會一直迴圈下去,直到碰巧碰到一個字元等於'\n'

#include

int l,n,b,o;

int count(char a)

}int main()

;printf("請輸入一句話:");

scanf("%s",str);

count(str);

printf("字母:%d\n數字:%d\n空格:%d\n其他字元:%d\n",l,n,b,o);

return 0;

6樓:匿名使用者

很多事都不是絕對的,不同的人有不同的做法。

7樓:匿名使用者

題目抄的都有問題……最後的 j 是從石頭縫裡蹦出來的?

8樓:韓稚生

1.二維陣列實際是3個一維陣列的結合a[0]= a[1]= a[2]=

2.(*p)[4]: *p指向的是a[0],*(p+1)指向的是a[1],*(p+2)指向的是a[2]

3.*q實際指向也是a[0][0]

4.第一個迴圈體中只有i==0時才有對陣列元素的操作,表示式實際為(*p)[0 + 0 /2] = (*q)+1,即是(*p)[0]=(*q)+1,也就是a[0][0]=a[0][0]+1,即a[0][0]=1+1=2

5.輸出的時候是第i行第i列元素,也就是a[0][0] a[1][1] a[2][2]

一道c語言的題目,跪求大神解答,拜託能不能解釋一下執行過程 5

9樓:油條大巴

#include

int main()

,*p1[3],(*p2)[3];

// 二維陣列p有3行,每行有3個整數.

// 應該寫成int p[3][3]=, ,  };

// p等於0x28fee4,這是十六進位制數,是記憶體地址,從這個記憶體地址開始,連續存放9個整數.

// p[0]等於0x28fee4,這是第0行的首地址,存放1,2,3這三個整數,每個整數佔用記憶體4個位元組,

//     其中,[0x28fee4]=p[0][0]=1,[0x28fee8]=p[0][1]=2,[0x28feec]=p[0][2]=3

// p[1]等於0x28fef0,這是第1行的首地址,存放4,5,6這三個整數,每個整數佔用記憶體4個位元組,

//     其中,[0x28fef0]=p[1][0]=4,[0x28fef4]=p[1][1]=5,[0x28fef8]=p[1][2]=6

// p[2]等於0x28fefc,這是第2行的首地址,存放7,8,9這三個整數,每個整數佔用記憶體4個位元組,

//     其中,[0x28fefc]=p[2][0]=7,[0x28ff00]=p[2][1]=8,[0x28ff04]=p[2][2]=9

for(i=0;i<3;i++) p1[i]=p[i];

// int *p1[3]是"指標陣列",是一種"陣列",裡面存放的是"指標",也就是存放"記憶體地址".

// 定義p1裡的數字"3"表示能存放3個"指標",也就是3個"記憶體地址".

// i分別等於0,1,2

// i=0時,p1[0]等於p[0]=0x28fee4, p1[0]指向p的第0行的首地址,也就是指向的首地址.

// i=1時,p1[1]等於p[1]=0x28fef0, p1[1]指向p的第1行的首地址,也就是指向的首地址.

// i=2時,p1[2]等於p[2]=0x28fefc, p1[2]指向p的第2行的首地址,也就是指向的首地址.

// p1等於0x28fed8,這是記憶體地址,

// 記憶體地址0x28fed8裡連續存放了三個資料:0x28fee4,0x28fef0,0x28fefc

// *p1=*(p1+0)等於0x28fee4,也就是 *p1 = p1[0]=p[0]=0x28fee4

//                        也就是*p1指向二維陣列p的第0行的首地址

// *(p1+1)等於0x28fef0,也就是 *(p1+1) = p1[1]=p[1]=0x28fef0

//                     也就是*(p1+1)指向二維陣列p的第1行的首地址

// *(p1+2)等於0x28fefc,也就是 *(p1+2) = p1[2]=p[2]=0x28fefc

//                     也就是*(p1+2)指向二維陣列p的第2行的首地址

// 所以,p1這個"指標陣列",存放了三個記憶體地址 ,

// 也就是 .

// 這三個資料就是三個"指標",也就是三個"記憶體地址",分別是二維陣列p的三行整數的首地址.

// 例如,*(p1+1)+0 指向 p[1] 的第0個整數4的記憶體地址

//      *(p1+1)+1 指向 p[1] 的第1個整數5的記憶體地址

//      *(p1+1)+2 指向 p[1] 的第2個整數6的記憶體地址

//      *(*(p1+0)+0) = p[0][0] = 1

//      *(*(p1+0)+1) = p[0][1] = 2

//      *(*(p1+0)+2) = p[0][2] = 3

//      *(*(p1+1)+0) = p[1][0] = 4

//      *(*(p1+1)+1) = p[1][1] = 5

//      *(*(p1+1)+2) = p[1][2] = 6

//      *(*(p1+2)+0) = p[2][0] = 7

//      *(*(p1+2)+1) = p[2][1] = 8

//      *(*(p1+2)+2) = p[2][2] = 9

p2=p;

// int (*p2)[3]是"陣列指標". 語句p2=p表示"陣列指標"p2指向二維資料p的首地址.

// 定義p2裡的數字"3"表示每行有3個整數.

// p2等於0x28fee4,這是記憶體地址,是二維資料p的首地址.

// *p2 = *(p2 + 0) = p[0] = 整數p[0][0]的記憶體地址

//       *(p2 + 1) = p[1] = 整數p[1][0]的記憶體地址

//       *(p2 + 2) = p[2] = 整數p[2][0]的記憶體地址

// *( *p2 + 0 ) = *( *(p2 + 0) + 0 ) = p[0][0] = 1

// *( *p2 + 1 ) = *( *(p2 + 0) + 1 ) = p[0][1] = 2

// *( *p2 + 2 ) = *( *(p2 + 0) + 2 ) = p[0][2] = 3

//                *( *(p2 + 1) + 0 ) = p[1][0] = 4

//                *( *(p2 + 1) + 1 ) = p[1][1] = 5

//                *( *(p2 + 1) + 2 ) = p[1][2] = 6

//                *( *(p2 + 2) + 0 ) = p[2][0] = 7

//                *( *(p2 + 2) + 1 ) = p[2][1] = 8

//                *( *(p2 + 2) + 2 ) = p[2][2] = 9

for(i=1;i<3;i++)

printf("%d,%d\n",*(*(p1+i)+1)+1,*(*++p2+1)+1);

// i分別等於1,2

// i=1時, *(*(p1+i)+1)+1 = *(*(p1+1)+1)+1

// 其中,*(p1+1) 等於0x28fef0,也就是 *(p1+1) = p1[1]=p[1]=0x28fef0

// 也就是 *(p1+1) 指向二維陣列p的第1行的第0個整數的記憶體地址

// 而 *(p1+1)+1 指向二維陣列p的第1行的第1個整數的記憶體地址

// *(*(p1+1)+1)就是提取"第1行的第1個整數",也就是

// *(*(p1+1)+1) = p[1][1] = 5

// 所以,*(*(p1+1)+1) + 1 = 5 + 1 = 6 (這是螢幕輸出的第一行第一個整數)

// 對於 *(*++p2+1) ,原本是 *( *(p2 + 0) + 1) = p[0][1] = 2

// 由於有"++p2"的運算,成為 *( *(p2 + 1) + 1 ) = p[1][1] = 5

// 所以, *(*++p2+1) + 1 = 5 + 1 =6 (這是螢幕輸出的第一行第二個整數)

// i=2時, *(*(p1+i)+1)+1 = *(*(p1+2)+1)+1

// 其中,*(p1+2) 等於0x28fefc,也就是 *(p1+2) = p1[2]=p[2]=0x28fefc

// 也就是 *(p1+2) 指向二維陣列p的第2行的第0個整數的記憶體地址

// 而 *(p1+2)+1 指向二維陣列p的第2行的第1個整數的記憶體地址

// *(*(p1+2)+1)就是提取"第2行的第1個整數",也就是

// *(*(p1+2)+1) = p[2][1] = 8

// 所以,*(*(p1+2)+1) + 1 = 8 + 1 = 9 (這是螢幕輸出的第二行第一個整數)

// 對於 *(*++p2+1) ,之前i等於1時,是 *( *(p2 + 1) + 1 )

// 由於有"++p2"的運算,現在成為 *( *(p2 + 2) + 1 ) = p[2][1] = 8

// 所以, *(*++p2+1) + 1 = 8 + 1 =9 (這是螢幕輸出的第二行第二個整數)

// 所以,程式輸出的第一行是6,6, 第二行是9,9

return 0;}

關於C語言指標的一道入門程式設計題,C語言指標簡單的程式設計題

include include void input int array printf n輸出10個數 理前 n for int j 0 j 10 j void getresult int array p temp q q p 1 p 1 temp find min p array q array ...

一道c語言問題求解答謝謝,一道C語言問題,求解答,謝謝

從詞x中取出第n 0 3 位元組。示例 從0x12345678中取出第1位元組。其中78是第0位元組,56是第一位元組,34是第二位元組,12是第三位元組,因為要求第一位元組,所以取出0x56。答案 int getbyte int x,int n 一道c語言指標的問題 求解答 謝謝 c和 ca 這兩...

c語言,程式設計題,要用指標方法,求助一道C語言的程式設計題,要用指標法

數入10個元素 36 25 14 78 95 65 45 82 19 66 排序後 14 19 25 36 45 65 66 78 82 95 press any key to continue include define maxlen 10 void select sort int x,int ...