C 在类似数组[i]的数组中,如何设置条件以查看[i]的值并在其高于某个值时退出循环?

C 在类似数组[i]的数组中,如何设置条件以查看[i]的值并在其高于某个值时退出循环?,c,C,如果我的帐户[MAX]的最大值为10,并且在一个循环中提示用户在帐户[MAX]中输入帐户,我如何生成代码以查看帐户数量是否超过10,并告诉用户帐户的最大值已输入且不再接受输入 这是我的do while循环 do { printf ("Options Available: \n"); printf ("\n 1 - Enter a transaction"); printf ("\n 2 - View the general journal"); printf ("\n 3 - View the

如果我的帐户[MAX]的最大值为10,并且在一个循环中提示用户在帐户[MAX]中输入帐户,我如何生成代码以查看帐户数量是否超过10,并告诉用户帐户的最大值已输入且不再接受输入

这是我的do while循环

do
{
printf ("Options Available: \n");
printf ("\n 1 - Enter a transaction");
printf ("\n 2 - View the general journal");
printf ("\n 3 - View the balance sheet");
printf ("\n q - Quit the program\n");

printf ("\nPlease enter 1, 2, 3 or q: ");

    option = validateoption();

    if (option == '1')
    {
        printf ("\nEnter an account number (between 1000 and 3999): ");
        accounts[i] = validateaccount();
        printf ("\n");

        printf ("Enter d (debit) or c (credit): ");
        debcred[i] = validatedebcred();
        printf ("\n");

        printf ("Enter transaction amount: ");
        amount[i] = validateamount();
        printf ("\n");

        printf ("\n");

        i++;
        totalinput++;
    }

    if (option == '2')
        journal(accounts, debcred, amount, &totalinput);

    if (option == '3')
        balancesheet(accounts, debcred, amount, &totalinput);

} while (option != 'q');
如果你输入1,2,3或q,它就可以工作了。现在在账户[i]中,如果账户数量超过10,我可以写些什么来告诉用户已输入最大数量的账户,并且不接受更多的输入

我的validateaccount函数:

long validateaccount() {  // VALIDATE INPUT FOR ACCOUNT # IN TRANSACTION FUNCTION

int keeptrying = 1, rc;
 long i;
char after;

do
{
    rc = scanf ("%ld%c", &i, &after);

    if (rc == 0)
    {
        printf (" **Invalid input try again: ");
        clear();
    }
        else if (after != '\n')
        {
            printf (" **Trailing characters try again: ");
            clear();
        }
            else if (i < 1000 || i > 3999)
            {
                printf (" **Invalid input try again: ");
            }
                else
                {
                    keeptrying = 0;
                }

} while (keeptrying == 1);

return i;

}
long validateaccount(){//在事务函数中验证帐户#的输入
int keeptrying=1,rc;
龙我;
炭后;
做
{
rc=scanf(“%ld%c”、&i、&after);
如果(rc==0)
{
printf(“**无效输入重试:”);
清除();
}
如果(在!='\n'之后)
{
printf(“**尾随字符重试:”);
清除();
}
否则如果(i<1000 | | i>3999)
{
printf(“**无效输入重试:”);
}
其他的
{
keeptrying=0;
}
}while(keeptrying==1);
返回i;
}
更换

if (option == '1')

if(选项=='1'&&totalinput
当达到最大数量时,选项1被禁用

您可能也希望更早地添加检查,因此如果选项1已被禁用,则不必执行
printf()
option 1


注意:您同时拥有
i
totalinput
。我认为如果您删除
I
并只使用
totalinput
,会更好(更容易理解)。(因为
totalinputs
i
更具描述性)

对不起,它不应该是If、Else If和Else吗?没有那么多的if(看起来很奇怪)或一个好的switch语句……:)好的,它停止接受输入,但是当输入量太大时,如何添加printf选项来打印消息?因为现在它只是通过在
validateoption()
中添加相同的检查(if语句)重新进入原始循环,而不打印任何内容,因此如果禁用,则输入1将被忽略。。。或者,如果函数中没有可用的
totalinput
(您没有),请将布尔值(选项可用时为true,禁用时为false)传递给函数。对不起,我不知道如何理解!在我的validateOptions()函数中,我添加了一个else if语句if totalinput>10 printf something,并添加了指向该函数的指针,指向totalinput,但它仍然没有printf something!获取用户输入后,应检查选项1是否已禁用。如果是这样,请告诉用户并请求一个新值(如果用户输入4,我想您已经这样做了。)检查选项1是否禁用的条件是什么?在主循环中还是在validateoption函数中?我尝试的一切都只是跳过输入并重新运行1,2,3,q循环,但如果总输入太高,则不打印任何内容
if (option == '1' && totalinput < MAX)