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