解题思路:
计算从1到N之间所有“好数”的数量,并将这个数量打印出来。所谓“好数”是指那些其奇数位上的数字是奇数,偶数位上的数字是偶数的数。
注意事项:
确保 judge 函数的实现正确无误,特别是位数的计算和判断逻辑。在 judge 函数中,注意当 a 为0时,while 循环应该正确处理,避免进入无限循环。
参考代码:
//引入标准输入输出库,以便使用printf和scanf函数
#include <stdio.h>
//定义一个名为judge的函数,接收一个整数a作为参数,返回一个整数(0或1)
int judge(int a)
{
//声明并初始化变量count(用于计算数字的总位数)和good(用于记录符合好数条件的数字变量),以及ori_a(用于存储原始数字a的值)
int count = 0, good = 0;
int ori_a = a;
// 使用while循环计算数字a的总位数,每次除以10直到a变为0
while (a != 0)
{
count++;
a /= 10;
}
a = ori_a; //重置a以便再次遍历每一位
//使用for循环遍历数字a的每一位,current变量用于存储当前位的数字
for (int i = 1; i <= count; i++)
{
int current = a % 10;
// 根据位的位置判断其应该为奇数还是偶数
if ((i % 2 == 0) && (current % 2 == 0)) // 偶数位并且当前数字为偶数
good++;
else if ((i % 2 == 1) && (current % 2 == 1)) // 奇数位并且当前数字为奇数
good++;
a /= 10; //将a除以10以移至下一位
}
return (good == count);// 如果符合条件(奇数位是奇数、偶数位是偶数)的数字数量等于总位数,则返回 1(是好数)
}
//定义主函数
int main()
{
//声明一个整形变量N,用于存储用户输入的整数
int N;
scanf("%d", &N);//从标准输入读取一个整数,并将其存储在变量N中
//声明并初始化变量ans,用于存储满足条件的数的数量
int ans = 0;
//开始一个for循环,循环变量i从1开始,到N结束(包含N)
for (int i = 1; i <= N; i++)
{
//调用名为judge的函数,并传入当前循环的变量i作为参数,如果judge函数返回true(非零值),则变量ans的值增加1
if (judge(i))
ans++;
}
printf("%d", ans);// 输出变量ans的值,即满足条件的数的数量
return 0;// 主函数返回0
}
0.0分
1 人评分
用筛法求之N内的素数。 (C语言代码)浏览:685 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:580 |
1009题解浏览:802 |
C语言程序设计教程(第三版)课后习题9.3 (C语言代码)浏览:650 |
交换Easy (C语言代码)浏览:805 |
敲七 (C++代码)浏览:1119 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:820 |
C语言程序设计教程(第三版)课后习题9.10 (C语言代码)浏览:660 |
快速排序算法1浏览:996 |
求圆的面积 (C语言代码)浏览:714 |