程式設計練習:
隻言片語:
之前那篇部落格内容寫的有點多,避免大家看起來太心累,于是我把第四章的程式設計練習,單獨整理一篇出來,加油,我們都是最胖的~ya。每當我真的感覺自己敲不下去了的時候,我就會提醒自己為什麼開始,想怎麼結束,便有了力量,願我們在遠走越順,越走越遠。

回顧之前的一個知識點:
對于數組而言:我們在使用 cin 時,隻能讀到一個詞,于是我們使用 getline(arr1,arr1_size) 來擷取正行輸入内容,同時其會将 cin 隊列中獲得的字元串的最後的一個 換行鍵 丢棄,這也使得整個輸入隊列是幹淨的,與此相對就有 get(arr1,arr1_size),其輸入也有兩個參數,get() 函數會将換行鍵儲存下來,雖然也可以整行輸入,但是取走字元串後,卻留下了換行鍵,使得下次讀取,無法正常讀到字元串,解決方法有兩種,一種是使用一個get()來接收一個換行字元,還有一種方案是通過clear(),來清理輸入隊列。
對于string 類的對象而言:也如此,可以使用 getline(cin,str1); //其中cin不是字元串符号; get()貌似沒法用鴨,隻能先标記下,等學string的時候具體再看一下,(✿◡‿◡)
#include <iostream>
#include <string>
using namespace std;
int main()
{
char fname[30];
// string str;
char lname[30];
char grade[5];
char age[3];
cout<<"What is your first name? "<<endl;
cin.getline(fname,30);
cin.clear();
// getline(cin,str);
cout<<"What is your last name?"<<endl;
cin.getline(lname,30);
cin.clear();
cout<<"What letter grade do you deserve?"<<endl;
cin.getline(grade,5);
cin.clear();
cout<<"What is your age?"<<endl;
cin.getline(age,3);
cin.clear();
cout<<"Name:"<<lname<<"."<<fname<<endl;
cout<<"Grade:"<<grade<<endl;
cout<<"Age:"<<age<<endl;
return 0;
}
如何輸入确定長度的字元串呢?而且使得其不會影響到之後的輸入?待解決。。。我的思路是輸入後先存起來,然後将隻将第一個值指派出去,不知道有沒有更好的方法?
#include <iostream>
#include <string>
using namespace std;
int main()
{
string name;
string dessert;
cout<<"Enter your name: \n";
getline(cin,name);
cout<<"Enter your favourite dessert: \n";
getline(cin,dessert);
cout<<"I have some delicious "<<dessert;
cout<<" for you. "<<name<<".\n";
return 0;
}
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char fname[25];
char lname[15];
cout<<"Enter your first name: ";
cin.getline(fname,25);
cout<<"Enter your last name: ";
cin.getline(lname,15);
cout<<"Here's the information in a single string: ";
strcat(lname,","); //後面必須是一個字元串常量,切記使用字元
strcat(lname,fname);
cout<<lname;
return 0;
}
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
int main()
{
string fname;
string lname;
cout<<"Enter your first name: ";
getline(cin,fname);
cout<<"Enter your last name: ";
getline(cin,lname);
cout<<"Here's the information in a single string: ";
lname += ","; //後面必須是一個字元串常量,切記使用字元
lname += fname;
cout<<lname;
return 0;
}
#include <iostream>
using namespace std;
struct CandyBar{
string brand;
float weight;
int kolali;
};
int main()
{
CandyBar snack = {"Mocha Munch",2.3,350};
cout<<snack.brand<<" "<<snack.weight<<" "<<snack.kolali<<endl;
return 0;
}
#include <iostream>
using namespace std;
struct CandyBar{
string brand;
float weight;
int kolali;
};
int main()
{
const int num = 3;
CandyBar snack[num] = {"Mocha Munch",2.3,350};
snack[1] = snack[0];
snack[2] = snack[0];
for(int i = 0;i < num;i++)
{
cout<<snack[i].brand<<" "<<snack[i].weight<<" "<<snack[i].kolali<<endl;
}
return 0;
}
問題:如何 同時 初始化 結構數組?
答:和數組的初始化差不多。如果是指針的話,是無法在定義時被初始化的。
#include <iostream>
using namespace std;
struct PizzaInf{
string name;
float zhijing;
float weight;
};
int main()
{
const int num = 3;
PizzaInf pizza[num] = {"Mocha Munch",2.3,350};
pizza[1] = pizza[0];
pizza[2] = pizza[0];
for(int i = 0;i < num;i++)
{
cout<<pizza[i].name<<" "<<pizza[i].zhijing<<" "<<pizza[i].weight<<endl;
}
return 0;
}
#include <iostream>
using namespace std;
struct PizzaInf{
string name;
float zhijing;
float weight;
};
int main()
{
// const int num = 3;
PizzaInf* pizza = new PizzaInf;
cin>>pizza->zhijing>>pizza->name>>pizza->weight;
cout<<pizza->name<<" "<<pizza->zhijing<<" "<<pizza->weight<<endl;
return 0;
}
#include <iostream>
using namespace std;
struct CandyBar{
string brand;
float weight;
int kolali;
};
int main()
{
const int num = 3;
CandyBar* snack = new CandyBar [num];
snack[0] = {"1",2.3,5};
snack[1] = snack[0];
snack[2] = snack[0];
for(int i = 0;i < num;i++)
{
cout<<snack[i].brand<<" "<<snack[i].weight<<" "<<snack[i].kolali<<endl;
}
return 0;
}