1. 首页 > 科技

算法上机实验如图所示,用c语言实现? c语言上机实验指导

算法上机实验如图所示,用c语言实现?c语言上机实验指导

设计一个算法、用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(iList->Listsize)//当循环次数i小于setsize或者集合内实际元素数List.Listsize小于setsize时一直循环下去

{

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<

}