模拟除法

题目:

本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。
输入格式:
输入在1行中依次给出A和B,中间以1空格分隔。
输出格式:
在1行中依次输出Q和R,中间以1空格分隔。
输入样例:
123456789050987654321 7
输出样例:
17636684150141093474 3

思路:

模拟除法运算即可,注意第一个元素为零有两种特殊情况,第一种后面没有元素了,直接输出,第二种后面还有其他元素,便省略第一个元素输出;
其次在判断是否在字符串末尾时,数字零 0 与字符 '\0' 能发挥相同的作用。

C语言代码:

#include<stdio.h>
int Divide(char *a,int b,char *s)
{
    int i=0,beichushu=0,yushu=0;
    while(a[i]!='\0')
    {
        beichushu=yushu*10+a[i]-'0';
        s[i]=beichushu/b+'0';
        yushu=beichushu%b;
        i++;
        s[i]='\0';
    }
    return yushu;
}
int main()
{
    char a[1001],s[1001];
    int b;
    scanf("%s",a);
    scanf("%d",&b);
    int y=Divide(a,b,s);
   if(s[0] == '0' && s[1] != 0){  //0与‘\0' 的作用一样啊,把只有一个零的情况排除 
        printf("%s", s + 1);
    }
    else{
        printf("%s", s);
    }
    printf(" %d",y);
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 10,262评论 0 11
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,817评论 0 17
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 14,192评论 2 33
  • [TOC] 写在前面 最终,我的博客还是回归到了起点。博客断断续续几年,尽是折腾界面美化和各种网站框架或者建站工具...
    Kerwong阅读 10,978评论 0 1
  • 我愿我是你的那壶酒 愿你醉酒后口口声声念着我的名字 愿我的名字让你欢喜也让你烦忧 我愿我是...
    瞒青兮阅读 2,976评论 2 3