基础编程题:约德尔测试 OC实现

题目描述
兰博和提莫闲聊之后,回归到了他们的正题,约德尔人的未来。
说起约德尔人的未来,黑默丁格曾经提出了一个约德尔测试,将约德尔人的历史的每个阶段都用一个字符表达出来。(包括可写字符,不包括空格。)。然后将这个字符串转化为一个01串。转化规则是如果这个字符如果是字母或者数字,这个字符变为1,其它变为0。然后将这个01串和黑默丁格观测星空得到的01串做比较,得到一个相似率。相似率越高,则约德尔的未来越光明。
请问:相似率为多少?

直接上代码吧

#import 

/*
 *题目描述
 *兰博和提莫闲聊之后,回归到了他们的正题,约德尔人的未来。
 *说起约德尔人的未来,黑默丁格曾经提出了一个约德尔测试,将约德尔人的历史的每个阶段都用一个字符表达出来。(包括可写字符,不包括空格。)。然后将这个字符串转化为一个01串。转化规则是如果这个字符是字母或者数字,这个字符变为1,其它变为0。然后将这个01串和黑默丁格观测星空得到的01串做比较,得到一个相似率。相似率越高,则约德尔的未来越光明。
 *请问:相似率为多少?
 *输入
 *每组输入数据为两行,第一行为有关约德尔人历史的字符串,第二行是黑默丁格观测星空得到的字符串。(两个字符串的长度相等,字符串长度不小于1且不超过1000。)
 *输出
 *输出一行,在这一行输出相似率。用百分数表示。(相似率为相同字符的个数/总个数,精确到百分号小数点后两位。printf("%%");输出一个%。)
 *样例输入 : @!%12dgsa
 *       : 010111100
 *样例输出:66.67%
 */
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        char arrYDE[1000];
        char arrHMDG[1000];
        NSLog(@"请输入 有关约德尔人历史的字符串 以及 黑默丁格观测星空得到的字符串\n");
        gets(arrYDE);
        gets(arrHMDG);
        //将char数组转成NSString
        NSString *strYDE = [NSString stringWithUTF8String:arrYDE];
        NSString *strHMDG = [NSString stringWithUTF8String:arrHMDG];
        int num = 0;
        for (int i = 0;i < strYDE.length;i ++){
            
            char index = arrYDE[i];
            if((index >= '0' && index <= '9') || ((index >='A' && index <= 'Z') || (index >= 'a' && index <= 'z'))){
                arrYDE[i] = '1';
            }else{
              arrYDE[i] = '0';
            }
            if (arrYDE[i] == arrHMDG[i]){
                num ++;
            }
        }
        
        NSLog(@"%d",num);
        NSLog(@"%lu",(unsigned long)strYDE.length);
        NSLog(@"%@",[[NSString stringWithFormat:@"%.2f",(float)num/strYDE.length * 100] stringByAppendingString:@"%"]);

    }
    return 0;
}

基础编程题:约德尔测试 OC实现_第1张图片
运行结果.png

//有错误的地方欢迎指出
//与我交流QQ:443411162

你可能感兴趣的:(基础编程题:约德尔测试 OC实现)