c:我不知道的事';我不明白
我有以下代码:c:我不知道的事';我不明白,c,C,我有以下代码: #include <stdio.h> #include <stdlib.h> #include <math.h> int i,j; long int maxc=0,nn; long int max(long int n) { maxc=0;nn=n;i=1; if(n<10 && n>=0) return n; while(nn!=0) { i
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int i,j;
long int maxc=0,nn;
long int max(long int n)
{
maxc=0;nn=n;i=1;
if(n<10 && n>=0)
return n;
while(nn!=0)
{
if(maxc<nn%10)
{
maxc=nn%10;
j=i;
}
i++;
nn/=10;
}
return maxc*(pow(10,i-2))+max(n/(pow(10,j))*(pow(10,j-1))+n%((int)pow(10,j-1)));
}
int main()
{
long int n;
printf("Dati n: ");
scanf("%d",&n);
printf("%ld",max(n));
return 0;
}
#包括
#包括
#包括
int i,j;
长整数maxc=0,nn;
长整数最大值(长整数n)
{
maxc=0;nn=n;i=1;
如果(n=0)
返回n;
while(nn!=0)
{
如果(maxc远离pow
。这是一个近似结果的浮点函数。如果它返回的值稍小(比如2.9999而不是3.00000),代码将把它截断为最接近的较低值(2)
我强烈建议您使用整数或字符解决方案。我不会给出完整的解决方案,但我会给出您的想法
- 扫描键盘上的数字,并将其存储在长整型变量中
- 将数字转换为数组中的字符。(不要忘记ASCII码)
- 按降序对数组进行排序
- 打印数组时要考虑ASCII码(在我的示例中,我存储的是值而不是字符,这就是为什么我可以将它们打印为%d)
/*原型*/
int-stringConverter(字符常量*a,长int-val);
void decort(整数*常数a,整数位数);
内部主(空)
{
字符a[大小];
整数位数;
长整数;
printf(“输入数字:”);
scanf(“%ld”和&val);
数字=字符串转换器(a,val);
decort(a,数字);
/*印刷机*/
对于(i=大小-位数-1;i<大小;i++){
printf(“%d”,a[i]);
}
返回0;
}
整型字符串转换器(字符*常量a,长整型值)
{
int i,int j=0;
对于(i=(大小-1);i>=0;i--){
*(a+i)=(val%10);
j++;
val=val/10;
如果(val<10){
我--;
*(a+i)=val;
j++;
打破
}
}
返回j;
}
void decort(字符*常量a,整数位数){
/*随便*/
}
您应该使用fscanf
而不是scanf
(=看起来很糟糕。为什么不将输入读取为字符串,然后进行排序?
/* Prototypes*/
int stringConverter( char const * a, long int val );
void decsort( int * const a, int digits);
int main( void )
{
char a[ SIZE ];
int digits;
long int val;
printf( "Enter the number: " );
scanf( "%ld", &val );
digits = stringConverter( a, val );
decsort( a, digits );
/* Printer */
for( i = SIZE - digits - 1; i < SIZE; i++){
printf( "%d", a[ i ] );
}
return 0;
}
int stringConverter( char * const a, long int val )
{
int i, int j = 0;
for( i = ( SIZE - 1 ); i >= 0; i-- ){
*( a + i ) = ( val % 10 );
j++;
val = val / 10;
if( val < 10 ){
i--;
*( a + i ) = val;
j++;
break;
}
}
return j;
}
void decsort( char * const a, int digits ){
/* Any sort */
}