终于完成了,只用了结构体和指针,没有用到文件操作。还是很让自己欣慰得额。。。
由于以前没有写过包含几个c源文件得程序,其中在定义头文件还卡壳了,查了一些例子,发觉main()也和其他函数用法差不多,只不过是最外层的嵌套函数罢了。
//main.c
#include"func.h"
#include
#include
int main (int argc, char const* argv[]) {
int n;
pstu p=NULL,tmp=NULL;
char choice;
char buf[20];
printmenu();
for(;;)
{
scanf("%c",&choice);
switch (choice)
{
case 'q':
return 0;
case '0':
printmenu();
break;
case '1':
printf("请输入学生的个数:n");
scanf("%d",&n);
p=input(n);
break;
case '2':
printf("请输入姓名:n");
scanf("%s",buf);
tmp=searchbyname(buf,n,p);
output(tmp);
break;
case '3':
printf("请输入学号:n");
scanf("%s",buf);
tmp=searchbynumber(buf,n,p);
output(tmp);
break;
case '4':
sortbynumber(n,p);
break;
case '5':
sortbygrades(n,p);
break;
default:
puts("请选择!(0返回主菜单菜单,q结束)n");
break;
}
}
free(p);
p=NULL;
}
//func.c
#include"func.h"
#include
#include
#include
pstu input(int n)
{
int i=0;
pstu p=(pstu)malloc(n*sizeof(stu));
pstu tmp=p;
while(n--)
{
printf("请输入第%d个学生的信息(姓名,学号,分数) 空格隔开!n",++i);
scanf("%s%s%d",p->name,p->num,&p->math);
p++;
}
return tmp;
}
void output(stu *mem)
{
puts("=======================================n");
puts("姓名 学号 数学成绩n");
printf("%-10s %-10s %-10dn",mem->name,mem->num,mem->math);
puts("=======================================n");
}
pstu searchbyname(char *str,int n,pstu start)
{
int i;
pstu tmp=start;
for(i=0;i if(!strncmp(str,start++->name,20))
return start-1;
printf("error!name did not exist!n");
return tmp;
}
pstu searchbynumber(char *str,int n,pstu start)
{
int i;
pstu tmp=start;
for(i=0;i if(!strncmp(start++->num,str,10))
return start-1;
printf("error!number did not exist!n");
return tmp;
}
void sortbygrades(int n,pstu p)
{
int i,j,k,tmp=0,mark[20];
memset(mark,0,sizeof(mark));
puts("=======================================n");
puts("姓名 学号 数学成绩n");
for(k=0;k {
tmp=0;
for(i=0;i if((p+i)->math>tmp&&mark[i]==0)
{
tmp=(p+i)->math;
j=i;
}
mark[j]=1;
printf("%-10s %-10s %-10dn",(p+j)->name,(p+j)->num,(p+j)->math);
}
puts("=======================================n");
}
void sortbynumber(int n,pstu p)
{
int i,j,k,mark[20];
char buf[10];
memset(mark,0,sizeof(mark));
puts("=======================================n");
puts("姓名 学号 数学成绩n");
for(k=0;k {
memset(buf,'9',sizeof(buf));
for(i=0;i if(strncmp((p+i)->num,buf,10)<0&&mark[i]==0)
{
strcpy(buf,(p+i)->num);
j=i;
}
mark[j]=1;
printf("%-10s %-10s %-10dn",(p+j)->name,(p+j)->num,(p+j)->math);
}
puts("=======================================n");
}
void printmenu()
{
puts("=======================================n");
puts("tt欢迎进入学生成绩管理系统!n");
puts("请选择菜单:n");
puts("t1.输入学生信息n");
puts("t2.按姓名查找n");
puts("t3.按学号查找n");
puts("t4.按学号排序n");
puts("t5.按成绩排序n");
puts("t0.返回本菜单n");
puts("tq.退出n");
puts("=======================================n");
}
//func.h
#ifndef FUNC_H
#define FUNC_H
typedef struct stu{
char name[20];
char num[10];
int math;
}*pstu,stu;
pstu input();
void output(stu *mem);
pstu searchbyname(char *s,int n,pstu start);
pstu searchbynumber(char *s,int n,pstu start);
void sortbynumber(int n,pstu p);
void sortbygrades(int n,pstu p);
void printmenu();
#endif
</div>
由于以前没有写过包含几个c源文件得程序,其中在定义头文件还卡壳了,查了一些例子,发觉main()也和其他函数用法差不多,只不过是最外层的嵌套函数罢了。
//main.c
#include"func.h"
#include
#include
int main (int argc, char const* argv[]) {
int n;
pstu p=NULL,tmp=NULL;
char choice;
char buf[20];
printmenu();
for(;;)
{
scanf("%c",&choice);
switch (choice)
{
case 'q':
return 0;
case '0':
printmenu();
break;
case '1':
printf("请输入学生的个数:n");
scanf("%d",&n);
p=input(n);
break;
case '2':
printf("请输入姓名:n");
scanf("%s",buf);
tmp=searchbyname(buf,n,p);
output(tmp);
break;
case '3':
printf("请输入学号:n");
scanf("%s",buf);
tmp=searchbynumber(buf,n,p);
output(tmp);
break;
case '4':
sortbynumber(n,p);
break;
case '5':
sortbygrades(n,p);
break;
default:
puts("请选择!(0返回主菜单菜单,q结束)n");
break;
}
}
free(p);
p=NULL;
}
//func.c
#include"func.h"
#include
#include
#include
pstu input(int n)
{
int i=0;
pstu p=(pstu)malloc(n*sizeof(stu));
pstu tmp=p;
while(n--)
{
printf("请输入第%d个学生的信息(姓名,学号,分数) 空格隔开!n",++i);
scanf("%s%s%d",p->name,p->num,&p->math);
p++;
}
return tmp;
}
void output(stu *mem)
{
puts("=======================================n");
puts("姓名 学号 数学成绩n");
printf("%-10s %-10s %-10dn",mem->name,mem->num,mem->math);
puts("=======================================n");
}
pstu searchbyname(char *str,int n,pstu start)
{
int i;
pstu tmp=start;
for(i=0;i
return start-1;
printf("error!name did not exist!n");
return tmp;
}
pstu searchbynumber(char *str,int n,pstu start)
{
int i;
pstu tmp=start;
for(i=0;i
return start-1;
printf("error!number did not exist!n");
return tmp;
}
void sortbygrades(int n,pstu p)
{
int i,j,k,tmp=0,mark[20];
memset(mark,0,sizeof(mark));
puts("=======================================n");
puts("姓名 学号 数学成绩n");
for(k=0;k
tmp=0;
for(i=0;i
{
tmp=(p+i)->math;
j=i;
}
mark[j]=1;
printf("%-10s %-10s %-10dn",(p+j)->name,(p+j)->num,(p+j)->math);
}
puts("=======================================n");
}
void sortbynumber(int n,pstu p)
{
int i,j,k,mark[20];
char buf[10];
memset(mark,0,sizeof(mark));
puts("=======================================n");
puts("姓名 学号 数学成绩n");
for(k=0;k
memset(buf,'9',sizeof(buf));
for(i=0;i
{
strcpy(buf,(p+i)->num);
j=i;
}
mark[j]=1;
printf("%-10s %-10s %-10dn",(p+j)->name,(p+j)->num,(p+j)->math);
}
puts("=======================================n");
}
void printmenu()
{
puts("=======================================n");
puts("tt欢迎进入学生成绩管理系统!n");
puts("请选择菜单:n");
puts("t1.输入学生信息n");
puts("t2.按姓名查找n");
puts("t3.按学号查找n");
puts("t4.按学号排序n");
puts("t5.按成绩排序n");
puts("t0.返回本菜单n");
puts("tq.退出n");
puts("=======================================n");
}
//func.h
#ifndef FUNC_H
#define FUNC_H
typedef struct stu{
char name[20];
char num[10];
int math;
}*pstu,stu;
pstu input();
void output(stu *mem);
pstu searchbyname(char *s,int n,pstu start);
pstu searchbynumber(char *s,int n,pstu start);
void sortbynumber(int n,pstu p);
void sortbygrades(int n,pstu p);
void printmenu();
#endif
</div>
分析预测模型在机器学习中的应用之线性回归
回归能做任何事情 Continue reading