hdu 2099 整除的尾数

从这个题目领悟了自己之前没有注意的一些东西,在后面总结,这里先贴代码:


#include <cstdio>

#include <iostream>
#include <cstdlib>
using namespace std;


int main()
{
    int a,b;
    while(cin>>a>>b,a+b)
    {
        char num[100][3]={0};     

        int cnt=0;
        ;
        for(int i=0,j=0; i<100; i++)
            if((a*100+i)%b==0)
            {
                cnt++;
                if((a*100+i)%100>=10)
                    sprintf(num[j++],"%d",(a*100+i)%100);
                else
                {
                    num[j][0]='0';
                    num[j++][1]=(a*100+i)%100+'0';
                }
            }
        ;
        cout<<num[0];
        for(int i=1;i<cnt;i++)
        cout<<' '<<num[i];
        cout<<endl;
    }


    return 0;

}


(1).在开数组的时候char num[100][3]={0};,我一开始是char num[100][2];的,最终,输出的时候就出了问题,2个位置导致最终没有存入数组结束标志'\0',开3个,让最后一个位置存入'\0',而且要养成“开了一块内存区域来存东西就应该先初始化”的习惯。


(2).还有一个就是数字0和字符'0'的问题,数字0是int型数据,字符'0'是char型数据,在c语言中对于字符型的数据都是先转化为int型来处理,后回归char型的,从asc2表可知,每个字符都有其对应的int型值,这也就是char转int的“规则”了,也就体现了'0'和0的区别,它们数值上相差了48。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值