在C语言中,输入数字是常见的操作。对于输入一串数字,可以使用数组来存储。本文将从多个角度分析C语言如何输入一串数字,包括以下内容:
1. scanf函数的使用
2. getchar函数的使用
3. 输入验证
4. 数组的使用
5. 代码示例
1. scanf函数的使用
在C语言中,scanf函数可以用来输入一个数字。代码如下:
```
int num;
scanf("%d", &num);
```
这里,%d是格式控制字符串,表示输入一个整数。&num是变量num的地址,表示将输入的数字存储到变量num中。
如果要输入多个数字,可以连续使用多个scanf函数。代码如下:
```
int num1, num2;
scanf("%d", &num1);
scanf("%d", &num2);
```
这里,先输入num1,再输入num2。也可以使用一行代码输入两个数字,如下:
```
scanf("%d %d", &num1, &num2);
```
2. getchar函数的使用
scanf函数用起来很方便,但是它有一个缺点,那就是不会读取缓存区中的换行符。例如:
```
char c;
scanf("%c", &c);
printf("%c", c);
```
输入a后按下回车键,压入缓存区的是a和一个换行符。但是,scanf函数只会读取a,而换行符留在了缓存区中。接下来用printf函数输出c时,会先输出a,然后输出换行符,导致输出结果在屏幕上显示异常。使用getchar函数可以解决这个问题,代码如下:
```
char c;
c = getchar();
putchar(c);
```
getchar函数每次只读取一个字符,而换行符也被读取了。putchar函数可以输出字符。这样就可以正常输出了。
3. 输入验证
在输入一串数字时,输入错误的情况不可避免,例如输入字母、符号等。为了确保输入的数字准确无误,可以进行输入验证。例如,验证输入是否为数字及范围是否正确,代码如下:
```
int num;
char c;
int i = 0;
while((c = getchar())!= '\n') {
if(c >= '0' && c <= '9') {
num = num * 10 + c - '0';
i++;
}
else {
printf("输入不合法!\n");
return 0;
}
}
if(num <= 0 || num > 100) {
printf("输入范围不正确!\n");
return 0;
}
```
这里使用while循环,每次只读入一个字符,并判断该字符是否为数字。如果是数字,就将其加入到num中。如果不是数字,就说明输入不合法,输出错误信息。当读取完所有字符后,对输入的数字进行范围验证,如果不在指定范围内,也输出错误信息。
4. 数组的使用
当输入一串数字时,可以使用数组来存储这些数字。例如,输入10个数字并存储到数组中,代码如下:
```
#define MAX_SIZE 10
int arr[MAX_SIZE];
int i;
for(i = 0; i < MAX_SIZE; i++) {
scanf("%d", &arr[i]);
}
```
这里定义了一个长度为10的整型数组,并使用for循环逐个输入数字,并存储到对应的数组元素中。这样就可以使用数组来存储输入的数字,方便后续的处理。
5. 代码示例
下面是一个完整的示例代码,实现了输入一串数字,并计算它们的和:
```
#include
#define MAX_SIZE 10
int main() {
int arr[MAX_SIZE];
int i, sum = 0;
for(i = 0; i < MAX_SIZE; i++) {
printf("请输入第%d个数字:\n", i + 1);
char c;
int num = 0;
while((c = getchar())!= '\n') {
if(c >= '0' && c <= '9') {
num = num * 10 + c - '0';
}
else {
printf("输入不合法!\n");
return 0;
}
}
if(num <= 0 || num > 100) {
printf("输入范围不正确!\n");
return 0;
}
arr[i] = num;
sum += num;
}
printf("输入的数字为:");
for(i = 0; i < MAX_SIZE; i++) {
printf("%d ", arr[i]);
}
printf("\n它们的和为:%d\n", sum);
return 0;
}
```
扫码咨询 领取资料