在for循环中使用switch语句重复
我试着用一个循环打印出一首重复的歌,“这个老人” 第一节是: 这个老人,他演了一个 他在我的拇指上玩小摆设 这位老人滚回家来了 这首歌重复十次,两个词用斜体字表示 一->二++和拇指->另一项,如鞋、膝盖等。 以下是我目前的代码:在for循环中使用switch语句重复,c,for-loop,switch-statement,cs50,C,For Loop,Switch Statement,Cs50,我试着用一个循环打印出一首重复的歌,“这个老人” 第一节是: 这个老人,他演了一个 他在我的拇指上玩小摆设 这位老人滚回家来了 这首歌重复十次,两个词用斜体字表示 一->二++和拇指->另一项,如鞋、膝盖等。 以下是我目前的代码: #include <cs50.h> #include <stdio.h> #include <string.h> string change1 (int i); int main (void) { for (int i
#include <cs50.h>
#include <stdio.h>
#include <string.h>
string change1 (int i);
int main (void)
{
for (int i = 1; ; 1 < 11; i++)
{
printf ("This old man, he played ");
change1(i);
printf("He played knick-knack on my %s\n\n", s1);
}
return 0;
}
string change1(int i)
{
string s1;
switch(i)
{
case 1:
{
printf("one\n");
s1 = "thumb";
}
break;
case 2:
{
printf("two\n");
s1 = "shoe";
}
break;
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
printf("ill add these cases later");
}
}
#包括
#包括
#包括
字符串更改1(int i);
内部主(空)
{
对于(int i=1;1<11;i++)
{
printf(“这位老人,他扮演”);
变更1(i);
printf(“他在我的%s\n\n”s1上玩小摆设);
}
返回0;
}
字符串更改1(int i)
{
字符串s1;
开关(一)
{
案例1:
{
printf(“一个\n”);
s1=“拇指”;
}
打破
案例2:
{
printf(“两个”);
s1=“鞋”;
}
打破
案例3:
案例4:
案例5:
案例6:
案例7:
案例8:
案例9:
案例10:
案例11:
printf(“我稍后再添加这些案例”);
}
}
这给了我一条错误消息:“控制到达非无效函数的末尾”我还得到了一个未声明的变量s1错误,但我在函数中声明了它。
change1
需要返回它决定的字符串。而main
必须将返回值分配给一个变量,因为最初编写的s1
是change1
函数的局部变量
#include <cs50.h>
#include <stdio.h>
#include <string.h>
string change1 (int i);
int main (void)
{
for (int i = 1; ; 1 < 11; i++)
{
printf ("This old man, he played ");
string s1 = change1(i);
printf("He played knick-knack on my %s\n\n", s1);
}
return 0;
}
string change1 (int i)
{
string s1;
switch (i)
{
case 1:
{
printf("one\n");
s1 = "thumb";
}
break;
case 2:
{
printf("two\n");
s1 = "shoe";
}
break;
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
printf("ill add these cases later");
}
return s1;
}
#包括
#包括
#包括
字符串更改1(int i);
内部主(空)
{
对于(int i=1;1<11;i++)
{
printf(“这位老人,他扮演”);
字符串s1=change1(i);
printf(“他在我的%s\n\n”s1上玩小摆设);
}
返回0;
}
字符串更改1(int i)
{
字符串s1;
开关(一)
{
案例1:
{
printf(“一个\n”);
s1=“拇指”;
}
打破
案例2:
{
printf(“两个”);
s1=“鞋”;
}
打破
案例3:
案例4:
案例5:
案例6:
案例7:
案例8:
案例9:
案例10:
案例11:
printf(“我稍后再添加这些案例”);
}
返回s1;
}
change1
需要返回它决定的字符串。而main
必须将返回值分配给一个变量,因为最初编写的s1
是change1
函数的局部变量
#include <cs50.h>
#include <stdio.h>
#include <string.h>
string change1 (int i);
int main (void)
{
for (int i = 1; ; 1 < 11; i++)
{
printf ("This old man, he played ");
string s1 = change1(i);
printf("He played knick-knack on my %s\n\n", s1);
}
return 0;
}
string change1 (int i)
{
string s1;
switch (i)
{
case 1:
{
printf("one\n");
s1 = "thumb";
}
break;
case 2:
{
printf("two\n");
s1 = "shoe";
}
break;
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
printf("ill add these cases later");
}
return s1;
}
#包括
#包括
#包括
字符串更改1(int i);
内部主(空)
{
对于(int i=1;1<11;i++)
{
printf(“这位老人,他扮演”);
字符串s1=change1(i);
printf(“他在我的%s\n\n”s1上玩小摆设);
}
返回0;
}
字符串更改1(int i)
{
字符串s1;
开关(一)
{
案例1:
{
printf(“一个\n”);
s1=“拇指”;
}
打破
案例2:
{
printf(“两个”);
s1=“鞋”;
}
打破
案例3:
案例4:
案例5:
案例6:
案例7:
案例8:
案例9:
案例10:
案例11:
printf(“我稍后再添加这些案例”);
}
返回s1;
}
在switch类末尾使用return语句
return s1;
在switch类的末尾使用return语句
return s1;
<>在C++变量中有范围。变量通常在声明它的大括号内可见;在这些括号外,变量不存在
这就是为什么您不能在循环中使用change1
中的s1
:您需要返回一个值(在您的情况下是最佳选择),或者使用change1
和main
中范围内的变量
printf ("This old man, he played ");
printf("He played knick-knack on my %s\n\n", change1(i));
...
string change1 (int i) {
string s1;
switch (i) {
...
}
return s1;
}
请注意,您不需要switch语句来实现change1
:当代码如此统一时,最好使用数组:
const char *strings[] = {"thumb", "shoe", ...};
<>在C++变量中有范围。变量通常在声明它的大括号内可见;在这些括号外,变量不存在
这就是为什么您不能在循环中使用change1
中的s1
:您需要返回一个值(在您的情况下是最佳选择),或者使用change1
和main
中范围内的变量
printf ("This old man, he played ");
printf("He played knick-knack on my %s\n\n", change1(i));
...
string change1 (int i) {
string s1;
switch (i) {
...
}
return s1;
}
请注意,您不需要switch语句来实现change1
:当代码如此统一时,最好使用数组:
const char *strings[] = {"thumb", "shoe", ...};
您可以将程序简化为实际的C程序,而不是C++
int main (void)
{
int i;
char* items[] = {"thumb", "shoe", "", "", "", "", "", "", "", ""};
char* numbers[] = {"one", "two", "three","four","five","six","seven","eight","nine","ten"};
for (i = 0; i < 10; i++)
{
printf ("This old man, he played %s\n", numbers[i]);
printf("He played knick-knack on my %s\n\n", items[i]);
}
return 0
}
int main(无效)
{
int i;
字符*项[]={“拇指”、“鞋子”、“拇指”、“鞋子”、“拇指”、“鞋子”、“鞋子”、“拇指”、“鞋子”、“鞋子”、“鞋子”、“鞋子”、“鞋子”、“鞋子”};
字符*数字[]={“一”、“二”、“三”、“四”、“五”、“六”、“七”、“八”、“九”、“十”};
对于(i=0;i<10;i++)
{
printf(“这位老人,他扮演%s\n”,数字[i]);
printf(“他在我的%s上玩小摆设\n\n”,items[i]);
}
返回0
}
您可以将程序简化为实际的C程序,而不是C程序++
int main (void)
{
int i;
char* items[] = {"thumb", "shoe", "", "", "", "", "", "", "", ""};
char* numbers[] = {"one", "two", "three","four","five","six","seven","eight","nine","ten"};
for (i = 0; i < 10; i++)
{
printf ("This old man, he played %s\n", numbers[i]);
printf("He played knick-knack on my %s\n\n", items[i]);
}
return 0
}
int main(无效)
{
int i;
字符*项[]={“拇指”、“鞋子”、“拇指”、“鞋子”、“拇指”、“鞋子”、“鞋子”、“拇指”、“鞋子”、“鞋子”、“鞋子”、“鞋子”、“鞋子”、“鞋子”};
字符*数字[]={“一”、“二”、“三”、“四”、“五”、“六”、“七”、“八”、“九”、“十”};
对于(i=0;i<10;i++)
{
printf(“这位老人,他扮演%s\n”,数字[i]);
printf(“他在我的%s上玩小摆设\n\n”,items[i]);
}
返回0
}
在change1()的末尾没有返回(
change1
声明为返回字符串,但它没有执行此操作的return
语句。而且您的main
函数从不声明或分配s1
。您的for循环有点像给定的那样扭曲,它没有与i进行比较,并且有一个额外的;一去不返