描述 | 寫出一個程序,接受一個有字母和數字以及空格組成的字符串,和一個字符,然後輸出輸入字符串中含有該字符的個數。不區分大小寫。 |
---|---|
知識點 | 字符串,循環,大小寫字母 |
運行時間限制 | 0M |
內存限制 | 0 |
輸入 | 輸入一個有字母和數字以及空格組成的字符串,和一個字符。 |
輸出 | 輸出輸入字符串中含有該字符的個數。 |
樣例輸入 | ABCDEF A |
樣例輸出 | 1 |
C實現
#include <stdio.h>
#include <string.h>
int main()
{
char str[10000];
char ch;
int len = 0;
gets(str); //以enter即'\n'爲字符串的結束符
ch = getchar(); //getchar函數也是可行的
//scanf("%c",&ch); //使用scanf()函數輸入字符也是可行的,
for(int i = 0; i < strlen(str); i++)
{
if(str[i] == ch || str[i] == ch -32 || str[i] == ch + 32)
len++;
}
printf("%d\n",len);
return 0;
}
C++實現
#include<iostream>
#include<cstring>
using namespace std;
// 將小寫字母轉換爲大寫字母
void change(char *str)
{
int i;
for(i=0; str[i]!='\0'; i++)
{
if(str[i]>='a'&&str[i]<='z')
str[i]=str[i]-32;
}
}
int main()
{
char str[512],ch;
int i,count=0,length=0;
cin.getline(str,512);
cin.get(ch);
length=strlen(str);
change(str);
//要求統計的字符是字母,注意大小寫
if((ch>='a'&&ch<='z') || (ch>='A'||ch<='Z'))
{
//待統計的字符爲小寫,轉換成大寫,後面可與字符串中的統一比較不再區分大小寫
if(ch>='a'&&ch<='z')
ch=ch-32;
for(i=0; i<length; i++)
{
if(str[i]==ch)
count++;
}
}
//其他字符直接判斷即可
else
{
for(i=0; i<length; i++)
if(str[i]==ch)
count++;
}
cout<<count<<endl;
return 0;
}
補充知識:
(1)cin.getline()cin.getline()與 cin.get(array_name,Arsize)的讀取方式差不多,以Enter結束,可以接受空格字符。按照長度(Arsize)讀取字符, 會丟棄最後的Enter字符。但是這兩個函數是有區別的:cin.get(array_name, Arsize)當輸入的字符串超長時,不會引起cin函數的錯誤,後面的cin操作會繼續執行,只是直接從緩衝區中取數據。但是cin.getline()當輸入超長時,會引起cin函數的錯誤,後面的cin操作將不再執行。