(40’)1.输入一句英文(含空格),求
(1)统计英文单词个数(10’)
(2)统计字符个数(10’)
(3)查找出现次数最多的字符(可能不止一个),要求全部给出并输出出现的次数(20’)
以上输出均不区分大小写
例如 this is A pencil Case
输出:
英文单词数:5
字符个数:17
出现最多字符:i,s
出现次数:3
#include <iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
int kongnum=0;
int charnum;
int st[26] = {0};
char word[100];
gets(word); //scanf遇见空格停止
int length = strlen(word);
for (int i = 0; i < length; i++) {
if (word[i] == ' ') {
kongnum++;
}
else {
if (word[i] >= 'A'&&word[i] <= 'Z') {
st[word[i]+32-'a']++;
}
else if(word[i] >= 'a'&&word[i] <='z') {
st[word[i] - 'a']++;
}
}
}
printf("英文单词数:%d\n", kongnum + 1);
printf("字符个数:%d\n", length - kongnum);
printf("出现最多的字符:");
int max = 0;
for (int i = 0; i < 26; i++) {
if (st[i] > max) {
max = st[i];
}
}
for (int i = 0; i < 26; i++) {
if (st[i] == max) {
printf("%c,",'a'+i);
}
}
printf("\n出现次数:%d\n",max);
return 0;
}
(30’)2.十二进制(包含0-9,a,b)转十进制,输入一串十二进制数(不区分大小写)
(1)逐个输出对应的十进制,用空格隔开(高位到地位)(10’)
(2)输出对应的十进制数(10’)
(3)转为二进制,用4个字节表示(10’)
例如:输入a2
输出:
10 2
122
00000000 00000000 00000000 01111010
#include <iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
char str[50];
int num[50];
scanf("%s",str);
int length =strlen(str);
for(int i=0;i<length;i++){
if(i==length-1){
if(str[i]>='0'&&str[i]<='9'){
num[i]=str[i]-'0';
printf("%c\n",str[i]);
}else if(str[i]=='a'){
printf("10\n");
num[i]=10;
}else if(str[i]=='b'){
printf("11\n");
num[i]=11;
}
break;
}
if(str[i]>='0'&&str[i]<='9'){
num[i]=str[i]-'0';
printf("%c ",str[i]);
}else if(str[i]=='a'){
printf("10 ");
num[i]=10;
}else if(str[i]=='b'){
printf("11 ");
num[i]=11;
}
}
int res=0;
int cc=1;
for(int i=length-1;i>=0;i--){
res+=num[i]*cc;
cc*=12;
}
cout<<res<<endl;
int two[50]={0};
int c=0;
do{
two[c++]=res%2;
res/=2;
}while(res);
for(int i=31;i>=0;i--){
cout<<two[i];
if((i)%8==0) cout<<" ";
}
return 0;
}
(2019年)3.凯撒密码。从键盘输入一个由字母组成的字符串,对字符串中的每个字符进行偏移操作,每个字符都向后偏移两个。即:a->c,Z->B。然后输出偏移后的每个字符的奇校验码及其对应的十进制数,如果字符中1的个数为偶数,将其最高位置为1。(40)
例:输入:aD
输出:原文:aD
密文:cF
c 11100011 227
F 01000110 70
#include <iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
char num[50]={0};
scanf("%s",num);
int length=strlen(num);
for(int i=0;i<length;i++){
if(num[i]>='a'&&num[i]<='z'){
num[i]=(num[i]-97+2)%26+97;
}else if(num[i]>='A'&&num[i]<='Z'){
num[i]=(num[i]-65+2)%26+65;
}
}
printf("密文:%s\n",num);
int tmp[50]={0};
for(int i=0;i<length;i++){
memset(tmp,0,sizeof(tmp));
int cnt=0;
int count=0;
int result=0;
printf("%c ",num[i]);
int temp=num[i];
while(temp!=0){
tmp[count++]=temp%2;
temp/=2;
}
for(int j=0;j<8;j++){
if(tmp[j]==1){
cnt++;
}
}
if(cnt%2==0) tmp[7]=1;
for(int j=7;j>=0;j--){
result*=2;
result+=tmp[j];
cout<<tmp[j];
}
cout<<" "<<result<<endl;
}
return 0;
}