C语言编程求西西弗斯串
答案:2 悬赏:0 手机版
解决时间 2021-03-03 21:26
- 提问者网友:树红树绿
- 2021-03-03 08:44
C语言编程求西西弗斯串
最佳答案
- 五星知识达人网友:从此江山别
- 2021-03-03 09:42
我花了好久,你一分不给,让我情何以堪啊
#include
#include
#define ARRAY_LEN 100
char *iToStr(char *s, int value, int *num)
{
int i = 0;
int modtmp = 0;
int tmp = value;
int j = 0;
char ctmp = '0';
*num = 0;
while (0 != tmp)
{
modtmp = tmp % 10;
s[i++] = modtmp + '0';
tmp = tmp / 10;
}
s[i] = '\0';
for (j = 0; j < i/2; j++)
{
ctmp = s[j];
s[j] = s[i-j-1];
s[i-j-1] = ctmp;
}
*num = i;
return s;}
char* fun(char a[]){
char *pTmp = a;
int oddNum = 0; //奇数个数 int evenNum = 0; //偶数个数
int totalNum = 0;
int i = 0;
char cstr[20] = {0}; char *pcstr = cstr;
int cnum = 0;
int tmp = 0;
for (; *pTmp != '\0'; ++pTmp)
{
tmp = *pTmp - '0';
if (0 <= tmp && tmp <= 9)
{
if(tmp % 2 == 0)
{
evenNum++;
}
else
{
oddNum++;
}
totalNum++;
}
else
{
break;//遇到不是数字的字符了
}
}
iToStr(pcstr, evenNum, &cnum);
pcstr = pcstr+cnum;
iToStr(pcstr, oddNum, &cnum);
pcstr = pcstr+cnum;
iToStr(pcstr, totalNum, &cnum);
printf("%s \n", cstr);
if (0 == strcmp(a, cstr)) {
memcpy(a, cstr, strlen(cstr));
a[strlen(cstr)] = '\0';
return a;
}
else
{
return fun(cstr);
}
}
void main(){
char a[ARRAY_LEN];
printf("请输入一个数字串: ");
int b = 0;
fgets(a, ARRAY_LEN, stdin); //这样不会照成溢出
printf("神秘的数是:%s\n",fun(a));}
#include
#include
#define ARRAY_LEN 100
char *iToStr(char *s, int value, int *num)
{
int i = 0;
int modtmp = 0;
int tmp = value;
int j = 0;
char ctmp = '0';
*num = 0;
while (0 != tmp)
{
modtmp = tmp % 10;
s[i++] = modtmp + '0';
tmp = tmp / 10;
}
s[i] = '\0';
for (j = 0; j < i/2; j++)
{
ctmp = s[j];
s[j] = s[i-j-1];
s[i-j-1] = ctmp;
}
*num = i;
return s;}
char* fun(char a[]){
char *pTmp = a;
int oddNum = 0; //奇数个数 int evenNum = 0; //偶数个数
int totalNum = 0;
int i = 0;
char cstr[20] = {0}; char *pcstr = cstr;
int cnum = 0;
int tmp = 0;
for (; *pTmp != '\0'; ++pTmp)
{
tmp = *pTmp - '0';
if (0 <= tmp && tmp <= 9)
{
if(tmp % 2 == 0)
{
evenNum++;
}
else
{
oddNum++;
}
totalNum++;
}
else
{
break;//遇到不是数字的字符了
}
}
iToStr(pcstr, evenNum, &cnum);
pcstr = pcstr+cnum;
iToStr(pcstr, oddNum, &cnum);
pcstr = pcstr+cnum;
iToStr(pcstr, totalNum, &cnum);
printf("%s \n", cstr);
if (0 == strcmp(a, cstr)) {
memcpy(a, cstr, strlen(cstr));
a[strlen(cstr)] = '\0';
return a;
}
else
{
return fun(cstr);
}
}
void main(){
char a[ARRAY_LEN];
printf("请输入一个数字串: ");
int b = 0;
fgets(a, ARRAY_LEN, stdin); //这样不会照成溢出
printf("神秘的数是:%s\n",fun(a));}
全部回答
- 1楼网友:猎心人
- 2021-03-03 10:24
神秘数 不就是123吗 gets函数好像取得是字符串吧 而你要操作的数据是整数 类型不同
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯