pat甲组练习题 1001数组实现 c语言
第一次写csdn,最近在刷pat甲级。废话不多说直接放代码,注释已经很清楚啦,有啥问题或者建议欢迎反馈
#include<stdio.h>
int main()
{
int a,b,sum,i;
scanf("%d %d",&a,&b);
sum=a+b; //先用sum算出来我们要输出的数是多少,然后想办法把他输出
if(sum<0)
{
printf("-");
sum= (-sum);
}
//如果是负数的话就先把这个数之前的负号输出了,等下就只要处理剩下的数字了
if(sum==0)
{
printf("0"); //如果sum是0,直接输出0
return 0; //并且终止整个函数
}
int c[7]; //因为这俩个数任凭怎么相加也超不过7位,7个”座位“的数组用来存储这个数字够了
i=0;int j=0; //i用来给循环计数,j用来记录sum一共有多长
while(sum!=0)
{
c[i]=sum%10; //取sum的个位数,依次存入到c数组
sum = sum/10; //这个操作相当于扔掉sum的最后一位
i++; //这个循环完了之后sum就被存进c数组了,不过是倒着存的
}
j=i; //上个循环的i记录了sum有多少位
int k=i-1; //k用来对逗号做处理
for(i=j-1;i>=0;i--) //因为下标是从0开始的,但是sum是从1开始数的,所以-1变成下标数,从后往前取,取到0的时候停止
{
printf("%d",c[i]);//打印存进去的每一个sum的"个位数"
if(k!=0&&k%3==0)//非0是因为到了最后一位的时候k是0,但是并不需要输出逗号
printf(",");
k--;
}
}