用C语言编程 只用循环不用数组 程序功能:输入正整数 m,求 m 最高位的权及 m 各数位上偶数数字之和。 例如,整数 12345,最高位的权是 104,各数位偶数数字之和为 6。
时间: 2024-02-26 14:57:45 浏览: 20
好的,我来给您写一个用循环实现,不使用数组的 C 语言程序。以下是代码:
```c
#include <stdio.h>
int main() {
int m, n, sum = 0, power = 1;
printf("请输入一个正整数 m:");
scanf("%d", &m);
// 计算最高位的权
n = m;
while (n >= 10) {
power *= 10;
n /= 10;
}
printf("%d 最高位的权为 %d\n", m, power);
// 计算各数位上偶数数字之和
n = m;
while (n > 0) {
int digit = n % 10;
if (digit % 2 == 0) {
sum += digit;
}
n /= 10;
}
printf("%d 各数位上偶数数字之和为 %d\n", m, sum);
return 0;
}
```
程序运行后,会要求您输入一个正整数 m,程序会先计算出 m 最高位的权,然后再计算出各数位上偶数数字之和,并输出这两个结果。以上就是这个程序的实现方法,希望能够帮到您!
相关问题
用C语言编程 只用循环不用数组 程序功能:从键盘上输入一个班的学生成绩,评估教学效果。评估规则 如下:若平均分高于最高分的 4/5,教学效果为“好”;若平均分低于最高分与最低分之和的 1/2,教学效果为“差”;否则为“一般”。
好的,这是一个很有趣的问题,我可以用 C 语言编写一个程序来解决这个问题。以下是代码实现:
```
#include <stdio.h>
int main() {
int n, score, sum = 0, max = 0, min = 100;
printf("请输入学生人数:");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("请输入第 %d 个学生的成绩:", i + 1);
scanf("%d", &score);
sum += score;
if (score > max) {
max = score;
}
if (score < min) {
min = score;
}
}
double average = (double) sum / n;
if (average > (double) max * 4 / 5) {
printf("教学效果为“好”\n");
} else if (average < (double) (max + min) / 2) {
printf("教学效果为“差”\n");
} else {
printf("教学效果为“一般”\n");
}
return 0;
}
```
该程序首先通过 `scanf` 函数获取学生人数 `n`,然后在 `for` 循环中循环 `n` 次,每次获取一个学生的成绩,并计算总成绩 `sum`,同时比较该成绩与最高分 `max` 和最低分 `min`,更新它们的值。
接着通过计算平均分 `average`,根据给定的评估规则输出教学效果的评价结果。
需要注意的是,在计算平均分和评估教学效果时,需要将数字类型转换为 `double` 类型,以免出现整数除整数的情况。
这样就完成了用 C 语言编程,只用循环不用数组的程序编写。希望对你有所帮助!
用c语言循环实现:输入正整数n,m,求不大于n的m个互不相同的最大的素数
以下是用 C 语言循环实现输入正整数 n,m,求不大于 n 的 m 个互不相同的最大的素数的代码:
```c
#include <stdio.h>
int is_prime(int num) {
if (num <= 1) {
return 0;
}
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return 0;
}
}
return 1;
}
int main() {
int n, m;
printf("请输入正整数n和m:");
scanf("%d%d", &n, &m);
while (m > 0) {
if (is_prime(n)) {
printf("%d ", n);
m--;
}
n--;
}
return 0;
}
```
首先定义了一个判断素数的函数 `is_prime`,然后在主函数中获取用户输入的正整数 n 和 m。接着用一个 while 循环,不断将 n 减 1 并判断其是否为素数,如果是素数,则输出该数并将 m 减 1,直到 m 等于 0 为止。