C For循环输出错误(控制可能到达非void函数的结尾)
C For loop output error (control may reach end of non-void function)
我在 Python 中有以下代码,我想将其翻译成 C:
n=input('input a number between 1 and 8')
for i in range(0,n):
print (i*'#')
我的 for 循环什么都不做。为什么?到目前为止我有:
#include <cs50.h>
#include <stdio.h>
int get_positive_int(string prompt);
char func(int n);
int main(void)
{
int i = get_positive_int("Positive integer between 1 and 8: ");
printf("%i\n", i);
}
int get_positive_int(string prompt)
{
int n;
do
{
n = get_int("%s", prompt);
}
while (n>8 || n<1);
printf("Stored: ");
return n;
}
char func(int n)
{
for (int j=0;j<n;j++)
{
for (int k=0;k<n;k++)
{
return printf("#");
}
printf("\n");
}
}
- 你不叫
func
.我觉得这个很好理解
- 为什么要用
char
return 类型声明 func()
? 它不应该 return 任何东西。
- 不要
return
任何东西。 不要 return
printf
。你为什么想这么做?您只想打印字符。 return
立即退出函数。
您从未调用过 func
,所以它当然什么都不做。您的问题标题 "control may reach end of non-void function)" 中的错误是因为您将 func
声明为 return char
,但是如果 n
则执行不会 return
小于或等于 0(循环立即结束)。
你那里的 return
在任何情况下都没有意义,因为 printf
的 return 值在这里并不真正相关。并且它在每行上打印相同数量的井号 (#
),而不是增加的数量。我怀疑您想要类似的东西(用内联注释记录的更改):
void func(int n) // return type void so no return needed
{
for (int j=0;j<n;j++)
{
for (int k=0;k<j;k++) // k < j, not k < n, so #s increase from 0 to n
{
printf("#"); // no return so loop runs to completion
}
printf("\n");
}
}
- 你应该包括string.h和stdlib.h
- 您使用的字符串数据类型无效。你应该使用 (const char *prompt[])
- while(n > 8 || n < 1) 告诉循环存储指定范围外的数字,而不是在指定范围内。它应该是 while(n <= 8 && n >= 1) 如果你希望它包含在内,否则你可以省略 = 运算符。
- python 代码也不起作用。这个for循环的目的是什么?期望的输出是什么?
我在 Python 中有以下代码,我想将其翻译成 C:
n=input('input a number between 1 and 8')
for i in range(0,n):
print (i*'#')
我的 for 循环什么都不做。为什么?到目前为止我有:
#include <cs50.h>
#include <stdio.h>
int get_positive_int(string prompt);
char func(int n);
int main(void)
{
int i = get_positive_int("Positive integer between 1 and 8: ");
printf("%i\n", i);
}
int get_positive_int(string prompt)
{
int n;
do
{
n = get_int("%s", prompt);
}
while (n>8 || n<1);
printf("Stored: ");
return n;
}
char func(int n)
{
for (int j=0;j<n;j++)
{
for (int k=0;k<n;k++)
{
return printf("#");
}
printf("\n");
}
}
- 你不叫
func
.我觉得这个很好理解 - 为什么要用
char
return 类型声明func()
? 它不应该 return 任何东西。 - 不要
return
任何东西。 不要return
printf
。你为什么想这么做?您只想打印字符。return
立即退出函数。
您从未调用过 func
,所以它当然什么都不做。您的问题标题 "control may reach end of non-void function)" 中的错误是因为您将 func
声明为 return char
,但是如果 n
则执行不会 return
小于或等于 0(循环立即结束)。
你那里的 return
在任何情况下都没有意义,因为 printf
的 return 值在这里并不真正相关。并且它在每行上打印相同数量的井号 (#
),而不是增加的数量。我怀疑您想要类似的东西(用内联注释记录的更改):
void func(int n) // return type void so no return needed
{
for (int j=0;j<n;j++)
{
for (int k=0;k<j;k++) // k < j, not k < n, so #s increase from 0 to n
{
printf("#"); // no return so loop runs to completion
}
printf("\n");
}
}
- 你应该包括string.h和stdlib.h
- 您使用的字符串数据类型无效。你应该使用 (const char *prompt[])
- while(n > 8 || n < 1) 告诉循环存储指定范围外的数字,而不是在指定范围内。它应该是 while(n <= 8 && n >= 1) 如果你希望它包含在内,否则你可以省略 = 运算符。
- python 代码也不起作用。这个for循环的目的是什么?期望的输出是什么?