一段很有争议的C程序?可能是TC本身存在的问题!高手请进!

来源:百度知道 编辑:UC知道 时间:2024/07/02 02:44:08
#include "stdio.h"
#define NULL 0
typedef char ElemType;
typedef struct Node
{ ElemType data;
struct Node *next;
}Node,*LinkList;
LinkList CreateFromTail();
void PrintOut(LinkList);
int ListLength(LinkList);
char Inital2();
void main()
{ int i;
char key;
LinkList h,k,n;
h=CreateFromTail();
PrintOut(h);
ListLength(h);
key=Inital2();
printf("%c",key);
}
char Inital2()
{ char i;
scanf("%c",&i);
return i;
}
/*就是这段函数根本无法输入字符型,奇怪的是将%c 改成%d,再将前面的变量改成输入整型,就可以成功输入,而且也能返回输入的值!总之,无法输入一个字符,更没法返回其值,但如果将Inital函数放在建立单链表之前,scanf却又可以进行输入字符了!what the hell is going on in the world!!!!!!!!! */
int ListLength(LinkList L)
{ int i=0;
Node *p;
p=L->next;
while(p!=NULL)
{ p=p->next;
i++;
}
return i;
}
LinkList CreateFromTail()
{ LinkList L,p,s;

这个是我调试后的程序你看看是不是你要的结果
#include "stdio.h"
#include<stdlib.h>
#define NULL 0
typedef char ElemType;
typedef struct Node
{ ElemType data;
struct Node *next;
}Node,*LinkList;
LinkList CreateFromTail();
void PrintOut(LinkList);
int ListLength(LinkList);
char Inital2();
void main()
{ int i;
char key;
LinkList h,k,n;
h=CreateFromTail();
PrintOut(h);
ListLength(h);
key=Inital2();
printf("%c",key);
}
char Inital2()
{ char i;
scanf("%c",&i);
return i;
}
/*就是这段函数根本无法输入字符型,奇怪的是将%c 改成%d,再将前面的变量改成输入整型,就可以成功输入,而且也能返回输入的值!总之,无法输入一个字符,更没法返回其值,但如果将Inital函数放在建立单链表之前,scanf却又可以进行输入字符了!what the hell is going on in the world!!!!!!!!! */
int ListLength(LinkList L)
{ int i=0;
Node *p;
p=L->next;
while(p!=NULL)
{ p=p->next;
i++;
}
return i;
}