原题来源:
用户一次输入时输入 nn 个数字,(2\le n \le 15)(2≤n≤15),即每次输入的数字数量不同,数字之间以 ", "
(不含引号)作为分隔。然后组合显示:
- 用户输入的数字个数;
- 用户输入的最小的数字;
- 将用户输入的数字按从大到小进行排列输出,数字之间以
", "
(不含引号)作为分隔; - 如果用户输入的数字小于等于 2626 , 则找到相对应的 2626 个大写英文字母(11 对应 "A",2626 对应 "Z",并拼接在一起打印显示,如果输入的数字在 1\sim 261∼26 之外则不显示相应字母。(例:程序输入 214214,则显示输出
*
)。
输入格式
nn 个数字, 2\le n \le 152≤n≤15
输出格式
输入的数字个数
输入的最小数字
输入的数字从大到小排列
输入的数字所对应的字母
Sample 1
Inputcopy | Outputcopy |
---|---|
9, 12, 15, 22, 5, 21, 214 | 7 5 214, 22, 21, 15, 12, 9, 5 ILOVEU* |
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
string t;
int a[200],b[200];
int m=0;
char ch;
while(cin>>t)
{
int len=t.length();
if(t[len-1]==',')
t.erase(t.length()-1,1);
int q=0;
for(int i=0;i<t.length();i++)
{
q=q*10+t[i]-48;
}
a[m]=q;
b[m]=q;
m++;
char ch;
ch=getchar();
if(ch=='\n')
break;
}
cout<<m<<endl;
sort(a,a+m,cmp);
cout<<a[m-1]<<endl;
for(int i=0;i<m-1;i++)
{
printf("%d, ",a[i]);
}
printf("%d\n",a[m-1]);
for(int i=0;i<m;i++)
{
char ch=('A'-1);
ch+=b[i];
if(b[i]>=1&&b[i]<=26)
cout<<ch;
else
cout<<'*';
}
return 0;
}
可以先定义一个 整型变量为零,然后不断循环得到数如图while循环所示