输入一个大于0的大整数N,长度不超过100位,要求输出其除以13得到的商和余数。

题目:输入一个大于0的大整数N,长度不超过100位,要求输出其除以13得到的商和余数。
输入
一个大于0的大整数,长度不超过100位。
输出
两行,分别为整数除法得到的商和余数。

#include<iostream>
#include<cstdio>
#include<cstring>

using namespace std;

int main()
{
   
    int t,len,shang[300],yu=0,b[
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
第一题R010E 1.问题描述:将一个正整数n(长整型)输出成"千分"形式,即从个数起,每三 之间加一个逗号,例如,将7654321输出成7,654,321。 2.课题分析:如果数小于一千,则不用转换,如果大于一千则要,也就是一个数除以 一千,取整,在整数后面加一个逗号后再写上余数。考察的C语言知识是关于取整取余 及字符,判断等内容的运用。 3.数据结构的设计: char c=','; // 千分的符号 int n, //输入的数 int a[100]//存储用千分表示的数 if(n<1000) // 比较输入的数是否大于一千 printf("%d",n); //如果输入的数小于一千,则直接输出 else { for(i=0;n>=1000;i++) { a[i]=n%1000; //取余 n/=1000; //取整数 j=i+1; } a[j]=n; for(i=j;i>0;i--)// 循环运行直到条件不符合 { printf("%d%c",a[i],c); } printf("%d",a[0]); //输出 } 4.处理结构的设计: 5.源程序: #include<stdio.h> void main() { char c=','; int n,i=0,j=0,a[100]; printf("请输入一个正整数n:\n"); scanf("%d",&n); if(n<1000) printf("%d",n); //如果输入的数小于一千,则直接输出 else { for(i=0;n>=1000;i++) { a[i]=n%1000; //取余 n/=1000; //取整数 j=i+1; } a[j]=n; for(i=j;i>0;i--) { printf("%d%c",a[i],c); } printf("%d",a[0]); } printf("\n"); } 6.调试记录: 第二题P007M 1. 问题描述:编制不同数制间的转换程序。要求提供输入输出界面,当输完一个任意十进 制数字,程序能自动将其转化为另外的数制表示的值,包括二进制、八进制和十六进 制,其中转化用算法实现,而不是用printf函数显示。 2.课题分析:将十进制数转换为其他进制的数,其算法是以将被换为的进制数作 为除数,从给出的数起依次作除求余,直至整除后结果为零,然后将运算中所得的余数 按倒序排列即得到数制转换后所得的数。 在定义数组时需要注意到无符号长整型数的取值范围,提供足够但有效地数组长度 。 转换为二进制的数与转换为八进制的数的算法基本一致,即依次记下求余所得,并 判断整除后是否为零决定是否继续运算,而转换为十六进制的数时前十个为数字表示, 而后面六个数为用大写的'A'~'F'表示。 3.数据结构的设计:unsigned long a,temp;//存储所要转换的数和整除后的数 char b[64];//存储二进制数的数组 char o[21];// 存储八进制数的数组 char h[16];// 存储十六进制数的数组 在此,所定义的三个数组的长度即分别有效地考虑到无符号长整型数的取值范围 b[i]=temp%2+'0';//求余;强制类型转换为实数 temp/=2;//整除运算 在此需根据temp的值判断是否运算完毕 while(i>=0) {printf("%c",b[i]); i--;//从后向前依次输出while(temp&&i<16) { int x=temp%16; if(x<10) h[i]=x+'0'; else h[i]=x-10+'A';//前十个为数字,后六个为字母 temp/=16; i++; } int m=1; while(m) {…… scanf("%d",&m); 4.处理结构的设计: 二进制与八进制转换流程图 十六进制转换流程图 5.源程序: #include <stdio.h> int main() { unsigned long a,temp;//定义无符号长整型 char b[64]; char o[21]; char h[16];//无符号长整型数的取值范围 int i,m=1; while(m) { printf("Input number:"); scanf("%ld",&a); temp=a; i=0; while(temp&&i<64) { b[i]=temp%2+'0';//求余;强制类型转换为实数 temp/=2;//整除运算 i++; } printf("\n二进制: "); i--;//返回最后一个数的置 while(i>=0) { printf("%c",b[i]); i--;//从后向前依次输出 } printf("\n"); temp=a; i=0; while(tem

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zzh .

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值