簡體   English   中英

無法讓我的 C 程序打印 output

[英]Can't get my C program to print the output

當我 go 打印程序的 output 時,一切都顯示為零。 我認為變量沒有存儲自己,但我不完全確定。 當我 go 查看所有內容時,它看起來正確但顯然不正確。 任何幫助將非常感激。 抱歉,如果格式看起來有點不對,否則 Stack Overflow 不會接受。

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

int digit(char term[])
{
int i = 0;
int val = 0;
while (term[i] != '\0')
{
    val = val * 10 + term[i] - '0';
     
} 
i++;
return val;
}

void error()
{
printf("Error: Sales figures must be numbers.\n");
printf("Please try again.\n");
}

bool isnumber(char term[])
{
int i = 0;
while (term[i])
{
    if( isdigit(term[i]) == 0)
    {
        return false;
        i++;
    }    
}
return true;
}

int main()
{
int sales[3][2], costs[3] = {3, 4, 1}, weekends[2] = {0, 0};

int i, j, val;

char term[100];

while (1)
{
    printf("Number of Bagel sales on Saturday: ");
    scanf("%s", term);
    if( isnumber(term) == false)
    {
        error();
    }
    else
    {
        sales[0][0] = digit(term);
        break;
    }
}

while (1)
{
    printf("Number of Flatbread sales on Saturday: ");
    scanf("%s", term);
    if( isnumber(term) == false)
    {
        error();
    }
    else
    {
        sales[1][0] = digit(term);
        break;
    }
}

while (1)
{
    
    printf("Number of Muffin sales on Saturday: ");
    scanf("%s", term);
    if (isnumber(term) == false)
    {
        error();
    }
    else
    {
        sales[2][0] = digit(term);
        break;
    }
}

while (1)
{
    printf("Number of Bagel sales on Sunday: ");
    scanf("%s", term);
    if( isnumber(term) == false)
    {
        error();
    }
    else
    {
        sales[0][1] = digit(term);
        break;
    }
}

while (1)
{
    printf("Number of Flatbread sales on Sunday: ");
    scanf("%s", term);
    if( isnumber(term) == false)
    {
        error();
    }
    else
    {
        sales[1][1] = digit(term);
        break;
    }
}

while (1)
{
    printf("Number of Muffin sales on Sunday: ");
    scanf("%s", term);
    if( isnumber(term) == false)
    {
        error();
    }
    else
    {
        sales[2][1] = digit(term);
        break;
    }
}

for (i = 0; i < 2, i++;)
{
    for (j = 0; j < 3, j++;)
    {
        weekends[i] += costs[j] * sales[i][j];
    }
}

printf("\n");
for (i = 0; i < 3, i++;)
{
    printf("%d", costs[i]);
    
}
printf(".");
for (i = 0; i < 3, i++;)
{
    for (j = 0; j < 2, j++;)
    {
        printf("%d", sales[i][j]);
    }
    if (i == 0)
    {
        printf(" = ");
        printf("%d %d", weekends[0], weekends[1]);
    }
    printf("\n    ");
}

printf("\nTotal sales on Saturday: $%d", weekends[0]);
printf("\nTotal sales on Sunday: $%d", weekends[1]);
printf("\nTotal sales over the weekend: $%d", weekends[0] + weekends[1]);
return 0;
}

您沒有在循環中遞增 i 。 您的digit代碼是:

 int digit(char term[])
    {
    int i = 0;
    int val = 0;
    while (term[i] != '\0')
    {
        val = val * 10 + term[i] - '0';
         
    } 
    i++;   /* ---- this is outside the loop !! */
    return val;
    }

但它應該看起來像:

int 
digit(const char *term)
{
    int val = 0;
    while( *term != '\0' ){
        val = val * 10 + *term - '0'; 
        term += 1;    
    } 
    return val;
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM