#include
#include
#include
using namespace std;
#define BUF_SIZE 128
int main(void)
{ double score=0, sum=0;
int count = 0;
char buf[BUF_SIZE];
do
{ cout << "請輸入成績:";
cin.getline(buf, BUF_SIZE);
if (buf[0] == 'q' && buf[1] == '\0' || strcmp(buf, "quit")==0)
break;
score = atof(buf);
if (score>=0. && 100.>=score && isdigit(buf[0]))
{ ++count; sum += score; }
} while (score != -1.);
if (count)
printf("%.2f\n", sum/count);
system("pause");
return 0;
}
說明:
大小不限、
可以直接比較兩 string 是否一樣。
但它的缺點太多,所以不建議使用!
因此我用了char 陣列。
char 陣列比較是否相同,要用 strcmp
如果要不管大小寫,用 stricmp
當然,那個 buf[0] == 'q' 也要改成 tolower(buf[0]) == 'q'
在 C,能直接 == 的,只有 primitive type (就是 char, short, int, float, double等)!
在C++,除了上述外,程式可以自己寫 operator overload。
1. include 是插入那個檔案到這個位置。
主要是用來引用別人(含compiler)幫你做好的宣告。
因此,compiler知道你要用的東西長什麼樣子;
不同的程式之間,可以有致的用法。
2.#define BUF_SIZE 128 是定義 BUF_SIZE 這個字為128,
以後,compiler看到這個字,就會幫你換成 128。
因此,萬一你要改成256或其它數值,
只要改一處,就全都改到了。
而且,將來看到這個程式,
不會想不起來:128是怎麼來的?
不會不知道要改哪些地方!
(可能有別的值也剛好是128!所以,不能用搜尋→置換!)
2010-04-17 18:54:07 補充
3. 同2.。這時BUF_SIZE 已被換成128。
4.cin只抓一個值。字串間有空白的話,會被視為二個字串!
getline(buf, BUF_SIZE);則會整列讀進來。
BUF_SIZE 這個字很清楚地告訴我們:那裡是暫存區的大小。
多大? 2. 告訴我們:128
也就是說:使用者輸入127字以內,都不會出問題。
第128字起,會不見!
5. strcmp 是標準函式,宣告在string.h裡。
我竟然漏 include了!
少數compiler會自動幫你 include 有的沒的!
其實這不好!
如果裡面的兩串字一樣,會傳回0;
如果不同,前大傳回正,小則負。
程式分享原網址:http://tw.knowledge.yahoo.com/question/question?qid=1510041608965
#include
#include
using namespace std;
#define BUF_SIZE 128
int main(void)
{ double score=0, sum=0;
int count = 0;
char buf[BUF_SIZE];
do
{ cout << "請輸入成績:";
cin.getline(buf, BUF_SIZE);
if (buf[0] == 'q' && buf[1] == '\0' || strcmp(buf, "quit")==0)
break;
score = atof(buf);
if (score>=0. && 100.>=score && isdigit(buf[0]))
{ ++count; sum += score; }
} while (score != -1.);
if (count)
printf("%.2f\n", sum/count);
system("pause");
return 0;
}
說明:
大小不限、
可以直接比較兩 string 是否一樣。
但它的缺點太多,所以不建議使用!
因此我用了char 陣列。
char 陣列比較是否相同,要用 strcmp
如果要不管大小寫,用 stricmp
當然,那個 buf[0] == 'q' 也要改成 tolower(buf[0]) == 'q'
在 C,能直接 == 的,只有 primitive type (就是 char, short, int, float, double等)!
在C++,除了上述外,程式可以自己寫 operator overload。
1. include 是插入那個檔案到這個位置。
主要是用來引用別人(含compiler)幫你做好的宣告。
因此,compiler知道你要用的東西長什麼樣子;
不同的程式之間,可以有致的用法。
2.#define BUF_SIZE 128 是定義 BUF_SIZE 這個字為128,
以後,compiler看到這個字,就會幫你換成 128。
因此,萬一你要改成256或其它數值,
只要改一處,就全都改到了。
而且,將來看到這個程式,
不會想不起來:128是怎麼來的?
不會不知道要改哪些地方!
(可能有別的值也剛好是128!所以,不能用搜尋→置換!)
2010-04-17 18:54:07 補充
3. 同2.。這時BUF_SIZE 已被換成128。
4.cin只抓一個值。字串間有空白的話,會被視為二個字串!
getline(buf, BUF_SIZE);則會整列讀進來。
BUF_SIZE 這個字很清楚地告訴我們:那裡是暫存區的大小。
多大? 2. 告訴我們:128
也就是說:使用者輸入127字以內,都不會出問題。
第128字起,會不見!
5. strcmp 是標準函式,宣告在string.h裡。
我竟然漏 include了!
少數compiler會自動幫你 include 有的沒的!
其實這不好!
如果裡面的兩串字一樣,會傳回0;
如果不同,前大傳回正,小則負。
程式分享原網址:http://tw.knowledge.yahoo.com/question/question?qid=1510041608965
全站熱搜
留言列表