C编程中数组中缺少数字
给定一个大小为N-1的数组C,并给定从1到N的数字中缺少一个元素,则将找到缺少的数字 输入: 输入的第一行包含一个整数T,表示测试用例的数量。对于每个测试用例,第一行包含N(数组大小)。下一行包含N-1个数组元素 输出: 打印数组中缺少的数字 这个问题是在一系列n个整数中查找缺失的数字。但是,在使用下面的代码时,我无法获得预期的输出C编程中数组中缺少数字,c,arrays,missing-data,C,Arrays,Missing Data,给定一个大小为N-1的数组C,并给定从1到N的数字中缺少一个元素,则将找到缺少的数字 输入: 输入的第一行包含一个整数T,表示测试用例的数量。对于每个测试用例,第一行包含N(数组大小)。下一行包含N-1个数组元素 输出: 打印数组中缺少的数字 这个问题是在一系列n个整数中查找缺失的数字。但是,在使用下面的代码时,我无法获得预期的输出 #include <stdio.h> int main() { //code int T,run,i; scanf("%d"
#include <stdio.h>
int main()
{
//code
int T,run,i;
scanf("%d", &T);
long N,res,C,en;
long arra[1];
for (run = 0;run <T; run++ )
{
long arra[T];
scanf("%ld", &N);
res =0;
for (i = 0; i <N-1; i++)
{
scanf("%ld",&C);
res = res + C;
}
en = ((N*(N+1))/2)- res; // subtracting the overall sum of array elements from N integers
arra[run]=en; //saving it to array
}
for(run = 0; run < T; run++)
{
printf("%ld ",arra[run]);
}
return 0;
}
但实际产出是有限的
1 -8719623343620674816
您在
for
循环中重新声明了变量arra
。因此,当您分配给arra[run]
时,您分配给的是内部数组,而不是main()
函数中的数组。因此,当您试图在最后打印数组的内容时,会收到垃圾
您还声明了只有一个元素的第一个数组,而不是T
元素
去掉第二个声明,并将第一个声明从
long arra[1];
到
您在
for
循环中重新声明了变量arra
。因此,当您分配给arra[run]
时,您分配给的是内部数组,而不是main()
函数中的数组。因此,当您试图在最后打印数组的内容时,会收到垃圾
您还声明了只有一个元素的第一个数组,而不是T
元素
去掉第二个声明,并将第一个声明从
long arra[1];
到
正确代码
在for循环之前声明arra,否则对于每次迭代,将重新声明arra,并删除其中以前的值
#include <stdio.h>
int main()
{
//code
int T,run,i;
scanf("%d", &T);
long N,res,C,en;
long arra[T];
for (run = 0;run <T; run++ )
{
scanf("%ld", &N);
res =0;
for (i = 0; i <N-1; i++)
{
scanf("%ld",&C);
res = res + C;
}
en = ((N*(N+1))/2)- res; // subtracting the overall sum of array elements from N integers
arra[run]=en; //saving it to array
}
for(run = 0; run < T; run++)
{
printf("%ld ",arra[run]);
}
return 0;
}
#包括
int main()
{
//代码
int T,run,i;
scanf(“%d”、&T);
长N,res,C,en;
龙阿拉[T];
对于(运行=0;运行正确的代码
在for循环之前声明arra,否则对于每次迭代,将重新声明arra,并删除其中以前的值
#include <stdio.h>
int main()
{
//code
int T,run,i;
scanf("%d", &T);
long N,res,C,en;
long arra[T];
for (run = 0;run <T; run++ )
{
scanf("%ld", &N);
res =0;
for (i = 0; i <N-1; i++)
{
scanf("%ld",&C);
res = res + C;
}
en = ((N*(N+1))/2)- res; // subtracting the overall sum of array elements from N integers
arra[run]=en; //saving it to array
}
for(run = 0; run < T; run++)
{
printf("%ld ",arra[run]);
}
return 0;
}
#包括
int main()
{
//代码
int T,run,i;
scanf(“%d”、&T);
长N,res,C,en;
龙阿拉[T];
for(run=0;run