C语言练习之笨小猴

本文介绍了一个结合素数判断与字符计数的程序,通过输入字符串统计字母出现次数,并找出其中最大和最小频率的字母,判断差值是否为素数,从而确定是否为'幸运单词'
  •  
  •  
  • 首先写了个最简单的素数判断
  • bool isp(int n){
        	if(n==1||n==0){
        		return false;
    		}
    		for(int i=2;i<n;i++){
    			if(n%i==0) return false;  //判断是否为素数
    		}
    		return true;
    	}
  •  重点在计数每个字母出现的次数(数组计数)
  •  
    for(int i=0;a[i];i++){
    			n[a[i]-'a']++;        //n[]数组代表26个字母出现的次数,每出现一次就+1
    		}

  • 最后就是比较 找出最大和最小,n[ j ] ! =0
  • for(int j=0;j<26;j++){
    			if(n[j]>max) max=n[j];  //找出出现次数最多和最少的
    			else if(n[j]<min&&n[j]!=0)   min=n[j];
    		}
  • 下面就是完整代码了
  •  
    #include <cstdio>
    #include <cstring>
    #include <iostream>
    using namespace std;
    
        bool isp(int n){
        	if(n==1||n==0){
        		return false;
    		}
    		for(int i=2;i<n;i++){
    			if(n%i==0) return false;  //判断是否为素数
    		}
    		return true;
    	}
    	
    	int main(){
    		char a[10000];
    		int max=0,min=9999;
    		int n[100]={0};
    		gets(a);
    		for(int i=0;a[i];i++){
    			n[a[i]-'a']++;        //n[]数组代表26个字母出现的次数,每出现一次就+1
    		}
    		for(int j=0;j<26;j++){
    			if(n[j]>max) max=n[j];  //找出出现次数最多和最少的
    			else if(n[j]<min&&n[j]!=0)   min=n[j];
    		}
    		if(isp(max-min)){           //相减判断
    			printf("Lucky Word\n");
                printf("%d",max-min);
    		}
    		else{
    		    printf("No Answer\n");
    		    printf("0");
    	    }
    		return 0;
    	}

  • 输入的时候
  • char a[10000];         或者                string a;           
  • gets(a);                                           cin>>a;         都行
  • 不会用getline别管了,我是废物

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值