C語言實訓小項目
《C語言的六個實訓小項目》源碼例程
已有11257次閱讀201*-10-811:51|個人分類:C語言編程
項目實訓一
實訓內(nèi)容:
1、定義一個數(shù)組a[11],用以存放學生的成績。2、從鍵盤輸入10個學生成績
3、采用冒泡法,將學生成績按照從高到低進行排序
4、再輸入一個學生的成績,將此成績按照排序規(guī)律插入原學生成績數(shù)組
5、將排好序的成績單進行反序存放,即原來是從高到低,現(xiàn)在改為從低到高排列。
項目實訓二
實訓內(nèi)容:
1、在函數(shù)中進行10個學生成績從高到低排名sort(inta[10])
2、改進第一步的函數(shù)為sort(inta[],intn),進行n個學生成績從高到低排名,
3、改進第二步的函數(shù)為sort(inta[],intn,charstyle),將n個學生成績從高到低排名,排名方式4、根據(jù)sort()函數(shù)的style參數(shù)進行,如style為‘a(chǎn)’按升序排,style為’d’按降序排。
(a:ascending升,d:descending降)
項目實訓三
實訓內(nèi)容:
1、定義一個數(shù)組stu[10]存放10個學生的成績,從鍵盤輸入數(shù)據(jù),要求用指針實現(xiàn)
2、將數(shù)組stu[10]的內(nèi)容輸出到屏幕上,要求用指針實現(xiàn)3、將成績數(shù)組按照從高到低進行排序,要求用指針實現(xiàn)
4、將第三步內(nèi)容放在函數(shù)中實現(xiàn),在主函數(shù)中調(diào)用實現(xiàn)排序,用指針實現(xiàn),輸出排序后的成績單
5、采用指針方法,輸入字符串“studentscore”,復制該字符串并輸出(復制字符串采用庫函數(shù)或用戶自定義函數(shù))
項目實訓四
實訓內(nèi)容:
1、定義一個結(jié)構(gòu)體數(shù)組,存放10個學生的學號,姓名,三門課的成績2、從鍵盤輸入10個學生的以上內(nèi)容
3、輸出單門課成績最高的學生的學號、姓名、以及該門課程的成績4、輸出三門課程的平均分數(shù)最高的學生的學號、姓名及其平均分
5、將10個學生按照平均分數(shù)從高到低進行排序,輸出結(jié)果,格式如下所示:numbernamemathChineseEnglishaverage103tom909010095101alice90807080
項目實訓五
實訓內(nèi)容:
1、定義一個結(jié)構(gòu)體數(shù)組,存放10個學生的學號,姓名,三門課的成績2、從鍵盤輸入10個學生的以上內(nèi)容,存入文件stud.dat,關(guān)閉文件3、打開stud.dat文件,將數(shù)據(jù)讀出,查看是否正確寫入,關(guān)閉文件。
4、打開文件stud.dat文件,讀出數(shù)據(jù),將10個學生按照平均分數(shù)從高到低進行排序,分別將結(jié)果輸出到屏幕上和另一文件studsort.dat中。5、從studsort.dat文件中讀取第2,4,6,8,10個學生的數(shù)據(jù)。
最終項目
學生成績管理系統(tǒng)完成下列功能:
1、輸入:函數(shù)input把20學生的學號、姓名、性別、年齡、四科成績以及平均成績和總成績放在一個結(jié)構(gòu)體數(shù)組中,學生的學號、姓名、四科成績由鍵盤輸入,然后計算出平均成績和總成績放在結(jié)構(gòu)體對應(yīng)的域中。
2、插入:insert函數(shù)輸入一個學生的記錄,按學號的先后順序插入該學生的全部內(nèi)容。
3、排序:sort函數(shù)對所有學生按要求排序(1.學號2.總成績),并輸出。4、查找:find函數(shù)輸入一個學生的學號或姓名,找到該學生并輸出該學生的全部內(nèi)容。要求能查詢多次。
5、刪除:delete函數(shù)輸入一個學生的學號或姓名,找到該學生并刪除該學生的全部內(nèi)容。
6、輸出:函數(shù)output輸出全部學生的記錄。
7、main調(diào)用所有函數(shù),實現(xiàn)全部函數(shù)功能(注:除了定義結(jié)構(gòu)外,不允許使用全局變量,函數(shù)之間的數(shù)據(jù)全部使用參數(shù)傳遞)。
/**************************************//*項目實訓一*//*源代碼如下:*/
/**************************************/
#include#include#include
main(){
inta[11];intnum_init;
intnum_sort_1,num_sort_2;intnum_temp;intnum_std;intnum_tag;
for(num_init=0;num_inita[num_sort_1-1]){
num_temp=a[num_sort_1];
a[num_sort_1]=a[num_sort_1-1];a[num_sort_1-1]=num_temp;
printf("a[%d]a[%d]\\n",a[num_sort_1],a[num_sort_1-1]);
}}}
for(num_init=0;num_init}}
for(num_init=0;num_init}
printf("inputsortstyle(a=asc,d=desc):");scanf("%c",&s);
n=--i;
sort(a,n,s);
for(j=0;j0;j--){
for(i=0;ia[i+1]){
t=a[i];
a[i]=a[i+1];a[i+1]=t;}}else{
if(style=="d")if(a[i]
/**************************************//*項目實訓三*//*源代碼如下:*/
/**************************************/
#include#include#include
voidsort(intstr[]);
intmain(void){
intstr[10];chari_msg[100];charo_msg[100];inti;int*pi;
char*pm_i,*pm_o;pi=str;pm_i=i_msg;pm_o=o_msg;
printf("fun1)\\n");
printf("input10studentscore:\\n");for(i=0;iif(*(pm_i+i)=="\\n")break;}
*(pm_i+i)="\\0";strcpy(pm_o,pm_i);puts(pm_o);
return0;}
voidsort(int*p){
inti,j,t;
for(j=9;j>1;j--){
for(i=0;i{
intnum;
charname[20];intmath;intchinese;intenglish;intaverage;}s[10];
structstutemp;
intn,l,i,j;
for(n=0;n0;i--){
for(j=0;jstrcpy(s[j].name,s[j+1].name);s[j].math=s[j+1].math;
s[j].chinese=s[j+1].chinese;s[j].english=s[j+1].english;s[j].average=s[j+1].average;
s[j+1].num=temp.num;
strcpy(s[j+1].name,temp.name);s[j+1].math=temp.math;
s[j+1].chinese=temp.chinese;s[j+1].english=temp.english;s[j+1].average=temp.average;}}}
printf("max
student:\\nnum:%d\\tname:%s\\taverage:%d\\n\\n",s[0].num,s[0].name,s[0].average);
printf("number\\tname\\tmath\\tChinese\\tEnglish\\taverage\\n");for(n=0;n#include#include
intmain(intargc,char*argv[]){
structstr{intcode;
charname[20];intmath;intEnglish;intChinese;intaverage;}stu[10];
structstrt;
inti,j,l,f=0,ch,n=0,k=0;chartemp[6][30];FILE*fp;
printf("Module1begin\\n");
printf("*********************************\\n");printf("Input10studentdata\\n");for(i=0;i}
for(i=0;iexit(1);}
for(i=0;i
stu[j+1].code=t.code;
strcpy(stu[j+1].name,t.name);stu[j+1].math=t.math;
stu[j+1].Chinese=t.Chinese;stu[j+1].English=t.English;stu[j+1].average=t.average;}}}
for(i=0;i
printf("Module4begin:\\n");
printf("***********************************\\n");printf("Ouput2,4,6,8,10rowsdata\\n");
if((fp=fopen("/tmp/studsort.dat","rt+"))==NULL){
printf("openfilestudsort.datfailed!\\n");exit(1);}
for(i=0;i
fclose(fp);return0;}
/**************************************//*最終項目實訓*//*源代碼如下:*/
/**************************************/
#include#include#include
structnode{
intcode;
charname[20];chartype;intage;
intchinese;intenglish;intcomputer;intmath;inttotal;intaverage;}stud[100];
structnodetemp;
voidmenu(void){
system("clear");
printf("\\t\\t項目六實例\\n");
printf("\\t\\t**************************\\n");printf("\\t\\t**\\n");printf("\\t\\t*[1]輸入數(shù)據(jù)*\\n");printf("\\t\\t*[2]查找數(shù)據(jù)*\\n");printf("\\t\\t*[3]插入數(shù)據(jù)*\\n");printf("\\t\\t*[4]刪除數(shù)據(jù)*\\n");printf("\\t\\t*[5]打印數(shù)據(jù)*\\n");printf("\\t\\t*[6]排序數(shù)據(jù)*\\n");printf("\\t\\t*[7]退出*\\n");printf("\\t\\t**\\n");printf("\\t\\t**\\n");
printf("\\t\\t**************************\\n");printf("\\t\\t請輸入你的選項(1-7):");}
voidinput(){
inti;
for(i=0;ivoidfind(intc){
intn,m,i,j,l;chark[20];
system("clear");
printf("按學號查找(按1):\\n");printf("按姓名查找(按2):\\n");printf("請選擇:");scanf("%d",&n);if(n==1){
printf("請輸入學號:");scanf("%d",&m);for(i=0;i{
printf("**********************\\n");printf("學號:%d\\n",stud[j].code);printf("姓名:%s\\n",stud[j].name);printf("性別:%c\\n",stud[j].type);printf("年齡:%d\\n",stud[j].age);
printf("英語成績:%d\\n",stud[j].english);printf("國文成績:%d\\n",stud[j].chinese);printf("計算機成績:%d\\n",stud[j].computer);printf("數(shù)學成績:%d\\n",stud[j].math);printf("總分:%d\\n",stud[i].total);
printf("平均分:%d\\n",stud[i].average);printf("**********************\\n");}}}else{
getchar();getchar();}}
voidinsert(intc){
inti,j;
system("clear");
printf("請輸入要插入學生的信息:\\n");printf("請輸入學生學號:");scanf("%d",&temp.code);printf("請輸入學生姓名:");scanf("%s",temp.name);getchar();
printf("請輸入學生性別:");scanf("%c",&temp.type);printf("請輸入學生年齡:");scanf("%d",&temp.age);
printf("請輸入學生英文成績:");scanf("%d",&temp.english);printf("請輸入學生國文成績:");scanf("%d",&temp.chinese);printf("請輸入學生計算機成績:");scanf("%d",&temp.computer);printf("請輸入學生數(shù)學成績:");scanf("%d",&temp.math);
temp.total=temp.english+temp.chinese+temp.computer+temp.math;temp.average=temp.total/4;for(i=0;i=c){
stud[i].code=temp.code;
strcpy(stud[i].name,temp.name);stud[i].type=temp.type;stud[i].age=temp.age;
stud[i].english=temp.english;stud[i].computer=temp.computer;stud[i].math=temp.math;
stud[i].chinese=temp.chinese;stud[i].total=temp.total;stud[i].average=temp.average;}}
voiddelete(intc){
inti,j,l,n,k;charname[20];
printf("按學號刪除(按1):\\n");printf("按姓名刪除(按2):\\n");scanf("%d",&k);if(k==1){
printf("請輸入學號:\\n");scanf("%d",&n);for(i=0;iprintf("請輸入姓名:\\n");fgets(name,20,stdin);l=strlen(name);name[l-1]="\\0";for(i=0;iprintf("國文成績:%d\\n",stud[i].chinese);printf("計算機成績:%d\\n",stud[i].computer);printf("數(shù)學成績:%d\\n",stud[i].math);printf("總分:%d\\n",stud[i].total);printf("平均分:%d\\n",stud[i].average);printf("**********************\\n");}
printf("按回車鍵繼續(xù).....\\n");getchar();getchar();}
voidsort(intc){
inti,j,n;
printf("學號排序(按1)\\n");printf("姓名排序(按2)\\n");printf("請輸入排序的方式:\\n");scanf("%d",&n);if(n==1){
c=c-1;for(i=c;i>0;i--){
for(j=0;jstud[j+1].code){
temp.code=stud[j].code;
strcpy(temp.name,stud[j].name);temp.type=stud[j].type;temp.age=stud[j].age;
temp.english=stud[j].english;temp.chinese=stud[j].chinese;temp.math=stud[j].math;
temp.computer=stud[j].computer;temp.total=stud[j].total;
temp.average=stud[j].average;
stud[j].code=stud[j+1].code;
strcpy(stud[j].name,stud[j+1].name);stud[j].type=stud[j+1].type;stud[j].age=stud[j+1].age;
stud[j].english=stud[j+1].english;stud[j].chinese=stud[j+1].chinese;stud[j].math=stud[j+1].math;
stud[j].computer=stud[j+1].computer;stud[j].total=stud[j+1].total;stud[j].average=stud[j+1].average;
stud[j+1].code=temp.code;
strcpy(stud[j+1].name,temp.name);stud[j+1].type=temp.type;stud[j+1].age=temp.age;
stud[j+1].english=temp.english;stud[j+1].chinese=temp.chinese;stud[j+1].computer=temp.computer;stud[j+1].math=temp.math;stud[j+1].total=temp.total;
stud[j+1].average=temp.average;
}}}}else
if(n==2){
c=c-1;for(i=c;i>0;i--){
for(j=0;j0){
temp.code=stud[j].code;
strcpy(temp.name,stud[j].name);temp.type=stud[j].type;temp.age=stud[j].age;
temp.english=stud[j].english;temp.chinese=stud[j].chinese;temp.math=stud[j].math;
temp.computer=stud[j].computer;temp.total=stud[j].total;
temp.average=stud[j].average;
stud[j].code=stud[j+1].code;
strcpy(stud[j].name,stud[j+1].name);stud[j].type=stud[j+1].type;stud[j].age=stud[j+1].age;
stud[j].english=stud[j+1].english;stud[j].chinese=stud[j+1].chinese;stud[j].math=stud[j+1].math;
stud[j].computer=stud[j+1].computer;stud[j].total=stud[j+1].total;stud[j].average=stud[j+1].average;
stud[j+1].code=temp.code;
strcpy(stud[j+1].name,temp.name);stud[j+1].type=temp.type;stud[j+1].age=temp.age;
stud[j+1].english=temp.english;stud[j+1].chinese=temp.chinese;stud[j+1].computer=temp.computer;stud[j+1].math=temp.math;stud[j+1].total=temp.total;
stud[j+1].average=temp.average;}}}}else{
getchar();getchar();}}
voiderror(){
printf("輸入錯誤,請輸入(1-7):\\n");printf("按回車鍵繼續(xù)....\\n");getchar();getchar();getchar();}
intmain(void){
intn,c=0;while(1){
menu();
scanf("%d",&n);switch(n){
case1:input();c=c+3;break;case2:find(c);break;
case3:insert(c);++c;break;case4:delete(c);--c;break;case5:print(c);break;case6:sort(c);break;case7:exit(0);break;default:error();break;}}}
C語言期末上機練習題
1.給定一個整數(shù),判斷其二進制形式的每一位的值,當某一位為1時,輸出其所在的的位數(shù),右端開始為第0位。#include#include#includeintmain(void){
intnum1,num2;intinit;
printf("inputanumber:");scanf("%d",&num1);
for(init=0;init>1;}return0;}
2.從鍵盤輸入若干行字符串,每輸入一行,輸出行號和該行字符串到文件dx.txt中,當一行的第一個字符輸入“0”時結(jié)束。#include#include#includeintmain(void){
FILE*fp;charch;
if((fp=fopen("/tmp/dx.txt","wt+"))==NULL){
printf("Cannotopenfilestrikeanykeyexit!");getchar();exit(1);}
printf("inputastring:\\n");ch=getchar();while(ch!="0"){fputc(ch,fp);ch=getchar();}
fclose(fp);return0;}
3.用指針方式實現(xiàn):從鍵盤輸入10個2位整數(shù)給數(shù)組a10,計算并輸出其中奇數(shù)和偶數(shù)的個數(shù)。#include#include#includeintmain(void)
{int*p1;inta[10];
inti,n1=0,n2=0;
printf("input10numbers:\\n");for(i=0;i位上的數(shù)字之和等于10的函數(shù),并在主函數(shù)中調(diào)用它。#include#include#includeintmain(void)
{inti,j;
intfun1(inti);i=0;j=0;
for(i=0;i#include#include#defineN5
typedefstructnode{
intbianhao;
charbookname[30];floatprice;
structnode*next;}book;
book*creat(intn){
book*p,*h,*s;inti;
if((h=(book*)malloc(sizeof(book)))==NULL){
printf("不能分配內(nèi)存空間!");exit(0);}
h->bianhao=0;
h->bookname[0]="\\0";h->price=0;h->next=NULL;p=h;
for(i=0;inext=s;
printf("請輸入第%d個人的班號:",i+1);scanf("%d",&s->bianhao);printf("請輸入書名:");scanf("%s",s->bookname);printf("請輸入價格:");scanf("%f",&s->price);s->next=NULL;p=s;}return(h);}
voidprint(book*h){
book*p;inti=1;p=h->next;
printf("數(shù)據(jù)信息為:\\n");
while(p!=NULL){
printf("第%d個人的班號%d\\n",i,p->bianhao);printf("書名:%s\\n",&*(p->bookname));printf("價格:%f\\n",p->price);p=p->next;i++;}}
intmain(void){
book*head;head=creat(N);print(head);return0;}
6.輸入一行字符,字符個數(shù)最多為30,寫一函數(shù),把輸入的字符按ASCII值的順序有小到大輸出。例:輸入cdfga輸出acdfg。#include#include#includevoidorder(chara[],intm){
chart;intn,i;i=m;
for(n=i;n>1;n--)
for(i=0;ia[i+1]){
t=a[i];
a[i]=a[i+1];a[i+1]=t;}}a[m]="\\0";}
intmain(void){
chara[30];inti;
printf("pleaseinputchar:\\n");for(i=0;i#include#include#includeintmain(void){
chara[255];inti,n,s;intb[255];s=0;
printf("inputoct:");for(i=0;i=0;n++,i--){
s=s+b[i]*pow(8,n);}
printf("result:%d\\n",s);return0;}
8.用指針法處理輸入的3個字符串,按由小到大的順序輸出。#include#include#includeintmain(void){
chara[255]="\\0";charb[255]="\\0";charc[255]="\\0";char*pa,*pb,*pc;inti;
printf("inputastring:");for(i=0;i{
puts(a);
if((*(pb+i)){
chara[30];char*pi;
inti,c,n,s,o;i=c=n=s=o=0;
pi=a;
printf("inputstringa:\\n");for(i=0;i="a"&&(*(pi+i))="A"&&(*(pi+i))="0")&&((*(pi+i)){
charch;FILE*pi;
if((pi=fopen("/tmp/aa.txt","wb++"))==NULL){
printf("openfileerror!\\n");exit(1);}
printf("inputstring:\\n");ch=getchar();while(ch!="$"){
if(ch>="a"&&chfor(i=1;imax)
max=a[i];if(a[i]break;}}
printf("orderbynumber:\\n");for(i=0;iinti,k;inta[10];
printf("input10number:\\n");for(i=0;ibreak;}}}
for(n=3;n>0;n--){
for(k=0;k0){
strcpy(t,a[k]);
strcpy(a[k],a[k+1]);strcpy(a[k+1],t);}}}
for(c=0;cprintf("inputastring:\\n");ch=getchar();while(ch!="\\n"){
if((++k)==81)break;
fputc(ch,fp);ch=getchar();}
rewind(fp);ch=fgetc(fp);while(ch!=EOF){
putchar(ch);ch=fgetc(fp);}
printf("\\n");fclose(fp);
exit(EXIT_SUCCESS);}
16.用數(shù)組和循環(huán)實現(xiàn):統(tǒng)計輸入的一個字符串中的數(shù)字、大寫字母、小寫字母、空格及其它字符的個數(shù)。#include#include#include
intmain(intargc,char*argv[]){
inti,j,n=0,c1=0,c2=0,s=0,o=0;chara[255];
for(i=0;iif(a[j]>="0"&&a[j]="a"&&a[j]="A"&&a[j]intmain(intargc,char*argv[]){
inti,j,f,t=0;
for(i=2;ichart[255];p=a;
inti,j;
for(j=9;j>1;j--){
for(i=0;i0){
strcpy(t,*(a+i));
strcpy(*(a+i),*(a+(i+1)));strcpy(*(a+(i+1)),t);}}}}
intmain(void){
chara[10][255];inti,j;
char(*p)[255];p=a;
for(i=0;ireturn0;}
19.已知學生的記錄由學號和學習成績構(gòu)成,N名學生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請編寫函數(shù)fun,函數(shù)的功能是:找出成績最高的學生記錄,通過形參返回主函數(shù)(規(guī)定只有一個最高分)。已給出函數(shù)的首部,請完成該函數(shù)。注意:部分源程序存在文件PROG1.C文件中。
請勿改動主函數(shù)main函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
#include#include#include#defineN10
typedefstructss
{charnum[10];ints;}STU;fun(STUa[],STU*s){
inti=0;
(*s).s=a[i].s;for(i=1;i(*s).s){
(*s).s=a[i].s;
strcpy((*s).num,a[i].num);}}}
main()
{STUa[N]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71}},m;inti;clrscr();
printf("*****Theoriginaldata*****\\n");
for(i=0;i printf("Thetop:%s,%d\\n",m.num,m.s);} 20.從鍵盤輸入一個字符串“WelcometoHeilongjiangUniversity!”,將其存入以“well”為名的文件中。并將剛保存的文件的內(nèi)容輸出到屏幕。#include#include#include intmain(intargc,charargv[]){ FILE*fp; charstr[256];inti; if((fp=fopen("/tmp/abc","wt+"))==NULL){ printf("Fileopenfailed!\\n");exit(1);} fgets(str,50,stdin);fputs(str,fp);fputs(str,stdout);fclose(fp);return0;} 21、編寫程序,它的功能是:計算并輸出下列級數(shù)和:111S=──+──++───1×22×3n(n+1) 例如,當n=10時,函數(shù)值為:0.909091。#include#include#includeintmain(intargc,charargv[]){ floats=0,i;intn; printf("inputn:");scanf("%d",&n);i=1; for(i=1;iscanf("%c",&a[i][j]);getchar();}} for(i=0;iB,Y->C,Z->D,小寫也按照相同規(guī)律變化,其它字符不變。 #include#include#includeintmain(void) chars[255];inti; fgets(s,255,stdin);while(*(s+i)!="\\0"){ if(*(s+i)>="A"&&*(s+i)="W"&&*(s+i)="a"&&*(s+i)="w"&&*(s+i) 友情提示:本文中關(guān)于《C語言實訓小項目》給出的范例僅供您參考拓展思維使用,C語言實訓小項目:該篇文章建議您自主創(chuàng)作。 來源:網(wǎng)絡(luò)整理 免責聲明:本文僅限學習分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時刪除。
《C語言實訓小項目》由互聯(lián)網(wǎng)用戶整理提供,轉(zhuǎn)載分享請保留原作者信息,謝謝!
鏈接地址:http://m.seogis.com/gongwen/713472.html