当前位置: 代码迷 >> 综合 >> 程序设计与算法 | (14) Lecture(7) OJ作业
  详细解决方案

程序设计与算法 | (14) Lecture(7) OJ作业

热度:33   发布时间:2024-01-15 00:13:27.0

OJ地址

Lecture (7)包含以下五道编程题,可以在上面的OJ提交。

040:统计数字字符个数

在这里插入图片描述

#include <iostream>
using namespace std;
#define N 255
char str[N+10];int main(int argc, const char * argv[]) {
    gets(str);int count = 0;for(int i=0;str[i];i++)if(isdigit(str[i]))count++;cout<<count<<endl;return 0;
}

041:找第一个只出现一次的字符

在这里插入图片描述

#include <iostream>
using namespace std;
#define N 100000
char str[N+10];
int a[26]; //统计每个字母出现的次数int main(int argc, const char * argv[]) {
    cin>>str;for(int i=0;str[i];i++){
    a[str[i]-'a']++;}int i;for(i=0;str[i];i++)if(a[str[i]-'a']==1)break;if(!str[i])cout<<"no"<<endl;elsecout<<str[i]<<endl;return 0;
}

042:石头剪子布

在这里插入图片描述

#include <iostream>
#include <cstring>
using namespace std;
#define N 10
char s1[N+10];
char s2[N+10];int main(int argc, const char * argv[]) {
    int n;cin>>n;while(n--){
    cin>>s1>>s2;if(strcmp(s1,"Rock")==0){
    if(strcmp(s2,"Rock")==0)cout<<"Tie"<<endl;else if(strcmp(s2,"Paper")==0)cout<<"Player2"<<endl;elsecout<<"Player1"<<endl;}else if(strcmp(s1,"Paper")==0){
    if(strcmp(s2,"Rock")==0)cout<<"Player1"<<endl;else if(strcmp(s2,"Paper")==0)cout<<"Tie"<<endl;elsecout<<"Player2"<<endl;}else{
    if(strcmp(s2,"Rock")==0)cout<<"Player2"<<endl;else if(strcmp(s2,"Paper")==0)cout<<"Player1"<<endl;elsecout<<"Tie"<<endl;}}return 0;
}

043:最长最短单词

在这里插入图片描述

#include <iostream>
#include <cstring>
#define N 30000
char s1[N+10];using namespace std;int main(int argc, const char * argv[]) {
    gets(s1);int minLen=1<<30, maxLen=-1;//最小初始化为最大 最大初始化为最小int start;bool flag = false;int longStart,shortStart;int len = strlen(s1);for(int i=0;i<=len;i++) //注意是 i<=len 如果i<len 对于输入只有一个字母的情况,else不会被执行,longStart,shortStart不会计算。{
    if(isalpha(s1[i])) //字母字符{
    if(!flag){
    start = i;  //记录每个单词的开始字符的位置flag = true;}}else //非字母字符{
    if(flag) //第一个非字母字符 防止两个单词之间有多个非字母字符,此时单词长度不准确; 还有就是必须先碰到单词,才能计算wordlen,否则刚开始是非字母字符的话,start没有定义{
    int wordlen=i-start;if(wordlen>maxLen){
    maxLen=wordlen;longStart = start; //最长单词开始字符的位置}if(wordlen<minLen){
    minLen=wordlen;shortStart = start; //最短单词开始字符的位置}flag = false;}}}for(int i=longStart;isalpha(s1[i]);i++)cout<<s1[i];cout<<endl;for(int i=shortStart;isalpha(s1[i]);i++)cout<<s1[i];cout<<endl;return 0;
}

044:密码翻译

在这里插入图片描述

#include <iostream>
using namespace std;char s1[] = "abcdefghijklmnopqrstuvwxyz";
char s2[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
#define N 80
char s[N+10];int main(int argc, const char * argv[]) {
    gets(s);for(int i=0;s[i];i++)if(s[i]>='a'&&s[i]<='z')cout<<s1[(s[i]-'a'+1)%26];else if(s[i]>='A'&&s[i]<='Z')cout<<s2[(s[i]-'A'+1)%26];elsecout<<s[i];cout<<endl;return 0;
}
  相关解决方案