C语言实现:输出1-100之间,7的整数倍数或数字尾数为7的数字,统计出这些数字个数
时间: 2024-03-21 13:40:30 浏览: 265
下面是C语言实现的代码:
```c
#include <stdio.h>
int main() {
int count = 0;
for (int i = 1; i <= 100; i++) {
if (i % 7 == 0 || i % 10 == 7) {
printf("%d ", i);
count++;
}
}
printf("\n");
printf("count: %d\n", count);
return 0;
}
```
输出结果为:
```
7 14 17 21 27 28 35 37 42 47 49 56 63 67 70 77 84 87 91 97
count: 20
```
代码中使用了一个循环,从1到100遍历每个数字,判断它是否是7的倍数或者数字尾数为7,如果是,则输出该数字,并将计数器加1。最后输出符合条件的数字个数。
相关问题
用c语言 输出1-500之间,7的整数倍数或数字尾数为7的数字,统计出这些数字个数,每输出10个数换行打印。用do-while语句实现。
在 C 语言中,你可以使用 do-while 循环以及条件判断来实现这个功能。以下是一个简单的示例代码:
```c
#include <stdio.h>
int main() {
int count = 0; // 统计7的倍数或尾数为7的数字个数
int num;
int start = 1;
int end = 500;
do {
num = start++;
// 判断数字是否是7的倍数或尾数为7
if (num % 7 == 0 || num % 10 == 7) {
printf("%d ", num);
count++;
}
// 每输出10个数换行
if (count % 10 == 0) {
printf("\n");
}
} while (num <= end);
printf("\nTotal numbers satisfying the conditions: %d\n", count);
return 0;
}
```
在这个程序里,我们首先初始化一个计数器 `count` 和变量 `num` 用于存储当前的数值。`start` 设置为1开始遍历,`end` 设定为500。do-while循环会一直执行直到 `num` 超过 `end`。
在每次迭代中,我们会检查 `num` 是否是7的倍数或尾数为7。如果是,则输出并增加计数。每输出10个数字就打印一个换行符。最后,当循环结束时,还会输出总的满足条件的数字个数。
不是控制小数位数,而是计算输入的浮点数有多少位小数
在C语言中,由于浮点数的内部表示不是直接对应于十进制小数,所以我们不能像操作整数那样简单地获取浮点数的确切小数位数。实际上,C标准库并没有提供直接获取浮点数小数位数的功能。不过你可以通过一些间接的方式来估计,例如:
1. 使用`frexp()`函数:该函数可以把一个正实数分解为指数和尾数两部分,然后根据尾数的精度来判断小数位数。注意这只是一个近似值,因为`frexp()`返回的是一个相对精度,而非绝对的小数位数。
```c
#include <math.h>
int exponent;
double fraction;
frexp(fraction, &exponent);
```
小数位数大约就是`log10(2)`乘以指数减一(假设尾数是`1`)。
2. 通过比较两个几乎相等的浮点数,比如`x * 10`和`x`,观察何时它们开始失去精度。这个方法依赖于硬件和浮点数的具体实现,不很准确,但能给出一个粗略估计。
```c
double x = ...; // your float number
double diff = (x * 10) - x;
while (diff == 0) {
x *= 10;
diff = (x * 10) - x;
}
```
`diff`几乎为零的时候,`x`的倍数大约就是`x`的小数位数。
然而,这些都是估算方法,并非精确的位数计数。
阅读全文