A. c语言课程设计
大哥你找错了吧,不是用C语言,是用VFP做这个的,你这个是数据库..用VFP做吧..不会很难的...
B. c语言程序课程设计
给你代码,你自己去研究吧
#include <stdio.h>
#define SIZE 10
typedef struct student
{
int num;
char name[20];
int score[3];
float average;
}student;
void indata(student *stu)
{
int i;
for (i = 0; i < SIZE; i++)
{
scanf("%d %s %d %d %d%*c", &stu[i].num, stu[i].name, &stu[i].score[0],
&stu[i].score[1], &stu[i].score[2]);
}
}
void outdata(student *stu)
{
int i;
for (i = 0; i < SIZE; i++)
{
printf("%d %s %d %d %d %f\n", stu[i].num, stu[i].name, stu[i].score[0],
stu[i].score[1], stu[i].score[2], stu[i].average);
}
}
int main()
{
student stu[SIZE];
int i, j;
int t;
student temp;
printf("请输入信息:\n");
indata(stu);
for (i = 0; i < SIZE; i++) //算平均分
{
stu[i].average = 0;
for (j = 0; j < 3; j++)
stu[i].average += stu[i].score[j];
stu[i].average /= 3;
}
for (i = 0; i < SIZE - 1; i++) //按平均分进行排序
{
t = i;
for (j = i + 1; j < SIZE; j++)
{
if (stu[t].average > stu[j].average)
t = j;
}
if (t == i)
continue;
else
{
temp = stu[i];
stu[i] = stu[t];
stu[t] = temp;
}
}
printf("排序后信息为:\n");
outdata(stu);
return 0;
}
C. C语言课程设计求解释。。。
#include <stdio.h>
struct student //定义一个结构体
{
char no[20];
char name[20];
float math,english,computer;
double total;
double avr;
};
struct student stu[50]; //定义stu结构体数组
//以下四个是函数声明语句
struct student input(); //学生数据输入函数,返回值是结构体
void display(struct student stu[],int count); //显示函数
void sort(struct student stu[],int count); //排序函数
void stat(struct student stu[],int count); //成绩分析函数
void main()
{
int count;
char ch;
ch='y';
printf("请按以下格式输入学生信息(可用Tab键对齐):");
printf("\n");
count=0;
while ((ch=='y') || (ch=='Y'))
{
stu[count]=input(); //调用input函数输入一个学生的信息给stu数组
count++; //这个循环是当ch为y时添加学生成绩信息
printf("\n是否继续?(按Y继续,其它结束)");
scanf(" %c",&ch);
}
printf("\n学生信息如下:");
sort(stu,count); //调用排序函数进行排序
display(stu,count); //显示排序后的结构
stat(stu,count); //调用分析函数显示分析结果
system("PAUSE"); //我这里加了一个暂停语句,可以把结果停留在输出窗口观看
}
struct student input()
{ int i;
struct student studn;
while(1) //这个循环是当有学号重复时让用户重复输入
{printf("\n学号\t\t姓名\t数学\t英语\t计算机\n");
while(1)
{scanf("%s %s %f %f %f",&studn.no,studn.name,&studn.math,&studn.english,&studn.computer);
if((studn.math>0)&&(studn.math<=100)&&(studn.english>0)&&(studn.english<=100)&&(studn.computer>0)&&(studn.computer<=100))break;
printf("输入的成绩不符合要求,请重新输入\n");
fflush(stdin);}
for(i=0;i<50;i++) //这个循环是查找stu数组中有没有和输入的学号有重复的信息,
if(strcmp(stu[i].no,studn.no)==0)break; //如果有就用break跳出for循环
if(i==50)break; //如果for循环后i值等于50,表示该学号没有重复,用break跳出while循环
printf("输入的学号已存在,请重新输入\n");
}
studn.total=studn.math+studn.english+studn.computer; //计算该学生的总分
studn.avr=studn.total/3.0; //计算该学生的平均分
return studn;
}
void display(struct student stu[],int count)
{ //这个函数很简单,用循环把stu数组的内容输出来
int i;
printf("\n排名\t学号\t\t姓名\t数学\t英语\t计算机\t总分\t平均分");
printf("\n");
for(i=0;i<count;i++)
{
printf("%d",i+1);
printf("\t%s",stu[i].no);
printf("\t%s",stu[i].name);
printf("\t%.1f",stu[i].math);
printf("\t%.1f",stu[i].english);
printf("\t%.1f",stu[i].computer);
printf("\t%.2f",stu[i].total);
printf("\t%.2f",stu[i].avr);
printf("\n");
}
}
void sort(struct student stu[],int count)
{ //这个函数是把stu数组进行排序
int i,j;
struct student t;
for(i=0;i<count;i++) //排序方法是冒泡排序
for(j=0;j<count-i-1;j++)
{
if(stu[j].avr<stu[j+1].avr) //按每个学生的3科平均分大小有高到低排序
{
t=stu[j];
stu[j]=stu[j+1];
stu[j+1]=t;
}
}
}
void stat(struct student stu[],int count)
{ //这个是分数段处理函数
int i;
double avr=0;
for(i=0;i<count;i++) //这个循环是统计全班3科成绩平均分的班的总平均分
avr += stu[i].avr;
avr /= count;
printf("全班平均分为%.2f,\n在平均分以上的同学有:\n",avr);
for(i=0;i<count;i++) //这个循环的功能上面printf语句说得很清楚了
if(stu[i].avr>=avr)
{
printf("%s\t",stu[i].name);
}
printf("\n");
}
D. 什么叫课程设计C课程设计需要那些软件具体过程是什么呀
C语言课程设计其实就是要你写一段代码来实现某些功能。你要的只是一台安装了VC++6.0(其他编程软件也可以)的电脑而已~
E. C语言程序设计 (学生选修课程设计)
这是我做的,你看是否满意?可能有点大,但也没办法呀,你的题目也比较大,呵呵!所以,如果满意,多给我追加点分!
#include
"stdio.h"
#include
"stdlib.h"
#include
"string.h"
typedef
struct
course
{
char
number[15],name[25];
int
kind,time,lessontime,practicetime,credit,term;
}type;
FILE
*fp1;
void
overview();
//浏览函数,负责浏览整个课程信息
void
seek();
//查询函数,负责查询课程信息
void
choose_course();//选课函数,负责让用户选课
void
out(type
temp);
void
input();
int
main()
{
int
n,i;
if((fp1=fopen("course_information.txt","wb"))==NULL)
{printf("创建文件失败!\n");exit(0);}
printf("请输入要存储的课程数目:\n");
scanf("%d",&n);
printf("开始创建文件,请输入课程信息:\n\n");
for(i=0;i<n;i++)
{
printf("请输入第%d门课程的信息:\n",i+1);
input();
printf("\n");
}
printf("如想浏览整个课程信息,请输入1;如想查询课程信息,请输入2;
如想进行选课,请输入3;如想结束选修课系统,请输入0!\n");
while((scanf("%d",&n))!=EOF)
{
if(n==1)
overview();
if(n==2)
seek();
if(n==3)
choose_course();
if(n==0)
exit(0);
printf("\n\n如想继续操作,只要按规则输入你要进行的操作即可!\n规则:如想浏览整个课程信息,请输入1;如想查询课程信息,请输入2;如想进行选课,请输入3!\n");
}
printf("欢迎您使用此程序进行选课,谢谢!\n");
fclose(fp1);
return
0;
}
void
input()
{
course
c_a;
printf("请输入课程编码:
");
scanf("%s",c_a.number);
printf("请输入课程名:
");
scanf("%s",c_a.name);
printf("请输入课程性质:限选课,请输入1;选修课,请输入2;必修课,请输入3!
");
scanf("%d",&c_a.name);
printf("请输入课程总学时:
");
scanf("%d",&c_a.time);
printf("请输入课程授课时间:
");
scanf("%d",&c_a.lessontime);
printf("请输入课程实验或实践时间:
");
scanf("%d",&c_a.practicetime);
printf("请输入课程学分:
");
scanf("%d",&c_a.credit);
printf("请输入课程所在的学期,比如第二学期,就输入2即可。");
scanf("%d",&c_a.term);
fwrite(&c_a,sizeof(struct
course),1,fp1);//将一个结构体元素写入文件中
}
void
out(type
temp)
{
printf("课程代码:
%s\n课程名:
%s\n",temp.number,temp.name);
printf("课程名:
%s\n",temp.name);
if(temp.kind==1)
printf("课程性质:
Limited
optional
course\n");
else
if(temp.kind==2)
printf("课程性质:
Optional
course\n");
else
if(temp.kind==3)
printf("课程性质:
Required
Courses\n");
else
printf("该编码系统不认识,即无对应的课程性质存在!\n");
printf("课程总学时:
%d\n课程授课学时:
%d\n实验或上机学时:
%d\n学分:
%d\n课程开课学期:
%d\n\n",temp.time,temp.lessontime,temp.practicetime,temp.credit,temp.term);
}
void
overview()
{
rewind(fp1);
course
temp;
printf("整个课程信息如下:\n");
while((fread(&temp,sizeof(type),1,fp1))!=0)
out(temp);
}
void
seek()
{
int
judge,credit=0,kind=0;
char
a='N';
course
temp;
printf("如想按学分查询,请输入1;如想按课程性质,请输入2:\n");
scanf("%d",&judge);
rewind(fp1);
//将文件指针位置置为开头
if(judge==1)
{
printf("请输入要查询的学分:\n");
scanf("%d",&credit);
while((fread(&temp,sizeof(type),1,fp1))!=0)
if(credit==temp.credit)
out(temp);
}
else
if(judge==2)
{
printf("请输入你要查找课程的性质(限选课,请输入1;选修课,请输入2;必修课,请输入3):");
scanf("%d",&kind);
while((fread(&temp,sizeof(type),1,fp1))!=0)
if(temp.kind==kind)
out(temp);
}
else
printf("不好意思,无此类查询!\n");
}
void
choose_course()
{
rewind(fp1);
course
temp;
int
judge=1,n=0,time=0,credit=0;
char
choose[20][20];
r1:
printf("请开始填写课程编号进行选课:\n");
while(judge==1)
{
printf("请输入你所选课程的标号:
");
scanf("%s",choose[n]);
n++;
printf("如想继续选课,请输入1;如想提交,请输入0!\n");
scanf("%d",&judge);
}
while((fread(&temp,sizeof(type),1,fp1))!=0)
{
for(int
i=0;i<n;i++)
if(strcmp(temp.number,choose[i])==0)
{time=time+temp.time;credit=temp.credit;break;}
}
if(time<270||credit<40)
goto
r1;
printf("你所选的课为:\n");
while((fread(&temp,sizeof(type),1,fp1))!=0)
{
for(int
i=0;i<n;i++)
if(strcmp(temp.number,choose[i])==0)
{out(temp);break;}
}
}
F. c语言课程设计!急!!!
#include<stdio.h>
#include<stdlib.h>//应用动态存储分配函数//
#include<time.h>
# define LEN sizeof(struct question)
struct question
{
char ask[200];//选择题题目//
char answer[4][80];//选择题选项,每个答案的长度//
int right;//正确答案//
struct question *next;//next是指针类型的成员,
//它指向struct question类型数据(即next所在的结构体类型)
//使用指针类型成员存放下一个结点的地址
//此步骤实现了问题的连续输入输入
};
int menu(void);//声明菜单选择函数
struct question *seek(struct question *seek,long len,long max);//寻找读取答案的位置
struct question *insert(struct question *fst,const struct question *ad);//插入试题
void getquestion(struct question *s);//获取问题,选项,以及正确答案
void savefile(const struct question *a,FILE *sf);//保存最佳答案在文件中//
struct question *loadfile(struct question *b,FILE *lf);//读取题目,将题目添加到列表中
int getanswer(void);//得到答案
int getyouranswer(void);//得到考生答案
void explainquestion(const struct question *q,int n);//统计答对题目数,显示得分
//选择菜单//
int menu(void)
{
int v;
printf("1—添加选择题\n2—回答选择题\n3—退出\n");
scanf("%d",&v);
return v;
}
//seek函数确定一个读取答案的位置,len代表要读取的答案数,max代表列表的长度//
struct question *seek(struct question *seek,long len,long max)
{
int i;
srand(time(NULL));
while(i=rand()%max+len<max);//随机选取一个读题目的位置//
while(i--)
seek=seek->next;//找到指定的位置//
return seek;
}
//向列表中插入试题//
struct question *insert(struct question *fst,const struct question *ad)
{
struct question *newptr=(struct question *)malloc(LEN);//分配新的内存空间//
if (newptr==NULL)
exit(0);
*newptr=*ad;
newptr->next=fst;
return newptr;
}
//获取问题,选项,以及正确答案//
void getquestion(struct question *s)
{
int i=0;
printf("请输入选择题题目:\n");
scanf("%s",s->ask);//指向结构体中的成员//
while(i<4)
{
printf("请输入选项%c的答案:\n",i+'A');
scanf("%s",s->answer[i++]);
}
s->right=getanswer();
}
//试题保存//
void savefile(const struct question *a,FILE *sf)//使用const说明成员函数//
{
fclose(sf);
if((sf=fopen("kstm.dat","w"))==NULL)//以写的方式重新打开文件//
return;
while(a)
{
fwrite(a,sizeof(struct question),1,sf);
a=a->next;
}
}
//从文件中读取题目,将题目添加到列表中//
struct question *loadfile(struct question *b,FILE *lf)
{
struct question temp;
while (fread(&temp,sizeof(struct question),1,lf))
b=insert(b,&temp);
return b;
}
//统计答对题目数,显示得分//
void explainquestion(const struct question *que,int n)
{
int i=0,t=0;
char result[1001],*p=result;
for(i=0;t<n;que=que->next,t++)
{
printf("%s\nA.%s\nB.%s\nC.%s\nD.%s\n\n",que->ask,que->answer[0],que->answer[1],que->answer[2],que->answer[3]);
if((*p=que->right)==(*(p+1)=getyouranswer()))
++i;
p+=2;
}
*p='\0';
printf("\n%-20s%-20s%s\n","标准答案","你的答案","评价");
for(p=result;*p!='\0';p+=2)
printf("%-20c%-20c%s\n",*p,*(p+1),*p==*(p+1)?"正确":"错误");
printf("\n你回答了%d道题,答对%d道题目,得分:%.2f\n\n",n,i,(float)(i*100.00/n));
}
//得到选择题的答案//
int getanswer(void)
{
static int i=1;
int c=0;//必须进行初始化,避免出现偶然性的错误//
while(c<'A'||c>'D')//确保输入的答案是ABCD中的一个//
{
printf("请输第%d题的正确答案:",i);
scanf("%c",&c);
printf("\n");
if(c>96)
c=c-32;//实现小写向大写的转换//
}i++;
return c;
}
int getyouranswer(void)
{
int c=0;//必须进行初始化,避免出现偶然性的错误//
while(c<'A'||c>'D')//确保输入的答案是ABCD中的一个//
{
printf("请输入你的答案:");
scanf("%c",&c);
if(c>96)
c=c-32;//实现小写向大写的转换//
}
return c;
}
main()
{
struct question *start=NULL,temp;
long int choice,line=0,c;
FILE *fp=fopen("kstm.dat","a+");//用'a+'方式打开文件名为'kstm.dat'文件,可添可读//
start=loadfile(start,fp);
printf(" *****欢迎使用此考试系统,请输入你要执行的步骤的编号*****\n");
while((choice=menu())!=3)//如果考生不选3-退出//
if(choice==1)
{
getquestion(&temp);
start=insert(start,&temp);
++line;//统计列表的长度//
}
else if(choice==2)
{
printf("请输入要回答的问题数量:");
scanf("%d",&c);
start=seek(start,c,line);
explainquestion(start,c);
}
savefile(start,fp);
fclose(fp);
return 0;
}
G. C语言程序课程设计
#include <stdio.h>
#define MAX 200
int main()
{
int a[MAX][MAX],n;
void initmatrix(int a[][MAX]);//初始化矩阵,将所有元素赋0
void creatematrix_2k1(int a[][MAX],int n);//生成2n+1阶幻方
void creatematrix_4k(int a[][MAX],int n);//生成4n阶幻方
void creatematrix_4k2(int a[][MAX],int n);//生成4n+2阶幻方
void outputmatrix(int a[][MAX],int n);//输出n阶幻方
initmatrix(a);
printf("please input a interger number:");
scanf("%d",&n);
if(n%2) creatematrix_2k1(a,(n-1)/2);
else {if(n%4==0) creatematrix_4k(a,n/4);
else creatematrix_4k2(a,(n-2)/4);}
outputmatrix(a,n);
return 0;
}
void initmatrix(int a[][MAX])
{
for(int i=0;i<MAX;i++)
for(int j=0;j<MAX;j++)
a[i][j]=0;
}
void outputmatrix(int a[][MAX],int n)
{
for(int i=0;i<n;i++)
{
printf("第%-3d行的数依次为:",i+1);
for(int j=0;j<n;j++)
printf("%-5d",a[i][j]);
printf("\n");
}
}
void creatematrix_2k1(int a[][MAX],int n)
{
int col=-1,row=-1;
int *p,*q;
p=&col,q=&row;
void fillmatrix(int a[][MAX],int *p,int *q,int n,int i);//将i填入2n+1阶幻方中
for(int i=1;i<=((2*n+1)*(2*n+1));i++)
fillmatrix(a,p,q,n,i);
}
void fillmatrix(int a[][MAX],int *p,int *q,int n,int i)
{
if(i==1)
{
a[0][n]=i;
*p=0,*q=n;
}
else
{
if((*p==0&&*q==2*n)||a[(*p+2*n)%(2*n+1)][(*q+1)%(2*n+1)])
{
a[(*p+1)%(2*n+1)][*q]=i;
*p=(*p+1)%(2*n+1);}
else{a[(*p+2*n)%(2*n+1)][(*q+1)%(2*n+1)]=i;
*p=(*p+2*n)%(2*n+1),*q=(*q+1)%(2*n+1);}
}
}
void creatematrix_4k(int a[][MAX],int n)
{
int temp;
for(int i=0;i<4*n;i++)
{ for(int j=0;j<4*n;j++)
a[i][j]=4*n*i+j+1;}
for(i=0;i<4*n;i++)
for(int j=0;j<4*n;j++)
if((i>j)&&((i-j)%4==0||(i+j+1)%4==0))
{temp=a[i][j];
a[i][j]=a[4*n-1-i][4*n-1-j];
a[4*n-1-i][4*n-1-j]=temp;}
for(i=0;i<2*n;i++)
{temp=a[i][i];
a[i][i]=a[4*n-1-i][4*n-1-i];
a[4*n-1-i][4*n-1-i]=temp;}
}
void creatematrix_4k2(int a[][MAX],int n)//构造4n+2阶幻方
{
int col=-1,row=-1,i;
int exn=(2*n+1)*(2*n+1);
int *p,*q;
p=&col,q=&row;
void fillmatrix_2(int a[][MAX],int *p,int *q,int cs, int rs,int n,int i);/*将i填入以a[cs][rs]为起始的2n+1阶幻方中,用p,q返回的i-1行列值*/
for(i=1;i<=exn;i++)
fillmatrix_2(a,p,q,0,0,n,i);
for(i=exn+1;i<=exn*2;i++)
fillmatrix_2(a,p,q,2*n+1,2*n+1,n,i);
for(i=2*exn+1;i<=3*exn;i++)
fillmatrix_2(a,p,q,0,2*n+1,n,i);
for(i=3*exn+1;i<=4*exn;i++)
fillmatrix_2(a,p,q,2*n+1,0,n,i);
void lastswap(int a[][MAX],int n);//对4n+2阶幻方做最后的变换
lastswap(a,n);
}
void fillmatrix_2(int a[][MAX],int *p,int *q,int cs, int rs,int n,int i)
{
int exn=(2*n+1)*(2*n+1);
if(i%exn==1)
{
a[cs+0][rs+n]=i;
*p=0,*q=n;
}
else {if((*p==0&&*q==2*n)||a[(*p+2*n)%(2*n+1)+cs][(*q+1)%(2*n+1)+rs])
{
a[(*p+1)%(2*n+1)+cs][*q+rs]=i;
*p=(*p+1)%(2*n+1);
}
else{
a[(*p+2*n)%(2*n+1)+cs][(*q+1)%(2*n+1)+rs]=i;
*p=(*p+2*n)%(2*n+1),*q=(*q+1)%(2*n+1);
}
}
}
void lastswap(int a[][MAX],int n)
{
int temp,i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{temp=a[i][j];
a[i][j]=a[2*n+1+i][j];
a[2*n+1+i][j]=temp;}
for(i=1;i<=n;i++)
{temp=a[n][i];
a[n][i]=a[3*n+1][i];
a[3*n+1][i]=temp;}
for(i=n+1;i<2*n+1;i++)
for(j=0;j<n;j++)
{temp=a[i][j];
a[i][j]=a[2*n+1+i][j];
a[2*n+1+i][j]=temp;}
for(i=0;i<2*n+1;i++)
for(j=4*n+1;j>3*n+2;j--)
{temp=a[i][j];
a[i][j]=a[2*n+1+i][j];
a[2*n+1+i][j]=temp;}
}
求幻方的程序
#include <stdio.h>
#include <stdlib.h>
#define IO "%d"//和下面一行共同扩展数据成员的格式
typedef int ElemType;//同上
typedef struct LinkNode
{
ElemType data;
struct LinkNode *next;
}LinkNode,*Link;
Link creat();//建立带头结点的链表,并返回头指针
void print(Link);//输出链表所有结点
bool insert(Link,int ,ElemType);//向head为头指针的链表中插入元素e使之成为链表第i个元素成功返回TRUE否则FALSE
bool del(Link,int );//在head为头指针的链表中删除第i个结点,成功返回TRUE否则返回FALSE
void operate(Link);//在本程序中进行链表的插入,删除,输出操作
Link creat()
{
Link head=(Link)malloc(sizeof(LinkNode));
Link pre=head,p;
int count=1;
char ch;
printf("是否终止建立链表(Y/N):");
scanf("%c",&ch);
while(ch=='n'||ch=='N')
{
p=(Link)malloc(sizeof(LinkNode));
printf("请输入第%d个结点内的数据:",count);
scanf(IO,&(p->data));
fflush(stdin);
pre->next=p;
pre=p;
printf("是否终止建立链表(Y/N):");
scanf("%c",&ch);
count++;
}
pre->next=NULL;
return head;
}
void print(Link head)
{
printf("链表目前情况为:\n");
Link p=head->next;
int count=1;
while(p)
{
printf("第%d个结点中数据为"IO" ",count,p->data);
p=p->next;
if((count++)%3==0)printf("\n");
}
if(count%3!=1)printf("\n");
}
bool insert(Link head,int i,ElemType e)
{
Link pre,p;
int k;
for(k=0,pre=head;k<i-1&⪯k++,pre=pre->next);//寻找第i-1个元素的指针
if(k!=i-1||(!pre))return false;
p=(Link)malloc(sizeof(LinkNode));
p->data=e;
p->next=pre->next;
pre->next=p;
return true;
}
bool del(Link head,int i)
{ Link pre,p;
int k;
for(k=0,pre=head,p=head->next;k<i-1&&p;k++,pre=p,p=p->next);//寻找第i-1个元素的指针
if(k!=i-1||(!p))return false;
pre->next=p->next;
free(p);
return true;
}
void operate(Link head)
{
int n,i;
ElemType e;
do
{
printf("************************************************\n");
printf("请输入想进行何种操作\n1============插入结点\n2============删除结点\n3============输出链表\n");
scanf("%d",&n);
switch(n)
{
case 1:printf("现在进行结点插入\n");
printf("请输入欲插入到何位置:");scanf("%d",&i);
printf("请输入欲插入的数据:");scanf(IO,&e);
if(insert(head,i,e))printf("插入成功!\n");else printf("插入失败!\n");
break;
case 2:printf("现在进行结点删除\n");
printf("请输入欲删除结点位置:");scanf("%d",&i);
if(del(head,i))printf("删除成功!\n");else printf("删除失败!\n");
break;
case 3:print(head);break;
default:break;
}
}while(n<4&&n>0);
}
int main()
{
Link head=creat();
operate(head);
return 0;
}
链表的操作
#include <stdio.h>
#include <math.h>//求积分
int main()
{
double f1(double);
double f2(double);
double f3(double);
double f4(double);
double f5(double);
double (*p)(double);
double integral(double a,double b,double(*p)(double));
double a,b;//记录积分区间
printf("请输入积分区间:");
scanf("%lf %lf",&a,&b);
if(a>b){double temp=a;a=b;b=temp;}//确保a<b
printf("sin(x)在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,sin));
printf("cos(x)在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,cos));
printf("exp(x)在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,exp));
printf("x+1在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,f1));
printf("2x+3在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,f2));
printf("exp(x)+1在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,f3));
printf("(1+x)^2在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,f4));
printf("x^3在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,f5));
return 0;
}
double integral(double a,double b,double(*p)(double))
{
double sum=0,l=b-a,pl;//sum保存积分和,l保存积分区间的长度,pl保存积分区间细分后每个小区间的长度
int n=2,i;//n保存划分的小区间数i用作累加指针
pl=l/n;
while(pl>1e-6)
{
sum=0;
for(i=0;i<n;i++)
sum+=(*p)(a+i*pl)*pl;
n*=2;
pl/=2;
}
return sum;
}
double f1(double x)
{
return x+1;
}
double f2(double x)
{
return 2*x+3;
}
double f3(double x)
{
return exp(x)+1;
}
double f4(double x)
{
return (1+x)*(1+x);
}
double f5(double x)
{
return x*x*x;
}
求积分
都是以前写的 便宜楼主了!!
H. c语言课设
之前写过的,你可以拿去参考
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct guest
{
int number;
char name[10];
int sum;
char time[5];
struct guest *next;
}GuestLink,*Pointer;
GuestLink stu[10];
int i,j,k;
void Insert(Pointer *Head);
void Search(Pointer Head);
void Update(Pointer Head);
void Delete(Pointer *Head);
void Show(Pointer Head);
void Sort(Pointer Head);
void Save(Pointer Head);
void Put(Pointer Head);
int main()
{
Pointer Head=NULL;
int i;
do{
printf(" ");
printf("1---增加订餐客户信息 ");
printf("2---查询订餐客户信息 ");
printf("3---修改订餐客户信息 ");
printf("4---删除订餐客户信息 ");
printf("5---浏览客户订餐信息 ");
printf("6---按照用餐时间升序排序 ");
printf("7---保存订餐信息到数据文件 ");
printf("8---查看数据文件中的订餐信息 ");
printf("9---退出 ");
printf(" ");
printf("请选择1--9:");
scanf("%d",&i);
switch(i)
{
case 1:Insert(&Head);
break;
case 2:Search(Head);
break;
case 3:Update(Head);
break;
case 4:Delete(&Head);
break;
case 5:Show(Head);
break;
case 6:Sort(Head);
break;
case 7:Save(Head);
break;
case 8:Put(Head);
break;
case 9:
break;
default:printf("选择错误!请重新选择!");
break;
}
}while(i!=9);
return 0;
}
void Insert(Pointer *Head)
{
int in_number;
Pointer p,q,r;
printf("请输入编号: ");
scanf("%d",&in_number);
p=q=*Head;
while(p!=NULL)
{
if(p->number==in_number)
{
printf("已经有相同编号:");
return;
}
else
{
q=p;p=p->next;
}
}
r=(Pointer)malloc(sizeof(GuestLink));//没有*号
r->next=NULL;
if(r==NULL)
{
printf("分配空间失败");
return;
}
if(q==NULL)//如果是空表,判断空表用q!!!!
*Head=r;
else
{q->next=r;}
r->number=in_number;
printf("请输入姓名: ");
scanf("%s",r->name);
printf("请输入人数: ");
scanf("%d",&r->sum);
printf("请输入时间: ");
scanf("%s",r->time);
}
/*
void Insert(Pointer *Head)
{int in_number;
Pointer p,q,r;
p=q=*Head;
printf("请输入号码:");
scanf("%d",&in_number);
while(p!=NULL)
{
if(in_number==p->number)
{printf("已存在号码!");}
else
{q=p;p=p->next;}
}
r=(Pointer)malloc(sizeof GuestLink);
r->next=NULL;
if(q==NULL)
*Head=r;
else
q->next=r;
printf("请输入姓名:");
scanf("%s",r->name);
printf("请输入人数");
scanf("%f",&r->sum);
printf("请输入时间");
scanf("%s",r->time);
}*/
void Search(Pointer Head)
{
int flag=1;
int number;
Pointer p;
printf("请输入要查询的编号:");
scanf("%d",&number);
p=Head;
while(p!=NULL&&flag)
{
if(p->number==number)
{ printf("编号 姓名 人数 时间 ");
printf("%s ",p->name);
printf("%d ",p->sum);
printf("%s ",p->time);
flag=0;
}
else
p=p->next;
}
if(flag)
printf("没有查询到!");
}
/*
void Search(Pointer Head)
{
int flag=0;
int number;
Pointer p;
p=Head;
printf("请输入您要查找的编号:");
scanf("%f",&number);
while(p!=NULL&&flag)
{
if(p->number==number)
{
printf("已查询到您要的编号");
flag=0;
}
else
{
p=p->next;
}
}
if(flag==1)
{printf("姓名:%s",p->name);
printf("编号:%f",p->number);
printf("人数:%f",p->sum);
printf("时间:%s",p->time);
}
else
{printf("没有查询到您要查询的编号!");}
}
*/
void Update(Pointer Head)
{
int flag=1;
int number;
Pointer p;
printf("请输入要修改的编号:");
scanf("%d",&number);
p=Head;
while(p!=NULL&&flag)
{
if(p->number==number)
{
printf("请输入人数:");
scanf("%d",&p->sum);
printf("请输入用餐时间:");
scanf("%s",p->time);
flag=0;
}
else
p=p->next;
}
if(flag)
printf("没有找到要修改的记录!");
}
//update与查询过程相似!!!
void Delete(Pointer *Head)
{
int flag=1;
int number;
Pointer p,q;
printf("请输入要删除的数据编号:");
scanf("%d",&number);
p=q=*Head;
while(p!=NULL&&flag)
{
if(p->number==number)
{
if(p==*Head)
{
*Head=p->next;free(p);//删除结点后要及时释放内存!!!
}
else
{q->next=p->next;free(p);}
flag=0;
}
else
{q=p;p=p->next;}
}
if(flag)
printf("没有找到可以删除的数据!!");
}
/*
void Delete(Pointer *Head)
{
Pointer p,q;
p=q=*Head;
int number;
int flag=1;
printf("请输入您要删除的结点:");
scanf("%d",&number);
while(p!=NULL)
{
if(p->number==number)
{ if(p==*Head)
{
*Head=p->next;free(p);
}
else
{
q->next=p->next;free(p);
}
flag=0;
}
else
{
q=p;p=p->next;
}
}
if(flag)
{printf("没有找到要删除的数据!");}
}
*/
void Show(Pointer Head)
{
Pointer p;
p=Head;
printf("编号 姓名 人数 用餐时间 ");
while(p!=NULL)
{
printf("%d ",p->number);
printf("%s ",p->name);
printf("%d ",p->sum);
printf("%s ",p->time);
p=p->next;
}
}
void Sort(Pointer Head)
{
//三个for循环,第一个赋给结构数组 第二个排序,第三个输出
Pointer p;
p=Head;
int count=0;
GuestLink temp;
for(i=0;p!=NULL;i++)
{
strcpy(stu[i].name,p->name);
stu[i].number=p->number;
stu[i].sum=p->sum;
strcpy(stu[i].time,p->time);
count++;
p=p->next;
}
for(i=0;i<count-1;i++)
{
k=i;
for(j=i+1;j<count;j++)
if(strcmp(stu[j].time,stu[k].time)<0)k=j;
if(k!=i)
{temp=stu[i];stu[i]=stu[k];stu[k]=temp;}//一个字都不能改!!!!
//{temp=stu[k];stu[k]=stu[i];stu[i]=temp;}
}
printf("编号 姓名 人数 用餐时间 ");
for(i=0;i<count;i++)
{
printf("%d ",stu[i].number);
printf("%s ",stu[i].name);
printf("%d ",stu[i].sum);
printf("%s ",stu[i].time);
}
}
/*Head=p=stu;
while(p!=NULL)
{
printf("姓名:%-10s",p->name);
printf("人数:%-10d",p->sum);
printf("用餐时间:%-10s",p->time);
printf("编号:%-10d ",p->number);
p=p->next;
}*/
/*
void Sort(Pointer Head)
{
Pointer p;
p=Head;
GuestLink temp;
count=0;
while(p!=NULL)
{p=p->next;
count++;
}
p=Head;
while(p!=NULL)
{for(i=0;i<count;i++)
{
stu[i].number=p->number;
strcpy(stu[i].name,p->name);
stu[i].sum=p->sum;
strcpy(stu[i].time,p->time);
}
p=p->next;
}
for(i=0;i<count-1;i++)
{
k=i;
for(j=0;j<count;j++)
{if(strcmp(stu[j].time,stu[k].time)<0)k=j;
if(k!=i)
{temp=stu[k];stu[k]=stu[i];temp=stu[i];}
}
}
}
*/
void Save(Pointer Head)
{
Pointer p;
FILE *fp;
p=Head;
for(i=0;p!=NULL;i++)
{
strcpy(p->name,stu[i].name);
p->number=stu[i].number;
p->sum=stu[i].sum;
strcpy(p->time,stu[i].time);
p=p->next;
}
if((fp=fopen("stud","w"))==NULL)
{printf("can't open !");}
p=Head;
while(p!=NULL)
{
if(fwrite(p,sizeof(GuestLink),1,fp)!=1)
printf("can't write! ");
p=p->next;
}
fclose(fp);
}
/*
void Save(Pointer Head)
{
FILE *fp;
Pointer p;
p=Head;
for(i=0;p!=NULL;i++)
{
stu[i].number=p->number;
strcpy(stu[i].name,p->name);
stu[i].sum=p->sum;
strcpy(stu[i].time,p->time);
p=p->next;
}
p=Head;
if((fp=fopen("stud","w"))==NULL)
{
printf("cam't open the file");
}
for(i=0;i<count;i++)
if(fwrite(p,sizeof(GuestLink),1,fp)!=1)
{
printf("cant write");
}
fclose(fp);
}
*/
void Put(Pointer Head)
{
FILE *fp;
Pointer p;
p=Head;
if((fp=fopen("stud","r"))==NULL)
{printf("can't open the File ");}
printf("编号 姓名 人数 用餐时间 ");
while(p!=NULL)
{
if(fread(p,sizeof(GuestLink),1,fp)!=1)
{printf("can't read!");}
printf("%d ",p->number);
printf("%s ",p->name);
printf("%d ",p->sum);
printf("%s ",p->time);
p=p->next;
}
fclose(fp);
}
采纳哦~