1.求字母的个数
来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)
注意: 总时间限制: 1000ms 内存限制: 65536kB
描述
在一个字符串中找出元音字母a,e,i,o,u出现的次数。
输入
输入一行字符串(字符串中可能有空格,请用cin.getline(s,counts)方法把一行字符串输入到字符数组s中,其中counts是s的最大长度,这道题里面可以直接写80。),字符串长度小于80个字符。
输出
输出一行,依次输出a,e,i,o,u在输入字符串中出现的次数,整数之间用空格分隔。
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
char a[80];
int num[5]={0};
cin.getline(a,80);
for (int i=0;a[i]!='\0';i++)
{
if (a[i]=='a'){
num[0]++;
}
if (a[i]=='e'){
num[1]++;
}
if (a[i]=='i'){
num[2]++;
}
if (a[i]=='o'){
num[3]++;
}
if (a[i]=='u'){
num[4]++;
}
}
for (int i=0;i<5;i++){
cout <<num[i]<<" ";
}
return 0;
}
2:忽略大小写比较字符串大小
来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)
注意: 总时间限制: 1000ms 内存限制: 65536kB
描述
一般我们用strcmp可比较两个字符串的大小,比较方法为对两个字符串从前往后逐个字符相比较(按ASCII码值大小比较),直到出现不同的字符或遇到’\0’为止。如果全部字符都相同,则认为相同;如果出现不相同的字符,则以第一个不相同的字符的比较结果为准。但在有些时候,我们比较字符串的大小时,希望忽略字母的大小,例如”Hello”和”hello”在忽略字母大小写时是相等的。请写一个程序,实现对两个字符串进行忽略字母大小写的大小比较。
输入
输入为两行,每行一个字符串,共两个字符串。(请用cin.getline(s,80)录入每行字符串)(每个字符串长度都小于80)
输出
如果第一个字符串比第二个字符串小,输出一个字符”<”
如果第一个字符串比第二个字符串大,输出一个字符”>”
如果两个字符串相等,输出一个字符”=”
#include <iostream>
#include <cctype>
#include <string.h>
using namespace std;
int main() {
char s1[80],s2[80];
cin.getline(s1, 80);
cin.getline(s2, 80);
//s1全部转换为小写
int i = 0;
while (s1[i]) {
s1[i] = tolower(s1[i]);
++i;
}
//s2全部转换为小写
i = 0;
while (s2[i]) {
s2[i] = tolower(s2[i]);
++i;
}
{
int i = 0;
char result;
while (s1[i] != '\0' && (s1[i] == s2[i])){
i++;
}
if (s1[i] > s2[i]) {
result = '>';
} else if (s1[i] < s2[i]) {
result = '<';
} else{
result = '=';
}
cout <<result<<endl;
}
return 0;
}
3:最长单词2
来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)
注意: 总时间限制: 1000ms 内存限制: 65536kB
描述
一个以’.’结尾的简单英文句子,单词之间用空格分隔,没有缩写形式和其它特殊形式
输入
一个以’.’结尾的简单英文句子(长度不超过500),单词之间用空格分隔,没有缩写形式和其它特殊形式
输出
该句子中最长的单词。如果多于一个,则输出第一个
#include <iostream>
#include <string>
using namespace std;
int main() {
string max_word;
string word;
int max_length = 0;
while (cin >> word) {
//如果word以.结尾'.'去除'.'
int len = word.length();
if (word[len - 1] == '.') {
word = word.substr(0, word.length() - 1);
len = word.length();
if (len > max_length) {
max_word = word;
max_length = len;
}
break;
}
if (len > max_length) {
max_word = word;
max_length = len;
}
}
cout << max_word << endl;
return 0;
}
4:矩阵交换行
来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)
注意: 总时间限制: 1000ms 内存限制: 65536kB
描述
在main函数中, 生成一个5*5的矩阵,输入矩阵数据,并输入n,m的值。判断n,m是否在数组范围内,如果不在,则输出error;如果在范围内,则将n行和m行交换,输出交换n,m后的新矩阵。
输入
5*5矩阵的数据,以及n和m的值。
输出
如果不可交换,则输出error
如果可交换,则输出新矩阵
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int a[5][5];
int m,n;
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
cin >>a[i][j];
}
}
cin >>m>>n;
if (m>=5||m<0||n>=5||n<0){
cout<<"error"<<endl;
exit(0);
}
int temp[5];
for(int i=0;i<5;i++){
temp[i]=a[m][i];
a[m][i]=a[n][i];
a[n][i]=temp[i];
}
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
cout <<setw(3)<<a[i][j];
}
cout<<endl;
}
return 0;
}