在c语言中输入大量no
我们的初始数字是1、2、3、4和5。我们可以使用五个整数中的四个来计算以下总和: 如果我们把除1之外的所有东西加起来,我们的和就是。2+3+4+5; 和其他人一样 如您所见,最小和是最小的,最大和是最大的。因此,我们将这些最小和最大和作为两个空间分隔的整数打印在新行上 提示:注意整数溢出!使用64位整数 这是我的问题,但它未能测试某些值……我认为这是数据类型ISUT,但我已尽可能长时间地拒绝 此输入失败: 769082435 210437958 673982045 375809214 380564127 帮帮我在c语言中输入大量no,c,long-integer,C,Long Integer,我们的初始数字是1、2、3、4和5。我们可以使用五个整数中的四个来计算以下总和: 如果我们把除1之外的所有东西加起来,我们的和就是。2+3+4+5; 和其他人一样 如您所见,最小和是最小的,最大和是最大的。因此,我们将这些最小和最大和作为两个空间分隔的整数打印在新行上 提示:注意整数溢出!使用64位整数 这是我的问题,但它未能测试某些值……我认为这是数据类型ISUT,但我已尽可能长时间地拒绝 此输入失败: 769082435 210437958 673982045 375809214 38056
int main()
{
int n=5;
long long unsigned int *arr = malloc(sizeof(int) * n);
long long unsigned int ar[n],min=0,max=0,sum=0;
for(int i=0;i<n;i++)
{
scanf("%lld",&arr[i]);
}
for(int i=0;i<n;i++)
{
sum= arr[i]+sum;
}
for(int i=0;i<n;i++)
{
ar[i] = sum -arr[i];
}
for(int i=0; i<n ;i++)
{
min=ar[0];
if(min> ar[i])
min =ar[i];
}
for(int i=0; i<n ;i++)
{
max=ar[0];
if(max< ar[i])
max =ar[i];
}
printf("%lld %lld",min,max);
return 0;
}
您需要为适当类型的变量分配内存,即unsigned long long not int。要消除这些愚蠢的错误,您可以使用以下简单方法-
long long unsigned int *arr = malloc(sizeof *arr * n);
在这里,您不必担心被指向的对象的类型。它是在你没有明确提及的情况下确定的
在for循环中,您一次又一次地将min设置为ar[0]。这是不对的。在进入循环之前只做一次。max变量也是如此。对于max变量,for循环也是类似的
unsigned long long min =ar[0];
for(int i=0; i<n ;i++)
{
if(min > ar[i])
min = ar[i];
}
您分配了错误的字节数:
long long unsigned int *arr = malloc(sizeof(int) * n);
您想创建一个长无符号int数组,但只分配
n整数的空间。正确的malloc调用应该是
long long unsigned int *arr = malloc(n * sizeof *arr);
至于另一个错误,我们的答案告诉您更多关于这些错误的信息,在这里重复它们是没有意义的。long long unsigned int*arr=mallocsizeofint*n;这没有分配足够的内存