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;
}