约德尔测试

只需要判断历史字符串中对应的应该用1还是0来表示就解决问题。

1.接受输入的可以是字符数组(char[])也可以是字符串(string);

2.判断是字母或者数字的时候要用&&而不能用连续不等号,这是出错点;

3.相除的时候保证是float型,就要确保运算的过程有float型的变量或者常量参与运算;

4.保留小数位数;

#include <iostream>
#include "string.h"
#include<iomanip>
using namespace std;


int main()
{
char hisStr[1000];
char startStr[1000];
float total = 0, right = 0;
cin >> hisStr;
cin >> startStr;
for(int i=0;hisStr[i] != '\0';i++)
{
total++;
if ((47 < hisStr[i]&& hisStr[i] < 58) || (64 < hisStr[i]&& hisStr[i] < 91) || (96 < hisStr[i]&& hisStr[i] < 123))
{
if(startStr[i] == '1') right++;
}
else
{
if (startStr[i] == '0') right++;
}
}
float rightRate = right / total;
cout << setiosflags(ios::fixed) << setprecision(2) << rightRate*100.0  << "%"<< endl;
return 0;
}


该代码需要改进的地方是,其中的小方法可以封装成函数的形式,比如判断数字和字母,比如判断是否为right。

相关文章:

  • 2022-01-01
  • 2022-12-23
  • 2021-07-26
  • 2021-05-01
  • 2021-11-23
  • 2022-01-10
  • 2022-01-22
猜你喜欢
  • 2021-07-18
  • 2021-11-30
  • 2021-04-17
  • 2022-12-23
  • 2021-11-25
  • 2022-01-15
相关资源
相似解决方案