问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c语言 用一维数组存放一个整数

发布网友 发布时间:2023-03-25 23:12

我来回答

4个回答

热心网友 时间:2023-10-20 04:15

估计题目你没有看懂啊,程序其实不难,用字符串来做更简单
void jian(char *a,char *b,char *c) //ab为减数,c为结果,你也可以abc为全局数组

{
char a1[100]={0},b1[100]={0},c1[100]={0}; //赋值0防干扰

int i,j,flag;
int la,lb,lc;
la=strlen(a);
lb=strlen(b);
lc=la>lb?la:lb;
strrev(a);
strrev(b);

if(strcmp(a,b)) //保证a1是大的树

{
strcpy(a1,a);
strcpy(b1,b);
flag=1;

}
else
{
strcpy(a1,b);
strcpy(b1,a);
flag=0;

}
for(i=0;i<la;i++) //变成int

a1[i]=a[i]-48;
for(i=0;i<lb;i++)
b1[i]=b[i]-48;
c[0]=a[0]-b[0]; //先算个位

for(i=1;i<lc;i++)
{
if(c[i-1]<0) //借位

{
a[i]--;
c[i-1]+=10;

}
c[i]=a[i]-b[i];

}
while(c[lc-1]) //处理最高位的那些0

lc--;
for(i=0;i<lc;i++)
c1[i]=c[i]+48;
if(flag)
{
c[lc-1]='-';
lc++;

}

strrev(c1);
strcpy(c,c1);

}
main()
{
char x[100],y[100],z[100];
gets(x);
gets(b);
jian(x,y,z);
puts(z);

}追问程序不对啊= =改掉些小错误后还是输不出结果

追答大体思路就是这样
先看ab谁大,赋值带a1,b1中,a1是哪个大的
反序a1b1,这样各位在前,好计算,不用再管对位的问题
先计算个位,
接着计算中间位,考虑一下借位的问题,这样能计算到最高位
这里一个技巧,就是如果不赋值a1b1全部为零的话,可能差位会有随机数的干扰
最后处理最高位那些零的位
如10000-9999=1,那么最高位有4个零,所以lc的长度是要减去这些多出来的位
最后变char,反序

我只是按照思路写了一下,没有运行,我以前运行过,时间长了可能一些细节忘记了,你慢慢检查一下吧,呵呵

热心网友 时间:2023-10-20 04:15

意思就是把一个一维数组输出为一个整数  就想你那个例子 x={3, 5, 1, 6, 9, 4, 0, 2}  输出的时候合在一起35169402

很简单  

int i = x[0],n = 0;
for(int n = 1; n < 8; n++)
i = ix10+x[n];
这样就搞定了 第一轮循环 i = 3x10+5=35;  第二轮 i = 35x10+1=351; 第三轮 i = 351x10+6=3516;.........
一直循环到数组最后一位,输出i的值就是35169402了;

追问那我要如何输入呢?

追答35169402%10=2
35169402/10=3516940
循环
3516940%10=0
3516940/10=351694
下面我不用多说了吧,动动脑筋最好了

热心网友 时间:2023-10-20 04:16

unsigned long 最大只能表示2^31 才10^9级别 题目给的整数是100位的 10^99次方级别的 根本存不下,所以要用数组存整数 然后模拟减法的过程

热心网友 时间:2023-10-20 04:16

比如c[10]=a[10]-b[10]<0,则a[9]=a[9]-1;c[10]=a[10]-b[10]+10;类推追问int c[10],m;
for(m=9;m>=0;m--)
{
if(a[m]-b[m]<0)
{
a[m+1]=a[m+1]-1;
c[m]=a[m]-b[m]+10;
}
else
c[m]=a[m]-b[m];
}
for(m=0;m<10;m++)
{
printf("%d",c[m]);
}
这样么?

追答int c[10],m;
if(a[9]>=b[9])
{
for(m=9;m>=0;m--)
{
if(a[m]-b[m]=0;m--)
{
if(b[m]-a[m]<0)
{
b[m-1]=b[m-1]-1;
c[m]=b[m]-a[m]+10;
}
else
c[m]=b[m]-a[m];
}
printf("-");
for(m=0;m<10;m++)
{
printf("%d",c[m]);
}
}
这还有-号的问题,你看看有没有别的简化的方法。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
妇科的止血药有哪些 妇科用的止血药有哪些 妇科止血药的功效 人艰不拆是啥意思 汉酱51 度酱香型白酒多少钱?味道怎么样? 穿凉鞋可以穿袜子吗?凉鞋发黄怎么变白? 爱奇艺vip投屏限制怎么办 爱奇艺vip投屏视频限制怎么解决 支付宝怎样解除关联的支付宝账号? 剑圣叫什么名字 ...政策?这个政策的目的是什么?会对经济有什么影响? 一维数组的有序插入,用C语言写。 定义一个一维数组,并初始化然后输出怎么打编码C语言? 用手机怎么申请 防疫口罩用多久 开干货调料店前景,刚开始怎样进货,做好生意? 采用思维导图分析运动疗法的特点 体疗的解释 赞美母爱抒情文作文600字5篇 普京签署了一项什么法令? 我的一个朋友我加他微信了就是看不到他的相册?? 之字取名男孩有寓意属鸡最搭的名字有哪些? 感恩祖国作文900字 游泳小常识8项 呼~什么意思网络用语 小苍兰香味好闻么 小苍兰香味类似什么 力士小苍兰香与茶树精油怎么使用 小吉洗衣机怎么清洗?洗衣机清洗上门服务 腴词的解释 辞职信要打印还是手写 如何用登录抖音? 打羽毛球之前最好做哪些热身运动 打羽毛球后手臂痛怎么恢复 股票BBD是哪些指标 公共浴室水的碱度标准 科目二上坡必过绝招 科目二必过办法 科目二教练的绝招 驾驶科目一考试题库 驾照科目一考试题库 广西c1科目一考试题库 机动车科目一考试题库模拟考试2011 对联平仄是怎么讲的? 安全反思剖析报告 轻檝的解释 妻妾是什么意思 瞬息千变的解释 今日日历上忌修置是什么意思呢? 万年历,今日头条不显示图像?点开今日头条只能看标题文字图像没有,点开万年也是一样。 怎么画可爱的小人 笔记萌可怎么画 40岁男人有内涵的网名 60岁老男人微信昵称