谁能给我一个C语言四五百行的程序代码,结业设计用

谁能给我一个C语言四五百行的程序代码,结业设计用,第1张

//学生信息管理系统

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

struct student

{

char num[20]

char name[20]

int score1

int score2

int score3

}stu[100]={"01","zhangmingming"饥州,67,78,82,"02","lichengyou",78,91,88,"03","zhanghuican",68,82,56,"04","wanglu",56,45,77,"05","chendongming",67,38,47}

int main()

{

int i

int s=5

void cjtj()

void xxwh()

void xxcx()

void cjpx()

FILE *fp1

if((fp1=fopen("stu_list","w"))==NULL) /*以只写的方式打开一个文件烂渗蔽stu_list*/

{

printf("Can not open file!\n")

exit(1)

}

fwrite(&stu,sizeof(struct student),5,fp1)/*将stu中的数据写到文件中*/

fclose(fp1)

do

{

printf("\n")

printf("\n")

printf(" +--------------------+\n")

printf(" |欢迎使用学生管理系统|\n")

printf(" ||\n")

printf(" | 请按照步骤 *** 作 |\n")

printf(" | 1.信息维护 |\n")

printf(" | 2.信息查询 |\n")

printf(" | 3.成绩统计 |\n")

printf(" | 4.成绩排序 |\n")

printf(" | 0.退出程序 |\n")

printf(" +--------------------+\n")

printf(" 请选择您要进行的 *** 作:")

scanf("%d",&i)

if(i==1)

{

xxwh()

}

else if(i==2)

{

xxcx()

}

else if(i==3)

{

cjtj()

}

else if(i==4)

{

cjpx()

}

else

break

}while(i!=0)

printf("谢谢使用!\n")

return 0

}

void cjtj() /*成绩统计子函数*/

{

char name[20]

system("cls")

printf("请输入您想统计的课程名称:\n")

scanf("%s",name)

int q,w,u,s,g,p,k,l,m

if(strcmp(name,"yuwen")==0)

{

printf("请输入您想统计的分数段(例60,70):\n")

scanf("%d,%d",&q,&w)

for(u=0u<5u++)

{

if((stu[u].score1>=q)&&(stu[u].score1<=w))

printf("%s %s %d %d %d\n",stu[u].num,stu[u].name,stu[u].score1,stu[u].score2,stu[u].score3)

}

}

if(strcmp(name,"shuxue")==0)

{

printf("请输入您想统计的分数段(例60,70):\n")

scanf("%d,%d",&s,&g)

for(p=0p<5p++)

{

if(stu[p].score2>=s&&g>=stu[p].score2)

printf("%s %s %d %d %d\n",stu[p].num,stu[p].name,stu[p].score1,stu[p].score2,stu[p].score3)

}

}

if(strcmp(name,"yingyu")==0)

{

printf("请输入您想统计的分数段(例喊宽60,70):\n")

scanf("%d,%d",&k,&l)

for(m=0m<5m++)

{

if(stu[m].score3>=k&&stu[m].score3<=l)

printf("%s %s %d %d %d\n",stu[m].num,stu[m].name,stu[m].score1,stu[m].score2,stu[m].score3)

}

}

return

}

void xxwh() /* 信息维护子函数*/

{

int y

int s=5

void zengjia()

void shanjian()

void xiugai()

do

{

printf(" --------------------\n")

printf(" 欢迎进入信息维护模块\n")

printf(" 1.增加学生信息 \n")

printf(" 2.删减学生信息 \n")

printf(" 3.修改学生信息 \n")

printf(" 4.退出本模块 \n")

printf(" --------------------\n")

printf(" 请输入您要进行的 *** 作(1-4):")

scanf("%d",&y)

if(y==1)

{

zengjia()

s=s+1

}

else if(y==2)

{

shanjian()

s=s-1

}

else if(y==3)

{

xiugai()

}

else

break

}while(y!=4)

printf("谢谢使用!\n")

return

}

void zengjia() /*增加学生信息*/

{

struct student student1

FILE *fp1

int n=5

printf("输入您想添加的学生信息:\n")

scanf("%s %s%d%d%d",student1.num,student1.name,&student1.score1,&student1.score2,&student1.score3)

strcpy(stu[n+1].num,student1.num)

strcpy(stu[n+1].name,student1.name)

stu[n+1].score1=student1.score1

stu[n+1].score2=student1.score2

stu[n+1].score3=student1.score3

if((fp1=fopen("stu_list","r+"))==NULL) /*以读写的方式打开一个文件stu_list*/

{

printf("Can not open file!\n")

exit(1)

}

fwrite(&stu,sizeof(struct student),6,fp1)/*将stu中的数据写到文件中*/

fclose(fp1)

printf("\n")

printf("添加成功!\n")

printf("\n")

printf("\n")

return

}

void shanjian() /*删除学生信息*/

{

char a[20]

int h,j,e

FILE *fp1

printf("请输入您想删除的学生学号:\n")

scanf("%s",a)

for(h=0h<5h++)

{

if(strcmp(a,stu[h].num)==0)

j=h

}

if(j!=4)

{

for(e=h-1e<5e++,j++)

{

strcpy(stu[j].num,stu[j+1].num)

strcpy(stu[j].name,stu[j+1].name)

stu[j].score1=stu[j+1].score1

stu[j].score2=stu[j+1].score2

stu[j].score3=stu[j+1].score3

}

}

if((fp1=fopen("stu_list","r+"))==NULL) /*以读写的方式打开一个文件stu_list*/

{

printf("Can not open file!\n")

exit(1)

}

fwrite(&stu,sizeof(struct student),6,fp1)/*将stu中的数据写到文件中*/

fclose(fp1)

printf("\n")

printf("删除成功!\n")

printf("\n")

printf("\n")

return

}

void xiugai() /*修改学生信息*/

{

char b[20]

int c,n=5

FILE *fp1

struct student student2

printf("请输入您想修改的学生学号:\n")

scanf("%s",b)

for(c=0c<nc++)

{

if(strcmp(b,stu[c].num)==0)

{

printf("请输入修改后的学生信息:\n")

scanf("%s %s%d%d%d",student2.num,student2.name,&student2.score1,&student2.score2,&student2.score3)

strcpy(stu[c].num,student2.num)

strcpy(stu[c].name,student2.name)

stu[c].score1=student2.score1

stu[c].score2=student2.score2

stu[c].score3=student2.score3

}

} if((fp1=fopen("stu_list","r+"))==NULL) /*以读写的方式打开一个文件stu_list*/

{

printf("Can not open file!\n")

exit(1)

}

fwrite(&stu,sizeof(struct student),6,fp1)/*将stu中的数据写到文件中*/

fclose(fp1)

fclose(fp1)

printf("\n")

printf("修改成功!\n")

printf("\n")

printf("\n")

return

}

void cjpx() /*排序函数*/

{

int z,x,c,v,o

struct student t

do

{

printf("\n")

printf("\n")

printf("[1]按升序排序:\n")

printf("[2]按降序排序:\n")

printf("[3]返回\n")

printf("请选择:")

scanf("%d",&z)

if(z==1)

{

printf("选择的科目:")

printf("[1]语文:[2]数学:[3]英语:")

scanf("%d",&x)

if(x==1)

{

for(c=1c<5c++)

for(v=0v<5-cv++)

if(stu[v].score1>stu[v+1].score1)

{

t=stu[v]

stu[v]=stu[v+1]

stu[v+1]=t

}

for(o=0o<5o++)

printf("%s %s %d %d %d\n",stu[o].num,stu[o].name,stu[o].score1,stu[o].score2,stu[o].score3)

}

else if(x==2)

{

for(c=1c<5c++)

for(v=0v<5-cv++)

if(stu[v].score2>stu[v+1].score2)

{

t=stu[v]

stu[v]=stu[v+1]

stu[v+1]=t

}

for(o=0o<5o++)

printf("%s %s %d %d %d\n",stu[o].num,stu[o].name,stu[o].score1,stu[o].score2,stu[o].score3)

}

else if(x==3)

{

for(c=1c<5c++)

for(v=0v<5-cv++)

if(stu[v].score3>stu[v+1].score3)

{

t=stu[v]

stu[v]=stu[v+1]

stu[v+1]=t

}

for(o=0o<5o++)

printf("%s %s %d %d %d\n",stu[o].num,stu[o].name,stu[o].score1,stu[o].score2,stu[o].score3)

}

}

else

if(z==2)

{

printf("选择的科目:")

printf("[1]语文:[2]数学:[3]英语:")

scanf("%d",&x)

if(x==1)

{

for(c=1c<5c++)

for(v=0v<5-cv++)

if(stu[v].score1<stu[v+1].score1)

{

t=stu[v+1]

stu[v+1]=stu[v]

stu[v]=t

}

for(o=0o<5o++)

printf("%s %s %d %d %d\n",stu[o].num,stu[o].name,stu[o].score1,stu[o].score2,stu[o].score3)

}

else

if(x==2)

{

for(c=1c<5c++)

for(v=0v<5-cv++)

if(stu[v].score2<stu[v+1].score2)

{

t=stu[v+1]

stu[v+1]=stu[v]

stu[v]=t

}

for(o=0o<5o++)

printf("%s %s %d %d %d\n",stu[o].num,stu[o].name,stu[o].score1,stu[o].score2,stu[o].score3)

}

else

if(x==3)

{

for(c=1c<5c++)

for(v=0v<5-cc++)

if(stu[v].score3<stu[v+1].score3)

{

t=stu[v+1]

stu[v+1]=stu[v]

stu[v]=t

}

for(o=0o<5o++)

printf("%s %s %d %d %d\n",stu[o].num,stu[o].name,stu[o].score1,stu[o].score2,stu[o].score3)

}

}

else

break

}while(z!=3)

printf("\n")

printf("\n")

return

}

void xxcx() /*信息查询子函数*/

{

int g,i

char m[20]

system("cls")

do

{

printf("[1]查询学生信息:\n")

printf("[2]退出查询:\n")

printf("请选择:")

scanf("%d",&g)

if(g==1)

{

printf("请输入学号:")

scanf("%s",m)

for(i=0i<5i++)

{

if(strcmp(m,stu[i].num)==0)

{

printf("*********\n")

printf("学号:%s\n",stu[i].num)

printf("姓名:%s\n",stu[i].name)

printf("语文:%d\n",stu[i].score1)

printf("数学:%d\n",stu[i].score2)

printf("英语:%d\n",stu[i].score3)

printf("\n")

printf("\n")

}

}

}

else

break

}while(g!=2)

printf("查找完毕!\n")

system("pause")

return

}

输出缓冲区只有300行,再多了就把最前面的覆盖了,这是正常现象。当然可以扩大输出缓冲区,但考虑没有:扩大到400行你的需求满足了,另一程序侍蔽需要输出1000行又怎么办?所以不管输出缓冲区有多老缺州大,但总是有限的扮镇,不能要求把所有输出都在屏幕上显示出来……供参考。

源代码——C语言实现打印杨辉三角(源代码)

杨辉三角形是形如:

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

的三角形,其实质是二项式(a+b)的n次方展开后各项的系数排成的三角形,它的特点是左右两边全是1,从第二行起,中间的每一个数是上一行里相邻两个数之和。这个题目常用于程序设计的练习。

下面给出六种不同的解法

解法一

#include <stdio.h>

main()

{ int i,j,n=0,a[17][17]={0}

while(n<1 || n>16)

{ printf("请输入杨辉三角形的行数:"雀差)

scanf("%d",&n)

}

for(i=0i<ni++)

a[i][0]=1

for(i=1i<ni++)

for(j=1j<=ij++)

a[i][j]=a[i-1][j-1]+a[i-1][j]

for(i=0i<ni++)

{ for(j=0j<=ij++)

printf("%5d",a[i][j])

printf("\n")

}

}

点评:解法一是一般最容易想到的解法,各部分功能独立,程序浅显易懂。

解法二

#include <stdio.h>

main()

{ int i,j,n=0,a[17][17]={1}

while(n<1 || n>16)

{ printf("请输入杨辉三角形的行数:")

scanf("%d",&n)

}

for(i=1i<ni++)

{ a[i][0]=1

for(j=1j<=ij++)

a[i][j]=a[i-1][j-1]+a[i-1][j]

}

for(i=0i<ni++)

{ for(j=0j<=ij++)

printf("%5d",a[i][j])

printf("\n")

}

}

点评:解窢二是顷隐皮在解法一的基础上,把第一列置为1的命令移到下面的双重循环中,减少了一个循环。注意初始化携丛数组的变化。

解法三

#include <stdio.h>

main()

{ int i,j,n=0,a[17][17]={0,1}

while(n<1 || n>16)

{ printf("请输入杨辉三角形的行数:")

scanf("%d",&n)

}

for(i=1i<=ni++)

for(j=1j<=ij++)

a[i][j]=a[i-1][j-1]+a[i-1][j]

for(i=1i<=ni++)

{ for(j=1j<=ij++) printf("%5d",a[i][j])

printf("\n")

}

}

点评:解法三是在解法一、二的基础上,把第一列置为1的命令去掉了,注意初始化数组的变化。

解法四

#include <stdio.h>

main()

{ int i,j,n=0,a[17][17]={0,1}

while(n<1 || n>16)

{ printf("请输入杨辉三角形的行数:")

scanf("%d",&n)

}

for(i=1i<=ni++)

{ for(j=1j<=ij++)

{ a[i][j]=a[i-1][j-1]+a[i-1][j]

printf("%5d",a[i][j])

}

printf("\n")

}

}

点评:解法四是在解法三的基础上,把计算和打印合并在一个双重循环中。

解法五

#include <stdio.h>

main()

{ int i,j,n=0,a[17]={1},b[17]

while(n<1 || n>16)

{ printf("请输入杨辉三角形的行数:")

scanf("%d",&n)

}

for(i=0i<ni++)

{ b[0]=a[0]

for(j=1j<=ij++)

b[j]=a[j-1]+a[j]

for(j=0j<=ij++)

{ a[j]=b[j]

printf("%5d",a[j])

}

printf("\n")

}

}

点评:解法一到解法四都用了二维数组,占用的空间较多。而解法五只使用了两个一维数组。

解法六

#include <stdio.h>

main()

{ int i,j,n=0,a[17]={0,1},l,r

while(n<1 || n>16)

{ printf("请输入杨辉三角形的行数:")

scanf("%d",&n)

}

for(i=1i<=ni++)

{ l=0

for(j=1j<=ij++)

{ r=a[j]

a[j]=l+r

l=r

printf("%5d",a[j])

}

printf("\n")

}

}

点评:解法六只使用了一个一维数组和两个临时变量。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12429208.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存