c語言學生管理系統鏈表(dev vs2012下可以運行)

?

?

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下測試可以運行*/

  

轉載于:https://www.cnblogs.com/a986771570/p/6995448.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/370371.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/370371.shtml
英文地址,請注明出處:http://en.pswp.cn/news/370371.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python 東哥 with open_python 連接redis cluster

#!/usr/bin/env python# encoding: utf-8#author: 東哥加油!#file: clear_pool.py#time: 2018/8/28 17:06from rediscluster import StrictRedisClusterimport datetimeimport sysdef redis_cluster():redis_nodes [{host:192.168.15.6,port:6379},{host:192.168.15.7,port:63…

go gcc

http://www.cnblogs.com/zkweb/p/7880099.html轉載于:https://www.cnblogs.com/thrillerz/p/7958446.html

抽象工廠設計模式解釋

抽象工廠設計模式是工廠設計模式的另一種形式。 這種模式可以被視為“超級工廠”或“工廠工廠”。 抽象工廠設計模式&#xff08;屬于“四人幫”的一部分&#xff09;屬于“創新設計模式”類別&#xff0c;它提供了一種封裝一組具有公共鏈接的工廠的方法&#xff0c;而無需突出…

app賬號退不出去_最新!多交的稅可以退,同學,你今天退稅了嗎?

4.3 號 更新。1、有知友留言&#xff0c;已經收到退稅了。2、部分地區陸續開放申報了&#xff0c;建議大家不要著急。3、大家耐心一點&#xff0c;該是你的就是你的&#xff0c;退稅這個事多退少補&#xff0c;建議大家在白天上班時間去APP上看看&#xff0c;畢竟相關公務人員也…

【BZOJ2004】[Hnoi2010]Bus 公交線路 狀壓+矩陣乘法

【BZOJ2004】[Hnoi2010]Bus 公交線路 Description 小Z所在的城市有N個公交車站&#xff0c;排列在一條長(N-1)km的直線上&#xff0c;從左到右依次編號為1到N&#xff0c;相鄰公交車站間的距離均為1km。 作為公交車線路的規劃者&#xff0c;小Z調查了市民的需求&#xff0c;決定…

課時77.序選擇器(掌握)

CSS3中新增的選擇器最具代表性的就是序選擇器。 1.同級別的第幾個 1. :first-child 選中同級別中的第一個標簽 注意點&#xff1a;不區分類型 但是我們這里有一個注意點&#xff0c;如果我們在第一個p之前加一個h1&#xff0c;則第一個p就不變紅了&#xff0c;因為我們…

Gulp——文件壓縮和文件指紋

先看下文件指紋添加成功發布后的“成果”。 首先介紹下gulp的文件壓縮&#xff08;壓縮css和js&#xff09; &#xff08;下面介紹的代碼移步這里&#xff09; 我的文件目錄如下&#xff1a; &#xff08;標紅部分是生成的處理后的文件&#xff09; 如何使用gulp&#xff0c;請…

java afconsole_Java ——基礎語法

package myhello; //本類所在的包的路徑import af.util.AfMath;//導入對應的類import java.util.Random;//導入隨機數的類public classHelloWorld{public static voidmain(String[] args){int a 8;inti;int total 0;int score 80;System.out.println(a > 8);//空語句 只有…

Java 7:使用NIO.2進行文件過濾-第2部分

大家好。 這是使用NIO.2系列進行文件過濾的第2部分。 對于那些尚未閱讀第1部分的人 &#xff0c;這里有個回顧。 NIO.2是自Java 7起JDK中包含的用于I / O操作的新API。使用此新API&#xff0c;您可以執行與java.io相同的操作&#xff0c;以及許多出色的功能&#xff0c;例如&a…

js for 循環 添加tr td 算法

StringBuffer sbnew StringBuffer(); int n 5; sb.append("<tr>"); List<MenuBean> chs mb.getChildren(); for(int j 0; chs ! null && j < chs.size(); j){ MenuBean _mb2 chs.get(j); if (i % n 0)//被n整除&#xff0c;即有了n列之后…

1034. 二哥的金鏈

Description 一個陽光明媚的周末&#xff0c;二哥出去游山玩水&#xff0c;然而粗心的二哥在路上把錢包弄丟了。傍晚時分二哥來到了一家小旅店&#xff0c;他翻便全身的口袋也沒翻著多少錢&#xff0c;而他身上唯一值錢的就是一條漂亮的金鏈。這條金鏈散發著奇異的光澤&#xf…

課時76.兄弟選擇器(掌握)

我們先來明確一點&#xff0c;什么是兄弟&#xff1f; 比如&#xff0c;head和body是兄弟&#xff0c;必須是同級關系&#xff0c;如果是嵌套關系&#xff0c;兒子&#xff0c;孫子則不可以。 1.相鄰兄弟選擇器 CSS2 作用&#xff1a;給指定選擇器后面緊跟的那個選擇器選中的…

java中不能定義為變量名稱_Java,“變量名”不能解析為變量

我使用Java使用Eclipse&#xff0c;出現此錯誤&#xff1a;"Variable name" cannot be resolved to a variable.使用此Java程序&#xff1a;public class SalCal {private int hoursWorked;public SalCal(String name, int hours, double hoursRate) {nameEmployee …

24v開關電源維修技巧_康佳LED液晶彩電KPS+L1900C301電源板原理與維修

康佳液晶彩電采用的KPSL1900C3-01型電源板&#xff0c;編號為34007728&#xff0c;版本號為35015686集成電路采用FAN7530FSGM300FSFR1700組合方案&#xff0c;輸出5.1VSB/4A、24V/4A、12V/4A電壓。應用于康佳LED47IS988PD、LED42M11PD、LED46MS92DC、LED42IS988PDE、LED42X5000…

zookeeper集群 新手安裝指南

Zookeeper集群的角色&#xff1a; Leader 和 follower &#xff08;Observer&#xff09;zk集群最好配成奇數個節點只要集群中有半數以上節點存活&#xff0c;集群就能提供服務本事例采用版本:zookeeper-3.4.5 虛擬機:zk1 zk2 zk3/****************************************…

Google Guava并發– ListenableFuture

在上一篇文章中&#xff0c;我介紹了使用番石榴庫中com.google.common.util.concurrent包中的Monitor類。 在本文中&#xff0c;我將繼續介紹Guava并發實用程序&#xff0c;并討論ListenableFuture接口。 ListenableFuture通過添加接受完成偵聽器的方法&#xff0c;從java.util…

課時71.后代選擇器(掌握)

1.什么是后代選擇器&#xff1f; 作用&#xff1a;找到指定標簽的所有后代標簽&#xff0c;設置屬性。 首先你要明確什么是后代&#xff1f; 你的兒子&#xff0c;孫子&#xff0c;重孫子等&#xff0c;只要有你的血脈的&#xff0c;都是你的后代。 我們先來舉個例子 我們想…

java小球碰撞界面設計_JavaScript實現小球碰撞特效

JavaScript實現小球碰撞特效。類似自由落體運動。實現原理非常簡單&#xff0c;就是動態的改變每個元素的坐標。使用radius屬性將圖片圓角化。使用left&#xff0c;top屬性動態的改變小球的位置。碰撞反彈球&#xff0c;當碰撞到容器的邊緣后&#xff0c;進行反彈&#xff0c;反…

es6常用基礎合集

es6常用基礎合集 在實際開發中&#xff0c;ES6已經非常普及了。掌握ES6的知識變成了一種必須。盡管我們在使用時仍然需要經過babel編譯。 ES6徹底改變了前端的編碼風格&#xff0c;可以說對于前端的影響非常巨大。值得高興的是&#xff0c;如果你熟悉ES5&#xff0c;學習ES6并不…

java接口開發_如果你想學好Java,這些你需要了解

01基本知識  在學習Java之前&#xff0c;您需要了解計算機的基本知識&#xff0c;然后再學習Java。同時&#xff0c;您需要熟悉DOS命令、Java概述、JDK環境安裝配置、環境變量配置。JDK和環境變量配置完成后&#xff0c;就可以編寫Java程序了。02編程格式  此時&#xff0c…