C语言。请帮忙编一个程序
编写函数strcmp()用主函数调用实现两个字符串比较。(只用函数不用指针)
编写函数strcmp()用主函数调用实现两个字符串比较。(只用函数不用指针)
答案:多项式相加,也就是合并同类项。
#include <iostream>
using namespace std;
struct list
{
int coef;//系数
int exp;//指数
list *next;
};
list *Creat()//创建带头结点的链表
{
list *h,*r,*s;//h是头结点,存放项的个数,指向第一项
r=h=new list;
h->next=NULL;
while(1)
{
s=new list;
cin>>s->coef>>s->exp;
if(s->coef==0)
break;
if(h->next==NULL)
{
r=s;//r=h->next
h->next=r;
}
else
{
r->next=s;
r=s;
}
}
r->next=NULL;
return h;
}
void Display(list *h)//输出链表
{
list *p;
p=h->next;
cout<<"f(x)=";
while(p)
{
if(p->next!=NULL)
cout<<p->coef<<"X^"<<p->exp<<"+";
else
cout<<p->coef<<"X^"<<p->exp;
p=p->next;
}
cout<<endl;
}
list *Huajian(list *h1)//合并同类项
{
list *p1,*q1,*q2;
for(p1=h1->next;p1;p1=p1->next)
for(q1=p1,q2=q1->next;q2;q1=q2,q2=q2->next)
if(p1->exp==q2->exp)
{
p1->coef+=q2->coef;
q1->next=q2->next;
delete q2;
q2=q1;//q2=q1->next;
}
return h1;
}
list *Multiply(list *h1,list *h2)//实现两个链表相乘
{
list *p1,*p2,*q1;
int c,e;
p1=h1->next;
p2=p1->next;
q1=h2->next;
do
{
c=p1->coef;
e=p1->exp;
while(q1)
{
p1->coef=c*q1->coef;
p1->exp=e+q1->exp;
if(q1->next!=NULL)
{
p1->next=new list;
p1=p1->next;
}
q1=q1->next;
}
q1=h2->next;
p1->next=p2;
p1=p2;
if(p2->next!=NULL)
p2=p2->next;
}while(p2);
h1=Huajian(h1);
return h1;
}
main()
{
list *h1,*h2;
h1=Creat();
Display(h1);
h2=Creat();
Display(h2);
h1=Multiply(h1,h2);
Display(h1);
return 0;
}
其他:strcmp是c语言标准的函数包含头文件 string.h就可以使用了。 “只用函数不用指针”是什么意思? 代码如下。。。。在win-tc里面调试成功的。。。希望能帮到你。。。
#include <stdio.h>
int strcmp(char s1[],char s2[]){
int i;
for(i=0;i<strlen(s1)&&i<strlen(s2);i++){
if(s1[i]!=s2[i]) return s1[i]-s2[i];
}
return strlen(s1)-strlen(s2);
}
void main(){
char s1[]="aaa",s2[]="ccc";
printf("%d",strcmp(s1,s2));
getch();
}
上一个:C语言 指针 输入10个数字 在输入一个数字 在十个数字中 找出第几个!
下一个:C语言 例如:输入十个数: 1,2,3,4,5,6,7,8,9,10 输入查找数:3 找到:a[2]; 输入查找数20未找到