用結構解決問題
描述
N只小白鼠(1 < N < 100),每隻鼠頭上戴着一頂有顏色的帽子。現在稱出每隻白鼠的重量,要求按照白鼠重量從大到小的順序輸出它們頭上帽子的顏色。帽子的顏色用“red”,“blue”等字符串來表示。不同的小白鼠可以戴相同顏色的帽子。白鼠的重量用整數表示。
輸入
輸入第一行爲一個整數N,表示小白鼠的數目。
下面有N行,每行是一隻白鼠的信息。第一個爲不大於1000的正整數,表示白鼠的重量,;第二個爲字符串,表示白鼠的帽子顏色,字符串長度不超過10個字符。
輸出
按照白鼠的重量從大到小的順序輸出白鼠的帽子顏色。
在樣例輸入輸出可以看出每一個小白鼠都有兩個成員分別爲體重和帽子顏色
#include<iostream>
using namespace std;
struct Wm //定義Wm爲標識符
{char color[11];
int weight;}; //內含兩個成員
int main(){
Wm *mouse,temp; //定義兩個Wm類型變量
int N,i,j;
cin>>N;
mouse=new struct Wm[sizeof(struct Wm)*N]; //開闢空間定義一個數組
for(i=0;i<N;i++)
cin>>mouse[i].weight>>mouse[i].color;
for(i=1;i<N;i++) //冒泡排序
for(j=0;j<=N-i-1;j++)
if(mouse[j].weight<mouse[j+1].weight)
{ temp=mouse[j]; //另一個Wm變量使用
mouse[j]=mouse[j+1];
mouse[j+1]=temp;}
for(i=0;i<N;i++) //輸出
cout<<mouse[i].color<<endl;;
delete []mouse; //釋放空間
return 0;}
這裏說明結構指針類型的訪問方法,結構類型不能一次性賦值,指針也是如此;結構指針有兩種訪問方法
*( 指針).成員 或者 指針->成員
如
cin>>mouse[i].weight>>mouse[i]_>color;
動態存儲new
一旦定義變量,編譯時,系統 就會分配空間,而這些空間將不會再被利用,於是就有了動態存儲。
一般形式;
申請開闢空間 ;指針變量= new 類型
釋放空間 ; delete 指針變量
int *p1=new int(0) //動態分配一個整形單元並賦初始值
char*p2=NULL;
p2=new char; //動態分配一個字符型單元
......
delete p1; //釋放空間
delete p2; //釋放空間