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);
}
採納哦~