PAT甲级真题 1001 A+B Format
程序员文章站
2024-03-23 21:11:10
...
一、题目
二、思路
题目要求计算a+b(=c),并将结果c按照千位一分的格式输出。注意到a和b最多有7位,也就是c最多也是7位,那最多会加2个逗号。因此,将结果分三类:不加逗号、加一个逗号、加两个逗号。
三、代码
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a, b, c, f, l, m;
//f-former,即逗号前的部分;l-latter,即逗号后的部分;m-middle,即逗号之间的部分,只有第三种情况会用到
scanf("%d %d", &a, &b);
c = a + b;
if (abs(c) < 1000)//第一种情况
printf("%d", c);
else if (abs(c) < 1000000) {//第二种情况
f = c / 1000;//逗号前
l = abs(c % 1000);//逗号后
printf("%d,%03d", f, l);//按格式输出
}
else {//第三种情况
f = c / 1000000;//逗号前
m = abs((c - f * 1000000) / 1000);//逗号中
l = abs((c - f * 1000000) % 1000);//逗号后
printf("%d,%03d,%03d", f, m, l);//按格式输出
}
return 0;
}
四、总结
最初想用itoa函数将数字转换为字符串,但其实没必要,而且PAT编译器也不允许使用itoa。
感谢小王老师指导/(ㄒvㄒ)/~~