字符数组专题训练1(C++)

最高分数的学生姓名

    输入学生的人数,然后再输入每位学生的分数和姓名,求获得最高分数的学生的姓名。

输入:

    第一行输入一个正整数N(N <= 100),表示学生人数。接着输入N行,每行格式如下:

        分数 姓名

    分数是一个非负整数,且小于等于100;

    姓名为一个连续的字符串,中间没有空格,长度不超过20。

    数据保证最高分只有一位同学。

输出:

    获得最高分数同学的姓名。

样例输入:

    5

    87 lilei

    99 hanmeimei

    97 lily

    96 lucy

    77 jim

样例输出:

Hanmeimei

#include<iostream>
using namespace std;
int main() 
{
	int n,a[101],max=0,t=0;string name,maxi;//用字符串定义学生姓名 
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i]>>name;//输入分数和名字 
		if(a[i]>max)
		{
			max=a[i];
			maxi=name;//存储最高分数学生名字 
		}
	} 
	cout<<maxi; 
	return 0;
}

判断字符串是否为回文

    输入一个字符串,输出该字符串是否回文。回文是指顺读和倒读都一样的字符串。

输入:

    输入为一行字符串(字符串中没有空白字符,字符串长度不超过100)。

输出:

    如果字符串是回文,输出yes;否则,输出no。

样例输入:

    abcdedcba

样例输出:

    yes

#include<bits/stdc++.h>
using namespace std;
int main() 
{
    char a[101],b[101];int l,t=0;bool p=true;
	gets(a);
	l=strlen(a);//读取字符串长度 
	for(int i=l-1;i>=0;i--)
	{
		b[t]=a[i];//将a数组逆序赋值给b数组 
		t++;
	} 
	for(int i=0;i<l;i++)
	{
		if(a[i]!=b[i])//a数组和b数组比较 
		{
			p=false;
		}
	} 
	if(p==true) cout<<"yes";//如果字符串是回文,输出yes;
	else cout<<"no";//否则,输出no。
	return 0;
}

字符串p型编码

    给定一个完全由数字字符('0','1','2',…,'9')构成的字符串str,请写出str的p型编码串。例如:字符串122344111可被描述为"1个1、2个2、1个3、2个4、3个1",因此我们说122344111的p型编码串为1122132431;类似的道理,编码串101可以用来描述1111111111;00000000000可描述为"11个0",因此它的p型编码串即为110;100200300可描述为"1个1、2个 0、1个2、2个0、1个3、2个0",因此它的p型编码串为112012201320。

输入:

    输入仅一行,包含字符串str。每一行字符串最多包含1000个数字字符。

输出:

    输出该字符串对应的p型编码串。

样例输入:

    122344111

样例输出:

    1122132431

#include<bits/stdc++.h>
using namespace std;
int main() 
{
    char a[1001];int l,t=1;
	gets(a);
	l=strlen(a);//读取字符串长度 
	for(int i=0;i<l;i++)
	{
		if(a[i]==a[i+1])//当前字符与后一个字符是否相同 
		{
		   t++;//计数	 
		} 
		else //不相同 
		{
			cout<<t<<a[i];//先输出几个几
			t=1;//从一开始(当前字符本身算一个) 
		}
	} 
	return 0;
}

单词翻转

    输入一个句子(一行),将句子中的每一个单词翻转后输出。

输入:

    只有一行,为一个字符串,不超过500个字符。单词之间以空格隔开。

输出:

    翻转每一个单词后的字符串,单词之间的空格需与原文一致。

样例输入:

    hello world

样例输出:

    olleh dlrow

#include<bits/stdc++.h>
using namespace std;
int main() 
{
	char a[500];int l,t=0;
	gets(a);
	l=strlen(a);//读取字符串长度 
	for(int i=0;i<l;i++)
	{
		if(a[i]!=' ') t++;//在没有遇到空格之前,计算单词长度 
		else if(t>0) //保证单词长度大于0 
		{
			for(int j=i-1;j>=i-t;j--) //单词逆序输出 
			{
				cout<<a[j]; 
			}
			cout<<" ";//单词与单词之间记得空格隔开 
			t=0;//单词长度清零 
		}
	}
	return 0;
}

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值