c語言怎麼錄入一個學生的成績
㈠ 用C語言做一個學生成績管理系統 輸入學生人數,錄入學生成績
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <cmath>
using namespace std;
/*定義學生結構體*/
struct Student
{
char ID[20];
char Name[20];
float Mark1;
float Mark2;
float Mark3;
float Average;
};
/*聲明學生數組及學生數量*/
struct Student students[1000];
int num=0;
/*求平均值*/
float Avg(struct Student stu)
{
return (stu.Mark1+stu.Mark2+stu.Mark3)/3;
}
/*通過學號返回數組下標*/
int Student_SearchByIndex(char id[])
{
int i;
for (i=0;i<num;i++)
{
if (strcmp(students[i].ID,id)==0)
{
return i;
}
}
return -1;
}
/*通過姓名返回數組下標*/
int Student_SearchByName(char name[])
{
int i;
for (i=0;i<num;i++)
{
if (strcmp(students[i].Name,name)==0)
{
return i;
}
}
return -1;
}
/*顯示單條學生記錄*/
void Student_DisplaySingle(int index)
{
printf("%10s%10s%8s%8s%8s%10s\n","學號","姓名","成績","成績","成績","平均成績");
printf("-------------------------------------------------------------\n");
printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[index].ID,students[index].Name,
students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Average);
}
/*插入學生信息*/
void Student_Insert()
{
while(1)
{
printf("請輸入學號:");
scanf("%s",&students[num].ID);
getchar();
printf("請輸入姓名:");
scanf("%s",&students[num].Name);
getchar();
printf("請輸入成績:");
scanf("%f",&students[num].Mark1);
getchar();
printf("請輸入成績:");
scanf("%f",&students[num].Mark2);
getchar();
printf("請輸入成績:");
scanf("%f",&students[num].Mark3);
getchar();
students[num].Average=Avg(students[num]);
num++;
printf("是否繼續?(y/n)");
if (getchar()=='n')
{
break;
}
}
}
/*修改學生信息*/
void Student_Modify()
{
//float mark1,mark2,mark3;
while(1)
{
char id[20];
int index;
printf("請輸入要修改的學生的學號:");
scanf("%s",&id);
getchar();
index=Student_SearchByIndex(id);
if (index==-1)
{
printf("學生不存在!\n");
}
else
{
printf("你要修改的學生信息為:\n");
Student_DisplaySingle(index);
printf("-- 請輸入新值--\n");
printf("請輸入學號:");
scanf("%s",&students[index].ID);
getchar();
printf("請輸入姓名:");
scanf("%s",&students[index].Name);
getchar();
printf("請輸入成績:");
scanf("%f",&students[index].Mark1);
getchar();
printf("請輸入成績:");
scanf("%f",&students[index].Mark2);
getchar();
printf("請輸入成績:");
scanf("%f",&students[index].Mark3);
getchar();
students[index].Average=Avg(students[index]);
}
printf("是否繼續?(y/n)");
if (getchar()=='n')
{
break;
}
}
}
/*刪除學生信息*/
void Student_Delete()
{
int i;
while(1)
{
char id[20];
int index;
printf("請輸入要刪除的學生的學號:");
scanf("%s",&id);
getchar();
index=Student_SearchByIndex(id);
if (index==-1)
{
printf("學生不存在!\n");
}
else
{
printf("你要刪除的學生信息為:\n");
Student_DisplaySingle(index);
printf("是否真的要刪除?(y/n)");
if (getchar()=='y')
{
for (i=index;i<num-1;i++)
{
students[i]=students[i+1];//把後邊的對象都向前移動
}
num--;
}
getchar();
}
printf("是否繼續?(y/n)");
if (getchar()=='n')
{
break;
}
}
}
/*按姓名查詢*/
void Student_Select()
{
while(1)
{
char name[20];
int index;
printf("請輸入要查詢的學生的姓名:");
scanf("%s",&name);
getchar();
index=Student_SearchByName(name);
if (index==-1)
{
printf("學生不存在!\n");
}
else
{
printf("你要查詢的學生信息為:\n");
Student_DisplaySingle(index);
}
printf("是否繼續?(y/n)");
if (getchar()=='n')
{
break;
}
}
}
/*按平均值排序*/
void Student_SortByAverage()
{
int i,j;
struct Student tmp;
for (i=0;i<num;i++)
{
for (j=1;j<num-i;j++)
{
if (students[j-1].Average<students[j].Average)
{
tmp=students[j-1];
students[j-1]=students[j];
students[j]=tmp;
}
}
}
}
/*顯示學生信息*/
void Student_Display()
{
int i;
printf("%10s%10s%8s%8s%8s%10s\n","學號","姓名","成績","成績","成績","平均成績");
printf("-------------------------------------------------------------\n");
for (i=0;i<num;i++)
{
printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[i].ID,students[i].Name,
students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Average);
}
}
/*將學生信息從文件讀出*/
void IO_ReadInfo()
{
FILE *fp;
int i;
if ((fp=fopen("Database.txt","rb"))==NULL)
{
printf("不能打開文件!\n");
return;
}
if (fread(&num,sizeof(int),1,fp)!=1)
{
num=-1;
}
else
{
for(i=0;i<num;i++)
{
fread(&students[i],sizeof(struct Student),1,fp);
}
}
fclose(fp);
}
/*將學生信息寫入文件*/
void IO_WriteInfo()
{
FILE *fp;
int i;
if ((fp=fopen("Database.txt","wb"))==NULL)
{
printf("不能打開文件!\n");
return;
}
if (fwrite(&num,sizeof(int),1,fp)!=1)
{
printf("寫入文件錯誤!\n");
}
for (i=0;i<num;i++)
{
if (fwrite(&students[i],sizeof(struct Student),1,fp)!=1)
{
printf("寫入文件錯誤!\n");
}
}
fclose(fp);
}
/*主程序*/
void main()
{
int choice;
IO_ReadInfo();
while(1)
{
/*主菜單*/
printf("\n------ 學生成績管理系統------\n");
printf("1. 增加學生記錄\n");
printf("2. 修改學生記錄\n");
printf("3. 刪除學生記錄\n");
printf("4. 按姓名查詢學生記錄\n");
printf("5. 按平均成績排序\n");
printf("6. 退出\n");
printf("請選擇(1-6):");
scanf("%d",&choice);
getchar();
switch(choice)
{
case 1:
Student_Insert();
break;
case 2:
Student_Modify();
break;
case 3:
Student_Delete();
break;
case 4:
Student_Select();
break;
case 5:
Student_SortByAverage();
Student_Display();
break;
case 6:
exit(0);
break;
}
IO_WriteInfo();
}
}
㈡ C語言怎麼用數組錄入3個學生成績,每個學生有5門課成績,並統計每個學生的平均分
#include<stdio.h>
#include<math.h>
intmain()
{
floatg[3][5];
for(inti=0;i<3;i++){
printf("請輸入第%d個學生的成績中間用空格分開: ",i+1);
scanf("%f%f%f%f%f",&g[i][0],&g[i][1],&g[i][2],&g[i][3],&g[i][4]);
}
for(inti=0;i<3;i++){
floatavg=0.0;
floatsum=0.0;
for(intj=0;j<5;j++){
sum+=g[i][j];
}
avg=sum/5;
printf("第%d個學生的平均成績為:%f ",i+1,avg);
}
return0;
}
望採納,謝謝
㈢ 如何用C語言編一個學生成績管理系統
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define NULL 0
int shoudsave=0;
struct student
{
char num[10];
char name[20];
char sex[4];
int cgrade;
int mgrade;
int egrade;
int totle;
int ave;
char neartime[10];
};
typedef struct node
{
struct student data;
struct node *next;
}Node,*Link;
void menu()
{
printf("********************************************************************************");
printf("\t1輸入學生資料\t\t\t\t\t2刪除學生資料\n");
printf("\t3查詢學生資料\t\t\t\t\t4修改學生資料\n");
printf("\t5顯示學生資料\t\t\t\t\t6統計學生成績\n");
printf("\t7排序學生成績\t\t\t\t\t8保存學生資料\n");
printf("\t9獲取幫助信息\t\t\t\t\t0退出系統\n");
printf("********************************************************************************\n");
}
㈣ 如何用C語言編寫一個程序實現學員成績
這是我寫的,或許對你有幫助~
#include<time.h>
#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
#define MAX 50
void input();
void sort();
void display();
void insert();
void del();
void average();
int now_no=0;
struct student
{
int no;
char name[20];
char sex[4];
float score1;
float score2;
float score3;
float sort;
float ave;
float sum;
};
struct student stu[MAX],*p;
main()//主函數
{
char as;
start: printf("\t\t\t歡迎使用學生成績管理系統\n\n");
//一下為功能選擇模塊
do{
printf("\n\t\t\t\t1.錄入學員信息\n\t\t\t\t2.顯示學員信息\n\t\t\t\t3.成績排序信息\n\t\t\t\t4.添加學員信息\n\t\t\t\t5.刪除學員信息\n\t\t\t\t6.退出\n");
printf("\t\t\t\t選擇功能選項:");
as=getch();
switch(as)
{
case '1':
system("cls");
input();
break;
case '2':
system("cls");
display();
break;
case '3':
system("cls");
sort();
break;
case '4':
system("cls");
insert();
break;
case '5':
system("cls");
del();
break;
case '6':
system("exit");
exit(0);
default:
system("cls");
goto start;
}
}while(1);
//至此功能選擇結束
}
void input()//原始數據錄入模塊
{
int i=0;
char ch;
do
{
printf("\t\t\t\t1.錄入學員信息\n輸入第%d個學員的信息\n",i+1);
printf("\n輸入學生編號:");
scanf("%d",&stu[i].no);
fflush(stdin);
printf("\n輸入學員姓名:");
fflush(stdin);
gets(stu[i].name);
printf("\n輸入學員性別:");
fflush(stdin);
gets(stu[i].sex);
printf("\n輸入學員成績:");
fflush(stdin);
scanf("%f",&stu[i].score1);
printf("\n輸入學員成績:");
fflush(stdin);
scanf("%f",&stu[i].score2);
printf("\n輸入學員成績:");
fflush(stdin);
scanf("%f",&stu[i].score3);
printf("\n\n");
i++;
now_no=i;
printf("%d",now_no);
printf("是否繼續輸入?(Y/N)");
ch=getch();
system("cls");
}
while(ch!='n');
system("cls");
}
void sort()//排序數據函數
{
struct student temp;
int i,j;
for(i=1;i<now_no;i++)
{
for(j=1;j<=now_no-i;j++)
{
if(stu[j-1].ave<stu[j].ave)
{temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}}}
}
void display()//顯示數據函數
{
int i;
char as;
float ave;
do
{
printf("\t\t班級學員信息列表\n");
printf("\t編號\t姓名\t性別\t成績\t成績\t成績\t平均值\n");
for(i=0;i<now_no;i++)
{
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
stu[i].ave=stu[i].sum/3;
printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);
}
printf("\t\t按任意鍵返回主菜單.");
as=getch();
goto exit;
}
while(as!='n');
exit: system("cls");
}
void insert()//插入數據函數
{
char ch;
do
{
printf("\n\t\t輸入新插入學員隊信息\n");
printf("\n輸入學生編號:");
scanf("%d",&stu[now_no].no);
fflush(stdin);
printf("\n輸入學員姓名:");
fflush(stdin);
gets(stu[now_no].name);
printf("\n輸入學員性別:");
fflush(stdin);
gets(stu[now_no].sex);
printf("\n輸入學員成績:");
fflush(stdin);
scanf("%f",&stu[now_no].score1);
printf("\n輸入學員成績:");
fflush(stdin);
scanf("%f",&stu[now_no].score2);
printf("\n輸入學員成績:");
fflush(stdin);
scanf("%f",&stu[now_no].score3);
printf("\n\n");
now_no=now_no+1;
sort();
printf("是否繼續輸入?(Y/N)");
ch=getch();
system("cls");
}
while(ch!='n');
}
void del()//刪除數據函數
{
int inum,i,j;
printf("輸入要刪除學員的編號:");
fflush(stdin);
scanf("%d",&inum);
for(i=0;i<now_no;i++)
{
if(stu[i].no==inum)
{
for(j=i;j<now_no;j++)
{
stu[i]=stu[i+1];
}
now_no=now_no-1;
}
break;
}
system("cls");
}
㈤ 編寫一個c語言程序,實現錄入學生學號和姓名信息的功能
#include<stdio.h>
#include<stdlib.h>
intmain(void)
{
chars[10];//姓名
intnum;//學號
printf("請輸入姓名: ");
gets(s);
printf("請輸學號: ");
scanf("%d",&num);
printf("姓名是:%s 學號是:%d ",s,num);
system("pause");
return0;
}
(5)c語言怎麼錄入一個學生的成績擴展閱讀
c語言建立學生檔案
#include<stdio.h>
#include<string.h>
結構學生
{
整數
字元名稱[10];
智
intEng;
墊子;
};
//s_number-檢索的學號
//numebr-文檔已經存儲的學號
//按學號查找
布爾搜索(chars_New[],charNew[])
{
如果(strcmp(s_New,New))
{
返回true;//查找成功
}
其他
{
returnfalse;//查找失敗
}
}
無效menu()
{
printf(「----------------------------------------------------------- 「);
printf(「菜單: 」);
printf(「 1。建立學生檔案 」);
printf(「 2。讀取所有學生記錄 」);
printf(「 3。在文件尾添加學生記錄 」);
printf(「 4。查詢學生姓名 」);
printf(「 5。結束程序 」);
printf(「----------------------------------------------------------- 「);
}
無效menu_2()
{
printf(「----------------------------------------------------------- 「);
printf(「查找選擇菜單: 」);
printf(「 1。按名字查找 」);
printf(「 2。按學號查找 」);
printf(「請選擇: 」);
printf(「----------------------------------------------------------- 「);
}
intmain()
{
而(1)
{
菜單();
法官
printf(「請輸入你的選項:」);
判斷=scanf(「%d」,&n);
如果(判斷==0)
{
printf(「輸入格式錯誤! 」);
}
開關(n)
{
情況1:
{
FILE*pf=fopen(「Student.txt」,「w+」);
字元標志='Y';
while(flag=='Y'|flag=='y')
{
學生stu;//創建學生結構體
printf(「請輸入學生的學號: 」);
scanf(「%d」,&stu.number);
getchar();//吃掉以上一個輸入的回車符
printf(「請輸入學生的姓名: 」);
scanf(「%s」,stu.name);
printf(「請輸入學生的語文成績: 」);
scanf(「%d」,&stu.Chi);
printf(「請輸入學生的英語成績: 」);
scanf(「%d」,&stu.Eng);
printf(「請輸入學生的數學成績: 」);
scanf(「%d」,&stu.Mat);
//把學生檔案導入Student.txt文檔
fprintf(pf,「#姓名:%s 學號:%d 語言成績:%d 英語成績:%d 數學成績:%d 」,stu.name,stu.number,stu.Chi,stu.Eng,stu.Mat);
getchar();//吃掉以上一個輸入的回車符
printf(「是否繼續輸入學生檔案?(是或否) 」);
判斷=scanf(「%c」,&flag);
如果(判斷==0)
{
printf(「輸入格式錯誤! 」);
}
}
fclose(pf);
打破;
}
㈥ 【C語言】輸入學生姓名和成績排序
這種一般都是要用到結構體的,不用結構體很難講名字和成績這種數據一一對應起來。內
結構體容都是設置一種結構,這個結構中可以放置各個類型的數據,比如說一個人是一個結構體,那麼名字,身高,體重,性別,等等都可以作為結構體里的數據。然後用這個結構體來初始化一些人,比如說小明,你將小明的身高,體重,性別等等初始化賦值給這個結構體,就可以使用 . 這個運算符號來調用結構體里成員數據。比如說 小明.姓名 的值就是小明。
根據你的提問,具體代碼如下:
首先定義一個結構體的定義:
typedef struct Student
{
char name[20]; //名字
int grade; //成績
}
初始化各個實例:
struct Student Jack, Tom, Tim;
將各個成員賦值:
Jack.name[20] = Jack;
Jack.grade = 63;
以此類推。
排序的具體方法也不難,自己看看書吧。
使用結構體的好處就是將一組與一個事物相關的數值放在一起,統一的管理和調用。
㈦ c語言 寫程序(1)輸入十個學生的學號和成績(2)輸入一個學號,查找
#include<stdio.h>
typedefstruct
{
charno[20];
intscore;
}STU;
intmain()
{
STUs[10],t;
charno[20];
inti,j;
for(i=0;i<10;i++)
{
scanf("%s%d",t.no,&t.score);
for(j=i;j>=0;j--)
if(s[j].score<t.score)s[j+1]=s[j];
elsebreak;
s[j+1]=t;
}
for(i=0;i<10;i++)
printf("%s%d ",s[i].no,s[i].score);
printf("輸入要查詢的學號:");
scanf("%s",no);
for(i=0;i<10;i++)
if(strcmp(s[i].no,no)==0)break;
if(i==10)printf("不在十個學生中 ");
elseprintf("該學生分數為%d ",s[i].score);
return0;
}
㈧ 求怎麼用C語言做一個學生成績管理系統
去年寫的,你稍微改下加個成績就行
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
FILE *fp;
struct student{
char name[10];
char number[12];
char age[3];
struct student *next;
};
struct student *creat(); //手動創建鏈表
struct student *build_list(); //從文件讀取信息創建鏈表
void read_list(struct student *head); //列印鏈表
void search(struct student *head); //查找相應信息
struct student *delete_(struct student *head); //刪除相應信息
void ad_list(struct student *head); //增加信息
int control(struct student *head); //控制函數
void head_print(); //列印界面函數
void change_list(struct student *head); //更改鏈表信息函數
void save(struct student *head); //保存文件
void remove(struct student *head); //遞歸釋放鏈表空間
char name[10],number[12],age[3]; //學生姓名、學號、年齡全局變數
int main(){
struct student *head;
head=(struct student*)malloc(sizeof(struct student));
control(head);
free(head);
fclose(fp);
return 0;
}
struct student *creat(){
struct student *head;
char name[10],number[12],age[3];
struct student *p,*r,*p1;
head=(struct student *)malloc(sizeof(struct student));
p=head->next;
r=head;
printf("依次輸入姓名學號年齡(按q退出):\n");
scanf("%s",name);
while(name[0]!='q'){
p1=(struct student*)malloc(sizeof(struct student));
scanf("%s",number);
scanf("%s",age);
strcpy(p1->name,name);
strcpy(p1->number,number);
strcpy(p1->age,age);
p1->next=NULL;
r->next=p1;
r=p1;
scanf("%s",name);
}
printf("建立成功\n");
return head;
}
/*若無文件或文件為空,用鏈表創建函數,為防止佔用多餘內存在循環入口處進行判斷,函數返回頭指針地址*/
struct student *build_list(){
char ch;
struct student *head;
struct student *p1,*r;
rewind(fp);
head=(struct student*)malloc(sizeof(struct student));
r=head;
while(!feof(fp)){
p1=(struct student*)malloc(sizeof(struct student));
fscanf(fp,"%s%s%s",p1->name,p1->number,p1->age);
p1->next=NULL;
r->next=p1;
r=p1;
fseek(fp,2L,SEEK_CUR);
if((ch=getc(fp))==EOF)
break;
else
fseek(fp,-3L,SEEK_CUR);
}
return head;
}
/*文件內有信息時按行讀取文件信息並創建鏈表,為防止誤讀結尾換行符,用fseek函數在每次循環後移兩單位判斷是否為空
,若為空結束循環,若不為空則用fseek函數前移三個單位*/
void read_list(struct student *head){
struct student *p;
p=head->next;
if(p==NULL){
head=creat();
}
printf("*******************************************\n");
while(p!=NULL){
printf("%-20s%-12s%-3s\n",p->name,p->number,p->age);
p=p->next;
}
printf("*******************************************\n");
}
/*輸出鏈表信息,如果進行刪除操作後鏈表為空則轉到鏈表創建函數;按行讀取文件信息並輸出。*/
void search(struct student *head){
char s[20];
struct student *p;
int k=0;
printf("請輸入要查詢的字元串:\n");
p=head->next;
scanf("%s",s);
printf("查詢結果:\n");
while(p!=NULL){
if((strcmp(s,p->age)&&strcmp(s,p->name)&&strcmp(s,p->number))==0){
printf("%-20s%-12s%-3s\n",p->name,p->number,p->age);
k=1;
}
p=p->next;
}
if(k==0)
printf("無記錄\n");
}
/*查找函數,*/
struct student *delete_(struct student *head){
char s[20];
char ch;
int v=0;
struct student *p,*q;
printf("請輸入要刪除的學生的學號:\n");
scanf("%s",s);
p=head->next;
q=head;
while(p!=NULL){
if(strcmp(s,p->number)==0){
q->next=p->next;
v=1;
free(p);
break;
}
q=p;
p=p->next;
}
if(v==1)
printf("刪除成功\n");
else{
printf("未刪除成功\n");
return q->next;
}
if(head->next==NULL){
printf("已無信息,是否輸入新的(Y/N):\n");
scanf("%c",&ch);
ch=getchar();
if(ch=='y')
head=creat();
return head;
}
return q->next;
}
void ad_list(struct student *head){
char s[20];
int v=0;
struct student *p,*q;
q=(struct student *)malloc(sizeof(struct student));
p=head->next;
printf("插在學號為多少的學生後?\n");
scanf("%s",s);
while(p!=NULL){
if(strcmp(s,p->number)==0){
printf("請輸入學生信息(姓名 學號 年齡):\n");
scanf("%s%s%s",q->name,q->number,q->age);
q->next=p->next;
p->next=q;
v=1;
break;
}
p=p->next;
}
if(v==0)
printf("插入失敗\n");
}
void change_list(struct student *head){
char s1[12];
char ch;
struct student *p;
printf("請輸入要更改的學生的學號:\n");
scanf("%s",s1);
p=head->next;
while(p!=NULL){
if(strcmp(s1,p->number)==0)
break;
p=p->next;
}
printf("請輸入要更改的內容:\na.姓名\nb.學號\nc.年齡\n");
scanf("%c",&ch);
ch=getchar();
printf("請輸入更改後結果:\n");
scanf("%s",s1);
switch(ch){
case'a':strcpy(p->name,s1);break;
case'b':strcpy(p->number,s1);break;
case'c':strcpy(p->age,s1);break;
}
}
void save(struct student *head){
struct student *p;
p=head->next;
fp=fopen("stu.out","w+");
rewind(fp);
while(p!=NULL){
fprintf(fp,"%-20s%-12s%3s\n",p->name,p->number,p->age);
p=p->next;
}
printf("保存成功\n");
}
void remove(struct student *head){
if(head==NULL)
return;
remove(head->next);
free(head);
}
int control(struct student *head){
int i=0;
char ch;
head_print();
if((fp=fopen("stu.out","r"))==NULL){
printf("無文件,請先建立:\n");
head=creat();
}
else if((ch=getc(fp))==EOF){
printf("無信息,請先建立:\n");
head=creat();
}
else
head=build_list();
while((ch=getchar())!='q'){
switch(ch){
case'a':search(head);break;
case'b':delete_(head);break;
case'c':ad_list(head);break;
case'd':change_list(head);break;
case'e':read_list(head);break;
case'f':save(head);break;
case'h':head_print();
}
}
if(ch=='q')
remove(head);
return 0;
}
void head_print(){
printf("%13.0s********************************************%13.0s\n");
printf("%13.0s**%40.0s**\n");
printf("%13.0s**%9.0sa.查找%9.0sb.刪除%10.0s**\n");
printf("%13.0s**%40.0s**\n");
printf("%13.0s**%9.0sc.增加%9.0sd.更改%10.0s**\n");
printf("%13.0s**%40.0s**\n");
printf("%13.0s**%9.0se.查看%9.0sf.存檔%10.0s**\n");
printf("%13.0s**%40.0s**\n");
printf("%13.0s**%9.0s按h顯示提示信息,q退出%10.0s**\n");
printf("%13.0s********************************************%13.0s\n");
}
㈨ c語言如何編寫一個輸出學生成績等級的程序
一、首先打開VC++
㈩ 用c語言設計一個學生成績管理系統 該系統要實現的功能為:成績錄入:輸入學生的學號、姓名及三門課成績
我只有差不多的你可以自己改一改
/* ************************************************************************
* Filename: student_system.c
* Description:
* Version: 1.0
* Created: 2016年03月30日 17時27分11秒
* Revision: none
* Compiler: gcc
* Author: YOUR NAME (),
* Company:
* ************************************************************************/
#include <stdio.h>
#include <stdlib.h>
typedef struct stu
{
int num;
char name[20];
int score;
struct stu *next;
}STU;
void link_add_end(STU **head,STU *p_new)
{
p_new->next = *head;
*head = p_new;
}
void link_print(STU **head)
{
if(*head == NULL)
{
return;
}
STU *p_mov = *head;
while(p_mov != NULL)
{
printf("num==%d score==%d name==%s ",p_mov->num,p_mov->score,p_mov->name);
p_mov=p_mov->next;
}
}
void link_find_num(STU **head,int num)
{
STU *p_mov = *head;
while(p_mov != NULL)
{
if(p_mov->num == num)
{
printf("num==%d score==%d name==%s ",p_mov->num,p_mov->score,p_mov->name);
}
p_mov=p_mov->next;
}
}
void link_find_name(STU **head,char name[])
{
STU *p_mov = *head;
while(p_mov != NULL)
{
if(strcmp(p_mov->name,name)==0)
{
printf("num==%d score==%d name==%s ",p_mov->num,p_mov->score,p_mov->name);
}
p_mov=p_mov->next;
}
}
void link_delete_num(STU **head,int num)
{
STU *p_mov = *head;
STU *p_sav = p_mov;
while(p_mov != NULL)
{
if(p_mov->num == num)
{
if(p_mov == *head)
{
*head = p_mov->next;
free(p_mov);
}else if(p_mov->next == NULL)
{
p_sav->next=NULL;
free(p_mov);
}else
{
p_sav->next=p_mov->next;
free(p_mov);
}
}
p_sav=p_mov;
p_mov=p_mov->next;
}
}
void add(STU **head)
{
STU *p_new;
p_new = (STU *)malloc(sizeof(STU));
printf("請輸入 學號 分數 姓名 ");
printf("例如 1 99 張三 ");
scanf("%d %d %s",&p_new->num,&p_new->score,p_new->name);
getchar();
link_add_end(head,p_new);
}
void prin(STU **head)
{
link_print(head);
}
void find(STU **head)
{
int num;
char name[20];
char cmd[20];
printf("1 find for num ");
printf("2 find for name ");
gets(cmd);
if(strcmp("1",cmd) == 0)
{
printf("please input find for num");
scanf("%d",&num);
getchar();
link_find_num(head,num);
}else if(strcmp("2",cmd)==0)
{
printf("please input find for name ");
gets(name);
link_find_name(head,name);
}else
{
printf("error!!");
return;
}
}
void delete(STU **head)
{
int num;
printf("please input delete for num ");
scanf("%d",&num);
getchar();
link_delete_num(head,num);
}
void help()
{
printf("************************ ");
printf("*add add link * ");
printf("*prt print link * ");
printf("*fid find link * ");
printf("*del delete link * ");
printf("*help print help * ");
printf("************************ ");
}
int main(int argc, char *argv[])
{
char cmd_key[20];
STU *head=NULL;
int i;
typedef void (*FUN)(STU **);
typedef struct cmd_fun
{
char key_cmd[20];
FUN fun;
}CMD;
CMD cmd[]={{"add",add},
{"prt",prin},
{"fid",find},
{"del",delete}};
help();
while(1)
{
gets(cmd_key);
if(strcmp(cmd_key,"help")==0)
{
help();
}
for(i=0; i<4; i++)
{
if(strcmp(cmd[i].key_cmd,cmd_key)==0)
{
cmd[i].fun(&head);
}
}
}
return 0;
}