關於我自己
2012年5月19日 星期六
【C / C++ 語言】在數字英文字串中將數字相加
居裡貓今天考了C語言程式的考試,在這邊分享一下我的解答方式給大家看看!
在一個 txt 檔案中讀出含有字元('a'~'z','A'~'Z')、數字('0'~'9')以及空白。
將其中的數字部份進行加總,若數字不足四位數者,在後方補 0 ,直到滿足四位數。
輸出內容需將包含 txt 檔案內容集加總結果。
以下是居裡貓的程式碼:
#include<stdio.h>
#include<fstream.h>
#include<iostream.h>
#include<string.h>
void main()
{
char str[200]; //存放字元用陣列
int i,len1,sum=0,tmp=0; // for 迴圈用索引,字串長度,數字加總,存放數字
ifstream fip("b.txt");
while(fip.eof()!=1)
{
fip.getline(str,200,'\n');
cout << str << endl;
len1=strlen(str);
for(i=0;i<len1;i++) //利用 for 迴圈判斷出數字
{
if(str[i]!=' ') //假如字串內容不等於空白
{
if(str[i]>='0' && str[i]<='9') //假如字串內容等於 0~9
{
tmp=tmp*10+(str[i]-'0'); //將字串內容轉換成數字
}
}
//假如字串下一個內容為 a~z or A~Z or 空白
if(str[i+1]>='a' && str[i+1]<='z' || str[i+1]>='A' && str[i+1]<='Z' || str[i+1]==' ' )
{
//判斷存放的數字是否滿足四位數,不滿足補足四位數,在加總起來
if(tmp>=1 && tmp<=9)
{
sum+=tmp*1000;
tmp=0;
}
else if(tmp>=10 && tmp<=99)
{
sum+=tmp*100;
tmp=0;
}
else if(tmp>=100 && tmp<=999)
{
sum+=tmp*10;
tmp=0;
}
else if(tmp>=1000)
{
sum+=tmp;
tmp=0;
}
}
}
}
cout << "Ans=" << sum;
fip.close();
}
以下是執行後的結果(一):
txt 檔案的內容為:
Cyut54is a356good 72school
Ne125ver 56give22 66up
結果(二):
txt 檔案內容為:
T357aiwan i246s go15od co32untr10y an79d I lo258ve it
以上簡單的分享,希望大家還看得下去!
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言