本文目錄一覽:
p.a在c語言中是什麼意思啊
p 是struct S 類型的結構體,p.a就是p這個結構的成員a,
data[1]也是struct S 類型的結構體, p=data[1];
data[1]={20,200} 所以 p.a=20;執行”,++(p.a));結果21
c語言——學生成績管理系統
#includeiostream
#includeiomanip
#includefstream
#includestring
using namespace std;
#define max 100;
class student
{
public:
student *next;
public:
string name;//姓名
long num;//學號
int x,y,z;//數學,語文,英語
int AA;//總分
void play(){coutname”學生的學號是”num”,數學:”x”,語文:”y”,英語:”z”,總分:”AAendl;};
student(string sname,long snum,int sx,int sy,int sz)
{
name=sname;
num=snum;
x=sx;
y=sy;
z=sz;
}
};
class cla
{
public:
cla()//構造函數
{
stu=0;
sload();
}
~cla()//析構函數
{
student *p;
p=stu;
while(p)
{
p=p-next;
delete stu;
stu=p;
}
stu=0;
}
void sadd(); //添加
void sremove(); //刪除
void samend(); //修改
void ssearch(); //查詢
void staxis(); //排序
void ssave(); //保存
void sload(); //讀取
//排序函數
void pxh();
void psx();
void pyw();
void pyy();
void pAA();
private:
student *stu; //頭接點
};
void cla::sadd()//添加
{
student *q;
string name1;
long num1;
int x1,y1,z1;
system(“cls”);
cout”\n **增加的學生** \n”endl;
cout”請輸入學生的(中間用空格間隔) “endl;
cout”姓名 學號 數學成績 語文成績 英語成績:”endl;
cinname1num1x1y1z1;
q=new student(name1,num1,x1,y1,z1);
q-next=0;
q-AA=x1+y1+z1;
if(stu)
{
student *t;
t=stu;
if(t-num==num1)
{
cout”學號已存在,請重新輸入”endl;
return;
}
while(t-next)
{
if(t-num==num1)
{
cout”學號已存在,請重新輸入”endl;
return;
}
t=t-next;
}
t-next=q;
}
else
{
stu=q;
}
cout”輸入完畢”endl;
}
void cla::sremove()//刪除
{
system(“cls”);
int num1;
cout”\n** 刪除學生信息 **\n”;
cout”請輸入想要刪除學生的學號:”;
cinnum1;
//查找要刪除的結點
student *p1,*p2;
p1=stu;
while(p1)
{
if(p1-num==num1)
break;
else
{
p2=p1;
p1=p1-next;
}
}
//刪除結點
if(p1!=NULL)//若找到結點,則刪除
{
p1-play();
cout”確定刪除嗎?[Y/N]”endl;
char c;cinc;
if(toupper(c)!=’Y’) return;
if(p1==stu) //若要刪除的結點是第一個結點
{
stu=p1-next;
delete p1;
}
else //若要刪除的結點是後續結點
{
p2-next=p1-next;
delete p1;
}
cout”找到學號為”num1″的學生,並刪除\n”;
}
else //未找到結點
cout”未找到想要刪除的學生!\n”;
}
void cla::samend()//修改
{
system(“cls”);
long num1;
cout”\n** 修改學生信息 **\n”;
cout”輸入要修改學生的學號”;
cinnum1;
//查找要修改的結點
student *p1,*p2;
p1=stu;
while(p1)
{
if(p1-num==num1)
break;
else
{
p2=p1;
p1=p1-next;
}
}
if(p1!=NULL)
{
cout”學號是”num1″的學生的信息”endl;
cout”姓名 “p1-name”數學”p1-x”語文”p1-y”英語”p1-zendl;
cout”請輸入修改後的信息:姓名 數學成績 語文成績 英語成績”endl;
cinp1-namep1-xp1-yp1-z;
p1-AA=p1-x+p1-y+p1-z;
cout”修改成功”endl;
}
else //未找到接點
cout”未找到!\n”;
}
void cla::ssearch()//查詢
{
system(“cls”);
cout”\n** 查詢學生信息 **\n”endl;
cout”請輸入查詢方式:”endl;
cout”1.按學號查詢”endl;
cout”2.按姓名查詢”endl;
cout”3.返回”endl;
char c; cinc;
switch (c)
{
case ‘1’:
{
long num1;
cout”要查詢的學號”endl;
cinnum1;
//查找要查詢的結點
student *p1,*p2;
p1=stu;
while(p1)
{
if(p1-num==num1)
break;
else
{
p2=p1;
p1=p1-next;
}
}
if(p1!=NULL)
{
cout”學號是”num1″的學生的信息”endl;
cout”姓名:”p1-name” 數學:”p1-x” 語文:”p1-y” 英語:”p1-zendl;
cout”查詢完畢…”;
}
else //未找到接點
cout”未找到!\n”;
break;
}
case ‘2’:
{
string name1;
cout”要查詢的學生姓名”endl;
cinname1;
//查找要查詢的結點
student *p1,*p2;
p1=stu;
while(p1)
{
if(p1-name==name1)
break;
else
{
p2=p1;
p1=p1-next;
}
}
if(p1!=NULL)
{
coutname1″的學生的信息”endl;
cout”學號:”p1-num” 數學:”p1-x” 語文:”p1-y” 英語:”p1-zendl;
cout”查詢完畢…”;
}
else //未找到接點
cout”未找到!\n”;
break;
}
case ‘3’: return;
}
}
void cla::pxh() //按學號排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1-next)
{ n++; p1=p1-next; }
cout”共有”n”條信息…”endl;
int i;
p1=stu;
for(i=1;in;i++)
{
p1=stu;
if (p1-nump1-next-num) // 如果頭結點大於第二個的
{
p2=p1-next;
p1-next=p1-next-next;
p2-next=p1; //頭結點交換
stu=p2;
}
p1=stu;
while(p1-next-next) //中間的交換
{
p2=p1;
p1=p1-next;
if(p1-nump1-next-num)
{
p2-next=p1-next;
p1-next=p1-next-next;
p2-next-next=p1;
p1=p2-next; //交換
}
}
}
p1=stu;
do
{
p1-play();
p1=p1-next;
}while(p1);
}
void cla::psx()//按數學成績排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1-next)
{ n++; p1=p1-next; }
cout”共有”n”條信息…”endl;
int i;
p1=stu;
for(i=1;in;i++)
{ p1=stu;
if (p1-xp1-next-x) // 如果頭結點大於第二個的
{ p2=p1-next;
p1-next=p1-next-next;
p2-next=p1; //頭結點交換
stu=p2;
}
p1=stu;
while(p1-next-next) //中間的交換
{ p2=p1;
p1=p1-next;
if(p1-xp1-next-x)
{
p2-next=p1-next;
p1-next=p1-next-next;
p2-next-next=p1;
p1=p2-next; //交換
}
}
}
p1=stu;
do
{ p1-play();
p1=p1-next;
}while(p1);
}
void cla::pyw()//按語文成績排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1-next)
{ n++; p1=p1-next; }
cout”共有”n”條信息…”endl;
int i;
p1=stu;
for(i=1;in;i++)
{ p1=stu;
if (p1-yp1-next-y) // 如果頭結點大於第二個的
{ p2=p1-next;
p1-next=p1-next-next;
p2-next=p1; //頭結點交換
stu=p2;
}
p1=stu;
while(p1-next-next) //中間的交換
{ p2=p1;
p1=p1-next;
if(p1-yp1-next-y)
{
p2-next=p1-next;
p1-next=p1-next-next;
p2-next-next=p1;
p1=p2-next; //交換
}
}
}
p1=stu;
do
{ p1-play();
p1=p1-next;
}while(p1);
}
void cla::pyy()//按英語成績排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1-next)
{ n++; p1=p1-next; }
cout”共有”n”條信息…”endl;
int i;
p1=stu;
for(i=1;in;i++)
{ p1=stu;
if (p1-zp1-next-z) // 如果頭結點大於第二個的
{ p2=p1-next;
p1-next=p1-next-next;
p2-next=p1; //頭結點交換
stu=p2;
}
p1=stu;
while(p1-next-next) //中間的交換
{ p2=p1;
p1=p1-next;
if(p1-zp1-next-z)
{
p2-next=p1-next;
p1-next=p1-next-next;
p2-next-next=p1;
p1=p2-next; //交換
}
}
}
p1=stu;
do
{ p1-play();
p1=p1-next;
}while(p1);
}
void cla::pAA()//按總分排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1-next)
{ n++; p1=p1-next; }
cout”共有”n”條信息…”endl;
int i;
p1=stu;
for(i=1;in;i++)
{ p1=stu;
if (p1-AAp1-next-AA) // 如果頭結點大於第二個的
{ p2=p1-next;
p1-next=p1-next-next;
p2-next=p1; //頭結點交換
stu=p2;
}
p1=stu;
while(p1-next-next) //中間的交換
{ p2=p1;
p1=p1-next;
if(p1-AAp1-next-AA)
{
p2-next=p1-next;
p1-next=p1-next-next;
p2-next-next=p1;
p1=p2-next; //交換
}
}
}
p1=stu;
do
{ p1-play();
p1=p1-next;
}while(p1);
}
void cla::staxis()//排序
{
system(“cls”);
char c;
cout”請選擇以何種方式排序:”endl;
cout”1……以學號排序”endl;
cout”2……以數學成績排序”endl;
cout”3……以語文成績排序”endl;
cout”4……以英語成績排序”endl;
cout”5……以總分排序”endl;
cout”6……返回”endl;
cout”請選擇(1-6)”endl;
cinc;
switch (c)
{
case ‘1’:pxh(); break;
case ‘2’:psx(); break;
case ‘3’:pyw(); break;
case ‘4’:pyy(); break;
case ‘5’:pAA(); break;
case ‘6’:return;
}
}
void cla::ssave() //保存到文件
{
system(“cls”);
char c;
cout”\n保存學生信息(將覆蓋原文件),是否繼續?[Y/N]:”; cinc;
if(toupper(c)!=’Y’) return;
ofstream tfile(“date.txt”,ios_base::binary);
student *p=stu;
while(p)// 寫入文件
{
tfilep-name”\t”p-num”\t”p-x”\t”p-y”\t”p-z;
tfileendl;
p=p-next;
}
tfile.close();
cout”保存完畢…”endl;
}
void cla::sload() //讀取
{
student *p;
p=stu;
while(p)
{
stu=p-next;
delete p;
p=stu;
}
ifstream tfile(“date.txt”,ios_base::binary);
string name1;
long num1;
int x1,y1,z1;
tfilename1num1x1y1z1;
while(tfile.good())
{
//創建學生接點
student *s;
s=stu;
s=new student(name1,num1,x1,y1,z1);
s-next=0;
s-AA=x1+y1+z1;
if(stu) //若已經存在結點
{
student *p2;
p2=stu;
while(p2-next) //查找尾結點
{
p2=p2-next;
}
p2-next=s; //連接
}
else //若不存在結點(表空)
{
stu=s; //連接
}
tfilename1num1x1y1z1;
}
tfile.close();
cout”\n學生信息已經裝入…\n”;
}
void main()
{
char c;
cla a;
do
{
cout”\n 學 生 成 績 管 理 系 統 \n”;
cout”**************************************\n”;
cout” 作者:軟體工程06110119:zgjxwl \n”;
cout” 1……增加學生 \n”;
cout” 2……刪除學生 \n”;
cout” 3……修改學生 \n”;
cout” 4……查詢學生信息 \n”;
cout” 5……排序 \n”;
cout” 6……保存信息 \n”;
cout” 7……讀取信息 \n”;
cout” 8……退出 \n”;
cout”**************************************\n”;
cout”請選擇(1-8):”;
cinc;
switch(c)
{
case ‘1’: a.sadd();break;
case ‘2’: a.sremove();break;
case ‘3’: a.samend();break;
case ‘4’: a.ssearch();break;
case ‘5’: a.staxis();break;
case ‘6’: a.ssave();break;
case ‘7’: a.sload();break;
}
}while(c!=’8′);
}
c語言中,假設pa是一個指針,那麼*pa++的作用是什麼
*pa++包含兩個語句,一*pa=*pa+1, 即pa指向的地址的值加1, 二pa=pa+1,即指針後移一個單位。
C語言里聲明是什麼意思?
什麼是聲明:有兩重含義,如下:
第一重含義:告訴編譯器,這個名字已經匹配到一塊內存上了(伊人已嫁,吾將何去何
從?何以解憂,唯有稀粥),下面的代碼用到變數或對象是在別的地方定義的.聲明可以出
現多次.
第二重含義:告訴編譯器,我這個名字我先預定了,別的地方再也不能用它來作為變數
名或對象名.比如你在圖書館自習室的某個座位上放了一本書,表明這個座位已經有人預
訂,別人再也不允許使用這個座位.其實這個時候你本人並沒有坐在這個座位上.這種聲
明最典型的例子就是函數參數的聲明,例如:
void fun(int i, char c);好,這樣一解釋,我們可以很清楚的判斷:a)是定義;b)是聲明.
原創文章,作者:IVPM,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/139268.html