公文素材库 首页

C语言实训小项目

时间:2019-05-29 15:26:47 网站:公文素材库

C语言实训小项目

《C语言的六个实训小项目》源码例程

已有11257次阅读201*-10-811:51|个人分类:C语言编程

项目实训一

实训内容:

1、定义一个数组a[11],用以存放学生的成绩。2、从键盘输入10个学生成绩

3、采用冒泡法,将学生成绩按照从高到低进行排序

4、再输入一个学生的成绩,将此成绩按照排序规律插入原学生成绩数组

5、将排好序的成绩单进行反序存放,即原来是从高到低,现在改为从低到高排列。

项目实训二

实训内容:

1、在函数中进行10个学生成绩从高到低排名sort(inta[10])

2、改进第一步的函数为sort(inta[],intn),进行n个学生成绩从高到低排名,

3、改进第二步的函数为sort(inta[],intn,charstyle),将n个学生成绩从高到低排名,排名方式4、根据sort()函数的style参数进行,如style为‘a’按升序排,style为’d’按降序排。

(a:ascending升,d:descending降)

项目实训三

实训内容:

1、定义一个数组stu[10]存放10个学生的成绩,从键盘输入数据,要求用指针实现

2、将数组stu[10]的内容输出到屏幕上,要求用指针实现3、将成绩数组按照从高到低进行排序,要求用指针实现

4、将第三步内容放在函数中实现,在主函数中调用实现排序,用指针实现,输出排序后的成绩单

5、采用指针方法,输入字符串“studentscore”,复制该字符串并输出(复制字符串采用库函数或用户自定义函数)

项目实训四

实训内容:

1、定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩2、从键盘输入10个学生的以上内容

3、输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩4、输出三门课程的平均分数最高的学生的学号、姓名及其平均分

5、将10个学生按照平均分数从高到低进行排序,输出结果,格式如下所示:numbernamemathChineseEnglishaverage103tom909010095101alice90807080

项目实训五

实训内容:

1、定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩2、从键盘输入10个学生的以上内容,存入文件stud.dat,关闭文件3、打开stud.dat文件,将数据读出,查看是否正确写入,关闭文件。

4、打开文件stud.dat文件,读出数据,将10个学生按照平均分数从高到低进行排序,分别将结果输出到屏幕上和另一文件studsort.dat中。5、从studsort.dat文件中读取第2,4,6,8,10个学生的数据。

最终项目

学生成绩管理系统完成下列功能:

1、输入:函数input把20学生的学号、姓名、性别、年龄、四科成绩以及平均成绩和总成绩放在一个结构体数组中,学生的学号、姓名、四科成绩由键盘输入,然后计算出平均成绩和总成绩放在结构体对应的域中。

2、插入:insert函数输入一个学生的记录,按学号的先后顺序插入该学生的全部内容。

3、排序:sort函数对所有学生按要求排序(1.学号2.总成绩),并输出。4、查找:find函数输入一个学生的学号或姓名,找到该学生并输出该学生的全部内容。要求能查询多次。

5、删除:delete函数输入一个学生的学号或姓名,找到该学生并删除该学生的全部内容。

6、输出:函数output输出全部学生的记录。

7、main调用所有函数,实现全部函数功能(注:除了定义结构外,不允许使用全局变量,函数之间的数据全部使用参数传递)。

/**************************************//*项目实训一*//*源代码如下:*/

/**************************************/

#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]输入数据*\\n");printf("\\t\\t*[2]查找数据*\\n");printf("\\t\\t*[3]插入数据*\\n");printf("\\t\\t*[4]删除数据*\\n");printf("\\t\\t*[5]打印数据*\\n");printf("\\t\\t*[6]排序数据*\\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("数学成绩:%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("请输入学生数学成绩:");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("数学成绩:%d\\n",stud[i].math);printf("总分:%d\\n",stud[i].total);printf("平均分:%d\\n",stud[i].average);printf("**********************\\n");}

printf("按回车键继续.....\\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("按回车键继续....\\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.给定一个整数,判断其二进制形式的每一位的值,当某一位为1时,输出其所在的的位数,右端开始为第0位。#include#include#includeintmain(void){

intnum1,num2;intinit;

printf("inputanumber:");scanf("%d",&num1);

for(init=0;init>1;}return0;}

2.从键盘输入若干行字符串,每输入一行,输出行号和该行字符串到文件dx.txt中,当一行的第一个字符输入“0”时结束。#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.用指针方式实现:从键盘输入10个2位整数给数组a10,计算并输出其中奇数和偶数的个数。#include#include#includeintmain(void)

{

int*p1;inta[10];

inti,n1=0,n2=0;

printf("input10numbers:\\n");for(i=0;i位上的数字之和等于10的函数,并在主函数中调用它。#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("不能分配内存空间!");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("数据信息为:\\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.输入一行字符,字符个数最多为30,写一函数,把输入的字符按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.用数组和循环实现:统计输入的一个字符串中的数字、大写字母、小写字母、空格及其它字符的个数。#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.已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。注意:部分源程序存在文件PROG1.C文件中。

请勿改动主函数main函数中的任何内容,仅在函数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”为名的文件中。并将刚保存的文件的内容输出到屏幕。#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、编写程序,它的功能是:计算并输出下列级数和:111S=──+──++───1×22×3n(n+1)

例如,当n=10时,函数值为: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,小写也按照相同规律变化,其它字符不变。

#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)

友情提示:本文中关于《C语言实训小项目》给出的范例仅供您参考拓展思维使用,C语言实训小项目:该篇文章建议您自主创作。

  来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。


C语言实训小项目
由互联网用户整理提供,转载分享请保留原作者信息,谢谢!
http://m.bsmz.net/gongwen/713472.html
相关阅读
最近更新
推荐专题