?
?
struct student
{
char name[10];
char sex[5];
long int num;//學號
int xuhao;
int age;
float score[3];
float averange;
char DJ;//存放等級哦
struct student *next;};//定義結構體變量保存 名字 性別 年齡 成績] 結構體聲明int n;//存放學生人數int man;//存放統計的男生數float JY(float a)//校驗成績使范圍0-100
{
int n=0;
while(1)
{if(a>100||a<0)
{
printf(" 輸入成績有誤,范圍應該0-100,請重新輸入:");
scanf("%f",&a);
n=n+1;
}
else
{return a;
}
}
}
struct student *creat(void)// 創建一個結構體返回鏈表的指針
{
int sexJY(char *sex);
struct student *head;//頭指針
struct student *p1,*p2; // 其他指針
int mm;
int m=1;
n=0;
p1=p2=(struct student *)malloc(LG); // 開辟內存空間
// printf("輸入第%d個同學的基礎信息,并求出2個同學的語文平均成績。\n",i+1);
printf("請先輸入學號(輸入0退出錄入)\n");
printf(" ");
p1->xuhao=m;
m++;
scanf("%ld",&p1->num);
if(p1->num!=0)
{
printf(" 請輸入您的姓名\n");
printf(" ");
scanf("%s",&p1->name);
printf(" 你好,%s!",p1->name);
printf("請輸入您的性別male or female\n");
//mm=sexJY((char*)p1->sex);//char **類型與char *類型不兼容 需要強制轉換為char*類型
printf(" ");
scanf("%s",&p1->sex);
// mm=sexJY(p1->sex);
mm=sexJY((char*)p1->sex);//char **類型與char *類型不兼容 需要強制轉換為char*類型
if(mm==1)
{printf(" 請輸入三科成績,(語文成績,數學成績,外語成績)\n");
printf(" 第一科的成績是:");
scanf("%f",&p1->score[0]);
p1->score[0]=JY(p1->score[0]);//校驗第一科的成績
printf(" 第二科的成績是:");
scanf("%f",&p1->score[1]);
p1->score[1]=JY(p1->score[1]);//校驗第二科的成績
printf(" 第三科的成績是:");
scanf("%f",&p1->score[2]);
p1->score[2]=JY(p1->score[2]);//校驗第三科的成績
printf(" 錄入完畢\n");
printf("-----------------------------------------------------------------------------------------------------------------\n");
}
}
//scanf("%d,%f,%f",&p1->num,&p1->score[0],&p1->score[1]);
head=NULL;
//head 為空
while(p1->num!=0)//如果成員的學號不是0則創建鏈表函數
{
n=n+1;//
if(n==1)
{
head=p1; //如果n=1 則把結構體的頭指針給它
}
else
p2->next=p1;//否則把第二個指針指向第一個指針的末尾p2=p1;//調整p2指針的指向 指向p1
p1=(struct student *)malloc(LG);
printf("請先輸入學號(輸入0退出錄入)\n");
printf(" ");
p1->xuhao=m;
m++;
scanf("%ld",&p1->num);
if(p1->num!=0)
{
printf(" 請輸入您的姓名\n");
printf(" ");
scanf("%s",&p1->name);
printf(" 你好,%s!",p1->name);
printf("請輸入您的性別male or female\n");
printf(" ");
scanf("%s",&p1->sex);
mm=sexJY((char*)p1->sex);//char **類型與char *類型不兼容 需要強制轉換為char*類型
if(mm==1)
{printf(" 請輸入三科成績,(語文成績,數學成績,外語成績)\n");
printf(" 第一科的成績是:");
scanf("%f",&p1->score[0]);
p1->score[0]=JY(p1->score[0]);//校驗第一科的成績
printf(" 第二科的成績是:");
scanf("%f",&p1->score[1]);
p1->score[1]=JY(p1->score[1]);//校驗第二科的成績
printf(" 第三科的成績是:");
scanf("%f",&p1->score[2]);
p1->score[2]=JY(p1->score[2]);//校驗第三科的成績
printf(" 錄入完畢\n");
printf("-----------------------------------------------------------------------------------------------------------------\n");
}
}
}
p2->next=NULL;
return (head);
}結構體鏈表創建void body()
{
/*
char stCmd[128];
sprintf("mode con cols=%d lines=%d", height, width);
system(stCmd);動態設置窗體大小
*/
system("mode con cols=120 lines=40");
//system("color f4");
printf("\n ----------------------------------------------- 學生成績管理系統-----------------------------------------------\n");
printf("\n");
printf("\n");
printf(" ===========================\n");
printf(" = 請先輸入數據 =\n");
printf(" ===========================\n");
printf(" 請輸入學生的信息,包含姓名、性別、年齡 、語文成績、數學成績、外語成績。\n \n \n");
printf(" ---------------------------------------------------------------------------------------------------------------\n ");
printf("\n");
}
void body2()
{
printf("\n ----------------------------------------- 學生成績管理系統-----------------------------------------------\n");
printf("\n");
printf("\n");
printf(" ==========================\n");
printf(" = 歡迎 =\n");
printf(" 該系統共有%d個學生\n",n);
printf(" ===========================\n");
}
int showdata(struct student *head)//功能界面,
{
struct student *p;
int sexJY(char *sex);//性別校驗函數
struct student *del(struct student *head);
struct student *del2(struct student *head);//刪除功能2
int search(struct student *head,long int i);//查找功能
void print1(struct student *head);//打印功能1
void print2(struct student *head);//打印功能2
void print3(struct student *head);//打印功能3
void cont(struct student *head);//計算功能1
void change1(struct student*head);
//void change1(struct student*head, long int i)//修改功能
struct student *add(struct student *head);//插入數據
struct student*nsert(struct student *head);
// void destroy1(struct student *head);//摧毀鏈表
int TJ(struct student *head);//男生計算功能
int i;//存放學生編號
int iii;//存放選擇顯示參數
int j;//存放選擇參數
int o;//選擇顏色參數
long int ii;//存放需要修改的學生編號
long int jj;//存放需要查找的學生編號
char a;
p=head;while(1)
{
body2();printf("\n");
printf("\n");
printf("\n---------- 學生成績管理系統------------\n");
printf("\n");
printf(" 1 ======================\n");
printf(" = 主菜單 =\n");
printf(" ======================\n");
printf("\n");
printf(" 請根據需要選擇操作\n");
printf("\n");
printf(" 選擇查詢的方式\n");
printf(" (0)創建一個鏈表 \n");//完成
printf(" (1)增加一個同學信息 \n");//完成
printf(" (2)刪除一個同學信息 \n");//完成
printf(" (3)修改一個學生信息 \n");//完成
printf(" (4)計算學生的三科平均分并且給予等級 \n");//完成
printf(" (5)顯示所有學生的信息 \n");//完成
printf(" (6) 設置系統背景 \n");//完成
printf(" (7) 查找一個同學的信息 \n");//完成
printf(" (8) 統計男生的人數\n");
printf(" (9) 局部顯示所有學生的信息\n");
// printf(" (10) 刪除所有的學生成績并重新錄入\n");
printf(" 請選擇1-9\n");scanf("%d",&j);//選擇不同的功能
if(j>=0&&j<=10)
{
switch(j)
{case 0:
p=creat();
_sleep(5000);
system("cls");//清屏操作
break;//彈出 case 1:
nsert(p);
_sleep(5000);
system("cls");//清屏操作
break;
case 2:
del(p);
_sleep(5000);
system("cls");
break;
case 3:
print3(p);
change1(p);
break;
// change1(p,ii);
system("cls");
break;
case 4:
cont(p);
//rank(stu);
_sleep(5000);
system("cls");
break;
case 5:
print3(p);
_sleep(5000);
break;
case 6:
printf("請選擇顏色\n");
printf("(1)天藍色");
printf("(2)紅色");
printf(" (3) 白色 ");
printf(" (4) 亮白色 ");
printf(" (5)綠色 ");
scanf("%d",&o);
switch(o)
{
case 1:
system("color 0B");
break;
case 2:
system("color 0C");
break;
case 3:
system("color 07");
break;
case 4:
system("color 0F");
break;
case 5:
system("color 0A");
break;
default://其他值均為默認
system("color 07");
break;
}
break;
case 7:
printf("請輸入要查找的學生學號");
scanf("%ld",&jj);
search(p,jj);
_sleep(5000);
break;
case 8:
TJ(p);//計算男生人數
_sleep(5000);
break;
case 9:
showdata2(p);
// _sleep(5000);
break;
/* case 10://摧毀鏈表
destroy1(p);
break;
*/}
}
else
{
printf("輸入錯誤\n");
_sleep(3000);
system("cls");}
}}
int showdata2(struct student *head)
{struct student *p;
int sexJY(char *sex);//性別校驗函數
struct student *del(struct student *head);
struct student *del2(struct student *head);//刪除功能2
int search(struct student *head,long int i);//查找功能
void print1(struct student *head);//打印功能1
void print2(struct student *head);//打印功能2
void print3(struct student *head);//打印功能3
void cont(struct student *head);//計算功能1
void change1(struct student*head);
struct student *add(struct student *head);//插入數據
struct student*nsert(struct student *head);
int TJ(struct student *head);//男生計算功能
int iii;//存放學生的查詢參數
p=head;
system("cls");//清屏
printf(" 1 ======================\n");
printf(" = 副菜單 =\n");
printf(" ======================\n");
printf(" 選擇查詢的方式\n");
printf("\n 1.顯示所有學生的成績\n");
printf("\n 2.顯示所有學生的學號性別\n");
printf("\n 3.顯示所有學生的所有信息\n");
printf(" 請選擇1-3\n");
scanf("%d",&iii);switch (iii)
{
case 1:
print1(p);
_sleep(5000);
break;
case 2:
print2(p);
_sleep(5000);
break;
case 3:
print3(p);
_sleep(5000);
break;
default:
printf("輸入錯誤\n");
break;
}return 0;}//二級菜單
void print1(struct student *head)
{
struct student *p;
p=head;
printf("------------------------------------------------------------------------------------------------------------------\n");
do
{
printf("\n 姓名:%s,學號%d,%s\n\n",p->name,p->num,p->sex);//姓名,學號
p=p->next;
}while(p!=NULL);
}//不同顯示數據的方式 第一種
void print2(struct student *head)//顯示所有學生的成績
{
struct student *p;
p=head;
printf("------------------------------------------------------------------------------------------------------------------\n");
do
{
printf("\n\n 姓名%s,語文:%3.1f,數學:%3.1f,外語:%3.1f\n",p->name,p->score[0],p->score[1],p->score[2]);
p=p->next;
}while(p!=NULL);
}//不同顯示數據的方式 第二種
void print3(struct student *head)
{
float a;
struct student *p;
p=head;printf("------------------------------------------------------------------------------------------------------------------------------------------");
while(p!=NULL)
{printf("\n\n序號 %d 學號 %ld 姓名:%s 性別: %s 語文: %3.1f 數學:%3.1f 外語:%3.1f",p->xuhao,p->num,p->name,p->sex,p->score[0],p->score[1],p->score[2]);//姓名,性別
a=p->score[0]+p->score[1]+p->score[2];
printf(" 總分:%3.1f",a);
printf(" 等級%c\n",p->DJ);
p=p->next;
}
}
int passwd(char *name, char *pwd)
{
int u = 0;
if (strcmp(name, "root") == 0 && strcmp(pwd, "123456") == 0)
{
u =1;
return u;
}
else if (strcmp(name, "1") == 0 && strcmp(pwd, "1") == 0)
{
u = 1;
return u;
}
return 0;
}//密碼校驗函數 傳遞兩個字符數組,一個賬號,一個密碼。
void change1(struct student*head)
{
long int i;
struct student *p;
p=head;//定義指針printf("輸入想要修改的學生的學號:\n");
scanf("%ld",&i);
//printf("%ld",p->num);do
{
//printf("test1");
if(p->num==i)//當結點跳轉到該學生時修改成績
{printf("開始修改信息\n");
printf("請先輸入學號\n");
printf(" ");scanf("%ld",&p->num);
if(p->num!=0)
{
printf(" 請輸入您的姓名\n");
printf(" ");
scanf("%s",&p->name);
printf(" 你好,%s!",p->name);
printf("請輸入您的性別male or female\n");printf(" ");
scanf("%s",&p->sex);
printf(" 請輸入三科成績,(語文成績,數學成績,外語成績)\n");
printf(" 第一科的成績是:");
scanf("%f",&p->score[0]);
p->score[0]=JY(p->score[0]);//校驗第一科的成績
printf(" 第二科的成績是:");
scanf("%f",&p->score[1]);
p->score[1]=JY(p->score[1]);//校驗第二科的成績
printf(" 第三科的成績是:");
scanf("%f",&p->score[2]);
p->score[2]=JY(p->score[2]);//校驗第三科的成績
printf(" 錄入完畢\n");
printf("-----------------------------------------------------------------------------------------------------------------\n");
break;
}
p=p->next;//需要把下一個結點賦值給p}} while(p->next!=NULL);}
void cont(struct student *head)
{
struct student *p;
int i=0;
p=head;
printf("------------------------------------------------------------------------------------------------------------------\n");
printf("----------------------------------------計算中----------------------------------------\n");
do{
p->averange=((p->score[0])+(p->score[1])+(p->score[2]))/3.0;
printf("第%d同學的成績為%3.1f",i+1,p->averange);if(p->averange>=90&&p->averange<=100)
{ printf(" 等級為A\n",i+1);
p->DJ='A';
}
if(p->averange>=60&&p->averange<=89)
{printf(" 等級為B\n",i+1);
p->DJ='B';
}
if(p->averange>=0&&p->averange<=60)
{printf(" 等級為C\n",i+1);
p->DJ='C';
}
if(p->averange>100||p->averange<0)
{printf(" incorrect\n");
}i=i+1;
p=p->next;}while(p!=NULL);}
int search(struct student *head,long int i)//通過學號來查找學生的信息
{
struct student *p;
p=head;
while(p->next!=NULL)//遍歷鏈表結點
{
if(i==p->num)
{
printf("\n\n學號 %ld 姓名:%s 性別: %s 語文: %3.1f 數學:%3.1f 外語:%3.1f 等級%c\n",p->num,p->name,p->sex,p->score[0],p->score[1],p->score[2],p->DJ);
return 0;
}p=p->next;
}printf("無該生信息\n");
return 0;}
struct student *del(struct student *head)//鏈表怎么刪除結點并鏈接 刪除序號為多少的學生的成績 定義一個結構體指針
{
int i,j;
struct student *p1,*p2;//定義兩個結構體指針
p1=head;//
p2=head;//p2指針依然指向head
printf("刪除第幾個節點的數據\n");
scanf("%d",&i);//獲得節點數據
for(j=1;j<i;j++)
{
p2=p1;//p2指向p1
p1=p1->next;//p1向后移動一個表
}
//此時指向刪除數據的上一個位置
if(p1==head)//如果此時依然指向鏈表的頭 則鏈表向后移動一位
{// head=p1->next;//則通過p1向后一移動一位,鏈表向后移動了一位但是指針沒動
head = p1->next;//邏輯完全正確啊
// free(p1);
printf("當前正在刪除一個結點數據\n");//return head;
}
else//否則
{
p2->next=p1->next;//把p1指針指向下一個數據給p2指針指向下一個位置 這句話的意思是向后移動一位指針。
//把p1指針指向下一個數據給p2指針指向下一個位置 這句話的意思是向后移動一位指針。}while(head!=NULL)
{
printf("\n\n序號 %d 學號 %ld 姓名:%s 性別: %s 語文: %3.1f 數學:%3.1f 外語:%3.1f",head->xuhao,head->num,head->name,head->sex,head->score[0],head->score[1],head->score[2]);//姓名,性別
// a=p->score[0]+p->score[1]+p->score[2];
//printf(" 總分:%3.1f",a);
printf(" 等級%c\n",head->DJ);
head=head->next;
} //刪除第二行數據,之后的鏈條直接中斷需要把鏈條接上
free(p1);//釋放
n=n-1;
printf("\n**********刪除中 稍后*********\n");return head;//返回}
/*struct student *del2(struct student *head)//鏈表怎么刪除結點并鏈接 刪除序號為多少的學生的成績 定義一個結構體指針
{ int i,j;
struct student *p1,*p2;
p1=head;
p2=head;//把p1 p2都指向head
printf("選擇刪除序號為多少的學生數據");
scanf("%d",&i);//獲得學號
for(j=1;j<i;j++)
{
p2=p1;//把p2指針指向p1
p1=p1->next;//把p1指針往后挪 直到指向指定數據的上一個數據
}
if(p1==head)
{
head=p1->next;
}
free(p1);}*/
/*struct student *add(struct student *head)
{
struct student *p1,*p2;
int i,j;
int m;
p1=head;//尾插
p2=head;//p2指針依然指向headdo
{p1=p1->next;}while(p1==NULL);
p1=(struct student *)malloc(LG);//開辟內存空間,
/*printf("請先輸入學號\n");
printf(" ");
("%ld",&p1->num);
if(p1->num!=0)
{
printf(" 請輸入您的姓名\n");
printf(" ");
scanf("%s",&p1->name);
printf(" 你好,%s!",p1->name);
printf("請輸入您的性別male or female\n");printf(" ");
scanf("%s",&p1->sex);
printf(" 請輸入三科成績,(語文成績,數學成績,外語成績)\n");
printf(" 第一科的成績是:");
scanf("%f",&p1->score[0]);
p1->score[0]=JY(p1->score[0]);//校驗第一科的成績
printf(" 第二科的成績是:");
scanf("%f",&p1->score[1]);
p1->score[1]=JY(p1->score[1]);//校驗第二科的成績
printf(" 第三科的成績是:");
scanf("%f",&p1->score[2]);
p1->score[2]=JY(p1->score[2]);//校驗第三科的成績
printf(" 錄入完畢\n");
printf("-----------------------------------------------------------------------------------------------------------------\n");}
//scanf("%d,%f,%f",&p1->num,&p1->score[0],&p1->score[1]);
n=n+1;return head;}//插入數據函數
*/
struct student*nsert(struct student *head)
{
struct student *p1,*p,*q;
int i = 1;
int jj;
int mm;
int nn;printf("要插入的位置(尾插)1-%d:",n);
scanf("%d",&jj);//所要插入第幾位學生信息
if(jj>=1&&jj<=n)
{p = head->next ;
p1 = (struct student *)malloc(sizeof(struct student));
printf("請先輸入學號(輸入0退出錄入)\n");
printf(" ");
scanf("%ld",&p1->num);
if(p1->num!=0)
{
p1->xuhao=jj+1;
printf(" 請輸入您的姓名\n");
printf(" ");
scanf("%s",&p1->name);
printf(" 你好,%s!",p1->name);
printf("請輸入您的性別male or female\n");printf(" ");
scanf("%s",&p1->sex);
mm=sexJY((char*)p1->sex);//char **類型與char *類型不兼容 需要強制轉換為char*類型
if(mm==1)
{
printf(" 請輸入三科成績,(語文成績,數學成績,外語成績)\n");
printf(" 第一科的成績是:");
scanf("%f",&p1->score[0]);
p1->score[0]=JY(p1->score[0]);//校驗第一科的成績
printf(" 第二科的成績是:");
scanf("%f",&p1->score[1]);
p1->score[1]=JY(p1->score[1]);//校驗第二科的成績
printf(" 第三科的成績是:");
scanf("%f",&p1->score[2]);
p1->score[2]=JY(p1->score[2]);//校驗第三科的成績
printf(" 錄入完畢\n");
n=n+1;//系統學生數自增1
printf("-----------------------------------------------------------------------------------------------------------------\n");
}
}if(1 == jj)
{
struct student*q = head->next ;
head->next = p1;
p1 ->next = q;
}
else
while( p )
{
if(i == (jj-1))
{
struct student*q = p->next ;
p->next = p1;
p1->next = q;
}
p = p->next ;
i++;
}return p;}
else
{
printf("\n---------錄入錯誤---------\n");
printf("請重試\n");
return head;
}
}
int sexJY2(char *sex)
{
int u = 0;
if (strcmp(sex, "male") == 0)
{
u =1;
return u;
}
return 0;
}
int sexJY(char *sex)
{
int u = 0;
while(1)
{
if (strcmp(sex, "male") == 0 || strcmp(sex, "female") == 0)
{
u =1;
return u;
}
else
{
printf("性別錯誤請重新輸入\n");
scanf("%s",sex);}
}
}
int TJ(struct student *head)
{
int sexJY2(char *sex);
int mm;
int nn;
struct student *p;
p=head;
do
{
nn=sexJY((char*)p->sex);//強制轉換if(nn==1)
{
man++;
}p=p->next;//一直向下指直到}while(p!=NULL);printf("\n男生人數為:%d\n",man);
return 0;
}//遍歷整個鏈表 計算男生的人數
int in()
{int i,j;
int m;
int n=0;//如果密碼輸入錯誤三次則跳出循環
char user[20]={'0'};
char pas[20]={'0'};
char aa[20]={' ','U','s','e','r',' ','N','a','m','e',':'};//輸出賬號登陸
char bb[20]={' ','P','a','s','s','w','o','r','d',':'};
system("mode con cols=45 lines=15");
while(1)
{
printf("\n");
for(i=0;i<12;i++)
{
printf("%c",aa[i]);
_sleep(50);}
//printf(" User Name:");
gets(user);//輸入賬號
for(i=0;i<10;i++)
{
printf("%c",bb[i]);
_sleep(50);}
gets(pas);//如何隱藏輸入的密碼 安全性getch(); printf("*");
m=passwd(user,pas);
if(m==1)
{
return m;
}
else
{
n++;
printf("incorrect please try again\n");
if(n==3)
{
system("color 04");
system("cls");
while(1)
{
printf("快滾出老子的魔仙堡!!!!\n");
_sleep(1000);
}
return 0;
}
}
}
}
/*
struct student *add2(struct student *head)
{
int i;//存放選擇參數
struct student *p1,*p2;
p1=(struct student *)malloc(LG);
p1=head;
scanf("%d".&i);//輸入要插入的地點
{
printf("請先輸入學號(輸入0退出錄入)\n");
printf(" ");
p1->xuhao=m;
m++;
scanf("%ld",&p1->num);
if(p1->num!=0)
{
printf(" 請輸入您的姓名\n");
printf(" ");
scanf("%s",&p1->name);
printf(" 你好,%s!",p1->name);
printf("請輸入您的性別male or female\n");
//mm=sexJY((char*)p1->sex);//char **類型與char *類型不兼容 需要強制轉換為char*類型
printf(" ");
scanf("%s",&p1->sex);
// mm=sexJY(p1->sex);
mm=sexJY((char*)p1->sex);//char **類型與char *類型不兼容 需要強制轉換為char*類型
if(mm==1)
{printf(" 請輸入三科成績,(語文成績,數學成績,外語成績)\n");
printf(" 第一科的成績是:");
scanf("%f",&p1->score[0]);
p1->score[0]=JY(p1->score[0]);//校驗第一科的成績
printf(" 第二科的成績是:");
scanf("%f",&p1->score[1]);
p1->score[1]=JY(p1->score[1]);//校驗第二科的成績
printf(" 第三科的成績是:");
scanf("%f",&p1->score[2]);
p1->score[2]=JY(p1->score[2]);//校驗第三科的成績
printf(" 錄入完畢\n");
printf("-----------------------------------------------------------------------------------------------------------------\n");
}
} if(i==1)
{
head=p1->next;//把頭指針想后移動 }
for(j=0;j<i;j++){p2=p2->next;
if(p2==NULL)
{
return head;} } else
{p3=p2->next;
p2->next=p1
p1->next=p3;//重構 }}
*/
#define LG sizeof(struct student)
#define M 10
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<windows.h>
#include"xyf.h"int main(void )
{struct student *p;int m=0;//注意要修改回來//system("cls"); m=in();//密碼校驗if(m==1){system("color 07");body();//data(p);p=creat();showdata(p);// showdata(p);}else{return 0;}_sleep(10000);return 0;}
/*增加一個同學信息
刪除一個同學信息
修改一個學生信息
查找一個學生信息(按姓名、按學號)
等級計算
統計男生人數
顯示學生信息(局部或全部)
學生成績管理系統
要求:定義學生結構體數據類型。在此類型中,應該包括三個成員變量(學號、姓名、成績)。定義個學生數組保存學生的信息。用一個變量來記錄學生人數。添加學生的信息。顯示學生的信息。刪除學生的信息。查找學生的信息,根據姓名。統計學生的信息。第一步:菜單界面設計
提示:
1、程序功能的展示:輸出語句2、提供用戶選擇功能的接口:輸入語句3、對用戶輸入的范圍校驗:if結構4、對用戶選擇的響應:switch結構5、單個函數頭的定義第二步:
1、結構體構造(函數外面的地方)
2、設計輸入函數,實現一個信息的輸入;
3、設計輸出函數,實現一個信息的輸出。4、提示:變量的定義位置,解決數據共享問題。
方法一:定義在主函數中,通過函數參數傳遞的方式進行。方法二:定義為全局變量,實現數據的共享(變量的作用域)程序結構:
//引入頭文件
include//函數原型聲明
void add();//結構體定義(構造)
struct A{……};//主函數定義
int main()
{}//子函數定義
void add()
{……}第三步:采用數組解決全班信息的存儲、顯示問題1、采用宏定義的方式聲明學生人數
2、定義數組,定義數組的數組下標采用宏定義符號
struct stu s[N];
for(int i=0;i<N;i++)
{//單個數據輸入代碼
}3、對數組操作,顯示全班信息第四步:結構體變量定義在主函數中,通過函數參數傳遞的方式進行數據共享。
1、一個數據的處理
main()
{……struct stu s; //結構體變量的定義sr(&s); //實參傳遞……
}//單個數據輸入函數
void sr(struct stu * x)
{ //對形參變量x賦值 scanf("%d",&(*x).xh);scanf("%d",&(x->xh));
}2、多個數據的處理
main()
{……struct stu s[10]; //結構體變量的定義for(i=0;i<10;i++)sr(&s[i]); //實參傳遞……
}//單個數據輸入函數
void sr(struct stu * x)
{ //對形參變量x賦值 scanf("%d",&(*x).xh);scanf("%d",&(x->xh));
}
*/
/*
/*1、聲明一個結構體類型student,包含姓名、性別、年齡、語文成績、數學成績、外語成績等成員。
2、編寫程序:輸入2個同學的基礎信息,分別求出2個同學的語文平均成績。
3、編寫程序:輸入10個同學的基礎信息,顯示同學的基礎信息。
4、設計多個顯示功能函數:
(1)顯示學生的姓名、性別
(2)顯示學生的姓名、年齡
(3)顯示學生的姓名、總分
編寫程序:讓用戶有選擇的查看10位同學的信息。
5、給結構體類型student新增成員:等級
設計等級測試函數:根據3科平均分計算出學生等級(A:100-90; B:89-60; C:60-0)
編寫程序:讓用戶有選擇的使用系統功能。
6、學生管理系統
7.鏈表+指針
學生成績管理系統*/
/*在dev 下測試可以運行 在vs2012下測試可以運行*/