C++ 的一个程序问题,帮忙解决下

来源:百度知道 编辑:UC知道 时间:2024/06/07 18:39:44
输入一个姓名,姓名包括first_name,middle_name,last_name,用 last_name,first_name middle_name 的格式输出,要求最后的一个middle_name输出首字母并大写再后面加个点(.),如果middle_name缺省则不输出
如:1.输入:Mary Average User 输出: User ,Marry A.
2.输入:Mary A. User 输出: User,Mary A.
3.输入: Mary User 输出:User,Mary
我写了一段代码:可是不能解决middle_name缺省则不输出的情况,该怎么解决啊:
#include <iostream>
#include <cstring>
using namespace std;
int main(){
cout << "请输入您的姓名:"<< endl;
char cf[20],cm[20],cl[20];
cin >>cf>>cm>>cl;
if(cm[0]>='A'&&cm[0]<='Z'){
cout << cl<<","<<cf<<" " <<cm[0]<<endl;
}else{
cout << cl<<","<<cf<<" " <<char(cm[0]-32)<<endl;
}
return 0;
}

#include <iostream>
#include <cstring>
#include <string.h>
#include <stdio.h>
using namespace std;
int main(){
string name;
char nam[60];
char *p;
char cf[20],cm[20],cl[20]="";
cout << "请输入您的姓名:"<< endl;
cin.getline(nam, sizeof(nam));
p = strtok(nam, " "); /*让nam用空格分开可以参考http://baike.baidu.com/view/1028553.htm*/
if (p) strcpy(cf,p);
p = strtok(NULL, " ");
if (p) strcpy(cm,p);
p = strtok(NULL, " ");
if (p) strcpy(cl,p);
if(strlen(cl))
if(cm[0]>='A'&&cm[0]<='Z'){
cout << cl<<","<<cf<<" " <<cm[0]<<"."<<endl;
}else{
cout << cl<<","<<cf<<" &qu