永发信息网

请编一个C语言程序(挺简单的不会浪费你太多时间)实现以下要求

答案:3  悬赏:30  手机版
解决时间 2021-04-21 14:05
  • 提问者网友:皆是孤独
  • 2021-04-21 08:02

输入一行数目未知的数字(不一定是1位数),如:1 12 333 45 677 889;88 98 3 47等。

要求倒序输出这一行数字,比如上面的例子就得输出:

889 677 45 333 12 1

另一个 47 3 98 88

如有必要 请加上注释 谢谢!

最佳答案
  • 五星知识达人网友:渡鹤影
  • 2021-04-21 09:18

#include "stdio.h"
#include "string.h"
#include "stdlib.h"


#define MAX_CHARLEN 100
#define NODE_EMPTY 1
#define NODE_FULL 0


typedef struct _Diy_list_t
{
char str[MAX_CHARLEN];
struct _Diy_list_t *next;
struct _Diy_list_t *prev;
}Diy_list_t;


Diy_list_t Diy_head,Diy_tail;


Diy_list_t* Diy_createNode();
void Diy_gets();
void Diy_puts();


int main()
{


Diy_gets();

Diy_puts();


return 0;
}


Diy_list_t* Diy_createNode()
{
Diy_list_t *p = NULL;


p = (Diy_list_t*)malloc(sizeof(Diy_list_t));
p->next = NULL;
p->prev = NULL;


if(Diy_head.next == NULL){
Diy_head.next = p;
Diy_tail.prev = p;
}else{
Diy_tail.prev->next = p;
p->prev = Diy_tail.prev;
Diy_tail.prev = p;
}
return p;
}


void Diy_gets()
{
char c;
int i = 0;
int flag = NODE_FULL;
Diy_list_t *pInsert = NULL;


pInsert = Diy_createNode();


while((c = getchar()) != '\n'){
if(c == ' ' && flag == NODE_FULL){
if(pInsert != NULL){
pInsert->str[i] = '\0';
}
pInsert = Diy_createNode();
memset(pInsert->str,0,sizeof(pInsert->str));
i = 0;
flag = NODE_EMPTY;
}
pInsert->str[i++] = c;
flag = NODE_FULL;
}

}


void Diy_puts()
{
while(Diy_tail.prev != NULL){
printf("%s ",Diy_tail.prev->str);
Diy_tail.prev = Diy_tail.prev->prev;
}

}

全部回答
  • 1楼网友:举杯邀酒敬孤独
  • 2021-04-21 09:52
需要在输入的开始指出输入数字的多少,或者定义输入是多少时候停止输入。单凭换行区分,比较麻烦
  • 2楼网友:往事隔山水
  • 2021-04-21 09:26
# include<stdio.h> #include <string.h> void swap(char *a,char *b) { int len=strlen(a); int i; for(i=0;len-i-1>=0;i++) b[i]=a[len-i-1]; b[i]='\0'; } main() { char a[10]="abcd"; char b[10]; swap(a,b); puts(a); puts(b); }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯