因此,我只考虑使用stdio.h
-
我必须编写一个程序,该程序读取整数p
,然后读取p
整数。现在,我必须使用这些p
整数并对它们执行另一次操作才能获得最终答案,我的主程序将返回该答案。
问题是我不知道如何对可变数量的整数执行操作。我尝试使用指针,但它们似乎不起作用。
有人可以帮忙吗?
#include <stdio.h>
int main(){
int i, p, n;
scanf ("%d", &p);
for (n=0; n<p; n++){
int a;
scanf ("%d", &a);
int *k=&a;
}
for (n=0; n<p; n++){
int a=*k;
if (a==0)
i=0;
else i=1;
}
return i;
}
我在这里要做的是读取某个整数p
,然后读取p
整数a
,并且如果这些a
中的至少一个是{ {1}},我的回答是0
。否则为0
。
但是编译器说1
没有为第二个for循环定义。我该怎么办?
答案 0 :(得分:0)
我认为您可以使用固定数量的变量来完成此操作。喜欢
int p, a, ans=1;
scanf("%d", &p); //read number
for(int r=0; r<p; ++r)
{
scanf("%d", &a);
if(a==0)
{
ans=0;
break;
}
}
printf("\nAnswer is: %d", ans);
ans
变量保留答案。首先,您将int
的数量读入p
,然后使用循环读取p
的{{1}}个数量。
在循环的每次迭代中,您都读取到相同的变量int
中。您只需要知道至少一个输入是否为零即可。
a
最初设置为ans
,仅在输入零时才更改为1
。如果输入零,则由于0
语句,控件将立即退出循环。
您可能要检查break
的返回值以及其他错误检查。
注释中提到了各种使用未知数量变量的方法。
如果可以使用C99,则允许variable length array。喜欢
scanf()
如果使用动态内存分配,则可以使用int p;
scanf("%d", &p);
int arr[p];
中的malloc()
或calloc()
。
请参见this。
指针stdlib.h
位于
k
是第一个循环的局部变量,因此仅对该循环可见,而对第二个循环不可见。 for (n=0; n<p; n++){
int a;
scanf ("%d", &a);
int *k=&a;
}
for (n=0; n<p; n++){
int a=*k;
if (a==0)
i=0;
else i=1;
}
的范围仅限于第一个循环。参见this。
如果您希望变量在两个循环中均可见,请在两个循环之外对其进行声明。
答案 1 :(得分:0)
首先,我将帮助您了解您所谈论的编译器错误:
没有为第二个for循环定义k
ReportsRequet
说明:阅读代码中的注释。我所说的块是在高位'{'和低位'}'之间的代码。除此之外,在代码中的任何地方,k都是未定义的。因此,在第二个循环中,k是不确定的。
您应该将public function rules()
{
return [
'user_reported_id' => ['required','exists:users,id','different:user_reporter_id', Rule::unique('reports')->where('user_reporter_id','=',$this->input('user_reporter_id'))],
'user_reporter_id' => ['required','exists:users,id','different:user_reported_id', Rule::unique('reports')->where('user_reported_id','=',$this->input('user_reported_id'))]
];
}
函数更改为:
function be_exclude_current_post( $args ) {
if( is_singular() && !isset( $args['post__in'] ) )
$args['post__not_in'] = array( get_the_ID() );
return $args;
}
add_filter( 'dpe_fpw_args', 'be_exclude_current_post' );
现在要解决您的下一个问题,我想您可能想学习C语言的variadic functions。在理解您的问题陈述时我可能错了,但是我的看法是,您愿意将多个参数传递给一个功能。例如,
您有时会以以下方式致电// some code
for (n=0; n<p; n++){
int a;
scanf ("%d", &a);
int *k=&a; // Definition of k is here, and is restricted to this block,
}
for (n=0; n<p; n++){
int a=*k; // Its undefined here
if (a==0)
i=0;
else i=1;
}
// some code
:
main()
,有时也可能是:
int main()
{
int i, p, n, k = 0;
scanf ("%d", &p);
for (n=0; n<p; n++) {
int a;
scanf ("%d", &a);
int *k=&a;
}
for (n=0; n<p; n++) {
int a=*k;
if (a==0)
i=0;
else
i=1;
}
return i;
}
如果我是对的,您可能希望参考上面引用的同一参考文献来查看this example。为了使您的生活更轻松,我在此处添加了相同的代码:
function
如果您想知道最新的标准中关于函数具有可变参数的信息,请参阅C11的7.16 Variable arguments 部分,它确实有帮助!