C++ 一个字符串只包含K和D。K表示杀人,D表示死亡。计算连续杀敌次数,阵亡则归零。
生活随笔
收集整理的這篇文章主要介紹了
C++ 一个字符串只包含K和D。K表示杀人,D表示死亡。计算连续杀敌次数,阵亡则归零。
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題:
?
首先筆者的第一思路是前后兩個字符串比較。如果相同index++。
#include<iostream> #include<stdio.h> #include<string> using namespace std; int main() {string s;cout << "6請輸入字符串:" << endl;cin >> s;string name = "";unsigned int iSize = s.size();int currVal = 0;for (int i = 0; i <iSize; i++){int j = i;if (s[j] == s[j+1])currVal++;elsecurrVal = 0;}cout << currVal << endl;switch (currVal){case 0:name = "a Foolish Man"; break;case 1:name = "a Foolish Man"; break;case 2:name = "a Foolish Man"; break;case 3:name = "a Foolish Man"; break;case 4:name = "Dominating"; break;case 5:name = "a Mega-Kill"; break;case 6:name = "Unstoppable"; break;case 7:name = "Wicked Sick"; break;case 8:name = "a M-m-m-m...Monster Kill"; break;case 9:name = "Godlike"; break;default:name = "Beyond Godlike";break;}std::cout << name;system("pause");return 0; }當我輸入題示要求后ok。但是當輸入DDDKKKK是期待輸出是4但是輸出為0.
分析結果是因為在j和j+1比較時j+1會出界。所以最后會置為0
后來網上搜索字符串中字符連續個數:
#include"string" #include"iostream" using namespace std; int main() {string str;cin>>str;int lenght=str.length();int index=0;int i;int j;for(i=0;i<length;i=j){index=1;for(j=i+1;j<length;++j){if(str[i]==str[j])index++;else break;}cout<<str[i]<<index;}cout<<endl;system("pause");return 0; }這個程序在數連續字符時完全沒有問題。它采用起始為1,然后和后續比較,若不相同直接從不相同處開始比較的思想。但是如果最后是一個D或者多個D時我需要輸出為0.為一個K時輸出為1.。。試了多次依然沒有成功
最后。突然用自己之前一個錯誤s[+1]起始就一直是s[0]的錯誤解決,就是每個字符都和K進行比較
#include<iostream> #include<stdio.h> #include<string> using namespace std; int main() {string s ;cout << "3請輸入字符串:" << endl;cin >> s;string name="";unsigned int iSize = s.size();int currVal = 0;for (int i = 0; i <iSize; i++){if (s[i]=='K')currVal++;elsecurrVal = 0;}cout << currVal << endl;switch (currVal){case 0:name = "a Foolish Man"; break;case 1:name = "a Foolish Man"; break;case 2:name = "a Foolish Man"; break;case 3:name = "a Foolish Man"; break;case 4:name = "Dominating"; break;case 5:name = "a Mega-Kill"; break;case 6:name = "Unstoppable"; break;case 7:name = "Wicked Sick"; break;case 8:name = "a M-m-m-m...Monster Kill"; break;case 9:name = "Godlike"; break;default:name = "Beyond Godlike";break;}std::cout<<name;system("pause");return 0; }此時滿足題意。
參考自https://blog.csdn.net/qq_27302361/article/details/51111537
總結
以上是生活随笔為你收集整理的C++ 一个字符串只包含K和D。K表示杀人,D表示死亡。计算连续杀敌次数,阵亡则归零。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10 make命令的安装
- 下一篇: C++基础10-类和对象之友元函数