當前位置:首頁 » 課程大全 » c語言程序課程設計

c語言程序課程設計

發布時間: 2020-11-28 02:11:57

1. 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;}
}
}

2. c語言課程設計

課程設計是培養學生綜合運用所學知識,發現,提出,分析和解決實際問題,鍛煉實踐能力的重要環節,是對學生實際工作能力的具體訓練和考察過程.隨著科學技術發展的日新日異,當今計算機應用在是生活中可以說得是無處不在。因此作為二十一世紀的大學來說掌握計算機開發技術十分重要的。
我的題目是文章處理系統的設計,對於我們這些新手來說,這是很大的考驗,我一千次一萬次的問自己,怎麼才能找到課堂所學與實際應用的最佳結合點?怎麼才能讓自己的程序在篇幅上簡單,在使用價值上豐富?怎樣讓自己的業余更靠近專業?怎樣讓自己的計劃更具有序性,而不會忙無一用?機會是老師,學校,以及無數代教育工作者給的,而能力是自己的,耐性是需要的。經過自己的琢磨,聽取了師姐,師兄們的建議,還查閱了很多書籍,才做到了心中有數,才了解了C語言課程設計的真正用意——培養自學能力,養成程序編輯的好習慣。我從來不相信車到山前必有路的說法,認為那隻是懶惰者自尋懶惰的借口,我要積極,要把握,要努力。
回顧起此次課程設計,至今我仍感慨頗多,的確,從從拿到題目到完成整個編程,從理論到實踐,在整整半個學期的日子裡,可以學到很多很多的的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,比如說結構體……通過這次課程設計之後,一定把以前所學過的知識重新溫故。
這次課程設計終於順利完成了,在設計中遇到了很多編程問題,最後在郭老師的辛勤指導下,終於游逆而解。同時,在郭老師的身上我學得到很多實用的知識,在次我表示感謝!同時,對給過我幫助的所有同學和各位指導老師再次表示忠心的感謝
在課程設計過程中,我學到了很多人生的哲理,懂得怎麼樣去制定計劃,怎麼樣去實現這個計劃,並掌握了在執行過程中怎麼樣去克服心理上的不良情緒,黑夜過去了,我們收獲的是黎明。在本次實踐中,給我印象最為深刻的是在文件刪除程序的編譯過程中,先有我的各個子程序都已經編輯成功,那麼這最後的程序就將是我成功的關鍵。老天不會讓我太過順利,他在這最後的時刻設置的障礙,是要考驗我的能力,他要置我於死地?在這個問題的解決上,我打了退堂鼓,我不能忍受長時間的無功而反,時間正在消磨我的意志。沒有了柳暗花明的一天,那麼我怎麼能說經受住了考驗?謝謝老師的那句話,她說:人力有所不能及,然而,人的精神是不會敗倒的。我鼓起勇氣,到處問,到處查資料,黃天不負有心人,在一篇文章上,終於看到了我所特別要求的函數,我實現了組合是關鍵的理論。不得不說這是精神的勝利,是永不言敗的精神讓我的程序重見天日。謝謝給我指點迷津的老師。
6月11日,我們的課程設計結束了,但是它留給我的印象是不可磨滅的。無論我以後會不會涉及到C語言程序編譯的研究,我想,我至少掌握了一種系統的研究方法,我們學習的目的就在於運用,我們運用這種研究方法的時候會很多,我最後要感謝課程設計,它的確教會我很多。
另外,虛機團上產品團購,超級便宜

3. C語言程序設計課程設計!

圖書借閱管理,C語言編程的,只要設計部分的,,m

4. c語言程序設計課程設計

有償代,_(:з」∠)_

5. <<C語言程序設計>>課程設計

給你一個我做的人事管理系統,回去把變數改下就好了,鏈表已經做好了,如果不會改的話我也沒辦法了.
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int shouldsave=0;
struct employee
{
char num[10];
char name[20];
char sex[4];
};

typedef struct node
{
struct employee data;
struct node *next;
}Node,*Link;

void menu()
{
printf("********************Welcome*************************************\n");
printf(" 1.Input\n");
printf(" 2.sort\n");
printf(" 3.query\n");
printf(" 4.change\n");
printf(" 5.save\n");
printf("****************************************************************\n");
}

void printstart()
{
printf("----------------------------------------------------------------\n");
}
void Wrong()
{
printf("\n=====>wrong info!\n");
}

void Nofind()
{
printf("\n=====>no find!\n");
}

void printc()
{
printf(" number name sex\n");
}

void printe(Node *p)
{
printf(" %-12s %s\t %s",p->data.num,p->data.name,p->data.sex);
}

Node* Locate(Link l,char findmess[])
{
Node *r;
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.num,findmess)==0)
return r;
r=r->next;
}
return 0;
}

void Add(Link l)
{
Node *p,*r,*s;
char num[10];
r=l;
s=l->next;
while(r->next!=NULL)
r=r->next;
while(1)
{
printf("input number:)");
scanf("%s",num);
if(strcmp(num,"0")==0)
break;
while(s)
{
if(strcmp(s->data.num,num)==0)
{
printf("=====>%d is already existed!\n",num);
printstart();
printc();
printe(s);
printstart();
printf("\n");
return;
}
s=s->next;
}

p=(Node *)malloc(sizeof(Node));

strcpy(p->data.num,num);
printf("input name:");
scanf("%s",p->data.name);
getchar();
printf("input sex:");
scanf("%s",p->data.sex);
getchar();
p->next=NULL;
r->next=p;
r=p;
shouldsave=1;

}
}

void Qur(Link l)
{
char findmess[20];
Node *p;

if(!l->next)
{
printf("no info!");
return;
}
printf("input number:");
scanf("%s",findmess);
p=Locate(l,findmess);
if(p)
{
printf("\t\t\t\tresult\n");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
void Disp(Link l)
{
Node *p;
p=l->next;

if(!p)
{
printf("\n=====>no info to display!\n");
return;
}
printf("\t\t\t\result:\n");
printstart();
printc();
printf("\n");
while(p)
{
printe(p);
p=p->next;
}
printstart();
printf("\n");
}
void Sort(Link l)
{
Link ll;
Node *p,*rr,*s;

ll=(Link)malloc(sizeof(Node));
ll->next=NULL;

if(l->next==NULL)
{
printf("\n=====>no info to sort!\n");
return ;
}
p=l->next;
while(p)
{
s=(Node*)malloc(sizeof(Node));
s->data=p->data;
s->next=NULL;

rr=ll;
while(rr->next!=NULL )
rr=rr->next;
if(rr->next==NULL)
rr->next=s;
else
{
s->next=rr->next;
rr->next=s;
}
p=p->next;
}
free(l);
l->next=ll->next;
printf("\n=====>sort is finished!\n");
}

void Save(Link l)
{
FILE* fp;
Node *p;
int flag=1,count=0;
fp=fopen("c:\\employee","wb");
if(fp==NULL)
{
printf("\n=====>error!\n");
exit(1);
}
p=l->next;

while(p)
{
if(fwrite(p,sizeof(Node),1,fp)==1)
{
p=p->next;
count=count+1;
}
else
{
flag=0;
break;
}
}
if(flag)
{
printf("\n=====>successful! %d records!\n",count);
shouldsave=0;
}
fclose(fp);
}

void main()
{
Link l;
FILE *fp;
int sel;
char ch;
char set;

int count=0;
Node *p,*r;
l=(Node*)malloc(sizeof(Node));
l->next=NULL;
r=l;

fp=fopen("C:\\employee","rb");
if(fp==NULL)
{
printf("\n=====>not existed,set(y/n)?\n");
scanf("%c",&set);
if(set=='y'||set=='Y')
fp=fopen("C:\\employee","wb");
else
exit(0);
}
while(!feof(fp))
{
p=(Node*)malloc(sizeof(Node));
if(fread(p,sizeof(Node),1,fp))
{
p->next=NULL;
r->next=p;
r=p;
count=count+1;
}
}

fclose(fp);
printf("\n=====>record finished,%d records\n",count);

while(1)
{
menu();
printf("choose selection:");
scanf("%d",&sel);

if(sel==0)
{
printf("\n=====>exit,bye!\n");
break;
}
switch(sel)
{
case 1:Add(l);break;
case 3:Qur(l);break;
case 4:Disp(l);break;
case 2:Sort(l);break;
case 5:Save(l);break;
default: Wrong();
getchar();
break;
}
}
}



6. c語言課程設計報告

作業的話自己做最有幫助了、
我們老師也布置過,做好了,不過沒有流程圖

7. 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;
}

8. 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;
}

求積分

都是以前寫的 便宜樓主了!!

9. c語言程序 課程設計 求大神給個源代碼

int Conversion(char num[20], int t, int n)
{
int i,ii,j,k,m,x,b[30],h[30],c;
double d,r;
ii=0;
p=0;
memset(out,0,20);
m=strlen(num);//求字元串的長度
x=m;
for(k=0,j=0;k<m;k++)//主要是分段,以小數點為界限,只轉換整數部分
{
if(num[k]=='.')
{
x=k;
break;
}
}

for(j=x-1;j>=0;j--)
{
if(num[j]=='-') break; //符號的處理
if(num[j]=='A') r=10;
else if(num[j]=='B')
r=11;
else if(num[j]=='C')
r=12;
else if(num[j]=='D')
r=13;
else if(num[j]=='E')
r=14;
else if(num[j]=='F')
r=15;
else
r=num[j]-'0';//將字元轉換成數字
p=p+r*(pow ((double)t,(double)(x-j-1)));//計算結果
}

if(num[x]=='.')
{
for(j=x+1;j<m;j++)
{
if(num[j]=='A') r=10;
else if(num[j]=='B')
r=11;
else if(num[j]=='C')
r=12;
else if(num[j]=='D')
r=13;
else if(num[j]=='E')
r=14;
else if(num[j]=='F')
r=15;
else
r=num[j]-'0';//將字元轉換成數字
p=p+r*(pow ((double)t, (double)(x-j)));
}
}
//g_print("%f",p);
if(n==10)//如果要轉換成十進制
{
if(num[0]=='-')
{
p=-p;
}
return 0;
}

else //如果要轉換成其他進制
{
k=(int)p;
i=0;
while(k)//判定需要轉換的數是否變為0
{
h[i++]=k%n;//取余,進行進制轉換,但是順序與正確值相反
k/=n;//轉換一位之後進行相應的變化
}
c=0;
if(p!=(int)p)//選擇性計算,如果是整數就不用進行這一步的計算了
{
d=p-(int)p;//取小數部分
while(d!=0)
{
b[c]=(int)(d*n);//演算法為×N取整
d=d*n-b[c];
c++;
if(c>=10)
break;//主要是控制小數後面萬一出現無限小數的時候好跳出循環以免出現死循環
}
}
if(num[0]=='-')
{
out[0]='-';
ii++;
}
for(j=i-1;j>=0;j--,ii++)//反序輸出,大於10的數字進行相應的變化
{
if(h[j]==10) out[ii]='A';
else if(h[j]==11) out[ii]='B';
else if(h[j]==12) out[ii]='C';
else if(h[j]==13) out[ii]='D';
else if(h[j]==14) out[ii]='E';
else if(h[j]==15) out[ii]='F';
else if(h[j]==9) out[ii]='9';
else if(h[j]==8) out[ii]='8';
else if(h[j]==7) out[ii]='7';
else if(h[j]==6) out[ii]='6';
else if(h[j]==5) out[ii]='5';
else if(h[j]==4) out[ii]='4';
else if(h[j]==3) out[ii]='3';
else if(h[j]==2) out[ii]='2';
else if(h[j]==1) out[ii]='1';
else out[ii]='0';
}
if(p!=(int)p)//選擇性輸出,這樣可以節約輸出時間和程序的運行時間
{
out[ii++]='.';
for(j=0;j<c;j++)//正序輸出
{
if(b[j]==10) out[ii]='A';
else if(b[j]==11) out[ii]='B';
else if(b[j]==12) out[ii]='C';
else if(b[j]==13) out[ii]='D';
else if(b[j]==14) out[ii]='E';
else if(b[j]==15) out[ii]='F';
else if(b[j]==9) out[ii]='9';
else if(b[j]==8) out[ii]='8';
else if(b[j]==7) out[ii]='7';
else if(b[j]==6) out[ii]='6';
else if(b[j]==5) out[ii]='5';
else if(b[j]==4) out[ii]='4';
else if(b[j]==3) out[ii]='3';
else if(b[j]==2) out[ii]='2';
else if(b[j]==1) out[ii]='1';
else out[ii]='0';
ii++;
}
}
//puts(out);
return 0;
}
}

參考 http://www.cnblogs.com/kongtiao斜杠archive/2012/04/20/2459523.html

熱點內容
武漢大學學生會輔導員寄語 發布:2021-03-16 21:44:16 瀏覽:612
七年級學生作文輔導學案 發布:2021-03-16 21:42:09 瀏覽:1
不屑弟高考成績 發布:2021-03-16 21:40:59 瀏覽:754
大學畢業證會有成績單 發布:2021-03-16 21:40:07 瀏覽:756
2017信陽學院輔導員招聘名單 發布:2021-03-16 21:40:02 瀏覽:800
查詢重慶2018中考成績查詢 發布:2021-03-16 21:39:58 瀏覽:21
結業考試成績怎麼查詢 發布:2021-03-16 21:28:40 瀏覽:679
14中醫醫師資格筆試考試成績查分 發布:2021-03-16 21:28:39 瀏覽:655
名著賞析課程標准 發布:2021-03-16 21:27:57 瀏覽:881
北京大學商業領袖高端培訓課程 發布:2021-03-16 21:27:41 瀏覽:919