C编程 - 程序崩溃

时间:2015-04-06 06:47:51

标签: c printf

我有一个问题

  

“编写一个接受单个整数k作为输入的C程序,然后在第一行写入由单个1组成的模式,在第二行上写入两个2s,在第三行上写入三个3,依此类推,直到它在最后一行写k个k次出现。“

例如,如果输入为5,则输出应为以下内容:

1
2 2
3 3 3
4 4 4 4
5 5 5 5 5

我已经编写了以下代码来实现这一目标。

#include <stdio.h>
#include <stdlib.h>


int main() {
int k = 5;
int i;
int j;
for(i = 1; i<=k; i++){
    for(j = 1; j<=i; j++){
        printf('%d',i);
        }
    printf('\n');
    }
return 0;
}

当我运行这个程序时,Eclipse会崩溃。在我写的代码中是否有我遗漏的东西?

5 个答案:

答案 0 :(得分:3)

您需要更改

printf('%d',i);

printf("%d",i);

还有,

printf('\n');

printf("\n");

原因:根据printf()的{​​{3}},函数原型是

int printf(const char *format, ...);

说,第一个参数应该是const char *

通常," "用于表示(const)char *' '相对,后者用于表示char常量。

注意:在编译器中启用警告并注意它们。大多数情况下,编译器会警告您关于agument和参数类型不匹配的错误。

答案 1 :(得分:3)

printf('%d',i);

应该是

printf("%d",i);

printf()的第一个参数需要const char *,你拥有的是一个角色。在您继续进行崩溃之前,编译器应该已经发出警告。不要忽视警告!!

答案 2 :(得分:0)

printf中,您必须传递字符指针。

更改此

printf('%d',i);

进入

printf("%d",i);

printf定义。

   int printf(const char *format, ...);

答案 3 :(得分:0)

如果查看C编程的文档,printf函数需要一个字符串,即const char *格式,而字符串用双引号表示(&#34;&#34;)。因此,请用双引号(&#34;&#34;)替换单引号(&#39;&#39;)。

答案 4 :(得分:0)

c库中printf的输出格式为

printf("data type representation", the data to be printed);

因此,在输出流中,您必须使用双引号而不是单引号。 以下代码可以正常工作,

 #include <stdio.h>

int main(void) {
    // your code goes here
    int k,i,j;
    scanf("%d",&k);
    for(i=1;i<=k;i++)
    {
        for(j=1;j<=i;j++)
        printf("%d",i);

        printf("\n");
    }
    return 0;
}