看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《umi74 (Kick-Ass)》之銘言: : 剛學C語言 遇到滿多困難 有請高手幫忙一下@@ : 輸入N筆資料 0=<N<=10 的總和 可是我只能一次打10個 : 不然會出現錯誤 請問怎麼解決呢 附上我的原始碼 : int a,b,c,d,e,f,g,h,i,j,x; : scanf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",&a,&b,&c,&d,&e,&f,&g,&h,&i,&j); : x=a+b+c+d+e+f+g+h+i+j; : printf("總和=%d",x); : 還有怎麼找這10個數字的最大值呢 @@ : 有規定這10個數不能大於100  本來看完水滸傳dvd想睡了,在上床前逛逛版面看到這個問題. 其實我本來也不想雞婆,因為已經有熱心人士提供了程式碼. 不過我看到原po推文問如何得知輸入數字的數目. 想建議原po何不用檢查argc就知道你輸入了多少數字? 當然要比大小得把argv裡面的字串換成整數,剛好還可以檢查有沒有大於100 /************************以下跟程式無關****************************/ 還有,原po推文有提及"學校還沒教" <---這個踩到我的點,我覺得這根本不是理由 程式語言這種東西跟數學一樣需要練習,根本就沒有教完的一天 怎麼可以奢望老師們把所有的東西教給你? 所以不能只求進度跟上課堂,你還要自己先看過,先打過,先try過,再來發問. 有些簡單的演算法,程式語法,資料結構平時就應先下一點功夫看看. 少花一些時間打魔獸,增加一下自己的程式功力,我想這要求應該不過份吧? 其實這些心裡話早就想講了,不是針對原po,有些id發問完一次就跑,內容則是十足的作業文. 好一點的會說個謝謝,糟一點的就問完自刪,所以板上才會發起投票禁止自刪. 抱歉,言重了.前陣子一堆文章違規被砍,搞得版面亂糟糟的,心理煩悶,在此抒發. 很抱歉跟各位努力經營的板友們吐苦水,還望大家海涵. 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.161.185.142
Dannvix:為什麼會出現 argc/argv ... 完全不同用途吧= = 11/01 09:42
loveflames:argc是程式執行前輸入的字串數,跟這例子無關吧 11/01 10:21
------------------------------------------------------------------------------ 剛剛起床,臨時給了個例子,若有闕漏尚請板友指正,謝謝. #include<stdio.h> #include <stdlib.h> int main(int argc, char* argv[]) { int count; int max; int *parray; /*創建動態陣列*/ parray = (int*)malloc((argc - 1) * sizeof(int)); for(count = 0; count < argc - 1; count ++) { *(parray + count) = atoi(argv[count + 1]); } /*這邊開始檢查參數是否正確,像是參數至少要三個 : 檔名 數字1 數字2 *當然還要檢查是否數字有小於100,不過這邊只實做了檢查參數數目, *其他檢查實做給需要者自行撰寫 */ if(argc <= 2) { printf("用法: %s 數字1 數字2 數字3 ...\n",argv[0]); return 0; } /*下面開始找最大值*/ max = *parray; for(count = 1; count < argc - 1; count ++) { if(max < *(parray + count)) { max = *(parray + count); } } printf("最大值是 %d\n", max); /*別忘了要把記憶體還回去*/ free(parray); return 0; } ---------------------------------------------------------------- 實際測試: bigdick@bigdick:~/code$ clear && gcc arg_example.c && ./a.out 1 2 3 最大值是 3 就算數字超過10個也行: bigdick@bigdick:~/code$ ./a.out 1 100 2010 30505 41 6 8 9 10 22 31 最大值是 30505 如果輸入的參數不夠就給你警告: bigdick@bigdick:~/code$ ./a.out 1 用法: ./a.out 數字1 數字2 數字3 ... 這樣用我覺得整個程式比較自由一點 作業環境在linux debian Lenny 上 gcc 4.1.3 可正常編譯 ----------------------------------------------------------------- ※ 編輯: DEATHX 來自: 118.161.185.142 (11/01 11:31)
james732:原po連陣列都不太了解 用到動態配置有點殘忍...XDDD 11/01 11:33
ledia:我覺得這樣不太好用, 因為 cmdline buffer 總是有限制 11/01 11:40
ledia:如果能用 stdin/file io 讀資料會比較好 11/01 11:40