算法上机实验如图所示,用c语言实现? c语言上机实验指导
- 设计一个算法、用C语言编写、数据结构的上机题、从开头开始编写、肯定给分
- 1、 求编写算法并上机用C语言编写程序
- 用C语言实现链表的算法
- 数值计算方法上机题编程,,,用c语言编程序,用牛顿迭代法求18的倒数,精度为0.0005,求大神解
设计一个算法、用C语言编写、数据结构的上机题、从开头开始编写、肯定给分
VC6++ 可以运行
#include "stdio.h"
#include "string.h"
int strsum(char *str,char *key)
{
int l1,l2,i,j,flag,sum=0;
l1=strlen(str);
l2=strlen(key);
for(i=0;i<l1-l2;i++)
{
flag=1;
for(j=0;j<l2;j++)
if(str[i+j]!=key[j])
{
flag=0;break;
}
if(flag) sum++;
}
return sum;
}
int main()
{
int i;
char a[100],b[100];
scanf("%s",a);
getchar();
scanf("%s",b);
i=strsum(a,b);
printf("%d\n",i);
return 0;
}
1、 求编写算法并上机用C语言编写程序
多项式计算。
hi.baidu/yanggq/blog/item/b6b7c3131cc01b28dd5401c1.html
用C语言实现链表的算法
这个是我们数据结构上机实验的链表问题,
#include
#include
#define LEN sizeof(LinkNode)
typedef int Datatype;
typedef int Status;
typedef struct LinkNode{
Datatype data;
struct LinkNode *next;
} LinkNode,*LinkList;
typedef struct OrderedList
{
LinkNode *head,*tail;
int Listsize;
} OrderedList;//有序循环链表的头节点head,尾接接节点 tail及长度Listsize
Status InitList(OrderedList *List)//生成循环链表头节点
{
List->tail=List->head=(LinkList)malloc(LEN);
if(List->head==NULL)
return 0;
else
{
List->head->next=List->tail;
List->tail->next=List->head;
List->Listsize=0;
return 1;
}
}
void OrderedInsert(OrderedList *List,Datatype data)//每调用一次有序插入data形成有序的(从小到大)的链表
{ LinkNode *p ,*q;
if(List->head==List->tail->next)
{
p=(LinkNode*)malloc(LEN);
p->data = data;
List->head->next=p;
p->next=List->tail;
List->Listsize++;
}
else
{
p=List->head->next;
q = List->head;
while(p->datatail)
{
q = p;
p=p->next;
}
if(p->data==data)
{printf("YOu have input the same datas %d\n\t YOu should input another data \n",data);
scanf("%d",&data);
OrderedInsert(List,data);
}
else
{
p=(LinkNode*)malloc(LEN);
p->data = data;
p->next = q->next;
q->next = p;
List->Listsize++;
}
}
}
void Creatset(OrderedList *List)//多次调用OrderedInsert()生成有序链表即集合List
{
Datatype data;
int setsize , i=0;
printf("Please input the setsize you want to creat:\n");
scanf("%d",&setsize);
InitList(List);
if(setsize==0)
printf("You needen't input any data\n");
else if(setsize==1)
printf("Please input a single data\n");
else
printf("Please input %d different datas;\n",setsize);
while(i
{
scanf("%d",&data);
OrderedInsert(List,data);
i++;
}
}
void Append(OrderedList *List,Datatype data)//在循环链表的最后面追加 一个data
{
LinkNode *p;
p=(LinkNode*)malloc(LEN);
p->data=data;
List->tail=List->tail->next=p;
List->tail->next=List->head;
List->Listsize+=1;
}
void MergeList(OrderedList La,OrderedList Lb,OrderedList *Lc)//有序循环链表ListLa,ListLb求并集生成ListLc
{
LinkList Pa,Pb;
Pa=La.head->next;Pb=Lb.head->next;
while(Pa!=La.tail&&Pb!=Lb.tail)
{
if(Pa->data<=Pb->data)
{
Append(Lc,Pa->data);
Pa=Pa->next;
}
else {
Append(Lc,Pb->data);Pb=Pb->next;
}
}
while(Pa!=La.tail)
{ Append( Lc,Pa->data);Pa=Pa->next;}
while(Pb!=Lb.tail)
{ Append(Lc,Pb->data);Pb=Pb->next;}
}
void Print(OrderedList List)
{
LinkNode *p;
p=List.head->next;
if(p->next==List.head)
printf("No Elem\n");
while(p!=List.head)
{ printf("%5d",p->data);p=p->next; }
printf("\n");
}
void main()
{
OrderedList ListLa,ListLb,ListLc;
Creatset(&ListLa);
Creatset(&ListLb);
InitList(&ListLc);
MergeList(ListLa,ListLb,&ListLc);
printf("The nial list ListLa,ListLb:\n");
Print(ListLa);
Print(ListLb);
printf("The Merge list ListLc;\n");
Print(ListLc);
}
数值计算方法上机题编程,,,用c语言编程序,用牛顿迭代法求18的倒数,精度为0.0005,求大神解
用牛顿迭代法求方程(2*(X-4)+3)X-6=0的根。
其迭代公式为X2=X1-F(X1)/F'(X1)
F'(X1)为对方程求导。本题中P'(X1)=(6*x1-8)*x1-3;
编译显示正确,但一运行就死机,我已经死了3次了。(一开始还以为电脑的问题)
#include
#include
void main(void)
{float x1,x2=100;
do
{x1=x2;
x2=(float)x1-(((2*x1-4)*x1+3)*x1-6)/((6*x1-8)*x1-3);
}while(fabs(x2-x1)>pow(10,-5));
cout< }