软考
APP下载

C语言如何输入一串数字

在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;

}

```

备考资料 免费领取:网络工程师报考指南+考情分析+思维导图等 立即下载
真题演练 精准解析历年真题,助你高效备考! 立即做题
相关阅读
网络工程师题库