iT邦幫忙

0

【急】有沒有大神可以幫小弟解出這題【C】

https://ithelp.ithome.com.tw/upload/images/20190425/20113727fys97cGk7t.png

請各位大神幫忙

看更多先前的討論...收起先前的討論...
ant1017 iT邦新手 4 級 ‧ 2019-04-25 14:11:51 檢舉
自己的作業自己做....
google是你第二個老師
howling iT邦新手 5 級 ‧ 2019-04-25 14:13:09 檢舉
請google大神幫你吧....
akira6285 iT邦新手 5 級 ‧ 2019-04-25 14:27:54 檢舉
我不知道哪個才是對的...
froce iT邦高手 1 級 ‧ 2019-04-25 14:31:08 檢舉
連google過都不知道是不是對的,那你怎麼知道我們給你的是不是對的?
我想你只能重修了。
ant1017 iT邦新手 4 級 ‧ 2019-04-25 14:42:21 檢舉
不知道可以去問你的指導老師,如果你連這一步都要別人來幫忙,那你還是別走這個科系了
有時候被人電一電,雖然玻璃碎滿地,但自己慢慢重組後會更強,加油!(但這真的沒很難,去GOOGLE吧!或轉職...XD
小魚 iT邦高手 1 級 ‧ 2019-04-25 16:06:05 檢舉
磁碟重組過跑更快...
"武吉郎"直接買新的...(誤
小魚 iT邦高手 1 級 ‧ 2019-04-25 16:23:29 檢舉
我看了兩次才看懂誰是 武吉郎...
想不到吧XD
想不到吧XD
newkevin iT邦高手 1 級 ‧ 2019-04-25 18:04:03 檢舉
不知道哪個是對的
至少把你GO到的 貼出來
然後 每行/每段後面
備註你理解他寫的意思
fillano iT邦超人 1 級 ‧ 2019-04-26 11:03:31 檢舉
依照命題邏輯,這題根本不用回答,因為題目是錯的XD

什麼是診列啦....
1
小魚
iT邦高手 1 級 ‧ 2019-04-25 14:58:14

我不知道哪個才是對的...

這個簡單,
把Code打上去,
Compiler之後就知道了...
另外你自己也要下功夫去學C語言,
這不是甚麼很困難的問題...

4
一級屠豬士
iT邦高手 1 級 ‧ 2019-04-25 15:37:25
#include <stdio.h>

int main() {
    float ary[] = {1, 2, 3, 4, 5, 6, 7, 8, 9 };
    float *ptr = ary;
    float *pEnd = ary + sizeof(ary)/sizeof(float) - 1;
    
    printf("--- 基礎資料 ---\n");
    while (ptr <= pEnd) {
        printf("pointer = %p \t value = %f\n", ptr, *ptr);
        ptr++;
    }
    printf("--- 基礎資料 ---\n");
    
    float *ptr2 = ary;
    printf("--- 乘以10 ---\n");
    while (ptr2 <= pEnd) {
        *ptr2 *= 10.0;
        ptr2++;
    }
    
    float *ptr3 = ary;
    printf("--- 新資料 ---\n");
    while (ptr3 <= pEnd) {
        printf("pointer = %p \t value = %f\n", ptr3, *ptr3);
        ptr3++;
    }
    printf("--- 新資料 ---\n");
    
    return 0;
}

執行結果:

--- 基礎資料 ---
pointer = 0x7ffee939da90 	 value = 1.000000
pointer = 0x7ffee939da94 	 value = 2.000000
pointer = 0x7ffee939da98 	 value = 3.000000
pointer = 0x7ffee939da9c 	 value = 4.000000
pointer = 0x7ffee939daa0 	 value = 5.000000
pointer = 0x7ffee939daa4 	 value = 6.000000
pointer = 0x7ffee939daa8 	 value = 7.000000
pointer = 0x7ffee939daac 	 value = 8.000000
pointer = 0x7ffee939dab0 	 value = 9.000000
--- 基礎資料 ---
--- 乘以10 ---
--- 新資料 ---
pointer = 0x7ffee939da90 	 value = 10.000000
pointer = 0x7ffee939da94 	 value = 20.000000
pointer = 0x7ffee939da98 	 value = 30.000000
pointer = 0x7ffee939da9c 	 value = 40.000000
pointer = 0x7ffee939daa0 	 value = 50.000000
pointer = 0x7ffee939daa4 	 value = 60.000000
pointer = 0x7ffee939daa8 	 value = 70.000000
pointer = 0x7ffee939daac 	 value = 80.000000
pointer = 0x7ffee939dab0 	 value = 90.000000
--- 新資料 ---

我多加了把 pointer 印出來, pointer 部分,不同機器執行結果不一定相同.

看更多先前的回應...收起先前的回應...
小魚 iT邦高手 1 級 ‧ 2019-04-25 16:05:08 檢舉

這裡是IT作業問答區...

寫得很詳細,我是老師的話會給超過一百分!但要看人(不是人人都開外掛,昨天連ARRAY都不會,今天就把指標給秒殺了!這樣指標很可撥ㄟ...QAQ/images/emoticon/emoticon02.gif

小魚 iT邦高手 1 級 ‧ 2019-04-25 16:24:48 檢舉

我是老師的話,
我可能會跟他說,
你跟我解釋一下這是什麼意思...

小魚 iT邦高手 1 級 ‧ 2019-04-25 16:26:31 檢舉

這有什麼, 昨天連四則運算都不會, 今天就可以交微積分作業了...

被雷劈到,然後愛因斯坦附身!/images/emoticon/emoticon01.gif

連指標都印出來了。太神了。

我是希望他能好好學習.至於說以後怎樣努力,就看他自己了.

froce iT邦高手 1 級 ‧ 2019-04-25 20:12:22 檢舉

難吧...
這題就考指標和取值而已,連我沒怎麼摸C的都會。這樣還說連google都不知道是不是對的,除非他不是資訊相關科系,我是建議讓他重修對他比較好。

小魚 iT邦高手 1 級 ‧ 2019-04-25 20:19:39 檢舉

這跟資訊相關科系無關,
我也不是資訊相關學系,
但是這題我大學的時候就會了...
不過其實我學程式的時候不是上課的時候,
(雖然計概都不會但還是過了 XD
不過真的是低空飛過...)
反而是後來自己去學的...
我覺得這種東西需要興趣...

但如果是相關學系又沒興趣...
真的是要好好考慮轉系...

froce iT邦高手 1 級 ‧ 2019-04-25 20:44:18 檢舉

不是資訊相關科系,學C沒啥屁用啊,反而是課程設計出問題吧。XD
現在又不是只有C可以學,一堆易學的程式語言不安排入課程,然後叫非相關科系的從C入門,那真的不會就算了。

每個人出路很多拉 ~~ 很多非資訊相關科系都會要求學程式語言了,現在已經是全民學程式的時代了,不過我比較在意的就是,解答出來了,當事人怎麼還沒出現,不是很急嗎 ...

我以前也常常在考試的時候,偷偷google/images/emoticon/emoticon33.gif

如果不走工程師的話,應付一下學校功課也並無不妥拉,能把自己擅長的事情專精好就很了不起了

weiclin iT邦高手 4 級 ‧ 2019-04-25 23:38:34 檢舉

不過我比較在意的就是,解答出來了,當事人怎麼還沒出現,不是很急嗎 ...

看發文時間, 說不定是上課考試中(?

棉花 iT邦新手 4 級 ‧ 2019-04-26 09:12:14 檢舉

大概已經被死當了(?

當初我讀資工是從C++入門,認識蠻多底層的東西
程式沒寫好直接炸
現在新的語言幫忙做掉的事太多了,寫久了有種能力在退化的感覺

1
淺水員
iT邦新手 3 級 ‧ 2019-04-26 10:46:18

指標的寫法嗎?
好久沒練習C語言了

#include <stdio.h>

void forEach(void *ary, int size, int count, void (*func)(void *data));
void mulTen(void *data);
void printData(void *data);

int main()
{
    float ary[] = {1, 2, 3, 4, 5, 6, 7, 8, 9 };
    int size=sizeof(*ary);
    int count=sizeof(ary)/sizeof(*ary);
    printf("before:\n");
    forEach(ary, size, count, printData);
    forEach(ary, size, count, mulTen);
    printf("\nafter:\n");
    forEach(ary, size, count, printData);
    return 0;
}

void forEach(void *ary, int size, int count, void (*func)(void *data))
{
    int i;
    for(i=0; i<count; ++i) {
        func((char*)ary+i*size);
    }
}

void mulTen(void *data)
{
    *(float*)data=*(float*)data*10;
}

void printData(void *data)
{
    printf("%.2f ",*(float*)data);
}

我要發表回答

立即登入回答