如何在 c 中的每个 "case" 语句末尾重复该程序?
How can I repeat the program at the end of each "case" statement in c?
我正在学习 C,我有这个项目,我必须在其中使用数组和东西。
在每个 case
结束时,我需要询问用户是否要重复整个程序,这就是我苦苦挣扎的地方。
我尝试过使用函数和 do while
循环,但没有用。
我现在的代码是:
#include <locale.h>
#include <math.h>
#include <stdio.h>
main() {
setlocale(LC_ALL, "Portuguese");
int i, opcao, vetor1[10], vetor2[10], vetor3[10], d, e, f, con4;
float soma = 0.0, soma2, media, media2;
printf("Digite um valor de 1 a 5:\n1-Media de valores\n2- Reverter vetor\n3- "
"Separar os pares dos impares\n4- Subtração e o seu quadrado\n5- "
"Novos valores e media \n");
scanf("%d", &opcao);
switch (opcao) {
case 1:
printf("Introduza 10 numeros ente 1 e 100\n");
for (i = 0; i < 10; i++) {
do {
printf("Insira o digito nº%d: ", i + 1);
scanf("%d", &vetor1[i]);
soma += vetor1[i];
} while (vetor1[i] < 1 || vetor1[i] > 100);
}
media = soma / 10;
printf("Media = %.2f", media);
return 0;
break;
case 2:
printf("sum code");
break;
case 3:
printf("sum code");
break;
case 4:
printf("sum code");
break;
case 5:
printf("sum code");
break;
我的代码试图使用函数:
#include <locale.h>
#include <math.h>
#include <stdio.h>
void continuando() // função que pergunta se o usuário que continuar o programa.
{
char continuar;
printf("\n\nwanna continua?");
printf("\nif yes (s) if no (n)");
scanf("%c", &continuar);
scanf("%c", &continuar);
switch (continuar) {
case 's': {
system("CLS"); // usado para limpar o ecrã.
break;
}
case 'n': {
printf("\nfinished program.");
exit(0); // a função exit(0) é usada para terminar o programa.
break;
}
default: {
printf("Option invalid.");
break;
}
}
}
main() {
setlocale(LC_ALL, "Portuguese");
int i, opcao, vetor1[10], vetor2[10], vetor3[10], d, e, f, con4;
int media4, media5, media6, media7, media8, media9, media10, media11, media12,
media13;
float soma = 0.0, soma2, media, media2;
printf("insert 20 nums\n");
for (i = 0; i < 10; i++) {
do {
printf("Insira o digito nº%d: ", i + 1);
scanf("%d", &vetor1[i]);
soma += vetor1[i];
} while (vetor1[i] < 1 || vetor1[i] > 100);
}
printf("Digite um valor de 1 a 5:\n1-Media de valores\n2- Reverter vetor\n3- "
"Separar os pares dos impares\n4- Subtração e o seu quadrado\n5- "
"Novos valores e media \n");
scanf("%d", &opcao);
do {
switch (opcao) // opcao = option in eng
{
case 1:
media = soma / 10;
printf("average = %.2f", media);
continuando();
return 0;
break;
case 2:
printf("sum code");
break;
case 0:
printf("program finished");
return 0;
break;
default:
printf("invalid value!\n");
}
} while (opcao = !0);
}
“在每个案例结束时,我需要询问用户是否要重复整个程序”
那为什么不把你的 'program' 打包成一个循环呢?
int main()
{
bool active = true;
do {
//ask for routine/subprogram/functionality [1..N]
switch (input) {
case 1: runRoutine1(); break;
case 2: runRoutine2(); break;
//... for all the other
}
//ask for continuation [y|n]
switch (input) {
case 'n': active = false; break;
}
} while (active);
return 0;
}
注:使用'break'代替'return 0'。后者会终止您的 'whole' 程序。
您可以只使用一个简单的 if 语句并让循环 运行 带有一个 bool 值。因此,如果用户不想继续循环,您只需将 boll 值设置为 false,循环将不会继续,如果用户回答是,bool 值将保持为真。
编辑:
喜欢这样
首先将整个 switch
语句放入 while
循环中,然后再创建一个新的 bool
变量 run
并将其设置为 true。您还需要一个名为 ans.
的新 char
变量
while(run) { ... case statements}
然后你在 case
语句中的每个 break;
之前问这个问题。
printf("\nDo you want to repeat the program?(y/n)";
scanf("%c", &ans);
if(ans == 'y') { run = true; }
if(ans == 'n') { run = false; }
应该可以!
我正在学习 C,我有这个项目,我必须在其中使用数组和东西。
在每个 case
结束时,我需要询问用户是否要重复整个程序,这就是我苦苦挣扎的地方。
我尝试过使用函数和 do while
循环,但没有用。
我现在的代码是:
#include <locale.h>
#include <math.h>
#include <stdio.h>
main() {
setlocale(LC_ALL, "Portuguese");
int i, opcao, vetor1[10], vetor2[10], vetor3[10], d, e, f, con4;
float soma = 0.0, soma2, media, media2;
printf("Digite um valor de 1 a 5:\n1-Media de valores\n2- Reverter vetor\n3- "
"Separar os pares dos impares\n4- Subtração e o seu quadrado\n5- "
"Novos valores e media \n");
scanf("%d", &opcao);
switch (opcao) {
case 1:
printf("Introduza 10 numeros ente 1 e 100\n");
for (i = 0; i < 10; i++) {
do {
printf("Insira o digito nº%d: ", i + 1);
scanf("%d", &vetor1[i]);
soma += vetor1[i];
} while (vetor1[i] < 1 || vetor1[i] > 100);
}
media = soma / 10;
printf("Media = %.2f", media);
return 0;
break;
case 2:
printf("sum code");
break;
case 3:
printf("sum code");
break;
case 4:
printf("sum code");
break;
case 5:
printf("sum code");
break;
我的代码试图使用函数:
#include <locale.h>
#include <math.h>
#include <stdio.h>
void continuando() // função que pergunta se o usuário que continuar o programa.
{
char continuar;
printf("\n\nwanna continua?");
printf("\nif yes (s) if no (n)");
scanf("%c", &continuar);
scanf("%c", &continuar);
switch (continuar) {
case 's': {
system("CLS"); // usado para limpar o ecrã.
break;
}
case 'n': {
printf("\nfinished program.");
exit(0); // a função exit(0) é usada para terminar o programa.
break;
}
default: {
printf("Option invalid.");
break;
}
}
}
main() {
setlocale(LC_ALL, "Portuguese");
int i, opcao, vetor1[10], vetor2[10], vetor3[10], d, e, f, con4;
int media4, media5, media6, media7, media8, media9, media10, media11, media12,
media13;
float soma = 0.0, soma2, media, media2;
printf("insert 20 nums\n");
for (i = 0; i < 10; i++) {
do {
printf("Insira o digito nº%d: ", i + 1);
scanf("%d", &vetor1[i]);
soma += vetor1[i];
} while (vetor1[i] < 1 || vetor1[i] > 100);
}
printf("Digite um valor de 1 a 5:\n1-Media de valores\n2- Reverter vetor\n3- "
"Separar os pares dos impares\n4- Subtração e o seu quadrado\n5- "
"Novos valores e media \n");
scanf("%d", &opcao);
do {
switch (opcao) // opcao = option in eng
{
case 1:
media = soma / 10;
printf("average = %.2f", media);
continuando();
return 0;
break;
case 2:
printf("sum code");
break;
case 0:
printf("program finished");
return 0;
break;
default:
printf("invalid value!\n");
}
} while (opcao = !0);
}
“在每个案例结束时,我需要询问用户是否要重复整个程序”
那为什么不把你的 'program' 打包成一个循环呢?
int main()
{
bool active = true;
do {
//ask for routine/subprogram/functionality [1..N]
switch (input) {
case 1: runRoutine1(); break;
case 2: runRoutine2(); break;
//... for all the other
}
//ask for continuation [y|n]
switch (input) {
case 'n': active = false; break;
}
} while (active);
return 0;
}
注:使用'break'代替'return 0'。后者会终止您的 'whole' 程序。
您可以只使用一个简单的 if 语句并让循环 运行 带有一个 bool 值。因此,如果用户不想继续循环,您只需将 boll 值设置为 false,循环将不会继续,如果用户回答是,bool 值将保持为真。
编辑: 喜欢这样
首先将整个 switch
语句放入 while
循环中,然后再创建一个新的 bool
变量 run
并将其设置为 true。您还需要一个名为 ans.
char
变量
while(run) { ... case statements}
然后你在 case
语句中的每个 break;
之前问这个问题。
printf("\nDo you want to repeat the program?(y/n)";
scanf("%c", &ans);
if(ans == 'y') { run = true; }
if(ans == 'n') { run = false; }
应该可以!