这个程序应该从用户那里读取2个多项式,然后打印出求和;一旦两个多项式都被输入,就会陷入无限循环。
>
为了存储一个多项式,使用了一个带有指向下一项(节点)的*plink前向声明的结构
每个多项式都有一个头节点,它有助于以循环方式遍历列表。
因为头节点不包含任何与多项式“相关”的数据,所以它们的指数字段被初始化为-1
#include"stdio.h"
#include"stdlib.h"
#define SIZE 10
#define TRUE 1
#define FALSE 0
struct poly
{
int exp;
float coef;
struct poly *plink;
};
typedef struct poly PNODE;
PNODE* getNode()
{
PNODE *ptr= (PNODE*)malloc(sizeof(PNODE));
if(ptr==NULL)
{
printf("\nNo Memory\n");
return;
}
return ptr;
}
void readPoly(PNODE *phead, int n)
{
int i, ex;
float co;
PNODE *temp,*newnode;
temp=phead;
for(i=0;i<n;i++)
{
printf("\nEnter the EXPONENT and COEFFICIENT for term %d\n",i);
scanf("%d%f",&ex,&co);
newnode=getNode();
newnode->exp=ex;
newnode->coef=co;
temp->plink=newnode;
temp=newnode;
}
temp->plink=phead;
return;
}
void printPoly(PNODE* phead)
{
PNODE *i=phead;
for(i=phead->plink;i->plink!=phead;i=phead->plink)
{
printf("%2f(x^%d)+",i->coef,i->exp);
}
printf("\n");
}
int compare(int a, int b)
{
if(a>b)
{
return 1;
}
if(b>a)
{
return -1;
}
if(a==b)
{
return 0;
}
}
void attach(int exp, float coef, PNODE **add)
{
PNODE *temp;
temp=getNode();
temp->exp=exp;
temp->coef=coef;
(*add)->plink=temp;
*add=temp;
return;
}
PNODE* addPoly(PNODE *phead1, PNODE *phead2)
{
PNODE *startA, *res, *tempres;
int done= FALSE;
float sum= 0.0;
startA=phead1;
phead1=phead1->plink;
phead2=phead2->plink;
res=getNode();
res->exp=-1;
tempres=res;
do
{
switch(compare(phead1->exp,phead2->exp))
{
case 1: attach(phead1->coef,phead1->exp,&tempres);
phead1=phead1->plink;
break;
case -1: attach(phead2->coef,phead2->exp,&tempres);
phead2=phead2->plink;
break;
case 0: if(startA==phead1)
{
done=TRUE;
}
else
{
sum=phead1->coef+phead2->coef;
if(sum)
{
attach(sum,phead1->coef,&tempres);
}
phead1=phead1->plink;
phead2=phead2->plink;
}
break;
}
}while(!done);
tempres->plink=res;
return res;
}
int main()
{
int n1, n2;
PNODE *phead1, *phead2,*result;
phead1=(PNODE*)malloc(sizeof(PNODE));
phead2=(PNODE*)malloc(sizeof(PNODE));
phead1->exp=-1;
phead2->exp=-1;
phead1->plink=phead1;
phead2->plink=phead2;
printf("\nEnter the number of terms in Polynomial 1\n");
scanf("%d",&n1);
readPoly(phead1,n1);
printf("\nEnter the number of terms in Polynomial 2\n");
scanf("%d",&n2);
readPoly(phead2,n2);
printf("The first Polynomial is \n");
printPoly(phead1);
printf("The second Polynomial is \n");
printPoly(phead2);
printf("Result is\n");
result=addPoly(phead1,phead2);
printPoly(result);
return 0;
}
for(i=phead->plink;i->plink!=phead;i=phead->plink)
i
总是被赋予相同的值,因此循环永远不会结束。应该是i=i->plink
移动到下一个节点。
我已经写了这个生产者/消费者问题解决方案。它似乎在工作,而不是无限循环。我的印象是,pthread\u exit(NULL) 会让它停止,但老实说,我已经迷路了。有人能告诉我如何阻止循环的正确方向吗?
这是身份服务器3独立实现第3部分由斯科特布雷迪 当我运行hybridflow客户端应用程序并登录时,会显示“同意”页面。但在我确认我对范围的选择并单击“是,允许”按钮后,页面重定向到同意页面。 这是网络日志映像。在此处输入图像描述 这是最终的Http请求URL,其响应是同意页面。 https://localhost:44302/core/connect/authorize?client_id=hy
以下代码的输出是:请输入您的单词: 你好, 凯沙夫, 鲍勃, doan kehsavbob 线程中的异常 “主要” java.lang.数字格式异常: 对于输入字符串: “kehsavbob” 在 java.base/java.lang.数字格式异常.为输入字符串 (数字格式例外.java:67) 在 java.base/java.lang.Integer.parseInt(整数.java:668
我一直在研究GNU的g编译器编译的汇编,它看起来像一个无限循环(g -S file.c -o的部分输出): 除了最后一条jmp指令之外,所有这些指令都是movq或计算指令,但这只是让我们回到.L3。这是以下代码的主体: 它是如何退出循环的?看起来它只是减少了i(subq$1,-8(%rbp)),并在没有比较的情况下重新启动。
我对编码完全陌生,正在使用Python作为一个学校项目开发一个基于文本的游戏。用户必须通过键入“北”、“东”、“南”或“西”进入房间。如果方向无效,则应弹出错误消息,提示用户输入新方向。如果用户键入退出,游戏应该结束。 这个项目有一百万个问题,因为我发现我在编码方面很糟糕,但我想弄清楚的是,如果出现提示,如何让我的程序退出游戏。这是我的代码(它不是完整的代码,只是我到目前为止所拥有的代码。我试图一
问题内容: 请看下面的Java 无限循环。它导致其下面的语句的编译时错误。 以下相同的无限循环可正常工作,并且不会发出任何错误,其中我只是用布尔变量替换了条件。 同样在第二种情况下,循环之后的语句显然不可访问,因为布尔变量为true,但编译器根本没有抱怨。为什么? 编辑:显然,以下版本的卡在无限循环中,但是即使循环中的条件始终存在,因此循环下面的语句也不会对该语句下的语句发出任何编译器错误,因此循