史萊姆論壇

返回   史萊姆論壇 > 專業主討論區 > 程式語言討論區
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


發文 回覆
 
主題工具 顯示模式
舊 2005-10-17, 09:26 PM  
天上天下
註冊會員
 
天上天下 的頭像
榮譽勳章

勳章總數
UID - 3073
在線等級: 級別:1 | 在線時長:8小時 | 升級還需:4小時
註冊日期: 2002-12-06
VIP期限: 2005-12
文章: 89
精華: 0
現金: 1 金幣
資產: 1 金幣
預設 有兩題作業點疑問

7. 輸入資料個數 n ,及 n 筆整數資料, 求出各資料平方的總和.

測試資料: (1) 3 1 2 3 印 1*1+2*2+3*3=14 (2) 5 1 -1 2 -2 0



8. 連續輸入整數資料, 以 999 結束, 求出平均值(浮點數).

測試資料: (1) 1 2 4 999 2.333333 (2) 5 -4 3 -2 -1 999


這是我目前寫的(第7)
int x,m,n,y,i,l;
printf("輸入幾筆資料:");
scanf("%d",&m);
printf("輸入幾個數:");
scanf("%d",&n);
for(l=1;l<=m;l++)
{
x=0;

for(i=1;i<=n;i++)
{

printf("input:");
scanf("%d",&x);

}
}

system("PAUSE");
return 0;

我不知道要怎麼把輸入的數字平方並相加
第8題相加後取平均的部份也是不會寫?
麻煩會的大大教一下,謝謝
天上天下 目前離線  
送花文章: 4, 收花文章: 1 篇, 收花: 1 次
回覆時引用此帖
舊 2005-10-20, 07:35 PM   #16 (permalink)
註冊會員
 
天上天下 的頭像
榮譽勳章

勳章總數
UID - 3073
在線等級: 級別:1 | 在線時長:8小時 | 升級還需:4小時
註冊日期: 2002-12-06
VIP期限: 2005-12
文章: 89
精華: 0
現金: 1 金幣
資產: 1 金幣
預設

引用:
作者: snoopy
用do while包住程式主題
大致結構如下

main()
{
do{
}while(condition);
}
我還是不會耶
我把printf("y or n:");
scanf("%c",&c);
加到裡面

#include <stdio.h>
#include <stdlib.h>
main()
{
int a,b,i;
char c;

do{
<-----這裡會問,但是不管輸入甚麼都一樣會繼續執行
for(i=1;i<=4;i++)
{
printf("請輸入一算式");
scanf("%d%c%d",&a,&c,&b);
if(c=='+')
printf("%d%c%d=%d\n",a,c,b,a+b);
else if(c=='-')
printf("%d%c%d=%d\n",a,c,b,a-b);
else if(c=='*')
printf("%d%c%d=%d\n",a,c,b,a*b);
else if(c=='/')
printf("%d%c%d=%0.2f\n",a,c,b,(float)a/b);
}
<-----這裡的話只會直接顯示y or n:,之後就直接結束了
}while(c=='y');
system("PAUSE");
return 0;
}

我是要讓他跑完後問還要不要在跑一遍.
天上天下 目前離線  
送花文章: 4, 收花文章: 1 篇, 收花: 1 次
回覆時引用此帖
舊 2005-10-21, 01:07 AM   #17 (permalink)
註冊會員
 
snoopy 的頭像
榮譽勳章
UID - 33737
在線等級: 級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時
註冊日期: 2003-02-02
VIP期限: 2011-06
住址: 台南共和國
文章: 1831
精華: 0
現金: 12744 金幣
資產: 12834 金幣
預設

這樣好了

main ()
{
printf("input 1 to continue, input 1 to exit\n");
scanf("%d",&key);
while(key == 1)
{
//實作
int key;
printf("input 1 to continue, input 1 to exit\n");
scanf("%d",&key);
}
}
snoopy 目前離線  
送花文章: 623, 收花文章: 392 篇, 收花: 1288 次
回覆時引用此帖
舊 2005-10-21, 01:48 PM   #18 (permalink)
註冊會員
 
天上天下 的頭像
榮譽勳章

勳章總數
UID - 3073
在線等級: 級別:1 | 在線時長:8小時 | 升級還需:4小時
註冊日期: 2002-12-06
VIP期限: 2005-12
文章: 89
精華: 0
現金: 1 金幣
資產: 1 金幣
預設

還是不懂,真難搞懂,看來我對c沒什麼天份>"<
天上天下 目前離線  
送花文章: 4, 收花文章: 1 篇, 收花: 1 次
回覆時引用此帖
舊 2005-10-21, 03:23 PM   #19 (permalink)
管理版主
 
mini 的頭像
榮譽勳章
UID - 4144
在線等級: 級別:97 | 在線時長:9880小時 | 升級還需:116小時級別:97 | 在線時長:9880小時 | 升級還需:116小時級別:97 | 在線時長:9880小時 | 升級還需:116小時級別:97 | 在線時長:9880小時 | 升級還需:116小時級別:97 | 在線時長:9880小時 | 升級還需:116小時級別:97 | 在線時長:9880小時 | 升級還需:116小時級別:97 | 在線時長:9880小時 | 升級還需:116小時
註冊日期: 2002-12-07
文章: 13350
精華: 0
現金: 26465 金幣
資產: 3024345 金幣
預設

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
main()
{
int a,b;
char c;

do{
printf("請輸入一組整數算式: ");
scanf("%d%c%d",&a,&c,&b);

switch(c) {
case '+': printf("等於 %d",a+b); break;
case '-': printf("等於 %d",a-b); break;
case '*': printf("等於 %0.0lf",(double)a*b); break;
//超長整數請見 http://66.102.7.104/search?q=cache:t...&lr=lang_zh-TW
case '/': printf("等於 %0.2f",(float)a/b); break;
}
//if(c=='+') printf("%d%c%d=%d\n",a,c,b,a+b);
//else if(c=='-') printf("%d%c%d=%d\n",a,c,b,a-b);
//else if(c=='*') printf("%d%c%d=%d\n",a,c,b,a*b);
//else if(c=='/') printf("%d%c%d=%0.2f\n",a,c,b,(float)a/b);

printf("\n是否繼續跑一遍?(y/n)");
c=getch();
if(c=='N' || c=='n') break;//一成立就會跳出上一層的迴圈,在本題是 do{~}while(true);
printf("%c\n\n",c);
}while(true);

printf("\n\n即將退出本程式,");

system("PAUSE");
return 0;
}



以上藍字可用
c=getch();
printf("%c\n\n",c);
}while(c=='Y' || c=='y');
替換



其中除法也可改良一下
printf("等於 %0.2f",(float)a/b);
當 1/1000 時 會顯示 0.00
所以加一個判斷
if(a/b<0.01) printf("等於 %0.5f",(float)a/b);
變成
case '/':
float f;
f=(float)a/b;
if(f<=0.01) printf("等於 %0.5f",f);
else printf("等於 %0.2f",f);
}
mini 目前離線  
送花文章: 2014, 收花文章: 8005 篇, 收花: 26810 次
回覆時引用此帖
舊 2005-10-21, 05:08 PM   #20 (permalink)
註冊會員
 
天上天下 的頭像
榮譽勳章

勳章總數
UID - 3073
在線等級: 級別:1 | 在線時長:8小時 | 升級還需:4小時
註冊日期: 2002-12-06
VIP期限: 2005-12
文章: 89
精華: 0
現金: 1 金幣
資產: 1 金幣
預設

請問scanf(&c,&c);
c=getch();
有什麼不同?
我只前也有像這樣寫,但是我是在c=getch();的這部份寫成scanf(&c,&c);
但是這樣寫時就都不會執行scanf(&c,&c);這行而直接跳到結束.

另外我編譯時顯示這行有錯誤 }while(true);是為什麼?
天上天下 目前離線  
送花文章: 4, 收花文章: 1 篇, 收花: 1 次
回覆時引用此帖
舊 2005-10-21, 05:17 PM   #21 (permalink)
註冊會員
 
snoopy 的頭像
榮譽勳章
UID - 33737
在線等級: 級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時
註冊日期: 2003-02-02
VIP期限: 2011-06
住址: 台南共和國
文章: 1831
精華: 0
現金: 12744 金幣
資產: 12834 金幣
預設

引用:
作者: 天上天下
請問scanf(&c,&c);
c=getch();
有什麼不同?
我只前也有像這樣寫,但是我是在c=getch();的這部份寫成scanf(&c,&c);
但是這樣寫時就都不會執行scanf(&c,&c);這行而直接跳到結束.

另外我編譯時顯示這行有錯誤 }while(true);是為什麼?
那改成while(1)應該就可以
snoopy 目前離線  
送花文章: 623, 收花文章: 392 篇, 收花: 1288 次
回覆時引用此帖
舊 2005-10-22, 10:53 AM   #22 (permalink)
管理版主
 
mini 的頭像
榮譽勳章
UID - 4144
在線等級: 級別:97 | 在線時長:9880小時 | 升級還需:116小時級別:97 | 在線時長:9880小時 | 升級還需:116小時級別:97 | 在線時長:9880小時 | 升級還需:116小時級別:97 | 在線時長:9880小時 | 升級還需:116小時級別:97 | 在線時長:9880小時 | 升級還需:116小時級別:97 | 在線時長:9880小時 | 升級還需:116小時級別:97 | 在線時長:9880小時 | 升級還需:116小時
註冊日期: 2002-12-07
文章: 13350
精華: 0
現金: 26465 金幣
資產: 3024345 金幣
預設

引用:
作者: 天上天下
請問scanf(&c,&c);
c=getch();
有什麼不同?
我只前也有像這樣寫,但是我是在c=getch();的這部份寫成scanf(&c,&c);
但是這樣寫時就都不會執行scanf(&c,&c);這行而直接跳到結束.
Q:有什麼不同?
A:一個要按 [Enter]鍵才會繼續執行,一個只接受一個按鍵值就會繼續執行 不需再按[Enter]
還有一個 getchar();
方法同 getch()
只是 getchar(); 其等號左邊必須是 int 而不是 char
很多時候會被誤導 寫成
char c;
//...簡略
do{
c=getchar();
}while(c=='y');

首先應該是 scanf("%c",&c);
接著當你語法覺得沒錯時有幾個地方可以檢查一下
; 及 { } 是否少寫或多寫

接著有些編譯器受OS快取的影響就算你改正了
他還是用快取的東西做編譯聯結
此時可試著退出程式重新啟動編譯環境 (這情況雖然不大可能但不可排除)

還有一種情況
就是沒有#include 你所使用的函數,但還是編譯成功
此時您要注意 編譯Log視窗的警訊

說真的就是因為C/C++ IDE編譯器 沒有VB人性化
所以個人才不怎麼玩 C/C++ 的說
mini 目前離線  
送花文章: 2014, 收花文章: 8005 篇, 收花: 26810 次
回覆時引用此帖
舊 2005-10-26, 11:16 PM   #23 (permalink)
註冊會員
 
天上天下 的頭像
榮譽勳章

勳章總數
UID - 3073
在線等級: 級別:1 | 在線時長:8小時 | 升級還需:4小時
註冊日期: 2002-12-06
VIP期限: 2005-12
文章: 89
精華: 0
現金: 1 金幣
資產: 1 金幣
預設

scanf("%c",&c)是我筆誤

我研究了很久,發現好像是因為會讀取到某個資料,而那筆資料剛好不是y所以就結束迴圈了
不過難道無法解決嗎?

另外getchar(); 其等號左邊必須是 int 而不是 char是為什麼不能那樣寫?
為我用char好像對程式沒什麼影響耶?

另外這個部份:
printf("請輸入一算式");
scanf("%d%c%d",&a,&c,&b);
switch(c){
case '+': printf("=%d\n",a+b);
break;
case '-': printf("=%d\n",a-b);
break;
case '*': printf("=%0.0lf\n",(double)a*b);
break;
case '/': printf("=%0.2f\n",(float)a/b);
break;
}
在執行時是==>請輸入一算式算式換行結果
請問要怎麼才能不換行,直接在同一行顯示結果阿?
天上天下 目前離線  
送花文章: 4, 收花文章: 1 篇, 收花: 1 次
回覆時引用此帖
舊 2005-10-26, 11:56 PM   #24 (permalink)
註冊會員
 
snoopy 的頭像
榮譽勳章
UID - 33737
在線等級: 級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時
註冊日期: 2003-02-02
VIP期限: 2011-06
住址: 台南共和國
文章: 1831
精華: 0
現金: 12744 金幣
資產: 12834 金幣
預設

引用:
作者: 天上天下
scanf("%c",&c)是我筆誤

我研究了很互健|讀取到某個資料,而那筆資料剛好不是y所以就結束迴圈了
不過難道無法解決嗎?

另外getchar(); 其等號左邊必須是 int 而不是 char是為什麼不能那樣寫?
為我用char好像對程式沒什麼影響耶?

另外這個部份:
printf("請輸入一算式");
s...
不換行直接執行恐怕有困難耶
因為電腦完全不知道你要輸入多少值才要計算結果
你可能輸入三個字元3+3才要計算
也可能輸入5個字元
12+34
所以無法預測什麼情況下要進行計算
snoopy 目前離線  
送花文章: 623, 收花文章: 392 篇, 收花: 1288 次
回覆時引用此帖
舊 2005-10-27, 09:17 AM   #25 (permalink)
註冊會員
 
天上天下 的頭像
榮譽勳章

勳章總數
UID - 3073
在線等級: 級別:1 | 在線時長:8小時 | 升級還需:4小時
註冊日期: 2002-12-06
VIP期限: 2005-12
文章: 89
精華: 0
現金: 1 金幣
資產: 1 金幣
預設

喔,了解了,謝謝^^
天上天下 目前離線  
送花文章: 4, 收花文章: 1 篇, 收花: 1 次
回覆時引用此帖
舊 2005-10-27, 09:31 AM   #26 (permalink)
管理版主
 
mini 的頭像
榮譽勳章
UID - 4144
在線等級: 級別:97 | 在線時長:9880小時 | 升級還需:116小時級別:97 | 在線時長:9880小時 | 升級還需:116小時級別:97 | 在線時長:9880小時 | 升級還需:116小時級別:97 | 在線時長:9880小時 | 升級還需:116小時級別:97 | 在線時長:9880小時 | 升級還需:116小時級別:97 | 在線時長:9880小時 | 升級還需:116小時級別:97 | 在線時長:9880小時 | 升級還需:116小時
註冊日期: 2002-12-07
文章: 13350
精華: 0
現金: 26465 金幣
資產: 3024345 金幣
預設

不換行直接執行 那也要有個結尾判斷字元
比如 等於= 或 空白' '

可以用
語法:
    do {
        while (!kbhit());
        c1 = getch();
        if(c1>=48 && c1<=57){ //阿拉伯數字
           c1=c1-48;
           c2=c2*10+c1;
           printf("%d",c1);
         }
//請接著定義 + - * /
    } while(c1!=61); // "="號是 61
mini 目前離線  
送花文章: 2014, 收花文章: 8005 篇, 收花: 26810 次
回覆時引用此帖
發文 回覆



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 06:54 PM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1