PAT1001总结
#####思路总结
1.完全没必要将其转换成字符串,字符串处理相对复杂。
2.要先对结果进行分析,尤其当结果的情况有限时。根本没必要使用按位输出。
3.先在草稿纸上对问题进行分析,对结果进行分析,然后再考虑代码实现,不应该在代码实现上浪费太多时间。
4.代码越简洁越好,调试清晰方便。
使用字符串处理,还只是部分正确
#include <iostream>
#include "string.h"
#include "math.h"
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
void intToChar(int sum);
int main(int argc, char** argv) {
int a,b,sum;
cin>>a>>b;
if(a>=-1000000&&a<=1000000&&b>=-1000000&&b<=1000000)
{
sum = a + b;
// cout<<intToChar(sum)<<endl;
intToChar(sum);
}
return 0;
}
void intToChar(int sum)
{
int i;
int numBit = 1;
char flag = 0;
if(sum<0)
{
sum = -sum;
numBit = 2;
flag = 1;
}
int sum_clone = sum;
for(i=0;sum_clone>=10;i++)
{
numBit++;
sum_clone = sum_clone/10;
}
int n;
double BitTemp =(double) numBit;
char *intChar = new char[numBit];
for(n=0;n<numBit;n++)
{
if(flag == 1)
{
intChar[0] = '-';
flag = 0;
BitTemp--;
}else{
// int test = sum/((int)pow(10.0,BitTemp-1));
intChar[n] = sum/((int)pow(10.0,BitTemp-1))+48;
sum = sum%((int)pow(10.0,BitTemp-1));
BitTemp--;
}
}
int m;
for(m=0;m<numBit;m++)
{
cout<<intChar[m];
if(intChar[0] == '-'&&m!=0&&m%3==0&&(m+1)<numBit) cout<<",";
else if(intChar[0] != '-'&&(m+1)%3==0&&(m+1)<numBit) cout<<",";
cout<<"=end"<<endl;
}
}
使用c,简洁实现,并全部正确(copy from net)
#include<stdio.h>
int main()
{
int a,b,sum;
scanf("%d %d",&a,&b);
int i;
sum=a+b;
if (sum<0){printf("-");sum=-sum;}
if (sum>=1000000)printf("%d,%03d,%03d",sum/1000000,(sum/1000)%1000,(sum%1000));
else if (sum>=1000)printf("%d,%03d",sum/1000,sum%1000);
else printf("%d",sum);
return 0;
}