用C语言编写 ,输入一行字符,分别统计其中大写字母、当参数n为水仙花数时该函数返回1,否则返回0.然后写一程序调用该函数求100-999之间的水仙花数。说明:水仙花数是指一个三位数的各位数字的立方和是这个数本身。
时间: 2024-09-08 17:04:07 浏览: 51
首先,我们来编写一个C语言程序,该程序包含两个部分:一部分是统计输入字符串中大写字母数量的函数;另一部分是判断一个数是否为水仙花数的函数,并在主程序中调用该函数来找出100-999之间的所有水仙花数。
1. 统计输入字符串中大写字母数量的函数:
```c
#include <stdio.h>
// 函数声明,用于统计大写字母数量
int count_uppercase(char *str);
int main() {
char str[100];
printf("请输入一行字符:");
scanf("%99s", str); // 读取一行字符串,最多99个字符,为了留出一个位置给字符串结束符'\0'
// 调用函数统计大写字母数量
int uppercase_count = count_uppercase(str);
printf("大写字母的数量是:%d\n", uppercase_count);
return 0;
}
// 函数定义,用于统计大写字母数量
int count_uppercase(char *str) {
int count = 0;
while (*str) {
if (*str >= 'A' && *str <= 'Z') {
count++;
}
str++;
}
return count;
}
```
2. 判断一个数是否为水仙花数的函数,并在主程序中调用该函数:
```c
#include <stdio.h>
// 函数声明,用于判断是否为水仙花数
int is_narcissistic(int n);
int main() {
printf("100-999之间的水仙花数有:\n");
for (int i = 100; i < 1000; i++) {
if (is_narcissistic(i)) {
printf("%d\n", i);
}
}
return 0;
}
// 函数定义,用于判断是否为水仙花数
int is_narcissistic(int n) {
int original = n; // 保存原始数值
int sum = 0;
while (n > 0) {
int digit = n % 10; // 获取当前最低位的数字
sum += digit * digit * digit; // 累加每个位上数字的立方
n /= 10; // 去掉当前最低位的数字
}
return sum == original; // 如果各位数字的立方和等于原数,则是水仙花数
}
```
以上两个程序段分别实现了所需功能。第一个程序段统计输入字符串中的大写字母数量,第二个程序段找出并打印100到999之间的所有水仙花数。
阅读全文