当前位置: 代码迷 >> C语言 >> [求助]大一考试题
  详细解决方案

[求助]大一考试题

热度:185   发布时间:2006-06-28 14:31:51.0
why?.我当然知道我的写出会逆向输出

难道你就不会在主函数 把data的实参调一下吗?

如 输入 123 调换成 321

然后再调用递归..既然他是考试.我想我没必要把全部过程写出吧
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-28 06:43:29
季节的开始

等 级:新手上路
帖 子:34
专家分:0
注 册:2006-4-7
  得分:0 
以下是引用穆扬在2006-6-28 14:43:29的发言:

不错!
我有几个想法:
1.考虑负数(题目没说是正整数)
2.data==0 不太严密,如果输入的是0呢
3.题外话:如果"烟雨生平"或者"林锐"写
函数原型大概是
char *sort(int,char *)或者
char *sort(char *,int)
我在想他们会如何处理

考虑负数只需要在主函数加个判断即可.
考虑0也只需要在主函数加个if即可.
所以.我没有写主函数.这事应该留给楼主.我只是写出递归的函数.
而我本人更倾向于 sprintf

你的最后一个.我不发表言论
----------------解决方案--------------------------------------------------------

char * sort( long k)
{
if(k<10)
return 48+k
else
return 48+k%10 + sort(k/10)

}

字符串怎么相加忘了


----------------解决方案--------------------------------------------------------
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

static void convert_string(char *buf, int integral);

int main(void)
{
char buf[BUFSIZ];
int integral, i, signal_flag;

printf("Enter integral: ");
scanf("%d", &integral);

if (integral < 0)
{
signal_flag = 1;
integral = -integral;
}

convert_string(buf, integral);

if (signal_flag == 1)
{
printf("%c", '-');
}

for (i = strlen(buf) - 1; i >= 0; i--)
{
printf("%c", buf[i]);
}
printf("\n");

exit(0);
}

static void convert_string(char *buf, int integral)
{
if (integral)
{
*buf = integral % 10 + '0';
convert_string(++buf, integral /= 10);
}
else
{
*buf = '\0';
}
}



----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-28 07:23:41
季节的开始

等 级:新手上路
帖 子:34
专家分:0
注 册:2006-4-7
  得分:0 
以下是引用穆扬在2006-6-28 15:23:41的发言:

上帝的交给上帝
魔鬼的还给魔鬼

我认为每个函数都应该作自己该做的事情,不多也不少

光说不练.必自毙,避,痹,鄙,弊?


----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-28 07:33:05
灼光

等 级:新手上路
帖 子:15
专家分:0
注 册:2006-5-12
  得分:0 
是挺巧的
但俺还是没有看懂。
能不能解释一下?
谢谢了!!
----------------解决方案--------------------------------------------------------

//方案一
#include<stdio.h>
void zh(int);
main()
{
int m;
scanf("%d",&m);
zh(m);
printf("\n");
}
void zh(int m)
{
if(m>=10)zh(m/10);
putchar(m%10+'0');
}

//方案二
#include<stdio.h>
char* zh(__int64);
main()
{
__int64 m;
scanf("%I64d",&m);
puts(zh(m));
}
char* zh(__int64 m)
{
static char str[20],*p=str;
if(m){zh(m/10);*p++=m%10+'0';}
return str;
}


----------------解决方案--------------------------------------------------------
  相关解决方案