写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字母,然后输出输入字符串中该字母的出现次数。不区分大小写。
import java.util.*; public class Main{ public static void main(String[] args){ int count=0; Scanner in = new Scanner(System.in); String str = in.nextLine().toUpperCase(); char target = in.nextLine().toUpperCase().toCharArray()[0]; for(int i=0;i<str.length();i++){ if(str.charAt(i) == target){ count++; } } System.out.println(count); } }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String str = in.nextLine().toUpperCase(); String c = in.next().toUpperCase(); System.out.println(str.replaceAll("[^" + c + "]", "").length()); in.close(); } }
#include <iostream> #include <string> #include <algorithm> using namespace std; int main() { string str; char ch; while (cin >> str >> ch) { if (ch >= 'a'&&ch<='z') cout << (count(str.begin(), str.end(), ch) + count(str.begin(), str.end(), (char)(ch - 32))) << endl; else if (ch>='A'&&ch <= 'Z') cout << (count(str.begin(), str.end(), ch) + count(str.begin(), str.end(), (char)(ch + 32))) << endl; else cout << count(str.begin(), str.end(), ch) << endl; } return 0; }
/*由于不清楚C++字符串类的大小写转换的函数,只能将要比较的字符进行了转换*/ #include<iostream> #include<string> using namespace std; int main(){ string input; char target; getline(cin,input); cin>>target; char target1; if(target>=65 && target<=96) target1=target+32; if(target>=97 && target<=129) target1=target-32; int count=0; for(int i=0;i<input.length();++i){ if(input[i]==target || input[i]==target1) count++; } cout<<count<<endl; return 0; }
//用C语言写的 #include <stdio.h> #include <ctype.h> int main(void) { char my_char = 0, str[1000] = {0}; int len = 0; gets( str ); scanf( "%c", &my_char ); for( int i = 0; str[i] != '\0' && i < 1000; i++ ) if( str[i] == my_char || tolower(str[i]) == tolower(my_char) ) len++; printf( "%d\r\n", len ); return 0; }
#include "stdio.h" #include "stdlib.h" #include "string.h" //不区分大小写 'A'=65,'a'=97 int getNum(char *str,char ch,int len){ int num; int i; for(i=0;i<len;i++){ //不区分大小写,故直接用ASCII值进行比较 if(str[i]==ch||str[i]+32==ch||str[i]-32==ch){ num++; } } return num; } int main(){ char str[1000]; char ch; gets(str); int len=strlen(str); scanf("%c",&ch); int num=getNum(str,ch,len); printf("%d",num); return 0; }
#include <iostream>
#include<string>
using namespace std;
int main(){
string str;
char find;
long len;
int diff = 'A'-'a';
int find_len=0;
getline(cin,str);
cin.get(find);
len = str.size();
for(int i =0;i<len;++i)
if(str[i]==find|| str[i]+diff==find||str[i]-diff==find)
find_len++;
cout<<find_len<<endl;
return 0;
}
看了半天觉得我的好简单就贴上来吧 大小写转换用库函数就好了 回车问题每次使用get()读取就好了 #include <string> #include <iostream> #include <cctype> using namespace std; int main() { string str; char ch; while(getline(cin,str)) { if(cin.get(ch).get()) { int count = 0; for(int i=0; i<str.size(); ++i) { if(toupper(str[i]) == toupper(ch)) count++; } cout << count << endl; } } return 0; }
var r1=readline.createInterface({
input:process.stdin, output:process.stdout }); var a=[]; r1.on('line',function(line){ a.push(line); if(a.length==2) r1.close(); }) r1.on('close',function(){ var re = eval("/" + a[1] + "/ig");//正则表达式中使用变量 //http://blog.csdn.net/icanlove/article/details/39499777 这个建议使用另外一种方法,说eval很多缺点,没有找到 //正确的方式,默默的使用eval了 var len = a[0].match(re);//match进行全局匹配之后返回的是一个匹配的子字符串的数组 var count = len ? len.length : 0;//用于判断如果没有匹配,match返回的是空的情况,此时没有长度,直接赋值为0 // count子字符串的数组 console.log(count); a.length=0; })
主要是区分大小写就行,用了string类的成员函数 #include <iostream> #include <string> #include <cctype> using namespace std; int main() { string str; char mm; while(getline(cin,str)&&(cin>>mm)) { int count=0; int pos=0; int i; for(i=0;i<str.size();i++) str[i]=tolower(str[i]); mm=tolower(mm); while((pos=str.find_first_of(mm,pos))!=string::npos) { count++; pos++; } cout<<count<<endl; } return 0; }