C语言gets输入十个数字计算非负数的合
时间: 2024-12-20 09:18:08 浏览: 17
在C语言中,`gets()`函数已不再安全使用,因为它存在缓冲区溢出的风险。为了安全地接收用户输入并计算非负数之和,你可以使用`fgets()`函数,并配合数组和循环结构来实现。以下是一个简单的示例程序:
```c
#include <stdio.h>
int main() {
int numbers[10]; // 创建一个包含10个元素的整型数组
char input[11]; // 存储输入的字符串,包括空格
int sum = 0; // 初始化总和为0
printf("请输入10个非负整数,每个数之间用空格隔开:\n");
// 使用fgets读取用户输入,直到换行符为止
fgets(input, sizeof(input), stdin);
// 检查是否有多余的空格或结束符,并去掉换行符
if (input[strlen(input) - 1] == '\n') {
input[strlen(input) - 1] = '\0';
}
// 分割输入字符串,将每个数字存入数组
for (int i = 0, j = 0; i < strlen(input); i++) {
if (isdigit(input[i])) { // 判断字符是否为数字
numbers[j++] = input[i] - '0'; // 转换为整数并存储
}
else if (j > 0) { // 如果遇到非数字,检查之前是否有数值输入
break;
}
}
// 计算非负数之和
for (int num : numbers) {
if (num >= 0) {
sum += num;
}
}
printf("非负数的和是:%d\n", sum);
return 0;
}
```
在这个程序中,我们首先提示用户输入,然后使用`fgets()`获取用户的输入并处理多余信息。接着通过遍历输入字符串,将每个非空格的数字字符转换成整数并添加到数组中。最后,计算数组中的非负数之和。
阅读全文