22168 数位五五

数位五五

链接:https://ac.nowcoder.com/acm/problem/22168
来源:牛客网

题目描述
求出a到b之间有多少个数数位之和为5的倍数
输入描述:
输入一行包含两个整数x,y (0 \le x, y \le 10000000≤x,y≤1000000)
输出描述:
输出一个整数
示例:
输入

10 20

输出

2

说明
14和19的数位和为5和10,符合条件

代码

#include<stdio.h>
#include<string.h>
int main(){
    int a,b;
    int sum = 0,count = 0;
    char temp[7] = {'\0'}; //别忘了大括号
    scanf("%d%d",&a,&b);
    for(int i = a;i<b+1;i++){
        sprintf(temp,"%d",i);
        for(int j = 0;temp[j] != '\0';j++){
            sum += temp[j] - '0';
        }
        if(sum%5 == 0 && sum != 0)    count++;
        sum = 0;
        memset(temp,0,8);  //清空字符串
    }
    printf("%d",count);
    return 0;
}

总结:
1、C语言将把整数/长整数格式化成字符串,采用sprintf和snprintf函数。需要头文件string

int sprintf(char *str, const char *format, ...);
int snprintf(char *str, size_t size, const char *format, ...);

注意第一个参数是一个字符串,对于C语言来说就是字符数组。不能是int型的数组哦。
2、C语言把字符串转换为整数和长整数,采用atoi和atol函数。
3、清空字符串用memset()函数,memset(str, 0, sizeof(str));
4、其实太多函数也记不住,对一个数的每一位进行求和也可以用循环来写,不一定非得化成字符串。

while(i != 0){
    sum += i%10;
    i /= 10;
}
return sum;

5、把一个字符串变成整数。

num = 0;
forint i = 0;i<strlen(str);i++{
    num = num*10 + str[i];
}
return num;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值