xdoj函数3 字符串元素统计,十六进制转十进制,查找编号


字符串元素统计


问题描述:
编写一个函数,由实参传来一个字符串,统计字符串中字母,数字的个数,在主函数中输入字符及输出上述结果。
输入说明:
随机输入一个字符串。
输出说明:
依次输出该字符串中字母,数字的个数。
输入样例
abc123
输出样例:
3,3

#include <stdio.h>
#include <string.h>
#include <ctype.h>
int record(char* x,int y)
{
    int i=0,c=0;
    for(i=0;i<y;i++)
    {
        if(isupper(x[i]) || islower(x[i]))
        c++;
    }
    return c;
}
int Record(char* x,int y)
{
    int i=0,c=0;
    for(i=0;i<y;i++)
    {
        if(isdigit(x[i]))
        c++;
    }
    return c;
}
int main()
{
    char input[100];
    gets(input);
    int n=strlen(input);
    int a=record(input,n);
    int b=Record(input,n);
    printf("%d,%d",a,b);
    return 0;
}  


十六进制转十进制 


编写一个函数,输入一个十六进制正整数,输出相应的十进制正整数
输入格式:输入一个十六进制正整数(不区分大小写)
输出格式:输出一个十进制正整数
输入样例:F
输出样例:15

#include <stdio.h>
#include <string.h>
#include <math.h>
int digit16(char* x,int y)
{
    int i=0,sum=0;
    char X[y];
    for(i=0;i<y;i++)
    {
        X[i]=*(x+y-i-1);
    }
    for(i=0;i<y;i++)
    {
        if(X[i]>='0' && X[i]<='9')
        sum=sum+pow(16,i)*(X[i]-'0');
        if(X[i]>='a' && X[i]<='f')
        sum=sum+pow(16,i)*(X[i]-'a'+10);
        if(X[i]>='A' && X[i]<='F')
        sum=sum+pow(16,i)*(X[i]-'A'+10);
    }
    return sum;
}
int main()
{
    char input[50];
    gets(input);
    int m=strlen(input);
    int n=digit16(input,m);
    printf("%d",n);
    return 0;
}    

 


查找编号


问题描述:
随着互联网的普及和大数据时代的到来,数据隐私和信息安全问题日益突
出。这天警察小明确定了一栋居民楼中收集用户信息实施电信诈骗的两个不法分
子,他们的住房编号均为素数,且住房编号相差为 2。现在,给定该栋居民楼的
住房总数 n,请从 1 到 n 的住房编号范围中帮助小明筛查出所有可疑的住房编号。
输入格式:
一个正整数 n。
输出格式:
按照从小到大的顺序输出所有可疑编号组,每行输出一组。每组可疑编号为
两个相差为 2 的素数,中间用单个空格隔开,先输出较小的素数,后输出较大的
素数。若没有找到任何可疑的编号组,输出 empty。
样例输入:
10
样例输出:
3 5
5 7
样例说明:
小于等于 10 的素数包括 2,3,5,7。3 和 5 相差 2 故而为一组可疑编号,5
和 7 相差 2 故而也为一个可疑编号。
评测用例规模与约定:
1≤n≤10000

#include <stdio.h>
int is_prime(int x)
{
    int i=0;
    if(x==0||x==1)
    return 0;
    if(x==2)
    return 1;
    for(i=2;i<x;i++)
    {
        if(x%i==0)
        return 0;
    }
    return 1;
}
void find_prime(int x)
{
    int i=0,arr[x]={0},j=0,sign=0;
    for(i=0;i<x;i++)
    {
        if(is_prime(i)==1)
        {
            arr[j]=i;
            j++;
        }
    }
    for(i=0;i<j-1;i++)
    {
        if(arr[i+1]-arr[i]==2)
        {
            printf("%d %d",arr[i],arr[i+1]);
            printf("\n");
        }
        sign++;
    }
    if(sign==0)
    {
        printf("empty");
    }
}

int main()
{
    int n=0;
    scanf("%d",&n);
    find_prime(n);
    return 0;
}

  • 13
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北の风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值