我有一个问题
“编写一个接受单个整数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会崩溃。在我写的代码中是否有我遗漏的东西?
答案 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;
}