希赛考试网
首页 > 软考 > 网络工程师

C语言如何输入一串数字

希赛网 2024-08-14 17:27:14

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

}

```

扫码咨询 领取资料


软考.png


网络工程师 资料下载
备考资料包大放送!涵盖报考指南、考情深度解析、知识点全面梳理、思维导图等,免费领取,助你备考无忧!
立即下载
网络工程师 历年真题
汇聚经典真题,展现考试脉络。精准覆盖考点,助您深入备考。细致解析,助您查漏补缺。
立即做题

软考资格查询系统

扫一扫,自助查询报考条件