當前位置:首頁 » 編程語言 » C語言結構體按姓名查找成績
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

C語言結構體按姓名查找成績

發布時間: 2022-07-22 18:27:46

❶ 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要定義足夠長,並且等長。