C语言编程入门之scanf函数输入多个值
在 C 语言中,你可以使用 scanf
一次性读取多个 float
值。通过在 scanf
中提供多个格式化说明符(如 %f
),可以从用户输入中依次读取多个 float
数值。
示例代码
下面是一个简单的示例,演示如何一次性读取多个 float
值:
#include <stdio.h>
int main() {
float num1, num2, num3;
// 提示用户输入三个浮点数
printf("请输入三个浮点数,以空格分隔:\n");
// 使用 scanf 一次读取多个浮点数
scanf("%f %f %f", &num1, &num2, &num3);
// 输出读取到的值
printf("你输入的三个浮点数是:%.2f, %.2f, %.2f\n", num1, num2, num3);
return 0;
}
代码讲解
- 声明变量:
float num1, num2, num3;
这三个变量用于存储用户输入的float
类型数值。 scanf
函数:scanf("%f %f %f", &num1, &num2, &num3);
这行代码通过scanf
函数从用户输入中读取三个float
类型的数值,并将它们分别存储在num1
,num2
,num3
中。注意每个float
类型的变量都需要传递地址符&
。- 格式化输出:
printf
函数将读取到的float
值打印出来,格式为小数点后保留两位。
运行示例
请输入三个浮点数,以空格分隔:
1.23 4.56 7.89
你输入的三个浮点数是:1.23, 4.56, 7.89
注意事项
- 输入格式:用户需要输入三个以空格或回车分隔的浮点数。
scanf
函数会自动处理输入中的空格和回车符。 - 输入类型匹配:如果用户输入的内容不能正确匹配
%f
,则scanf
函数将无法正确解析输入。
这个方法可以很方便地一次性读取多个 float
值,适用于简单的多输入场景。
当然可以!我们可以通过检查每个字符的 ASCII 码值来实现 isdigit
的功能,因为数字字符 '0'
到 '9'
的 ASCII 码值分别是 48 到 57。所以,只要判断字符的 ASCII 码是否在这个范围内,就可以确定它是否是一个数字。
下面是不用 isdigit
函数,而是通过手动检查字符的实现。
示例:不使用 isdigit
实现数字判断
#include <stdio.h>
// 自己实现的 isDigit 函数,用于判断字符是否为数字
int isDigit(char ch) {
return (ch >= '0' && ch <= '9'); // 判断是否在 '0' 到 '9' 之间
}
int main() {
char input[100];
printf("请输入一个字符串: ");
scanf("%s", input); // 读取输入字符串
int i = 0;
int isNumber = 1; // 假设输入是数字
// 遍历每一个字符,检查是否为数字
while (input[i] != '\0') {
if (!isDigit(input[i])) {
isNumber = 0; // 如果有任意一个字符不是数字,则标记为非数字
break;
}
i++;
}
if (isNumber) {
printf("输入是一个数字。\n");
} else {
printf("输入不是一个数字。\n");
}
return 0;
}
解释:
isDigit
函数:通过比较字符的 ASCII 码来判断是否是数字字符。如果字符在'0'
和'9'
之间,就返回 1,否则返回 0。- 主程序:和之前的程序逻辑相同,读取输入字符串,然后逐个字符判断是否为数字。
输出示例:
请输入一个字符串: 12345
输入是一个数字。
请输入一个字符串: 12a45
输入不是一个数字。
扩展:支持浮点数或负数
我们可以在这个基础上扩展,支持浮点数和负数的输入,和之前的思路类似。
#include <stdio.h>
// 判断字符是否是数字
int isDigit(char ch) {
return (ch >= '0' && ch <= '9');
}
int isNumeric(char input[]) {
int i = 0;
// 如果输入以负号开头,跳过负号的检查
if (input[0] == '-') {
i++;
}
int hasDecimal = 0; // 用于检查是否有小数点
while (input[i] != '\0') {
if (input[i] == '.') {
if (hasDecimal) {
return 0; // 如果已经有小数点,再遇到第二个小数点则返回 0
}
hasDecimal = 1;
} else if (!isDigit(input[i])) {
return 0; // 如果不是数字字符,也不是小数点,则返回 0
}
i++;
}
return 1;
}
int main() {
char input[100];
printf("请输入一个字符串: ");
scanf("%s", input); // 读取输入字符串
if (isNumeric(input)) {
printf("输入是一个有效的数字。\n");
} else {
printf("输入不是一个有效的数字。\n");
}
return 0;
}
这个版本允许输入负数和浮点数,并且继续使用手动判断字符是否为数字字符的 isDigit
函数。

10年软件开发经验,分享编程零基础入门教学文章视频,小项目从0到1开发迭代升级流程。 分享如何通过技术做出产品源源不断的进行盈利。关于我,学习更多编程知识。