编写C程序,供用户输入50个或更少的数字



我正在尝试编写一个C程序,该程序必须要求用户输入50个或更少的数字。我的问题是";或更小";数字。如何让程序知道用户何时希望停止输入数字?

以下是您的问题的答案:-

#include <stdio.h>
#include <stdlib.h>
#include<conio.h>
void main()
{
int a[100],n,i;
printf("Enter the no of inputs u want to give (It must be less than or eqaual to 50)n");
scanf("%d",&n);
printf("Enter the nos n");
if(n<=50)
{
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
}
else
printf("Invalid Input n");
getch();
}

处理未知数量输入的用户输入的最简单方法就是用fgets()读取所有输入,并允许用户在完成输入后在空行上按Enter。您还必须检查手动EOF,因为用户按Ctrl+d(或窗口上的

Ctrl+z使用fgets()读取可以将输入读取到字符数组中。所有面向行的输入函数(例如fgets()和POSIXgetline()(读取并包括用户在填充的缓冲区中每次输入后按Enter生成的'n'。因此,只需检查缓冲区中的第一个字符是否为'n'字符,即可查看用户是否完成了输入并在空行上按下Enter

一个简短的例子:

#include <stdio.h>
#define MAXC 1024       /* if you need a constant, #define one (or more) */
#define MAXI   50
int main (void) {

char line[MAXC];    /* buffer to hold user input */
int array[MAXI];    /* array to hold up to MAXI integer values */
size_t n = 0;       /* counter for number of integers in array */

printf ("nEnter up to %d integers, Press [ENTER] on empty-line to end:nn", MAXI);

while (n < MAXI) {                                  /* while array not full */
printf (" array[%2zu]: ", n);                   /* prompt for input */

if (fgets (line, MAXC, stdin) == NULL) {        /* if manual EOF, quit */
puts ("(user canceled input)");
return 0;
}
if (line[0] == 'n')                            /* if Enter on empty-line, done */
break;

if (sscanf (line, "%d", &array[n]) == 1)        /* if valid integer */
n += 1;                                     /* increment counter */
else    /* otherwise, handle error */
fputs ("  error: invalid integer input.n", stderr);
}

puts ("narray content:n");
for (size_t i = 0; i < n; i++)
printf (" array[%2zu] : %dn", i, array[i]);
}

(注意:循环条件while (n < MAXI)如何确保向数组中写入的整数永远不会超过它所能容纳的整数(

示例使用/输出

该程序完全验证整数输入,并通过简单地通过错误消息通知用户,然后重新提示输入来处理任何非整数输入:

$ ./bin/fgets_n_integers
Enter up to 50 integers, Press [ENTER] on empty-line to end:
array[ 0]: 10
array[ 1]: 20
array[ 2]: Three Hundred Twenty-Six!!!
error: invalid integer input.
array[ 2]: 30
array[ 3]: 40
array[ 4]: 50
array[ 5]: Are we done yet?, No Press [Enter] on an empty-line!
error: invalid integer input.
array[ 5]: 60
array[ 6]: 70
array[ 7]: 80
array[ 8]: 90
array[ 9]:
array content:
array[ 0] : 10
array[ 1] : 20
array[ 2] : 30
array[ 3] : 40
array[ 4] : 50
array[ 5] : 60
array[ 6] : 70
array[ 7] : 80
array[ 8] : 90

仔细看一遍,试一下,如果你有进一步的问题,请告诉我。

如果我理解正确,您需要允许用户输入不超过50次的输入。你可以简单地使用一个变量来计算输入的数量,比如:

int main()
{
int input, count=0;
printf("Enter not more than 50 inputsn");
while (count < 50)
{
printf("Remaining inputs: %dn", 50-count);
scanf("%d", &input); // I just use an integer input for this answer
printf("Entered: %dn", input); // frame your own logic to handle the inputs
count++;
}
printf("Done!");
return 0;
}

最新更新