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

时间:2015-09-16 12:04:42

标签: c runtime runtime-error

  

输入中会有多个整数。你必须写一个   计算机程序读取每个整数并打印即使整数是   可以被2整除,否则打印奇数。为了进一步帮助,数量   要读取的整数(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;
}

2 个答案:

答案 0 :(得分:2)

你有public IQueryable<ResultsViewModel> GetResults() { int numberOfVotes = 0; foreach (int IDs in GetAllPartIDs()) { numberOfVotes = (from votes in voteDB.VoterCandidateMappings where votes.PartyID == IDs ? true : false select votes.VoterID).Count(); } return ( from results in voteDB.VoterCandidateMappings join parties in voteDB.Parties on results.PartyID equals parties.Id select new ResultsViewModel { PartyName = parties.Name, TotalVotes = numberOfVotes }); } 。 Scanf正在寻找一个指向整数的指针,并且你传递的是一个整数(由于你没有分配任何东西,它可能是0;还要注意零通常等于NULL)。你想要scanf("%d",a[i]);。另请注意,您的编译器应该向您发出警告...如果使用gcc,您应该养成始终使用scanf("%d",&a[i]);编译代码的习惯

答案 1 :(得分:1)

谢谢大家。我发现了错误并使用了动态内存  该计划的分配。这是我用过的程序。如果有人  可以帮我把代码减少到几行然后请帮忙。

#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;   

}