1. 项目一
问题
- 描述
判断一个由a-z这26个字符组成的字符串中哪个字符出现的次数最多
- 输入
第1行是测试数据的组数n,每组测试数据占1行,是一个由a-z这26个字符组成的字符串
每组测试数据之间有一个空行,每行数据不超过1000个字符且非空
- 输出
n行,每行输出对应一个输入。一行输出包括出现次数最多的字符和该字符出现的次数,中间是一个空格。
如果有多个字符出现的次数相同且最多,那么输出ascii码最小的那一个字符
- 样例输入
2
abbccc
adfadffasdf
- 样例输出
c 3
f 4
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| #include<stdio.h> #include<string.h> #define MAX 1000 void max_count() { int n; scanf("%d",&n); char str[MAX]; int st[MAX]; for(int i=0;i<n;i++) { scanf("%s",str); for(size_t j=0;j<strlen(str);j++) st[j]=str[j]-'a'; int index=0,max=0; char flag; for(size_t i=0;i<strlen(str);i++) { index=1; for(size_t j=i+1;j<strlen(str);j++) { if(st[i]==st[j]) index++; } if(index>max) { max=index; flag=st[i]+'a'; } } printf("%c %d",flag,max); } }
int main() { max_count(); return 0; }
|
2. 项目二
题目
给定两个由大小写字母和空格组成的字符串s1和s2,它们的长度都不超过100个字符、也可以长度为0.判断压缩掉空格、并忽略大小写后,这两个字符串是否相等。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| #include<stdio.h> #include<string.h> #define MAX 100 void conversion(char str[MAX]) { for(size_t i=0;i<strlen(str);i++) { if(str[i]==' ') { for(size_t j=i;j<strlen(str)-1;j++) str[j]=str[j+1]; str[strlen(str)-1]='\0'; } else if(str[i]>='A'&&str[i]<='Z') str[i]=str[i]+32; } }
void equality() { char str1[MAX],str2[MAX]; gets(str1); gets(str2); conversion(str1); conversion(str2); if(strcmp(str1,str2)==0) printf("correct\n"); else printf("error\n"); } int main() { equality(); return 0; }
|
3. 项目三
题目
- 给定两个字符串s和t,请判断s是否是t的子序列。即从t中删除一些字符,将剩余的字符连接起来,即可获得s。s和t都由ASCII码的数字和字母组成,且长度不超过100000。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| #include<stdio.h> #include<string.h> #define MAX 100000 bool contain(char str1[MAX],char str2[MAX]) { int flag=0; for(size_t i=0;i<strlen(str1);i++) { index: for(size_t j=0;j<strlen(str2);j++) { if(str1[i]==str2[j]) { flag++; for(size_t k=j;k<strlen(str2)-1;k++) str2[k]=str2[k+1]; str2[strlen(str2)-1]='\0'; i++; goto index; } } } if(flag==strlen(str1)) return true; return false; } int main() { char s[MAX],t[MAX]; scanf("%s%s",s,t); if(contain(s,t)) printf("yes\n"); else printf("not\n"); return 0; }
|
4. 项目四
问题
请编写一个函数,其功能是将输入的字符串反转过来。
示例:
输入:s = “hello”
返回:”olleh”
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| #include<stdio.h> #include<string.h> #include<math.h> #define MAX 10000
void conversion(char str[MAX]) { int j=0; char index=' '; j=strlen(str)-1; for(size_t i=0;i<strlen(str)/2;i++) { index=str[i]; str[i]=str[j]; str[j]=index; j--; } printf("%s",str); }
int main() { char str[MAX]; printf("s="); scanf("%s",str); conversion(str); return 0; }
|
5. 项目五
问题
给定一个 32 位有符号整数,将整数中的数字进行反转。
示例
输入: 123
输出: 321
输入: -123
输出: -321
输入: 120
输出: 21
只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| #include<stdio.h> #include<string.h> #include<math.h> #define MAX 1000 int reverse(int x) { long a; char str[MAX]; int i=0; while(x!=0) { a=x%10; str[i]=a+'0'; i++; x=x/10; } printf("%s",str); if(x<(-1)*pow(2,32)||x>pow(2,32)-1) return 0; } int main() { int x; scanf("%d",&x); reverse(x); return 0; }
|
6. 项目六
题目
- Description
给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一:
1:两个字符串长度不等。比如Beijing和Hebei
2:两个字符串不仅长度相等,而且相应位置上的字符完全一致(区分大小写),比如Beijing和Beijing
3:两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能达到完全一致(也就是说,它并不满足情况2)。比如beijing和BEIjing
4:两个字符串长度相等,但是即使是不区分大小写也不能使这两个字符串一致。比如Beijing和Nanjing
编程判断输入的两个字符串之间的关系属于这四类中的哪一类,给出所属的类的编号。
- Input
包括两行,每行都是一个字符串
- Output
仅有一个数字表示关系编号。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| #include<iostream> #include<string> using namespace std; void consion(string &str) { for(size_t i=0;i<str.size();i++) { if(str[i]>='A'&&str[i]<='Z') str[i]=str[i]+32; } } int judge(string str1,string str2) { if(str1.size()!=str2.size()) return 1; if(str1==str2) return 2; if(str1!=str2) { consion(str1); consion(str2); if(str1==str2) return 3; else return 4; } } int main() { string a,b; cin>>a>>b; cout<<judge(a,b); return 0; }
|