当前位置:首页 » 编程语言 » c语言课程设计是什么
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言课程设计是什么

发布时间: 2022-08-02 18:43:16

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);

}


采纳哦~