输入一个大于10的正整数n,从其中删除一个数字,使得剩下的数最大。例如,输入9187,应该删除1,剩下的987

#include<stdio.h>intmain(){longn;longa[8]={0};inti,j=0;scanf("%ld",&n);for(i=1;n>0;i+... #include <stdio.h>
int main()
{
long n;
long a[8]={0};
int i,j=0;
scanf("%ld",&n);
for (i=1;n>0;i++)
{
a[i]=n % 10;
n/=10;
}
for (i--;i>1;i--)
if (a[i]>a[i-1]) printf("%ld",a[i]);
else if(j!=0) printf("%ld",a[i]);
else j=1;
if (j!=0) printf("%ld",a[0]);
return 0;
}
代码对吗
展开
 我来答
DILEI9527
2012-03-18 · TA获得超过104个赞
知道小有建树答主
回答量:171
采纳率:0%
帮助的人:101万
展开全部
1 C语言中 数组中 0为起始位
2 数组只有8位,如果超过8位会溢出
3 j 请问在 定义赋初值之后 还有没有赋值过。

总体的思路是,,,将 输入数字中的每个数字提取出来,
将其中最小的 数字 识别出来
依次按位 输出 剔除最小的数字。

当然,每个人都有每个人的思路,但 你程序后一个循环式没有道理的。 可以在第一个循环的时候将 最小的数字找出来。 在第二个循环的时候按照数组的排列倒序 按位,也就是 最后一个是 要乘以 输入n的位数的 -1 个位数 然后后面的也是同样的方法,但到了最小的那个数的时候就跳过,进行下一次输出就行了。 不知道 是不是正确的。 时间有限。仅供参考。
谢谢
susuf90
2012-03-18
知道答主
回答量:15
采纳率:0%
帮助的人:10.4万
展开全部
不对,C语言下标从0开始,你的程序a[0]一直都是初值0,我改了下你试试
#include <stdio.h>
int main()
{
long n;
long a[8]={0};
int i,j=0;
scanf("%ld",&n);
for (i=0;n>0;i++)
{
a[i]=n % 10;
n/=10;
}
for (i--;i>0;i--)
{ if (a[i]>a[i-1]) printf("%ld",a[i]);
else if(j!=0) printf("%ld",a[i]);
else j=1;
}
if (j!=0) printf("%ld\n",a[0]);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式