我的C程序计数比它应该的少1个数字[关闭]

omvjsjqw  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(163)

**已关闭。**此问题为not reproducible or was caused by typos。目前不接受回答。

这个问题是由错字或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
22天前关闭
Improve this question
我正在尝试做一个C程序,给定一个数字序列,打印出监控有多少数字是偶数,奇数,null,正数,负数以及序列是增加还是减少。
问题是,我的程序比它应该数的少了1个数字。如果我插入5个数字,我的程序将数4个数字。
有人能帮帮我吗?

// Scrivi un programma in C che data una sequenza di numeri stampa i positivi, i negativi, i nulli
// se è pari, se è dispari e di che tipo è la sequenza (crescente, decrescente, indefinita)
#include <stdio.h>
#include <stdlib.h>

int main() {
    int N;

    // Chiedi all'utente il numero di elementi nella sequenza
    printf("Inserisci il numero di elementi nella sequenza: ");
    scanf("%d", &N);

    // Dichiarazione delle variabili
    int numero, positivi = 0, nulli = 0, negativi = 0, pari = 0, dispari = 0;
    int precedente, crescente = 1, decrescente = 1;

    // Leggi il primo numero per confronto
    printf("Inserisci il primo numero: ");
    scanf("%d", &precedente);

    // Loop per leggere gli N-1 numeri successivi
    for (int i = 1; i < N; i++) {
        printf("Inserisci il prossimo numero: ");
        scanf("%d", &numero);

        // Conta positivi, nulli e negativi
        positivi += (numero > 0) ? 1 : 0;
        nulli += (numero == 0) ? 1 : 0;
        negativi += (numero < 0) ? 1 : 0;

        // Conta pari e dispari
        pari += (numero % 2 == 0) ? 1 : 0;
        dispari += (numero % 2 != 0) ? 1 : 0;

        // Verifica se la sequenza è crescente o decrescente
        crescente = (numero > precedente) ? crescente : 0;
        decrescente = (numero < precedente) ? decrescente : 0;

        // Aggiorna il valore precedente per il prossimo confronto
        precedente = numero;
    }

    system("cls");
    // Stampa dei risultati
    printf("\nRisultati:\n");
    printf("Numeri positivi: %d\n", positivi);
    printf("Numeri nulli: %d\n", nulli);
    printf("Numeri negativi: %d\n", negativi);
    printf("Numeri pari: %d\n", pari);
    printf("Numeri dispari: %d\n", dispari);

    // Stampa della condizione sulla sequenza
    printf((crescente) ? "La sequenza e' crescente.\n" : (decrescente) ? "La sequenza e' decrescente.\n" : "La sequenza non e' ne crescente ne decrescente.\n");

    return 0;
}

字符串
我不知道如何在for循环中包含第一个数字,或者如何使它工作。

ddhy6vgd

ddhy6vgd1#

你的问题在你的循环逻辑中:

for (int i = 1; i < N; i++)

字符串
对于N = 4的值,这将为以下值循环:123,但不为4,因为4不小于N => 4 < 4不为真。
因此,将循环改为使用小于 * 或 * 等于:

for (int i = 1; i <= N; i++)


这是循环中基于1的逻辑的常见问题,因为比较在每个循环周期开始时进行评估,i在结束时递增。

  • 使用i < N以升序表示从零开始的索引
  • 对基于1的索引使用i <= N,按升序排列

降序(倒计时)则相反
1基于降序:

for (int i = N; i > 0 N; i--)


基于zeo的下降:

for (int i = N - 1; i >= 0 N; i--)

相关问题