请教c语言高手!!!!! 为什么程序中输入choose值,不进入switch case语句,而且程序报错,谢谢。

代码如下:
主函数:
#include<stdio.h>
#include<stdlib.h>
#include"data.h"
int main(void)
{
char choose;
struct link list1;
struct link list2;
char ch1[10];
char ch2[10];
list1.point=(struct list *) malloc(10*sizeof(struct list));
list1.lehgth=10;
list1.lengthnow=0;
list2.point=(struct list *) malloc(10*sizeof(struct list));
list2.lehgth=10;
list2.lengthnow=0;
printf("请输入第一个多项式(按降幂顺序写):");
gets(ch1);
printf("\n请输入第二个多项式(按降幂顺序写):");
gets(ch2);
creatlink(&list1,ch1);
creatlink(&list2,ch2);
printf("*********现在给出你的处理选择!********\n");
printf("a---------------------------加法\n");
printf("b---------------------------减法\n");
printf("c---------------------------乘法\n");
printf("q---------------------------退出\n");
scanf("%c",&choose);
while(choose!='q')
{
switch(choose)
{
case 'a': add(&list1,&list2);break;
case 'b': subtract(&list1,&list2);break;
case 'c': multiply(&list1,&list2);break;
}
scanf("%c",&choose);
fflush(stdin);
}
return 0;
}

creatlink函数:
#include<stdio.h>
#include<stdlib.h>
#include"data.h"
struct link * creatlink(struct link * L, char * CH)
{
char * pt;
struct list * p;
p=L->point;
for(pt=CH;(* pt)!='\0';pt++)
{
if(*pt='x')
{

p->coaf=*(pt-1);
p->exp=*(pt+2);
p++;
L->lengthnow++;
}
}

return(L);
}
头文件:
#include<stdio.h>
#include<stdlib.h>
struct link {
struct list * point;
int lengthnow;
int lehgth;
};
struct list{
float coaf;
int exp;
};

struct link * creatlink(struct link * , char *);
struct link * add(struct link * ,struct link *);
void subtract(struct link * ,struct link * );
void multiply(struct link * ,struct link * );

第1个回答  2012-10-14
你可以DEBUG一下看下choose的值,应该是接收到的回车,你的switch没有default所以报错了
第2个回答  2012-10-10
char ch1[10];
char ch2[10];
list1.point=(struct list *) malloc(10*sizeof(struct list));
list1.lehgth=10; //list1.length = 10;
list1.lengthnow=0;
list2.point=(struct list *) malloc(10*sizeof(struct list));
list2.lehgth=10; //list2.length = 10;
list2.lengthnow=0;

struct link * creatlink(struct link * L, char * CH)
{
char * pt;
struct list * p;
p=L->point;
for(pt=CH;(* pt)!='\0';pt++)
{
if(*pt='x') //if(*pt == 'x')
{

p->coaf=*(pt-1); //input x^2 ?? *(pt-1)是多少?
p->exp=*(pt+2);
p++;
L->lengthnow++;
}
}
代码不全 我也不好看。上面修改后一样的话应该是subtract(&list1,&list2)问题追问

我把整函数发给您,行吗?

本回答被网友采纳
相似回答