❶ 3.c语言 用结构体类型编一程序,输入一个学生的学号,姓名及三门课的成绩,计算并输出平均成绩
#include<stdio.h>
structstud{
intnum;
charname[30];
floatscore[3];
};
intmain()
{
structstudstu;
inti;
floatavg;
printf("inputnumber:");scanf("%d",&stu.num);
printf("inputname:");scanf("%s",stu.name);
printf("input3score: ");
avg=0;
for(i=0;i<3;i++)
{
scanf("%f",&stu.score[i]);
avg+=stu.score[i];
}
avg/=3;
printf("averagescore:%f ",avg);
return0;
}
❷ 如何用c语言编一个成绩查询系统
如果你是要做一个非常专业的商业软件,这个其实不太适合用C语言来编写。你可以考虑其他高级语言如java,c#,etc.
如果你仅仅是想在功能上实现成绩查询,而且数据量不是那种特别大,比如千万,上亿级别的,用C语言以二进制文件读写的方式完全可以轻松实现。
下面说说大概的思路:
1.你可以定义一个结构体来描述成绩,结构体的变量包括比如姓名,学号,班级,语文成绩,数学成绩,etc。
2.所有学生的成绩,就是一个个的结构体 把所有结构体保存到二进制文件中。
3.如果需要查询成绩,就先从二进制文件把所有的成绩读取出来,保存到数组或者链表中。然后在数组或者链表中进行查询。
如果是要删除某一个学生的记录,就从数组或者链表中先找到该学生的记录,然后删掉该元素,再保存回二进制文件。
如果是要添加一个学生成绩信息,就是在数组或者链表中添加一个元素,然后保存为二进制文件。
用C语言以二进制文件的方式模拟数据库系统的操作,大体的思路就是这样的。
如果你非要以数据库的方式来存取数据,用C语言,也不是绝对不可以,那就比较繁琐了,自行查找C语言访问数据库相关的知识。
❸ c语言 .用结构体输出学生姓名、学号和成绩 我有c++的程序 但是看不懂 只会c语言
C++ 中的struct与class的区别是:struct的默认访问级别是public,class 的访问级别是private。C++中的struct和class一样可以有成员函数(上面代码中的 void show是成员函数;Student(char *name, char *id, int grade)是一个特殊的成员函数,叫构造函数,该函数用于实例化一个类的对象)。下面给出上面代码的简单注释:
#include <memory.h>
#include <string.h>
#include <stdio.h>
//从这里到“类student定义结束”这一行定义student类
typedef struct Student{
//类属性
char Name[20]; //Name
char ID[15]; //学号
int Grade; //成绩
//下面是构造函数,构造函数的特点是和类名(此处是Student)相同,没有返回值,且可以重载(即函数名字相同,但是参数类型或者参数个数不一样),它用于初始化一个student对象,初始化的时候传入三个参数,name,id字符串,int型的grade
Student(char *name, char *id, int grade)
{
memcpy(Name,name,(1+strlen(name))*sizeof(char));
memcpy(ID,id,(1+strlen(id))*sizeof(char));
Grade=grade;
}
void Show()//成员函数,无参数,返回类型为void
{
printf("姓名为%s,学号为%s,分数为%d。\n",Name,ID,Grade);
}
}Student;//类student定义结束
void main()
{
Student s_1("a","2012302590014",54);//实例化一个student对象,名为s_1,其名字为a,id为2012302590014,分数为54。下面类似
Student s_2("b","2012302590081",95);
Student s_3("c","2012302590144",96);
Student s_4("d","2012302590169",97);
s_1.Show();//调用对象s_1的成员函数Show(),显示姓名,学号,成绩.以下类同
s_2.Show();
s_3.Show();
s_4.Show();
}
❹ C语言用结构体存放学生成绩{姓名、英语、数学、C语言},按总分排名输出
定义结构体数组
typedefstruct
{
charname[20];
intscore[3];
inttotal;
}STU;
以最多100个学生为例
#defineN100
STUs[100];
输入学生成绩。 这个可以灵活一些,
固定学生数, 或者输入学生数,或者以空学生名结束都可以
输入同时,计算总分,存到total里面。
随便什么排序方式,按照total的值,进行从大到小排序。
顺序输出。
❺ 输入6个学生的学号,姓名和C语言成绩,并存放在一个结构体数组中,从中查找出成绩最
#include<stdio.h>
structStudent
{
charID[15];
charName[10];
intCScore;
}stu[6],MaxScore;
intmain()
{
intsum=0; //记录总成绩
floataver; //记录平均值
MaxScore.CScore=0;
for(inti=0;i<6;i++)
{
scanf("%s%s%d",stu[i].ID,stu[i].Name,&stu[i].CScore);
sum+=stu[i].CScore;
if(MaxScore.CScore<stu[i].CScore)
{
MaxScore=stu[i];
}
}
aver=sum*1.0/6;
printf("Themaxscorestudentnameis:%s,averagescoreis:%.2f ",MaxScore.Name,aver);
return0;
}
//测试样例:
//2018010901麒麟67
//2018010902白虎68
//2018010903朱雀86
//2018010904玄武99
//2018010905青龙61
//2018010906冬雪75
//Themaxscorestudentnameis:玄武,averagescoreis:76.00
❻ c语言,结构体 学生成绩
#include #include #define STU_NUM 10//学生数 #define SCORE_NUM 6//每个学生的科目数 typedef struct /*定义结构体数组*/ { char num[20]; /*学号*/ char name[20]; /*姓名*/ float score[SCORE_NUM]; /*成绩*/ float total;//总分 float average;//平均分 } Student; Student stu[STU_NUM]; //输入学生信息 void input() { int i,j; printf("请输入%d个学生的信息:\n",STU_NUM); for(i=0;ii;j--) { if(stu[j].total>stu[j-1].total) { tStu=stu[j]; stu[j]=stu[i]; stu[i]=tStu; } } } } void main() { input(); process(); sort(); output(); } 经供参考,具体自己调试。
❼ 用C语言写一个成绩查询系统。
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<conio.h>
#define N 10
/*****定义结构体*****/
typedef struct students /*标记为students*/
{
char num[10]; /*学生学号*/
char name[10]; /*学生姓名*/
int age; /*年龄*/
char sex[10]; /*性别*/
float cyy; /*C语言成绩*/
float computer; /*计算机成绩*/
float english; /*英语成绩*/
float pj; /*平均成绩*/
}STU;
STU temp;
void sort(STU students[],int n); //排序
void save(STU students[] ,int n);//导出
int Locate(STU students[],int n);//查询
/*--------------显示菜单--------------------*/
char displaymenu()
{
char k;
system("cls");
printf(" 学生成绩管理 \n");
printf("-----------------------------------应用菜单-------------------------------------\n");
printf(" 1 输入学生成绩\n\n");
printf(" 2 输出学生成绩\n\n");
printf(" 3 查询学生成绩\n\n");
printf(" 4 修改学生成绩\n\n");
printf(" 5 查看成绩排序\n\n");
printf(" 6 查看成绩统计\n\n");
printf(" 7 保存数据\n\n");
printf(" 8 读取数据\n\n");
printf(" 9 退出系统\n\n");
printf(" 请选择你想进行的操作:");
k=getchar();
return k;
}
/*****定义输出函数*****/
void printheader() /*格式化输出表头*/
{
printf("\n\n************************学生成绩管理系统****************************\n\n\n");
printf("| 学号 | 姓名 | 年龄 | 性别 | C语言成绩 |计算机成绩 | 英语成绩| 平均成绩 | \n");
}
void printdata(STU pp) /*格式化输出表中数据*/
{
STU* p;
p=&pp;
printf("| %-5s| %-5s | %-4d| %-4s| %-6.0f| %-6.0f| %-5.0f| %-6.0f|\n",p->num,p->name,p->age,p->sex,p->cyy,p->computer,p->english,p->pj);
}
/*****添加学生信息*****/
int add(STU students[] ,int *n)
{
int i=0;
system("cls");
printf(" \n");
printf(" 请输入学生信息 \n");
printf(" 退出请在学生号处输入:0 \n");
printf("请输入学生学号:\n ");
scanf("%s",students[i].num);
while(strcmp(students[i].num,"0") )//当输入的学号为0时结束输入
{
printf("请输入学生姓名:\n ");
scanf("%s",students[i].name);
printf("****************\n\n\n");
printf("请输入学生年龄:\n ");
scanf("%d",&students[i].age);
printf("****************\n\n\n");
printf("请输入学生性别:\n");
scanf("%s",students[i].sex);
printf("****************\n\n\n");
printf("请输入C语言成绩:\n ");
scanf("%f",&students[i].cyy);
printf("****************\n\n\n");
printf("请输入计算机成绩:\n ");
scanf("%f",&students[i].computer);
printf("****************\n\n\n");
printf("请输入英语成绩:\n ");
scanf("%f",&students[i].english);
printf("****************\n\n\n");
students[i].pj=(students[i].cyy+students[i].computer+students[i].english)/3;
printf("学生平均成绩: %-8.0f\n",students[i].pj);
i++;
printf("****************\n\n\n");
printf("请输入学生学号:\n ");
scanf("%s",students[i].num);
}
*n=i;
save(students ,i);
return i;
}
/*****查询学生信息函数*****/
int Locate(STU students[],int n)
{
int k,m=-1;
char num[10],name[20];
int i=0;
system("cls");
printf(" 退出请输入:0 \n");
printf("请选择以什么方式查询:1).按学生学号查询 2).按学生姓名查询 \n");
scanf("%d",&k);
if(k==1)
{
printf("请输入你要查询的学生学号:\n");
scanf("%s",num);
while(i<n)
{
if(strcmp(students[i].num,num)==0) /*若找到学号*/
{
printf(">>学生学号:%s\n*学生姓名:%s\n*学生年龄:%d\n*学生性别:%s\n>C语言成绩:%-8.0f\n>计算机成绩:%-8.0f\n>>英语成绩:%-8.0f\n>>平均成绩:%-8.0f\n",students[i].num,students[i].name,students[i].age,students[i].sex,students[i].cyy,students[i].computer,students[i].english,students[i].pj);
m=i;
getchar();
break;
}
i++;
}
if(i>=n)
printf("没有所找学生信息\n");
getchar();
}
else if(k==2)
{
printf("请输入你要查询的学生姓名:\n");
scanf("%s",name);
while(i<n)
{
if(strcmp(students[i].name,name)==0) /*若找到姓名*/
{ printf("学生学号:%s\n学生姓名:%s\n学生年龄:%d\n学生性别:%s\n学生C语言成绩:%-8.0f\n计算机成绩:%-8.0f\n英语成绩:%-8.0f\n平均成绩:%-8.0f\n",students[i].num,students[i].name,students[i].age,students[i].sex,students[i].cyy,students[i].computer,students[i].english,students[i].pj);
m=i;
getchar();
break;
}
i++;
}
if(i>=n)
printf("没有所找学生信息\n");
}
return m;/*返回一个根m便于修改学生信息*/
getchar();
}
/*****显示函数*****/
void input(STU students[],int n)
{
int i;
system("cls"); //清屏
if(n==0) /*表示没有学生信息记录*/
{
printf("\n没有学生记录!\n");
}
printf("\n\n");
printheader(); /*输出表格头部*/
i=0;
while(i<n) /*逐条输出数组中存储的学生信息*/
{
printdata(students[i]);
i++;
}
getchar();
}
/*****修改子程序*****/
void Modify(STU students[],int n)
{
int i;
if(n<=0)
{
system("cls");
printf(" \n退出请输入:0 \n");
printf("\n----------not found!----------\n");
getchar();
return ;
}
system("cls");
printf("修改学生信息");
input(students,n);
i=Locate(students,n); /*查询到该数组元素,并返回下标值*/
if(i!=-1) /*若i!=-1,表明已经找到该数组元素*/
{
printf("请输入新的学生信息: \n");
printf(" 学号: ");
scanf("%s",students[i].num);
printf(" 姓名: ");
scanf("%s",students[i].name);
printf(" 年龄: ");
scanf("%d",&students[i].age);
printf(" 性别: ");
scanf("%s",students[i].sex);
printf(" C语言: ");
scanf("%f",&students[i].cyy);
printf(" 英语: ");
scanf("%f",&students[i].english);
printf(" 计算机: ");
scanf("%f",&students[i].computer);
students[i].pj=(students[i].cyy+students[i].english+students[i].computer)/3;
printf("平均成绩: %-9.0f\n",students[i].pj);
save(students ,n);
printf("\n-------------修改成功!-------------\n");
}
else
printf("not found!\n");
getchar();
}
/*****学生成绩排序子程序*****/
void sort(STU students[],int n)
{
int i,j,a,b,c,d,e,f,k;
float p;
printf(" \n退出请输入:0 \n");
printf("成绩排序方式选择: 1.按C语言 2.按英语 3.按平均 \n ");
scanf("%d",&k);
if(k==1) /*用选择法对C语言排序*/
{
for(i=0; i<n; i++)
for(j=0;j<n-1;j++)
{
if(students[i].english<students[j+1].english)
{
temp=students[i];
students[i]=students[j+1];
students[j+1]=temp;
}
}
}
else if(k==2)/*英语用冒泡法*/
{
for(a=0; a<n-1; a++)
{
c=a;
//未完待续
❽ 如何用c语言结构体指针输入一组学生成绩,查找最好成绩,并输出其学生信息
正解:8÷(3-8÷3)
解析:8÷(3-8÷3)=8÷(3-8/3)=8÷(9/3-8/3)=8÷(1/3)=8x3=24
如果有朋友看不懂梯等式,我可以用文字解析一下。括号中(3-8÷3)等于3减去3分之8,也就是三分之九-三分之八,等于三分之一。8÷(1/3)就等于8x3.最后得出24
希望我的回答可以为你解决问题!
❾ 查找5名学生中成绩最高者的姓名和成绩(c语言结构体)
#include<stdio.h>
#include<string.h>
struct student
{
int score;
char name[10];
}data[5];
void main()
{
int i,j,temp;
char temp1[10];
printf("输入名字和成绩");
for(i=0;i<5;i++)
{
scanf("%s%d",&data[i].name,&data[i].score);
}
for(i=0;i<5;i++)
{
for(j=i+1;j<5;j++)
{
if(data[i].score<data[j].score)
{
temp=data[i].score;
data[i].score=data[j].score;
data[j].score=temp;
strcpy(temp1,data[i].name);
strcpy(data[i].name,data[j].name);
strcpy(data[j].name,temp1);
}
}
}
printf("最高分同学的名字为%s,分数为%d",data[0].name,data[0].score);
}
❿ C语言结构体---查找学生信息
struct student
{
char NO[2];
char name[9];
int chinese;
int math;
};
main函数:char name[10];
两个地方的name长度不一。如果运行输入9个字符,struct 里面的name就没有结尾的'\0'
两个name要定义足够长,并且等长。