Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个C代码有什么问题?首先它要求2个整数,但它应该只要求1,在我输入2个整数后,它崩溃了 #包括 void main(){ inti,j,n; printf(“给出一个自然整数:”); scanf(“%d”和“&n”); 对于(i=1;i_C - Fatal编程技术网

这个C代码有什么问题?首先它要求2个整数,但它应该只要求1,在我输入2个整数后,它崩溃了 #包括 void main(){ inti,j,n; printf(“给出一个自然整数:”); scanf(“%d”和“&n”); 对于(i=1;i

这个C代码有什么问题?首先它要求2个整数,但它应该只要求1,在我输入2个整数后,它崩溃了 #包括 void main(){ inti,j,n; printf(“给出一个自然整数:”); scanf(“%d”和“&n”); 对于(i=1;i,c,C,而不是scanf(“%d”,j);您需要printf(“%d”,j);在内部循环中。注意到这里缺少什么吗 #include <stdio.h> void main() { int i , j , n; printf("Give a natural integer : "); scanf("%d " , &n); for ( i = 1 ; i <= n ; i++) { for ( j = 1 ; j <= i ;

而不是
scanf(“%d”,j);
您需要
printf(“%d”,j);
在内部循环中。

注意到这里缺少什么吗

#include <stdio.h>
void main() {
    int i , j , n;
    printf("Give a natural integer : ");
    scanf("%d " , &n);
    for ( i = 1 ; i <= n ; i++) {
        for ( j = 1 ; j <= i ; j++) {
            scanf("%d " , j );
        }
        printf(" \n ");
    }

}
像是
&
,也许吧


scanf()
第二个参数需要一个指针,因此它知道在哪里写入扫描的值。您没有传递指针,而是传递整数,因此scanf()接收该变量中的任意随机数(因为您从未初始化它)并将该数字用作指针,导致崩溃。

在嵌套的
for
循环中,调用
scanf(“%d”,j);
需要将
j
的地址传递到
scanf

        scanf("%d " , j );
                     ^---

将第一次扫描更改为:

scanf("%d " , &j );
此外,您很可能希望在循环中使用
printf

/* scanf("%d " , &n); */
scanf("%d" , &n); // no space after %d
如果您想在循环中执行
scanf

/* scanf("%d " , j ); */
printf("%d " , j );

scanf
无关,但您的main应该返回
int
,而不是
void

它正在崩溃,因为:
scanf(“%d”,j)
。首先,它应该是指针,而不是整数。其次,它不清楚应该实现什么。然后,输入正在改变循环条件。
j
控制循环。我想OP想把
printf()
“首先它要求2个整数,但它应该只要求1”问题在于
%d“
-->中的空格。请删除空格。什么是“非自然整数”僵尸整数?在
scanf
@haccks中缺少
&
是的,但我更愿意说需要
scanf
。OP正在询问程序为什么要求第二次输入。所以他可能不想要
scanf
。他想要
pritnf
,并假设
printf
他没有放入
&/code>,这可以使用问题,因为它是
scanf
。所以,我解决了:)
 /* scanf("%d " , j ); */
 scanf("%d" , &j ); // no space after %d; and add & before j