當前位置:首頁 » 編程語言 » 學生個人信息編碼c語言
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

學生個人信息編碼c語言

發布時間: 2022-09-18 23:04:20

① 用c語言輸出顯示自己的姓名和學號,請寫出完整的程序代碼

#include"stdafx。h"

#include

intmain()

{

charszBuf[20]={0};

printf("請輸入姓名 ");

printf(">");

scanf("%s",szBuf);

intiNum=0;

printf("請輸入學號 ");

printf(">");

scanf("%d",&iNum);

printf("**************您的信息如下********************** ");

printf("姓名:%s ",szBuf);

printf("學號:%d ",iNum);

return0;

}

代碼具有較好的可移植性

C語言是面向過程的編程語言,用戶只需要關注所被解決問題的本身,而不需要花費過多的精力去了解相關硬體,且針對不同的硬體環境,在用C語言實現相同功能時的代碼基本一致,不需或僅需進行少量改動便可完成移植,這就意味著,對於一台計算機編寫的C程序可以在另一台計算機上輕松地運行,從而極大的減少了程序移植的工作強度。

以上內容參考:網路-c語言

② 建立一個學生信息系統C語言編程

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>

intbExit=0;
inttotal=0;
#defineCreate(the_one)the_one=(Stu*)malloc(sizeof(Stu))
typedef
structStudent
{
charcnum[20]; //字元串學號
intinum; //數字學號
charname[20]; //姓名
floatscore; //成績
structStudent*next;
}Stu;
Stu*the_one,*h,*pr,*last,*end;//1.添加學生函數
voidADD()
{
intFour=0;
printf("================================ ");

Create(the_one);
the_one->next=NULL;

end=last;//end指向倒數第二個結點

last->next=the_one;//將the_one放在鏈表的最後
last=the_one;//last指向倒數第一個結點

//輸入學號
printf("輸入學生信息: 學號:");

while(!Four)
{
gets(the_one->cnum);
if(strlen(the_one->cnum)!=4)
printf("輸入非法:學號必須是4位,請重新輸入! 學號:");
else
Four=1;
}
the_one->inum=atoi(the_one->cnum); //int型學號

//輸入姓名
printf("學生姓名:");
gets(the_one->name);
//輸入成績
printf("學生成績:");
scanf("%f",&the_one->score);
getchar();//接收回車
//總數+1
total++;
//排序

//pr從空head開始,last指向下一個(前趨pr,後趨last)
for(pr=h,last=pr->next;last->next;pr=pr->next,last=pr->next)
{
if(last->inum>the_one->inum)
{
//插入元素the_one
the_one->next=last;
pr->next=the_one;

last=end;//插入完成,將last移到最後。
end->next=NULL;//最後結點指針域置空,last->next為NULL,跳出循環
break;
}
}
printf("================================ ");
}

//2.查詢學生函數
voidCHECK()
{
Stu*target,*p;
intfond=0;
printf("================================ ");
printf("輸入要查找學生的學號: 學號:");
Create(target);
gets(target->cnum);
for(p=h->next;p;p=p->next)
{
if(!strcmp(p->cnum,target->cnum))
{
printf("學號為%s的學生信息:姓名(%s),分數(%.2f) ",p->cnum,p->name,p->score);
free(target);
fond=1;
}
}
if(!fond)
printf("WrongStudentNO.! ");
printf("================================ ");
}
//3.編輯學生
voidEDIT()
{
Stu*target,*p;
intfond=0;
printf("================================ ");
printf("輸入要編輯學生的學號: 學號:");
Create(target);
gets(target->cnum);
for(p=h->next;p;p=p->next)
{
if(!strcmp(p->cnum,target->cnum))
{
printf("學號為%s的學生信息:姓名(%s),分數(%.2f) ",p->cnum,p->name,p->score);
printf("請選擇修改項目: 1:姓名 2:分數 ");
charc;
c=getch();
switch(c)
{
case'1':
printf("輸入正確的姓名:");
gets(p->name);
break;
case'2':
printf("輸入最新成績:");
scanf("%f",&p->score);
break;
}
printf("學號為%s的學生最新信息:姓名(%s),分數(%.2f) ",p->cnum,p->name,p->score);

free(target);
fond=1;
}
}
if(!fond)
printf("NotExitThisNO.! ");
printf("================================ ");

}
//4.刪除學生
voidDELETE1()
{
voidPRINALL();
PRINALL();
Stu*target,*p,*pr;
intfond=0;
printf("================================ ");
printf("輸入要刪除學生的學號:(如果刪除所有學生信息,請輸入0000) 學號:");
Create(target);
gets(target->cnum);
target->inum=atoi(target->cnum);
// char*zero=&"0000";

if(!strcmp(target->cnum,"0000"))
{
h->next=NULL;
total=0;
}
else
{

for(pr=h,p=h->next;p;pr=pr->next,p=p->next)
{
if(!strcmp(p->cnum,target->cnum))
{
printf("學號為%s的學生信息已刪除 ",p->cnum);
free(target);
pr->next=p->next;
p->next=NULL;
// free(p);此句報錯
fond=1;
total--;
}
}
if(!fond)
printf("沒有找到學號為%s的學生,請確認學號輸入是否正確 ");
}
printf("================================ ");
}
//5.列印全部
voidPRINALL()
{
intamounts=1;
Stu*Op;
printf("================================ ");
printf("所有學生信息: ");
for(Op=h->next;Op;Op=Op->next)
printf("%d.%s,%s,%.2f ",amounts++,Op->cnum,Op->name,Op->score);
printf("================================ ");
}
//6.總人數
voidTOTAL()
{
printf("================================ ");
printf("學生總人數:%d ",total);
printf("================================ ");
}

//菜單函數
voidMenu()
{
charorder;
printf("================================ ");
printf("|1.添加學生.| ");
printf("|2.查詢學生.| ");
printf("|3.編輯學生.| ");
printf("|4.刪除學生.| ");
printf("|5.列印全部.| ");
printf("|6.總人數.| ");
printf("|7.退出.| ");
printf("================================ ");

order=getch();
system("cls");


switch(order)
{
case'1':
ADD();
break;
case'2':
CHECK();
break;
case'3':
EDIT();
break;
case'4':
DELETE1();
break;
case'5':
PRINALL();
break;
case'6':
TOTAL();
break;
case'7':
bExit=1;
break;
}
while(!bExit)
{
getch();
system("cls");
Menu();
}
}
voidmain()
{
//創建鏈表頭
Create(h);
pr=last=end=the_one=h;
the_one->next=NULL; Menu();
}

③ 編寫一個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;

}

(3)學生個人信息編碼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語言編寫姓名、學號、班級

#include<stdio.h>

struct st{//定義一個結構體

char a[11];//姓名

int b;//學號

int c;//班級

};

int main()

{

struct st s[111];//這是對結構體的引用;數組s的每一個單位都包含結構體中所有成員;

int n;

scanf("%d",&n);//n個學生;

for(int i=0;i<n;i++)

{

scanf("%s%d%d",s[i].a,&s[i].b,&s[i].c);//輸入n個學生的三個信息;

}

//中間還可以根據需求加入代碼,增加功能;

printf(" ");

for(int i=0;i<n;i++)

{

printf("姓名:%s 學號:%d 班級:%d ",s[i].a,s[i].b,s[i].c);//輸出信息;

}

return 0;

}

希望能幫到你,望採納;

⑤ c語言程序設計編程題目:請 :編寫完成對學生相關信息的要求:1.定義一個結構體類型student,其中包括三個成

#include <stdio.h>

#include <stdlib.h>

#define STU_NUM 10 /*宏定義學生的數量*/

struct student /*定義一個結構體用來存放學生學號、三門課成績、總分及平均成績*/

{

char stu_id[20]; /*學生學號;*/

float score[3]; /*三門課成績;*/

float total; /*總成績;*/

float aver; /*平均成績;*/

};

/*排序用一個函數來實現*/

void SortScore(student *stu,int n)

{

student stud;

for(int i = 0; i < n-1; i++)

for(int j = i+1 ; j < n; j++)

{

if(stu[i].total < stu[j].total)

{

stud = stu[i];

stu[i] = stu[j];

stu[j] = stud;

}

}

}

int main( )

{

student stu[STU_NUM]; /*創建結構體數組中有10個元素,分別用來保存這10個人的相關信息。*/

/*輸入這十個學生的相關信息*/

for(int i = 0; i<STU_NUM; i++)

{

printf("請輸入第%d個學生的學號:",i+1);

scanf("%s",&stu[i].stu_id);

printf("輸入第%d個學生的數學成績:",i+1);

scanf("%f",&stu[i].score[0]);

printf("輸入第%d個學生的英語成績:",i+1);

scanf("%f",&stu[i].score[1]);

printf("輸入第%d個學生的計算機成績:",i+1);

scanf("%f",&stu[i].score[2]);

stu[i].total = stu[i].score[0]+stu[i].score[1]+stu[i].score[2];

stu[i].aver = stu[i].total/3;

}

printf("\n");

SortScore(stu,STU_NUM);/*調用排序函數*/

/*輸出排序後的各學生的成績*/

for(i = 0 ; i < STU_NUM; i++)

{

printf("序號: %d\t",i);

printf("學號:%s\t",stu[i].stu_id);

printf("數學:%f\t",stu[i].score[0]);

printf("英語:%f\t",stu[i].score[1]);

printf("計算機:%f\t",stu[i].score[2]);

printf("平均成績:%f\t",stu[i].aver);

printf("總分:%f\t",stu[i].total);

printf("\n\n");

}

return 0;

}

註:(源程序中主要標識符含義說明)

#define STU_NUM 10 /*宏定義學生的數量*/

struct student /*定義一個結構體用來存放學生學號、三門課成績、總分及平均成績*/

{

char stu_id[20]; /*學生學號;*/

float score[3]; /*三門課成績;*/

float total; /*總成績;*/

float aver; /*平均成績;*/

}

⑥ c語言學生信息管理系統代碼

代碼如下:

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
typedef struct examinee //考生信息結構
{ char examno[20]; //准考證號
char name[10]; //姓名
char sex[4]; //性別
short age; //年齡
char examtype[10]; //報考科目
}ElemType;

typedef struct Node //定義鏈表結點
{
ElemType data; //數據域
struct Node *next; //指針域
}Node,*List,*position;

List make_empty( List L ); //創建一個帶頭結點的空表
int is_empty( List L ); //測試鏈表是否是空表
int is_last( position p, List L ); //測試當前位置是否是表尾
position make_node( position p,int n ); //創建結點並輸入考生信息
void put_information( position p ); //是否輸出該考生信息
void put_name_information( List L ); //輸出姓名為xx的考生信息
int put_pos_information( position p ); //輸出該地址考生信息
void link_to_tail( List L, position p ); //將結點連接到表尾
int ciculation_make(); //循環創建考生信息
int judge_put_all(); //是否輸出所有考生信息
void put_all(List L); //輸出所有考生信息。
position find( List L ); //查找第一個姓名為xx的元素並返回位置
position find_previous( List L ); //查找第一個姓名為xx的元素並返回該元素直接前驅的位置
//int judge_delete_val(); //詢問是否刪除考生數據
int delete_val( List L ); //刪除指定考生信息並輸出其信息
void menu(List L); //菜單函數
List L;
//position p;

int
main( void )
{
List L = NULL; //定義頭結點指針
position p = NULL; //定義表工作指針
L = make_empty( L ); //創建空表
printf(" ★★考生報名管理程序★★ ---------------------------------------- ");
menu(L);
return 0;
}

//創建一個帶頭結點的空表
List
make_empty( List L)
{
L = ( List ) malloc (sizeof( Node ));
if(NULL == L)
{
printf("內存分配失敗");
exit( 1 );
}
L->next = NULL;
//printf("空表創建成功。 ");
return L;
}

//創建結點並輸入考生信息
position
make_node( position p ,int n)
{
if(n) //n為1是創建結點並輸入,n為0是修改
{
p = ( position ) malloc ( sizeof ( Node ));
p->next = NULL ;
}
printf("請輸入考生准考證號:");
gets(p->data.examno);
printf("請輸入考生姓名:");
gets(p->data.name);
do
{
printf("請輸入考生性別,只能輸入「男」或者「女」:");
gets(p->data.sex);
}
while( 0 != strcmp( p->data.sex, "男" ) && 0 != strcmp( p->data.sex, "女" )); //判斷性別是否有誤
printf("請輸入考生年齡:");
scanf("%hd",&p->data.age);
getchar(); //如果把這句刪掉,就「無法執行」下面的報考類別
/*下面的do while用來判斷報考類別是否輸入有誤*/
do
{
printf("請輸入報考類別,只能輸入「數學」或「英語」或者「數據結構」:");
gets(p->data.examtype);
}
while( 0 != strcmp( "英語", p->data.examtype ) && 0 != strcmp( "數學", p->data.examtype ) && 0 != strcmp( "數據結構", p->data.examtype ));
if(n)
{
printf("報名成功 ");
}
else
{
printf("修改成功 ");
}
return p;
}

//前插法;
void
link_to_tail( List L, position p)
{
p->next = L->next;
L->next = p;
}

//查找第一個姓名為xx的元素並返回位置
position
find( List L )
{
position p = L->next;
char name[10];
printf("請輸入你要查找的考生姓名:");
gets(name);
while( p != NULL && 0 != strcmp( p->data.name , name))
{
p=p->next;
}
return p;
}

//測試鏈表是否是空表
int
is_empty( List L )
{
return L->next == NULL;
}

//測試當前位置是否是表尾
int
is_last( position p, List L )
{
return p->next == NULL;
}

//輸出姓名為xx的考生信息
void
put_name_information( List L )
{
position p = find(L);
if(p!=NULL)
{
printf("您要查找的考生信息: ");
printf("准考證號:%s 姓名:%s 性別:%s 年齡:%hd 報考科目:%s ",p->data.examno,p->data.name,p->data.sex,p->data.age,p->data.examtype);
}
else
{
printf("沒有您要找的學生。 ");
}

}

//循環創建考生信息
int
ciculation_make()
{
int n = 2;
do
{
printf("是否繼續創建考生信息?是請輸入「1」,不是請輸入「0」:");
scanf("%d",&n);
getchar();
}
while( n != 0 && n != 1);
return n;
}

//是否輸出考生信息
void
put_information( position p )
{
int n=2;
do
{
printf("是否輸出該考生信息?是請輸入「1」,不是請輸入「0」:");
scanf("%d",&n);
getchar();
}
while( n != 0 && n != 1);
if(n)
{
printf("准考證號:%s 姓名:%s 性別:%s 年齡:%hd 報考科目:%s ",p->data.examno,p->data.name,p->data.sex,p->data.age,p->data.examtype);
}
}


//是否輸出所有考生信息
int
judge_put_all()
{
int n = 2;
do
{
printf("是否輸出所有考生信息?是請輸入「1」,不是請輸入「0」:");
scanf("%d",&n);
getchar();
}
while( n != 0 && n != 1);
return n;
}

//輸出所有考生信息
void
put_all(List L)
{
if(L->next == NULL)
{
printf("現無考生報名! ");
}
else
{
position p=L->next;
while( p != NULL )
{
printf("准考證號:%s 姓名:%s 性別:%s 年齡:%hd 報考科目:%s ",p->data.examno,p->data.name,p->data.sex,p->data.age,p->data.examtype);
p=p->next;
}
}
//getchar();

}

//詢問是否刪除考生數據
int
judge_delete_val()
{
int n = 2;

do
{
printf("是否要刪除某個考生數據?是請輸入「1」,不是輸入「0」:");
scanf("%d",&n);
getchar();
}
while( n != 0 && n != 1);
return n;
}

//查找第一個姓名為xx的元素並返回其直接前驅的位置
position
find_previous( List L )
{
position q = L;
position p = L->next;
char name[10];
printf("請輸入你要查找的考生姓名:");
gets(name);
while( p != NULL && 0 != strcmp( p->data.name , name))
{
q=p;
p=p->next;
}
if( p != NULL )
{
return q;
}
else
return p;
}

//刪除指定考生信息並輸出其信息
int
delete_val(List L)
{
int n=2;
position q=NULL;
position p=find_previous( L ); //返回考生信息地址
if( NULL == p )
{
printf("你要刪除的考生不存在 ");
return 0;
}
else
{
q = p->next;
p->next = q->next;
printf("刪除成功。 刪除的考生信息為: ");
printf("准考證號:%s 姓名:%s 性別:%s 年齡:%hd 報考科目:%s ",q->data.examno,q->data.name,q->data.sex,q->data.age,q->data.examtype);
free(q);
return 1;
}

}

//輸出該地址考試信息
int
put_pos_information( position p )
{
if(p != NULL )
{
printf("准考證號:%s 姓名:%s 性別:%s 年齡:%hd 報考科目:%s ",p->data.examno,p->data.name,p->data.sex,p->data.age,p->data.examtype);
return 1;
}
else
{
printf("沒有您要查找的學生。");
return 0;
}
}
//菜單函數
void
menu(List L)
{
printf(" a. 考生報名入口 ");
printf(" b. 查詢考生信息 ");
printf(" c. 修改考生信息 ");
printf(" d. 刪除考生信息 ");
printf(" e. 全部考生信息 ");
printf(" f. 程序作者信息 ");
printf(" g. 退出程序 ");
char n='h';

while(n != 'g')
{
do //確定正確輸入
{
printf("請通過字母序號選擇功能:");
n = getchar();
getchar();
putchar(' ');
if( n < 'a' || n > 'g')
{
printf("錯誤的字母序號。 ");
}
}
while( n < 'a' || n > 'g' );
switch (n)
{
case 'a':
{
printf("請輸入報名考生信息: ");
position p = make_node( p, 1 ); //創建新結點
link_to_tail( L, p ); //將新結點連接到表上
put_information( p ); //是否輸出該考生信息
putchar(' ');
}
break;

case 'b':
{
put_name_information( L );
putchar(' ');
}
break;

case 'c':
{
int n=0;
position p = NULL;
printf("您正在進行修改操作。 ");
p = find(L);
n = put_pos_information( p );
if(n)
{
make_node( p , 0 );
put_information( p ); //是否輸出該考生信息
}
putchar(' ');
}
break;

case 'd':
{
printf("您正在進行刪除操作。 ");
delete_val( L );
putchar(' ');
}
break;

case 'e':
{
put_all( L );
putchar(' ');
}
break;

case 'f':
{
printf(" 修改日期 版本號 修改人 修改內容 ");
printf(" -------------------------------------------------------- ");
printf(" 2018.6.19 v2.0 陳百川 增加主菜單 ");
printf(" 2018.6.23 v3.0 陳百川 增加生成文件功能 ");
printf(" 該版本號為v2.0 ");
putchar(' ');
}
break;

default:
break;
}
}
printf(" 感謝本次使用,祝您生活愉快。");
getch();
}

(6)學生個人信息編碼c語言擴展閱讀:

C語言是一門通用計算機編程語言,廣泛應用於底層開發。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。

二十世紀八十年代,為了避免各開發廠商用的C語言語法產生差異,由美國國家標准局為C語言制定了一套完整的美國國家標准語法,稱為ANSI C,作為C語言最初的標准。[1]目前2011年12月8日,國際標准化組織(ISO)和國際電工委員會(IEC)發布的C11標準是C語言的第三個官方標准,也是C語言的最新標准,該標准更好的支持了漢字函數名和漢字標識符,一定程度上實現了漢字編程。

C語言是一門面向過程的計算機編程語言,與C++,Java等面向對象的編程語言有所不同。

其編譯器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。

參考資料:

網路——C語言

⑦ 用C語言編寫錄入學生信息(學號、性別、年齡、院系 )

//自己再添上性別 什麼的就行
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

#define _COURSES 3//定義科目數
#define _LEN sizeof(student)//定義結構體大小

//枚舉返回值情況
enum status
{
OVERFLOW = -1, //內存(溢出)問題
DONE = 0, //成功
NOFOUND = 1, //不存在
OPENFAIL = 2, //打開(文件)失敗
BACK = 3 //返回
};
//end

//定義學生信息結構體
typedef struct StudentInfo
{
//數據域
unsigned int num;//學號
char name[11];//姓名
float scores[_COURSES];//各科成績
//指針域
struct StudentInfo *next;//存放下一節點的地址
}student;
//end

student *head=NULL;//聲明鏈表頭結點
student *curr=NULL;//聲明指向當前節點的指針
int total = 0;//聲明當前節點個數

int init();//初始化鏈表
int add_stu();//添加新節點
int show_all();//顯示所有學生信息
int find_stu();//查找指定信息節點
int modify_stu();//修改指定信息節點
int remove_stu();//刪除指定信息節點
int sort_list();//對鏈表排序
int save_to_file();//將所有信息保存至文件
int read_from_file();//從文件中讀取信息
void about();//關於
int quit();//釋放所有節點空間

int entering(student *input);//錄入學生信息
void show_stu(student *show, int serial);//顯示指定學生信息
void start();//程序開始界面
void change(student *former, student *latter, student *temp);//交換兩個節點的數據域

void main()
{
int choice=0;
init();
while(1)
{
system("cls");
start();
printf("請選擇:");
scanf("%d",&choice);
fflush(stdin);//清空緩沖區
switch (choice)
{
case 1:
{
add_stu();
break;
}
case 2:
{ show_all();
break;
}
case 3:
{
find_stu();
break;
}
case 4:
{
modify_stu();
break;
}
case 5:
{
remove_stu();
break;
}
case 6:
{
sort_list();
break;
}
case 7:
{
save_to_file();
break;
}
case 8:
{
read_from_file();
break;
}
case 9:
{
about();
break;
}
case 0:
{
quit();
exit(0);
break;
}
default:{break;}
}
system("pause");
}
}

/*******************************************************/
/*功能: 初始化帶頭結點的鏈表,頭結點指針域置空 */
/* */
/*返回: */
/*******************************************************/
int init()
{
head = (student *)malloc(_LEN);//為頭結點申請空間
if (!head)
{//如果申請空間失敗,返回
return OVERFLOW;
}
head->next = NULL;//指向下一節點(空)
curr = head->next;//當前節點指針指向第一個結點
total = 0;//當前節點個數初始化為0(頭結點不計算在內)

return DONE;
}

/*******************************************************/
/*功能:頭插法添加新節點,並刷新學生人數 */
/* */
/*返回: */
/*******************************************************/
int add_stu()
{
student *add = (student *)malloc(_LEN);
curr = head->next;//當前節點指針指向第一個節點

printf("\t====當前已存入 %d 個同學\n",total);
printf("請輸入第 %d 個學生的信息\n",total+1);
if (BACK == entering(add))
{
free(add);
return BACK;
}

head->next = add;//頭結點指針域指向新建的節點
add->next = curr;//新建節點指針域指向第一個節點
curr = add; //當前節點指向新建的節點
total += 1; //更新學生總人數
return DONE;
}

/*******************************************************/
/*功能:顯示所有學生信息 */
/* */
/*返回: */
/*******************************************************/
int show_all()
{
if ( 0 == total )
{
printf("\t====沒有可供顯示的學生信息!\n");
return NOFOUND;
}

curr = head->next;//當前節點指針指向第一個節點

printf("\t%4s%12s%12s","序號","學號","姓名");
for (int m=0; m<_COURSES; m++)
{
printf("%7s","科目");
}
printf("\n");
printf("\t-------------------------------------------------------------\n");

for (int i=1; i<=total; i++)
{
show_stu(curr,i);
curr = curr->next;//當前節點指針後移
}
printf("\t-------------------------------------------------------------\n");

return DONE;
}

/*******************************************************/
/*功能:查找指定學生信息 */
/* */
/*返回: */
/*******************************************************/
int find_stu()
{
char stu_name[11];
int flag=1;
printf("請輸入要查找的學生姓名:");
scanf("%s",stu_name);
curr = head->next;//指向第一個節點
while (curr != NULL)
{
if (strcmp(stu_name,curr->name) == 0)
{
printf("\t%4s%12s%12s","序號","學號","姓名");
for (int m=0; m<_COURSES; m++)
{
printf("%7s","科目");
}
printf("\n");
printf("\t-------------------------------------------------------------\n");
show_stu(curr,flag);

return DONE;
}
curr = curr->next;
++flag;
}
printf("\t====沒有找到 %s !請仔細核對姓名再查找\n",stu_name);
return NOFOUND;
}

/*******************************************************/
/*功能:修改指定學生的所有信息 */
/* */
/*返回: */
/*******************************************************/
int modify_stu()
{
char stu_name[11];
int flag=1;
curr = head->next;//指向第一個節點
printf("請輸入要修改的學生的姓名:");
scanf("%s",stu_name);

while (curr != NULL)
{
if (strcmp(stu_name,curr->name) == 0)
{
printf("\t%4s%12s%12s","序號","學號","姓名");
for (int m=0; m<_COURSES; m++)
{
printf("%7s","科目");
}
printf("\n");
printf("\t-------------------------------------------------------------\n");
show_stu(curr,flag);

entering(curr);
printf("\t====成功修改了 %s 的所有信息!\n",stu_name);

return DONE;
}
curr = curr->next;
++flag;
}
printf("\t====沒有找到 %s !請仔細核對姓名\n",stu_name);
return NOFOUND;
}

/*******************************************************/
/*功能:刪除指定學生 */
/* */
/*返回: */
/*******************************************************/
int remove_stu()
{
student *pre=head;
char stu_name[11];
curr = head->next;//指向第一個節點
printf("請輸入要刪除的學生的姓名:");
scanf("%s",stu_name);

while (curr != NULL)
{
if (strcmp(stu_name,curr->name) == 0)
{
pre->next = curr->next; //
free(curr); //
--total; //
printf("\t====已成功刪除\"%s\"\n",stu_name);

return DONE;
}
pre = pre->next;
curr = curr->next;
}
printf("\t====沒有找到 %s !請仔細核對姓名\n",stu_name);
return NOFOUND;
}

/*******************************************************/
/*功能:對所有學生排序 */
/* */
/*返回: */
/*******************************************************/
int sort_list()
{
student *temp = (student *)malloc(_LEN);
student *curr_i = head->next;
student *curr_j = NULL;
char choice='0';

printf("\t \t1----按學號排序 .\t2----按姓名排序 . \n");
printf("\t \t3----按科目排序 .\t0----退 出 排 序. \n");
printf("請選擇:");
scanf("%c",&choice);
fflush(stdin);
switch (choice)
{
case '1':
{
while(curr_i->next != NULL)
{
curr_j = curr_i->next;
while (curr_j != NULL)
{
if (curr_i->num > curr_j->num)
{
change(curr_i,curr_j,temp);
}
curr_j = curr_j->next;
}
curr_i = curr_i->next;
}
printf("\t====排序成功!\n");
break;
}
case '2':
{
while(curr_i->next != NULL)
{
curr_j = curr_i->next;
while (curr_j != NULL)
{
if (strcmp(curr_i->name , curr_j->name) > 0)
{
change(curr_i,curr_j,temp);
}
curr_j = curr_j->next;
}
curr_i = curr_i->next;
}
printf("\t====排序成功!\n");
break;
}
case '3':
{
while(curr_i->next != NULL)
{
curr_j = curr_i->next;
while (curr_j != NULL)
{
if (curr_i->scores[0] < curr_j->scores[0])
{
change(curr_i,curr_j,temp);
}
curr_j = curr_j->next;
}
curr_i = curr_i->next;
}
printf("\t====排序成功!\n");
break;
}
case '0':
{
free(temp);
return BACK;
}
default:
{printf("\t====輸入有誤!\n");break;}
}
free(temp);
return DONE;
}

/*******************************************************/
/*功能:保存數據到文件 */
/* */
/*返回: */
/*******************************************************/
int save_to_file()
{
curr=head->next;
if (total == 0)
{
printf("\t====目前還沒有任何信息,不用保存!\n");
return BACK;
}

FILE *fp;
if((fp=fopen("record.dat","wb"))==NULL)
{
printf("\t====文件打開失敗!\n");
return OPENFAIL;
}
while (curr != NULL)
{
//將數據成塊寫入文件
fwrite((char *)curr, _LEN, 1, fp);
curr=curr->next;
}
fclose(fp);
printf("\t====信息已成功保存至文件\"record.dat\"文件中\n");

return DONE;
}

/*******************************************************/
/*功能:從文件中讀取數據 */
/* */
/*返回: */
/*******************************************************/
int read_from_file()
{
char judge='y';
FILE *fp;

if((fp=fopen("record.dat","r"))==NULL)
{
printf("文件不存在或者打開失敗!\n");
return OPENFAIL;
}
printf("\t====讀取文件會覆蓋當前信息!是否確定載入文件?(y/n):");
scanf("%c",&judge);
if (judge=='n' || judge=='N')
{
return BACK;
}

quit();//釋放以前所有信息的空間
init();//重新初始化鏈表
curr = head;//當前節點指針指向頭結點

student *add=(student *)malloc(_LEN);//申請空間存放讀取的信息

while (fread((char *)add, _LEN, 1, fp))
{//由於存儲的信息是最新的信息在前,所以讀取的時候將其添加在鏈表尾
add->next=curr->next;
curr->next=add;
curr=add;
add=(student *)malloc(_LEN);
++total;
}
fclose(fp);
printf("\t====文件載入成功!當前已有%d個學生。\n",total);

return DONE;
}

/*******************************************************/
/*功能: */
/* */
/*返回: */
/*******************************************************/
void about()
{
printf("\t#############################################################\n");
printf("\n\t \t歡迎各位用戶反饋Bug或提出寶貴的意見和建議 \n");
printf("\t \t聯系方式 \n");
printf("\t \t手 機:13667102098 \n");
printf("\t \tE-mail:[email protected] \n");
printf("\n\t \t\tC語言學生成績管理系統1.0版\n\n");
printf("\t#############################################################\n");
}

/*******************************************************/
/*功能:釋放內存 */
/* */
/*返回: */
/*******************************************************/
int quit()
{
curr =head->next;
student *temp=curr;
while(curr != NULL)
{
temp=curr->next;
free(curr);
curr=temp;
}
curr=NULL;
temp=NULL;
free(head);//釋放頭節點
return DONE;
}

//////////////////////////////////////////////////////////////////////////

/*******************************************************/
/*功能:錄入一個學生的全部信息 */
/* */
/*返回: */
/*******************************************************/
int entering(student *input)
{
printf("\n請輸入學生的學號(輸入0退出添加):");
scanf("%d",&input->num);
if (0 == input->num)
{
return BACK;
}

printf("請輸入學生的姓名(五個漢字以內):");
scanf("%s",&input->name);

printf("請輸入%d門科目的成績(用空格隔開):", _COURSES);
for (int i=0; i<_COURSES; i++)
{
scanf("%f",&input->scores[i]);
}

return DONE;
}

/*******************************************************/
/*功能:顯示指定學生的所有信息 */
/* */
/*返回: */
/*******************************************************/
void show_stu(student *show, int serial)
{
printf("\t%4d%12d%12s",serial,show->num,show->name);
for (int i=0; i<_COURSES; i++)
{
printf("%7.1f",show->scores[i]);
}
printf("\n");
}

/*******************************************************/
/*功能:根據許可權進入不同的界面 */
/* */
/*返回: */
/*******************************************************/
void start()
{
printf("\n");
printf("\t\t\t歡迎使用學生成績管理系統\n");
printf("\t*************************************************************\n");
printf("\t|\t1----添 加 學 生.\t2----顯 示 信 息. |\n");
printf("\t|\t3----查 找 學 生.\t4----修 改 信 息. |\n");
printf("\t|\t5----刪 除 學 生.\t6----學 生 排 序. |\n");
printf("\t|\t7----信 息 存 檔.\t8----讀 取 存 檔. |\n");
printf("\t|\t9----關 於.\t0----退 出. |\n");
printf("\t*************************************************************\n");
}

/*******************************************************/
/*功能: */
/* */
/*返回: */
/*******************************************************/
void change(student *former, student *latter,student *temp)
{
*temp = *former;

strcpy(former->name , latter->name);
strcpy(latter->name , temp->name);
former->num = latter->num;
latter->num = temp->num;
for (int i=0; i<_COURSES; i++)
{
former->scores[i] = latter->scores[i];
latter->scores[i] = temp->scores[i];
}
}

⑧ C語言 從鍵盤輸入10個學生信息(學號,姓名,年齡,性別)

#include<stdio.h>

void main()

{

struct

{

char name[10];

int num;

char sex[2];

int age;

}s[10];

int i;

for(i=0;i<10;i++)

{

printf("請依次輸入學生的姓名,學號,性別,年齡等信息");

scanf("%s%d%s%d",s[i].name,&s[i].num,s[i].sex,&s[i].age);

}

for(i=0;i<10;i++)

{

printf("姓名:%s 學號:%d 性別:%s 年齡:%d ",s[i].name,s[i].num,s[i].sex,s[i].age);

}

}

(8)學生個人信息編碼c語言擴展閱讀:

在C語言中,結構體(struct)指的是一種數據結構,是C語言中聚合數據類型(aggregate data type)的一類。結構體可以被聲明為變數、指針或數組等,用以實現較復雜的數據結構。

結構體同時也是一些元素的集合,這些元素稱為結構體的成員(member),且這些成員可以為不同的類型,成員一般用名字訪問。定義與聲明

結構體的定義如下,struct為結構體關鍵字,tag為結構體的標志,member-list為結構體成員列表,其必須列出其所有成員;variable-list為此結構體聲明的變數。

作用:

1,結構體和其他類型基礎數據類型一樣,例如int類型,char類型 只不過結構體可以做成你想要的數據類型。以方便日後的使用。

2,在實際項目中,結構體是大量存在的。研發人員常使用結構體來封裝一些屬性來組成新的類型。由於C語言內部程序比較簡單,研發人員通常使用結構體創造新的「屬性」,其目的是簡化運算。

3,結構體在函數中的作用不是簡便,其最主要的作用就是封裝。

參考資料來源:網路-結構體

⑨ 用c語言編寫學生基本信息(最好用結構體)拜託啦,急求!

在C語言中,可以使用結構體(Struct)來存放一組不同類型的數據。結構體的定義形式為:
struct 結構體名{
結構體所包含的變數或數組
};
結構體是一種集合,它裡麵包含了多個變數或數組,它們的類型可以相同,也可以不同,每個這樣的變數或數組都稱為結構體的成員(Member)。請看下面的一個例子:
struct stu{
char *name; //姓名
int num; //學號
int age; //年齡
char group; //所在學習小組
float score; //成績
};
stu 為結構體名,它包含了 5 個成員,分別是 name、num、age、group、score。結構體成員的定義方式與變數和數組的定義方式相同,只是不能初始化。
注意大括弧後面的分號;不能少,這是一條完整的語句。
結構體也是一種數據類型,它由程序員自己定義,可以包含多個其他類型的數據。

像 int、float、char 等是由C語言本身提供的數據類型,不能再進行分拆,我們稱之為基本數據類型;而結構體可以包含多個基本類型的數據,也可以包含其他的結構體,我們將它稱為復雜數據類型或構造數據類型。
結構體變數

既然結構體是一種數據類型,那麼就可以用它來定義變數。例如:
struct stu stu1, stu2;
定義了兩個變數 stu1 和 stu2,它們都是 stu 類型,都由 5 個成員組成。注意關鍵字struct不能少。

stu 就像一個「模板」,定義出來的變數都具有相同的性質。也可以將結構體比作「圖紙」,將結構體變數比作「零件」,根據同一張圖紙生產出來的零件的特性都是一樣的。

你也可以在定義結構體的同時定義結構體變數:
struct stu{
char *name; //姓名
int num; //學號
int age; //年齡
char group; //所在學習小組
float score; //成績
} stu1, stu2;
將變數放在結構體定義的最後即可。

如果只需要 stu1、stu2 兩個變數,後面不需要再使用結構體名定義其他變數,那麼在定義時也可以不給出結構體名,如下所示:
struct{ //沒有寫 stu
char *name; //姓名
int num; //學號
int age; //年齡
char group; //所在學習小組
float score; //成績
} stu1, stu2;
這樣做書寫簡單,但是因為沒有結構體名,後面就沒法用該結構體定義新的變數。

理論上講結構體的各個成員在內存中是連續存儲的,和數組非常類似,例如上面的結構體變數 stu1、stu2 的內存分布如下圖所示,共佔用 4+4+4+1+4 = 17 個位元組。

但是在編譯器的具體實現中,各個成員之間可能會存在縫隙,對於 stu1、stu2,成員變數 group 和 score 之間就存在 3 個位元組的空白填充(見下圖)。這樣算來,stu1、stu2 其實佔用了 17 + 3 = 20 個位元組。

關於成員變數之間存在「裂縫」的原因,我們將在《C語言和內存》專題中的《C語言內存對齊,提高定址效率》一節中詳細講解。
成員的獲取和賦值

結構體和數組類似,也是一組數據的集合,整體使用沒有太大的意義。數組使用下標[ ]獲取單個元素,結構體使用點號.獲取單個成員。獲取結構體成員的一般格式為:
結構體變數名.成員名;
通過這種方式可以獲取成員的值,也可以給成員賦值:
#include <stdio.h>
int main(){
struct{
char *name; //姓名
int num; //學號
int age; //年齡
char group; //所在小組
float score; //成績
} stu1;
//給結構體成員賦值
stu1.name = "Tom";
stu1.num = 12;
stu1.age = 18;
stu1.group = 'A';
stu1.score = 136.5;
//讀取結構體成員的值
printf("%s的學號是%d,年齡是%d,在%c組,今年的成績是%.1f!\n", stu1.name, stu1.num, stu1.age, stu1.group, stu1.score);
return 0;
}
運行結果:
Tom的學號是12,年齡是18,在A組,今年的成績是136.5!

除了可以對成員進行逐一賦值,也可以在定義時整體賦值,例如:
struct{
char *name; //姓名
int num; //學號
int age; //年齡
char group; //所在小組
float score; //成績
} stu1, stu2 = { "Tom", 12, 18, 'A', 136.5 };
不過整體賦值僅限於定義結構體變數的時候,在使用過程中只能對成員逐一賦值,這和數組的賦值非常類似。

⑩ C語言結構體---查找學生信息

struct student
{
char NO[2];
char name[9];
int chinese;
int math;
};

main函數:char name[10];
兩個地方的name長度不一。如果運行輸入9個字元,struct 裡面的name就沒有結尾的'\0'
兩個name要定義足夠長,並且等長。