江湖救急为什么本人输入的这段代码运行后,本人的数组的值都变成了-1

C语言 码拜 8年前 (2016-04-07) 868次浏览
#include<stdio.h>
int main(void)
{
    int digit[100];
    int sum=0;
    float ave=0.0;
    int i=0,j=0;
    for(i=0;i<100;i++)
    {
        scanf("%d",&digit[i]);
        if(digit[i]==-1)
            break;
    }
    for(j=0;j<i;j++)
    {
        sum +=digit[i];
    }
    ave = sum/i;
    printf("%d\n",sum);
    printf("%.2f\n",ave);
    return 0;
}

digit[]数组里面的值莫名其妙的变成了-1,高手们可以加个printf语句试试digit[]的值。
本人在两个编译器里面都试过,为什么会这样啊。
谢各位高手解答!

解决方案

10

#include<stdio.h>
int main(void)
{
    int digit[100];
    int sum=0;
    float ave=0.0f;
    int i=0,j=0;
    for (i=0;i<100;i++) printf("%d ",digit[i]);
    printf("\n");
    for(i=0;i<100;i++)
    {
        printf("Input digit[%d]:",i);fflush(stdout);
        scanf("%d",&digit[i]);
        if(digit[i]==-1)
            break;
    }
    for(j=0;j<i;j++)
    {
        sum +=digit[j];
    }
    ave = (float)sum/i;
    printf("sum:%d\n",sum);
    printf("ave:%.2f\n",ave);
    return 0;
}
//1311096 27 32 0 35 -1473595837 1311096 0 0 1 2090180133 268435456 1244912 2090180013 1315560 2090180041 1244976 13241797 -2136591274 3623968 3604840 56 3623968 3623976 3605848 -1995983848 56 0 3604480 1244244 0 1244828 2090172640 2090180464 -1 2090180460 270589708 3604480 0 48 0 0 2147348480 -1999473920 1244884 270609247 1244932 270608376 0 270609891 3624008 205 12 0 0 2147348480 0 2147348480 0 1244892 270579140 270944128 1244948 270609028 9 270609019 0 0 2147348480 36240080 1318752 1245104 270608376 270889264 -1 1244980 270608879 0 0 0 270887808 1320147 1245024 270579359 1320144 3624016 3624020 1245012 1245020 1320144 1320144 2 3624008 4 1245032 270577712 1245120 4199150
//Input digit[0]:9
//Input digit[1]:8
//Input digit[2]:7
//Input digit[3]:6
//Input digit[4]:-1
//sum:30
//ave:7.50
//

20

sum += digit[i];应该是sum += digit[j];

#include<stdio.h>
int main(void)
{
	int digit[100];
	int sum = 0;
	float ave = 0.0;
	int i = 0, j = 0;
	for (i = 0; i < 100; i++)
	{
		scanf("%d", &digit[i]);
		if (digit[i] == -1)
			break;
	}
	for (j = 0; j < i; j++)
	{
		sum += digit[j];
	}
	ave = sum / i;
	printf("%d\n", sum);
	printf("%.2f\n", ave);
	return 0;
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明江湖救急为什么本人输入的这段代码运行后,本人的数组的值都变成了-1
喜欢 (0)
[1034331897@qq.com]
分享 (0)