大學(xué)課程設(shè)計(jì)高級(jí)語言程序設(shè)計(jì)_第1頁
大學(xué)課程設(shè)計(jì)高級(jí)語言程序設(shè)計(jì)_第2頁
大學(xué)課程設(shè)計(jì)高級(jí)語言程序設(shè)計(jì)_第3頁
大學(xué)課程設(shè)計(jì)高級(jí)語言程序設(shè)計(jì)_第4頁
大學(xué)課程設(shè)計(jì)高級(jí)語言程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、;.北方民族大學(xué)課程設(shè)計(jì) 課程名稱: 高 級(jí) 語 言 程 序 設(shè) 計(jì) 院(部)名 稱: 信息與計(jì)算科學(xué)學(xué)院 組長(zhǎng)姓名學(xué)號(hào): 曹永利 20124473 同組人員姓名: 張婷、馬義花 指導(dǎo)教師姓名: 董建強(qiáng) 設(shè) 計(jì) 時(shí) 間: 2013年 6、76、27 個(gè)人程序設(shè)計(jì)(一)曹永利: 1、編寫冒泡排序和選擇排序的程序,主函數(shù)中編寫菜單調(diào)用排序函數(shù)。#include<stdio.h>void sort(int a, int size) int i,j; for(i=0;i<size-1;i+) for(j=0;j<size-i-1;j+) if(aj>aj+1) int t

2、; t=aj; aj=aj+1; aj+1=t; main() int i,a10;for(i=0;i<10;i+) scanf("%d",&ai); sort(a,10); for(i=0;i<10;i+) printf("%4d",ai); printf("n"); 6、從文件讀入一個(gè)字符處,統(tǒng)計(jì)該字符串中單詞的個(gè)數(shù)單詞之間用空格分開,空格數(shù)可以是多個(gè)。#include<stdio.h>#include<stdlib.h>#define IN 1#define OUT 0int main

3、() char szFilename256; FILE *fp; printf("input the file:"); scanf("%s",szFilename); if(fp=fopen(szFilename,"r")=NULL) printf("the file don't exist!"); exit(1); int flag=OUT; int c; int nw=0; while(c=fgetc(fp)!=EOF) if(c=' ') flag=OUT; else if(OUT=f

4、lag) flag=IN; nw+; printf("THe num is:%dn",nw); return 0; 24.輸入學(xué)生人數(shù)后輸入每個(gè)學(xué)生的成績(jī),最后輸出學(xué)生的平均成績(jī)以及最高成績(jī)和最低成績(jī)的學(xué)生學(xué)號(hào)、姓名和成績(jī)。要求用動(dòng)態(tài)分配存儲(chǔ)空間來實(shí)現(xiàn)(學(xué)生信息包括學(xué)號(hào)、姓名、成績(jī))#include<stdio.h>#include<malloc.h>int main() int *p, m, i, total = 0, max = 0, min = 100; printf("輸入學(xué)生人數(shù)"); scanf("%d&qu

5、ot;, &m); p = (int *)malloc(m * sizeof(m); for(i = 0; i < m; +i) printf("輸入第%d個(gè)成績(jī)", i + 1); scanf("%d", &pi); total += pi; if(max < pi) max = pi; if(min > pi) min = pi; printf("成績(jī)的和是%dnmax = %dnmin= %d", total, max, min); 個(gè)人程序設(shè)計(jì)(二)張婷: 9,輸出100-2000之間的所有素

6、數(shù),每行輸出8個(gè)。要求調(diào)用求素?cái)?shù)函數(shù)# include <stdio.h># include <math.h>int main(void)int count,i,m,n;count=0;for(m=100;m<=2000;m+)n=sqrt(m);for(i=2;i<=n;i+)if(m%i=0)break;if(i>n)printf("%6d",m);count+;if(count%8=0)printf("n");printf("n");return 0;#include <stdio

7、.h>int main(void)long a;int b50,n,i;scanf("%ld",&a);i=0;while(a>9)bi=a%10;a/=10;i+;bi=a;for(;i>=0;i-)printf("%d",bi);if(i!=0)printf(",");printf("n");,22,用遞歸法實(shí)現(xiàn)一個(gè)正整數(shù)的逆序輸出。# include <stdio.h>void printData(int data)if(data=0)return;printf(&quo

8、t;%d",data%10);printData(data/10);int main()int data;printf("Enter a number:");scanf("%d",&data);printData(data);printf("n");return 0;23,輸入一個(gè)長(zhǎng)整形數(shù),從高位開始逐位分割并輸出。如輸入123456,逐位輸出1,2,3,4,5,6.#include <stdio.h>int main(void)long a;int b50,n,i;scanf("%ld&quo

9、t;,&a);i=0;while(a>9)bi=a%10;a/=10;i+;bi=a;for(;i>=0;i-)printf("%d",bi);if(i!=0)printf(",");printf("n");個(gè)人程序設(shè)計(jì)(三)馬義花:2編寫順序查找和二分查找程序,主函數(shù)中編寫菜單調(diào)用查找函數(shù)。#include<stdio.h>int shunxuchazhao(int a,int n,int x)/順序查找 int i; for(i=0;i<n;i+) if(x=ai) return i; ret

10、urn -1;int erfenchazhao(int a,int s,int e,int x) / 二分查找 int index=(s+e)/2; if(aindex=x) return index; else if(aindex>x) e=index; return erfenchazhao(a,s,e,x); else if(aindex<x) s=index; return erfenchazhao(a,s,e,x); return -1;int main()int a=1,2,3,4,5,6,7,8,9;int i,chose,index=-1;printf("

11、輸入1順序查找 輸入2二分查找 輸入其他退出程序");scanf("%d",&chose);switch(chose) case 1: index=shunxuchazhao(a,8,2);break; case 2: index=erfenchazhao(a,1,8,2);break; default:return 0;printf("index=%dn",index);4自己編寫字符串求長(zhǎng)、拷貝、連接、刪除、插入指定字符的函數(shù),要求主函數(shù)中編寫菜單,可以分別實(shí)現(xiàn)調(diào)用。#include<stdio.h>#include&l

12、t;string.h>#include<stdlib.h>int getLenth(char *s) /求長(zhǎng)度 int i=0; for(i=0;si!='0'i+) return i;char* copyString(char *s) /復(fù)制 int n=strlen(s); int i; char *cs=(char *)malloc(n*sizeof(char); for(i=0;i<n;i+) csi=si; return cs;char* lianjie(char *s1,char *s2) int n1=strlen(s1); int n2=

13、strlen(s2); int i,j; char *cs=(char *)malloc(n1+n2)*sizeof(char); for(i=0;i<n1;i+) csi=s1i; j=0; for(i=n1;i<n1+n2;i+) csi=s2j+; return cs;char* insert(char *s,int index,char ch) int n=strlen(s); int i,j; char *cs=(char *)malloc(n+1)*sizeof(char); for(i=0;i<index;i+) csi=si; for(i=index;i<

14、;n;i+) csi+1=si; csindex=ch; csn+1='0' s=cs; return s;int main() int chose; char *s="12345" char *s1="qwe" char *s2="qqqqqqqqqqqqqqqqqqqqqqqqq" printf("輸入1求長(zhǎng)度 輸入2復(fù)制 輸入3鏈接 輸入4插入字符 輸入其他退出程序"); scanf("%d",&chose);switch(chose)case 1: printf(

15、"lenth=%dn",getLenth(s);break;case 2: printf("復(fù)制出的字符串是"); puts(copyString(s);break;case 3: printf("連接成的新的字符串是"); puts(lianjie(s1,s2);break;case 4: printf("插入字符后新的字符串是"); puts(insert(s,2,'y');break; default: return 0;12、 利用結(jié)構(gòu)體變量求兩個(gè)復(fù)數(shù)的和、差、積。要求設(shè)計(jì)一個(gè)菜單分別調(diào)用函

16、數(shù)。#include <stdio.h>typedef struct TYPE_PLURALdouble realpart;double imaginarypart; plural;plural operator*(const plural &lp,const plural &rp)plural rtn;rtn.realpart = lp.realpart*rp.realpart - lp.imaginarypart*rp.imaginarypart;rtn.imaginarypart = lp.imaginarypart*rp.realpart + lp.real

17、part*rp.imaginarypart;return rtn;int main(int argc, char* argv)plural plr_a=5,10;plural plr_b=2,3;plural plr_c = plr_a*plr_b;小組設(shè)計(jì) 1:銷售管理系統(tǒng) 某公司有四個(gè)銷售員(編號(hào):1-4),負(fù)責(zé)銷售五種產(chǎn)品(編號(hào):1-5)。每個(gè)銷售員都將當(dāng)天出售的每種產(chǎn)品各寫一張便條交上來。每張便條包含內(nèi)容: 1)銷售員的代號(hào) 2)產(chǎn)品的代號(hào) 3)這種產(chǎn)品的當(dāng)天的銷售額 每位銷售員每天可能上繳0-5張便條。假設(shè),收集到了上個(gè)月的所有便條,編寫一個(gè)處理系統(tǒng),讀取上個(gè)月的銷售情況(自己設(shè)定)

18、,進(jìn)行如下處理。1)計(jì)算上個(gè)月每個(gè)人每種產(chǎn)品的銷售額。 2)按銷售額對(duì)銷售員進(jìn)行排序,輸出排序結(jié)果(銷售員代號(hào))3)統(tǒng)計(jì)每種產(chǎn)品的總銷售額,對(duì)這些產(chǎn)品按從高到底的順序,輸出排序結(jié)果(需輸出產(chǎn)品的代號(hào)和銷售額) 4)輸出統(tǒng)計(jì)報(bào)表 一:設(shè)計(jì)目的通過本次實(shí)訓(xùn)使我們?cè)趯?shí)際應(yīng)用中熟悉C語言編程步驟,掌握編程方法,并具有初步的編程能力。C語言課程設(shè)計(jì)是教學(xué)實(shí)踐環(huán)節(jié)中一項(xiàng)重要內(nèi)容,進(jìn)行此課程設(shè)計(jì)旨在:提高和加強(qiáng)學(xué)生的計(jì)算機(jī)應(yīng)用及軟件開發(fā)能力,使學(xué)生具備初級(jí)程序員的基本素質(zhì);培養(yǎng)學(xué)生獨(dú)立分析問題、解決問題、查閱資料以及自學(xué)能力,以適應(yīng)信息管理行業(yè)日新月異的發(fā)展形勢(shì);本次課程設(shè)計(jì)是以學(xué)生獨(dú)立思考解決問題為主,教

19、師指導(dǎo)為輔,結(jié)合上機(jī)操作,完成指定的任務(wù),作出設(shè)計(jì)報(bào)告。二:總體設(shè)計(jì) 程序流程圖程序整體流程圖如圖A所示:#include<stdio.h># include <math.h> int main(void) int count,m; int prime(int m); count=0; for(m=100;m<=2000;m+) if(prime(m) printf("%6d",m); count+; if(count%8=0)printf("n"); printf("n"); 圖A整體流程圖 三:詳細(xì)設(shè)

20、計(jì) 模塊詳細(xì)說明 系統(tǒng)的功能是通過子函數(shù)調(diào)用的方式來完成的,下面對(duì)程序中用到的函數(shù)及其功能做一下說明。l void menu():顯示主菜單界面。l void data_count(data *x):以寫方式打開文件,對(duì)商品信息清零,讀入職工編號(hào)、產(chǎn)品編號(hào)、銷售量等信息,對(duì)相同職工的相同產(chǎn)品的銷售量求和后寫入文件。l void range_sxy(data *x):以讀方式打開文件,讀入信息,輸入按何種產(chǎn)品排序后對(duì)存儲(chǔ)職工編號(hào)的數(shù)組進(jìn)行排序,最后輸出新序的職工編號(hào)信息。l void range_shangpin(data *x):從文件讀入信息,對(duì)每項(xiàng)產(chǎn)品的銷售量求和,按每項(xiàng)產(chǎn)品的總銷售量排序

21、。l void data_out(data *x):打開文件,讀入信息,求所有產(chǎn)品的銷售量的和,輸出統(tǒng)計(jì)表。l void main():主函數(shù),調(diào)用以上函數(shù),完成相應(yīng)功能。l四: 調(diào)試及測(cè)試系統(tǒng)初始運(yùn)行時(shí),會(huì)顯示如圖1所示的菜單界面,用戶可以根據(jù)提示,進(jìn)行相應(yīng)的選擇,來完成系統(tǒng)提供的各種功能。圖1輸入界面當(dāng)選擇1時(shí),系統(tǒng)調(diào)用函數(shù)void data_count(data *x),完成相應(yīng)的功能。運(yùn)行界面如圖2所示,系統(tǒng)會(huì)要求用戶輸入月份,然后要求輸入這個(gè)月份中是哪個(gè)職工銷售的哪項(xiàng)產(chǎn)品的數(shù)量的具體信息,我們的系統(tǒng)假設(shè)有四個(gè)職工,職工編號(hào)從1至4,一共有5項(xiàng)產(chǎn)品,產(chǎn)品編號(hào)從1至5。職工和產(chǎn)品的數(shù)目都

22、可以更改,只要修改一下程序中的宏定義語句即可。圖2計(jì)算產(chǎn)品銷售額界面當(dāng)選擇2時(shí),系統(tǒng)調(diào)用void range_sxy(data *x),完成相應(yīng)部分的功能。運(yùn)行界面如圖3所示,系統(tǒng)會(huì)要求用戶輸入月份,然后排序的產(chǎn)品編號(hào),最后給出此項(xiàng)產(chǎn)品的按照銷售量的大小進(jìn)行的銷售員的編號(hào)的排序情況。 圖3按銷售額對(duì)銷售員排序的界面當(dāng)選擇3時(shí),系統(tǒng)調(diào)用void range_shangpin(data *x),完成對(duì)每項(xiàng)商品的總銷售量排序的功能,運(yùn)行界面如圖4-4所示:圖4產(chǎn)品總銷售額排序界面當(dāng)選擇4時(shí),系統(tǒng)調(diào)用void data_out(data *x),完成輸出統(tǒng)計(jì)表的功能,統(tǒng)計(jì)內(nèi)容如圖5所示:圖5統(tǒng)計(jì)報(bào)表界

23、面運(yùn)行說明首次打開系統(tǒng)必須輸入一部分員工信息,如果沒有員工信息文件,除了輸入功能以外,其它的功能將自動(dòng)禁止, 按任意鍵退出程序。輸入時(shí),按照提示陸續(xù)輸入每個(gè)員工的單個(gè)信息,輸入完畢,選擇“0”,程序?qū)⒆詣?dòng)回到菜單選擇界面。其它的功能模塊都在執(zhí)行程序時(shí)有相應(yīng)的提示,非常容易操作。五:源程序清單:#include <stdio.h>#include <string.h>#include <conio.h>#include <stdlib.h>#define Z 5#define R 4 /*定義宏常量便于程序的一般化*/ /*R表示銷售員個(gè)數(shù)*/ty

24、pedef struct /*縮短結(jié)構(gòu)體變量名*/ int shangpinZ; /*定義結(jié)構(gòu)體便于信息的存儲(chǔ)和讀寫,辨別*/ /*z是表示商品的種類,最后一個(gè)為該銷售員商品總和*/data;void menu() printf(" *n"); printf(" 0.結(jié)束操作n"); printf(" 1.計(jì)算上個(gè)月每個(gè)人每種產(chǎn)品的銷售額n"); printf(" 2.按銷售額對(duì)銷售員進(jìn)行排序,輸出排序結(jié)果n"); printf(" 3.統(tǒng)計(jì)每種產(chǎn)品的總銷售額,輸出排序結(jié)果n"); printf

25、(" 4.輸出統(tǒng)計(jì)報(bào)表n"); printf(" *n");void data_count(data *x) /*計(jì)算上個(gè)月每個(gè)人每種產(chǎn)品的銷售額*/ FILE *fp; char fname10; int j,t; /*用于控制循環(huán)*/ int i,k,s; /*用于定義職工序號(hào),產(chǎn)品序號(hào),產(chǎn)品數(shù)量*/ system("cls"); printf("您想計(jì)算哪個(gè)月?n"); printf("請(qǐng)輸入月份:"); /*輸入文件名,這樣可以進(jìn)行各個(gè)月份信息寫入*/ scanf("%s&qu

26、ot;,fname); strcat(fname,".txt"); if(fp=fopen(fname,"wb")=NULL) /*打開文件*/ printf("can not open the filen"); exit(0); for(j=0;j<R;j+) /*對(duì)商品數(shù)量清零*/ for(t=0;t<Z;t+) (x+j)->shangpint=0; printf("please put the information about the 職工編號(hào),產(chǎn)品編號(hào),銷售數(shù)量n"); /*寫入信息*

27、/ for(j=0;j+) scanf("%d%d%d",&i,&k,&s); if(i=0) /*輸入職工為0時(shí)結(jié)束信息輸入*/ break; if(i>R|i<0|k>Z|k<0) printf("the information error!n"); /*避免輸入信息出錯(cuò)*/ continue; else (x+i-1)->shangpink-1=(x+i-1)->shangpink-1+s;/*統(tǒng)計(jì)各個(gè)人的各種產(chǎn)品的數(shù)量,-1為了和數(shù)組中的序號(hào)相匹配*/ for(j=0;j<R;j+

28、) if(fwrite(x+j),sizeof(data),1,fp)!=1) /*把信息寫入文件中便有以后調(diào)用*/ printf("write error!n"); fclose(fp); /*關(guān)閉文件避免信息遺漏*/void range_sxy(data *x) /*按銷售額對(duì)銷售員進(jìn)行排序,輸出排序結(jié)果*/ FILE *fp; char fname10; int i,k,j,t,bianhaoR=0,z; system("cls"); printf("你要哪個(gè)月的?n"); printf("請(qǐng)輸入月份:");

29、 /*輸入文件名,這樣可以進(jìn)行各個(gè)月份信息讀入*/ scanf("%s",fname); strcat(fname,".txt"); if(fp=fopen(fname,"rb")=NULL) /*打開文件*/ printf("can not open the filen"); exit(0); for(i=0;i<R;i+) /*讀出信息*/ if(fread(x+i,sizeof(data),1,fp)!=1) printf("讀入信息出錯(cuò)!"); /*讀入信息提示*/ for(i=0

30、;i<R;) /*用于存儲(chǔ)職工編號(hào)*/ bianhaoi=i+; printf("請(qǐng)輸入按何種產(chǎn)品排序n"); scanf("%d",&k); k=k-1; /*便于與結(jié)構(gòu)體中的數(shù)組值對(duì)應(yīng)*/ for(i=0;i<R;i+) /*按K種產(chǎn)品對(duì)銷售員排序,選擇法排序*/ t=i; for(j=i+1;j<R;j+) if(x+bianhaot)->shangpink<(x+bianhaoj)->shangpink)/*調(diào)用職工各自對(duì)應(yīng)的結(jié)構(gòu)體內(nèi)的產(chǎn)品數(shù)量*/ t=j; if(t!=i) z=bianhaoi; b

31、ianhaoi=bianhaot; bianhaot=z; printf("按%d產(chǎn)品對(duì)銷售員排序?yàn)?n",k+1); for(i=0;i<R;i+) printf("%5d",bianhaoi+1); getch(); fclose(fp);void range_shangpin(data *x) /*統(tǒng)計(jì)每種產(chǎn)品的總銷售額,輸出排序結(jié)果*/ FILE *fp; char fname10; int i,j,sumZ=0,bianhaoZ=0,z,t,k; system("cls"); printf("您想計(jì)算哪個(gè)月的

32、?n"); printf("請(qǐng)輸入月份:"); /*輸入文件名,這樣可以進(jìn)行各個(gè)月份信息讀入*/ scanf("%s",fname); strcat(fname,".txt"); if(fp=fopen(fname,"rb")=NULL) /*打開文件*/ printf("can not open the filen"); exit(0); for(i=0;i<R;i+) /*讀出信息*/ if(fread(x+i,sizeof(data),1,fp)!=1) printf(&q

33、uot;讀入信息出錯(cuò)!"); for(i=0;i<Z;i+) /*對(duì)各種商品求和*/ for(j=0;j<R;j+) sumi=sumi+(x+j)->shangpini; for(i=0;i<Z;) /*用于存儲(chǔ)商品編號(hào)*/ bianhaoi=i+; for(i=0;i<Z;i+) printf("%3d",bianhaoi); for(i=0;i<Z;i+) /*對(duì)產(chǎn)品從高到低排序,選擇法排序*/ t=i; for(j=i+1;j<Z;j+) /*產(chǎn)品變化時(shí),產(chǎn)品編號(hào)也隨之變化,便于輸出*/ if(sumt<su

34、mj) t=j; if(t!=i) k=sumi; sumi=sumt; sumt=k; z=bianhaoi; bianhaoi=bianhaot; bianhaot=z; printf("輸出產(chǎn)品排序n"); printf("產(chǎn)品編號(hào) 數(shù)量n"); for(i=0;i<Z;i+) printf("%-10d%-10dn",bianhaoi+1,sumi); getch(); fclose(fp);void data_out(data *x) /*輸出統(tǒng)計(jì)報(bào)表*/ FILE *fp; char fname10; int i,j,sumZ+1=0; system("cls"); printf("您想計(jì)算哪個(gè)月?n"); printf("請(qǐng)輸入月份:"); /*輸入文件名,這樣可以進(jìn)行各個(gè)月份信息讀入*/ scanf("%s",fname); strcat(fname,".txt"); if(fp=fopen(fname,"rb")=NULL) /*打開文

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論