P53 习题4.1
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int main(){
string stringcase;
while(cin>>stringcase){
int countemp = 0;
int sum = 0;
for (int i=stringcase.size()-1;i>=0;i--){
sum += (stringcase[i]-'0')*(pow(2.0,++countemp)-1);
}
cout<<sum<<endl;
}
return 0;
}
P53 习题4.2
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main(){
//freopen("D://case.txt","r",stdin);
string casestring;//输入串
vector <string> words;//输出串
string replacestring;//需要被替换的
string newstring;//替换后新的
getline(cin,casestring);//以回车作为分隔符读取输入
cin>>replacestring;
cin>>newstring;
words.push_back("");//方便string连接
for (int i=0,j=0;i<casestring.size();i++){
if (casestring[i]!=' '){//读取一个个单词
words[j] += casestring[i];
}
else {j++;words.push_back("");}
}
bool flag = false;
for (int i=0;i<words.size();i++){
if (words[i]!=replacestring){if (flag){cout<<' ';}cout<<words[i];}
else {if (flag){cout<<' ';}cout<<newstring;}
flag = true;
}
//cout<<endl;
return 0;
}
P53 习题4.3
#include <cstring>
#include <cstdio>
using namespace std;
int main()
{
//freopen("case.txt", "r", stdin);
char str[200] = " ";//初始化为含有一个空格的字符串,而不是空字符串
while(gets(str + 1) != NULL){
for(int i = 1; i < strlen(str); i++)
if((str[i-1] == ' ' || str[i-1] == '\t') && str[i] >= 'a' && str[i] <= 'z')
str[i] -= 32;
for(int i = 1; i < strlen(str); i++)
printf("%c", str[i]);
printf("\n");
}
return 0;
}
}
P53 习题4.4
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(){
//freopen("D://case.txt","r",stdin);
string add1,add2;
vector <int> result;
cin>>add1>>add2;
int add1find = add1.find('.');//定位小数点
int add2find = add2.find('.');
int add1length = add1.length();//求长度
int add2length = add2.length();
if (add1find<add2find){//第一个数的整数部分位数少
for (int i=0;i<add2find-add1find;i++){
add1 = "0"+add1;//前补0
}
}
else {
for (int i=0;i<add1find-add2find;i++){//第二个数的整数少
add2 = "0"+add2;//补0
}
}
if (add1length-add1find<add2length-add2find){//第一个数的小数少
for (int i=0;i<add2length-add1length+add1find-add2find;i++){
add1 = add1+"0";///后面补0
}
}
else {
for (int i=0;i<-add2length+add1length-add1find+add2find;i++){
add2 = add2+"0";
}
}
for (int i=0;i<add1.size();i++){//计算结果
if (add1[i]!='.'){
result.push_back(add1[i]+add2[i]-'0'-'0');
}
else{
result.push_back(-1);//小数点用-1代替
}
}
int docindex;//小数点位置
for (int i=0;i<result.size();i++){
if (result[i] == -1){docindex = i;}
}
for (int i=result.size()-1;i>=1;i--){//反向计算方便进位
if (result[i]>=10){//进位
result[i] -= 10;
if (i-1!=docindex){//进位没遇到小数点
result[i-1]++;
}
else{
result[i-2]++;//进位遇到小数点
}
}
}
if (result[0]>=10){//最高位进位
result[0] -= 10;
cout<<'1';
}
for (int i=0;i<result.size();i++){
if (result[i]!=-1){cout<<result[i];}
else {cout<<'.';}
}
return 0;
}
P53 习题4.5
无法打开,很尴尬
http://1t.click/VGP