c语言编程题,急急急!

/*键盘输入一个高精度的正整数n(<=240),去掉其中任意s个数字后剩下的数字按原左右次序组成一个新的正整数。编程对给定的n和s,寻找一种方案,使得剩下
的数字组成的新数最大。*/
n的位数<=240

我用C++写的,只要把几个输入输出函数改一下,就跟C一样了

#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
void main()
{
char ary_num[240]={};
int n=0,s;
cout<<"请输入一个正整数(必须小于等于240位):";
gets(ary_num);
for(int i=0;ary_num[i]!=0;i++)
n++;
cout<<"这个数有多少位? n="<<n<<endl;
cout<<"想去掉其中多少个数字?(s必须小于n)s=";
cin>>s;
cout<<endl;
srand(clock());
for(int i=1;i<s;i++)
{//删掉任意s位数
int num_del=rand()%(n+1);
if(num_del!=n)
for(int j=num_del;j<n;j++)
ary_num[j]=ary_num[j+1];
else
;
n--;
}
for(int i=0;i<n;i++)
{//把剩余数字按从大到小排序
for(int j=i;j<n;j++)
if(ary_num[j]>ary_num[i])
{
char temp=ary_num[j];
ary_num[j]=ary_num[i];
ary_num[i]=temp;
}
}
ary_num[n-1]='\0';
cout<<"剩余数字组成最大整数为:";
puts(ary_num);
cout<<endl;
system("pause");
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-06-04
n(<=240) 这个很大。。

我来说吧,不要看着是数字,,其实就是一堆字符
所以你可以
定义
char ss[300];
gets(ss); 在处理。。就行了。。。

整个程序都是字符来处理就行

http://zhidao.baidu.com/link?url=mfLr1kZIaWb662FYobICxPO3vXCdK03-SRwDyWeKJeO9UlxAaa-6tRkK8v46uER3NxVih-ARuScZ8i-1NphXiq
这里有一道相同的题目不过是求最小值
相似回答