改良程序的一些要求:
输入收卡人的名字;
输入送卡人的名字;
名字是一串字母或汉字,程序中成为字符串;
C++,字符串可以这样表示:
char s[50];//s是字符数组 声明语句
? ?
-
声明方法:
Char <字符串名>[<字符串最大长度>];//char-character
例:
char name1[50];
char name1[50];
或:
char name1[50],name1[50];
? ?
-
输入,cin
cin>> <字符数组名>;
例:
cin>>name1;
cin>>name2;
或:
cin>>name1>>name2;
? ?
-
输出,cout
cout<< <字符数组名>;
cout<<name1;
cout<<name2;
? ?
一、常规代码:
#include<iostream>
usingnamespacestd;
int main(){
charname1[50],name2[50];//声明语句,name1和name2字符数组
cin>>name1>>name2;//输入字符串,先声明再使用
cout<<"#######################################################"<<endl;
cout<<name1<<endl;
cout<<endl;
cout<<"Happy birthday to you!"<<endl;
cout<<endl;
cout<<" sincerely yours "<<name2<<endl;
cout<<"#######################################################"<<endl;
return0;
}
执行结果:
? ?
? ?
二、带有空格的名字:
如果名字中带有空格,如:zhang wei,那么结果是:
? ?
错误的原因在于:
cin,以空格、<tab>键、<回车键>作为分隔符;
当遇到了以上符号,就认为一项数据的输入结束了;
cin>>name1>>name2;
? ?
zhang wei
? ?
解决方法:
cin.getline(s,50);//表示按行输入,取前50个字符;
替换cin>>name1>>name2;为:
cin.getline(name1,50);
cin.getline(name2,50);
? ?
输入:
zhang wei
wang li
? ?
? ?
? ?
三、改进后代码:
#include<iostream>
usingnamespacestd;
int main(){
charname1[50],name2[50];//声明语句,name1和name2字符数组
//cin>>name1>>name2;//输入字符串,先声明再使用
cin.getline(name1,50);
cin.getline(name2,50);
cout<<"#######################################################"<<endl;
cout<<name1<<endl;
cout<<endl;
cout<<"Happy birthday to you!"<<endl;
cout<<endl;
cout<<" sincerely yours "<<name2<<endl;
cout<<"#######################################################"<<endl;
return0;
}
? ?
执行结果:
? ?