當前位置:首頁 » 編程語言 » 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);

}


採納哦~