值得纪念的一天——偶会开发软件了,特来此晒作业,有错请指正
感觉这小东西很实用就与大家一起分享
1.
设计二位整数的加、减、乘算式各一题(减法算式应保证被减数大于减数)。让学生回答,由计算机给出正确与否的判断,并最后给出总得分。得分计算方法:算对加、减法各得30分,算对乘法得40分,算错得0分。然后由计算机输出询问信息,学生选择回答,以决定是否继续一次新的测验。
这个是成品
程序代码:#include<stdio.h>
#include<stdlib.h>
#include <time.h>
int main()
{
int a,b,c,d,e,f,i,k,m,n,sum=0;
char x;
int chars;
srand( time(0) );
for(i=0;i<100;i++)
{
a=rand()%100;
b=rand()%100;
c=rand()%100;
d=rand()%100;
while(c<d)
{
c=rand()%100;
d=rand()%100;
}
e=rand()%100;
f=rand()%100;
printf("%d+%d\n%d-%d\n%d*%d\n",a,b,c,d,e,f);
scanf("%d",&k);
scanf("%d",&m);
scanf("%d",&n);
if(k==a+b)
{
sum=sum+30;
printf("第一题对!!\n");
}
else
printf("第一题错\n");
if(m==c-d)
{
sum=sum+30;
printf("第二题对!!\n");
}
else
printf("第二题错\n");
if(n==e*f)
{
sum=sum+40;
printf("第三题对!!\n");
}
else
printf("第三题错\n");
printf("%d分\n",sum);
printf("按y继续?\n");
printf("_________________________________________________\n");
while ((chars=getchar()) != '\n' && chars != EOF);
x=getchar();
if(x=='y')
continue;
else
break;
}
system("pause");
return 0;
}
2.学生管理系统已知有20个学生记录(包括学号、姓名、班级、性别、出生年月、成绩)的文件student.dat,所有学生以学号从小到大排序(该文件自行建立,注意学号不要连续以备插入操作)。
要 求: 编程序实现查询、排序、插入、删除等功能。具体要求如下:
(1)要求显示如下界面
****************************************
1--------------查询
2--------------排序
3--------------插入
4--------------删除
5--------------退出
****************************************
通过选择1-5来确定要做哪一个操作。
(2)若选1,则出现如下界面
****************************************
1.1----------按学号查询
1.2----------按姓名查询
1.3----------按成绩查询
1.4----------返回
****************************************
通过输入1-4来对应选择1.1-1.4来确定要做哪一个操作,其中:按学号查询用顺序法实现;按姓名查询用顺序法实现;按成绩查询实现查询成绩小于m分的学生;找到该生将学生记录所有信息输出到屏幕,若查无此人,输出相关信息。如果选择1.4,则返回到第(1)步的界面。
(3)若选2,则按成绩从大到小排序,姓名,学号顺序也随之调整,输出到屏幕上。
(4)若选3,输入一名新学生的记录数据,按学号顺序插入,并把结果保存到文件student.dat中。
(5)若选4,输入一名学生的学号,删除该学生的记录,并把结果保存到文件student.dat中。
(6)若选5,则退出程序。
(7)以上各个功能均编写成子函数(退出程序除外),由主函数调用实现。
成品:
程序代码:#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Student
{
int num;
char name[20];
int classes;
char sex;
int brith;
int grade;
struct Student *next;
};
struct Student st[30],st1,st2[30],*p;
int b,c,ch,d,e,i,j,k,y=0,z=0;
char a[20],x;
FILE *fp;
int main ()
{
int search1(int o);
int search2(int o);
int search3(int o);
int insert(int m,int n);
int rank();
int delete1(int o);
if((fp=fopen("student2.dat","rb"))==NULL)
{
printf("不能打开文件\n");
return 0;
}
for(e=0;c=4;e++)
{
printf(" ******************************\n");
printf(" 1----------查询\n");
printf(" 2----------排序\n");
printf(" 3----------插入\n");
printf(" 4----------删除\n");
printf(" 5----------退出\n");
printf(" ******************************\n");
p=st;
for(i=0;i<30;i++)
{
fread(&st[i],sizeof(struct Student),1,fp);
z++;
if(st[i].next==NULL)break;
}
for(i=0;i<z-1;i++)
st[i].next=&st[i+1];
scanf("%d",&b);
if(b!=1)
break;
else
if(b==1)
{
printf(" ******************************\n");
printf(" 1.1----------按学号查\n");
printf(" 1.2----------按姓名查\n");
printf(" 1.3----------按成绩查\n");
printf(" 1.4----------返回 \n");
printf(" ******************************\n");
scanf("%d",&c);
if(c==1)
{
search1(c);
break;
}
else
if(c==2)
{
search2(c);
break;
}
else
if(c==3)
{
search3(c);
break;
}
else
if(c!=4)
{
printf("输入错误\n\t\t谢谢使用\n");
return 0;
}
}
}
if(b==2)
rank(b);
else
if(b==3)
{
printf("需要输入几组数据\n");
scanf("%d",&d);
insert(b,d);
}
else
if(b==4)
delete1(b);
else
if(b==5)
{
printf("\t\t谢谢使用\n");
return 0;
}
else
if(b!=1)
printf("输入错误!!\n");
fclose(fp);
printf("\t\t谢谢使用\n");
system("pause");
return 0;
}
int search1(int o)
{
printf("输入学号\n");
scanf("%d",&d);
for(i=0;i<z;i++)
{
if(d>=p->num)
{
y++;
if(y==1)
printf("学号\t姓名\t班级\t性别\t出生年月\t分数\n");
printf("%d\t%s\t%d\t%c\t%d\t\t%d\n",p->num,p->name,p->classes,p->sex,p->brith,p->grade);
y++;
}
p=p->next;
}
if(y==0)
printf("查无此学号\n");
return 0;
}
int search2(int o)
{
printf("输入姓名\n");
scanf("%s",a);
for(i=0;i<z;i++)
{
fread(&st[i],sizeof(struct Student),1,fp);
if(strcmp(st[i].name,a)==0)
{
y++;
if(y==1)
printf("学号\t姓名\t班级\t性别\t出生年月\t分数\n");
printf("%d\t%s\t%d\t%c\t%d\t\t%d\n",p->num,p->name,p->classes,p->sex,p->brith,p->grade);
}
p=p->next;
}
if(y==0)
printf("查无此人\n");
return 0;
}
int search3(int o)
{
printf("输入成绩\n");
scanf("%d",&d);
for(i=0;i<z;i++)
{
fread(&st[i],sizeof(struct Student),1,fp);
if(d>=st[i].grade&&st[i].grade)
{
y++;
if(y==1)
printf("学号\t姓名\t班级\t性别\t出生年月\t分数\n");
printf("%d\t%s\t%d\t%c\t%d\t\t%d\n",p->num,p->name,p->classes,p->sex,p->brith,p->grade);
}
p=p->next;
}
if(y==0)
printf("查无成绩\n");
return 0;
}
int insert(int m,int n)//可任意插入至多10组数据
{
for(i=0;i<z-1+d;i++)
{
st[i].next=&st[i+1];
st2[i].next=&st2[i+1];
}
st[z-1+d].next=NULL;
st2[z-1+d].next=NULL;
printf("请输入数据(以一个空格区分)\n");
printf("学号\t姓名\t班级\t性别\t出生年月\t分数\n");
for(i=z;i<z+d;i++)
{
scanf("%d %s %d %c %d %d",&st[i].num,st[i].name,&st[i].classes,&st[i].sex,&st[i].brith,&st[i].grade);
fwrite(&st[i],sizeof(struct Student),1,fp);
}
for(i=0;i<z;i++)
{
for(j=0;j<d;j++)
if(st[i].num==st[z+j].num)
{
y++;
printf("\t\t学号有重复\n");
return 0;
}
}
if(y==0)
{
fp=fopen("student2.dat","wb+");
for(i=0;i<z+d;i++)
{
fwrite(&st[i],sizeof(struct Student),1,fp);
p=p->next;
}
printf("插入成功!\n");
}
return 0;
}
int rank()
{
printf("学号\t姓名\t班级\t性别\t出生年月\t分数\n");
for(i=0;i<z;i++,p=p->next)
st2[i]=*p;
for(j=0;j<z;j++)
for(i=0;i<z-j;i++)
if(st2[i].grade<st2[i+1].grade)
{st1=st2[i];st2[i]=st2[i+1];st2[i+1]=st1;}
for(i=0;i<z;i++)
printf("%d\t%s\t%d\t%c\t%d\t\t%d\n",st2[i].num,st2[i].name,st2[i].classes,st2[i].sex,st2[i].brith,st2[i].grade);
return 0;
}
int delete1(int o)//可任意删除n组数据
{
printf("输入学号\n");
scanf("%d",&d);
for(i=0;i<z;i++)
{
if(p->num==d)
{
y++;
k=i;
printf("学号\t姓名\t班级\t性别\t出生年月\t分数\n");
printf("%d\t%s\t%d\t%c\t%d\t\t%d\n",p->num,p->name,p->classes,p->sex,p->brith,p->grade);
}
p=p->next;
}
if(y!=0)
{
printf("确认要删除该生信息?Y/N\n");
while ((ch=getchar()) != '\n' && ch != EOF);
scanf("%c",&x);
if(x=='Y')
{
if(st[k].next!=NULL&&k!=0)
{
p=st;
st[k-1].next=&st[k+1];
}
else
if(k==0)
p=&st[1];
else
{
p=st;
st[k-1].next=NULL;
}
fp=fopen("student2.dat","wb+");
for(i=0;;i++)
{
fwrite(p,sizeof(struct Student),1,fp);
if(k!=0)
{
if(p->next==NULL)
break;
}
else
if(p->next==NULL)
break;
p=p->next;
}
printf("已删除\n");
}
else
if(x!='Y'||x!='N')
{
printf("\n输入错误\n");
return 0;
}
}
else
{
printf("查无此学号\n");
return 0;
}
return 0;
}









