华为机试牛客网,C语言实现

HJ1 字符串最后一个单词的长度

int main(){
    char a[5000];
	    int n=0,t=0,*p;
	    gets(a);
	    for(int i=0;a[i]!='\0';i++){
	        n=n+1;
	    }
	    for(int i=n-1;a[i]!=' '&&i>=0;i--)
	        t=t+1;
	    printf("%d",t);
	return 0;
}

HJ2 计算某字符出现次数

int main(){
    char n,a[1000];
    int m=0;
    gets(a);
    scanf("%c",&n);
    if(n>='A'&&n<='Z')
    {  
    for(int i=0;a[i]!='\0';i++)
        if(a[i]==n||a[i]==n+32)
            m++;
    }
    else if(n>='a'&&n<='z')
    {  
    for(int i=0;a[i]!='\0';i++)
        if(a[i]==n||a[i]==n-32)
            m++;
    }
    else
    {  
    for(int i=0;a[i]!='\0';i++)
        if(a[i]==n)
            m++;
    }
    printf("%d\n",m);
    return 0;
}

HJ3 明明的随机数

int main(int argc, char *argv[]) {
	int n,t,*p,*q;
	scanf("%d",&n);
	int a[n];
	for(int i=0;i<n;i++)
	scanf("%d",&a[i]);
	for(int j=0;j<=n-2;j++)
	for(int i=0;i<=n-2-j;i++)
		if(a[i]>a[i+1]){
			t=a[i];
			a[i]=a[i+1];
			a[i+1]=t;
		}
	for(int i=0;i<=n-1;i++){
		if(a[i]!=a[i+1])
		printf("%d\n",a[i]);}
	return 0;
}

HJ4 字符串分隔

int main(int argc, char *argv[]) {
	char a[1000];
	    gets(a);int i=0;
	    while(a[i]<="\0"){
	        i++;
	        if(i%8==0&&a[i]!='\0'){
	            printf("%c",a[i-1]);
				printf("\n");
				continue;
				}
	        if((a[i]=='\0')&&(i%8!=0)){
	        	printf("%c",a[i-1]);
				for(int m=0;m<=7-i%8;m++)
					printf("0");
					break;
				}
			if(a[i]=='\0'&&i%8==0){
			printf("%c",a[i-1]);
				break;}
			else
			printf("%c",a[i-1]);
			continue;
				}
	return 0;
}

HJ5 进制转换

int main(int argc, char *argv[]) {
	char a[20];
	int n=0,sum=0,b[20]={0};
	gets(a);
	for(int i=0;a[i+2]!='\0';i++){
		n=n+1;
		if((a[i+2]>='A')&&(a[i+2]<='Z')){
			b[i]=a[i+2]-'A'+10;
		}
		else
		b[i]=a[i+2]-'0';}
		for(int i=0;i<=n-1;i++)
			sum=sum+(b[i]*(pow(16,n-1-i)));
			printf("%d\n",sum);
	return 0;
}

HJ6 质数因子

int main(){
    int n;
    scanf("%d",&n);
    for(int i=2;i<=n;i++){
        if(i>sqrt(n)+1){
            i=n;
        }
        while(n%i==0){
            printf("%d ",i);
            n=n/i;}
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值