繁体   English   中英

为什么这段代码会给出运行时错误?

[英]Why is this code giving runtime error?

输入中会有多个整数。 您必须编写一个计算机程序来读取每个整数并打印即使该整数可以被 2 整除,否则打印 Odd。 为了进一步提供帮助,要读取的整数 (T) 数将是计算机程序的第一个输入。

输入格式:输入的第一行包含整数个数:T。T>=1 之后,每行包含整数N。

样本输入:

2 4 5

示例输出:

偶数

#include <stdio.h>

int main()
{   
    int i,T,a[10];/*Assuming Number of integers would be less than 10*/
    printf("Enter the Number of integers\n");
    scanf("%d",&T);
    for(i=0;i<T;i++)
    {
        scanf("%d",a[i]);
        printf("\n");
    }
    for(i=0;i<T;i++)
    {
        if(a[i]%2==0)
            printf("Even\n");
        else
            printf("Odd\n");
    }

    return 0;
}

你有scanf("%d",a[i]); . Scanf 正在寻找一个指向整数的指针,并且您正在传递一个整数(由于您尚未分配任何内容,因此很可能为 0;另请注意,零通常等于 NULL)。 你想要scanf("%d",&a[i]); . 还要注意,你的编译器应该给你一个警告……如果使用 gcc,你应该养成总是用-Wall编译代码的习惯

谢谢大家。 我发现了错误并为程序使用了动态内存分配。 这是我使用的程序。 如果有人可以帮助我将代码减少到几行,那么请帮忙。

#include<stdio.h>
int main()
{
    int i,*ptr,t;
    printf("Enter the count:");
    scanf("%d",&t);
    ptr=(int*)malloc(t*sizeof(int));
    if(ptr==NULL)
    {
        printf("Memory not allocated\n");
        exit(0);
    }
    if(t>=1)
    {
        for(i=0;i<t;++i)
        {
            printf("Enter Data:");
            scanf("%d",ptr+i);
        }
        for(i=0;i<t;i++)
        {
            if((*(ptr+i))%2==0)
                printf("%d is Even\n",*(ptr+i));
            else
                printf("%d is Odd\n",*(ptr+i));
        }
    }   
    return 0;   

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM