编写一个程序,让用户在两个选项之间进行选择的作业 - C

Assignment to write a program that gives the user a choice between two options - C

我有一项作业到期,但我对具体要做什么一头雾水...我相信这很简单,但我还没有完全掌握要领。赋值是 -

编写一个程序,为用户提供 2 个菜单选项:要么调用一个函数来打印 4 次问候语和你的名字,要么调用一个函数从 10 倒数到 0 然后打印 "Blastoff!" .这两个函数都应该使用 for 循环来打印适当的输出。

到目前为止,我已经完成了提示和功能...但是我不确定如何根据用户的选择显示一个或另一个。谢谢您的帮助。

#include <stdio.h>

int main (void){
// declare counter variable
int i;


// prompt the user to make a choice
    printf("What would you like to do?\n  1. Print my name\n  2. Count down from 10\n");    
    printf("\n");

// display greeting and name 4 times
    for(i=1;i<=4;i++)
    {
        printf("Hi, my name is Bridget\n");
    }


// display countdown
    for(i=10;i>=0;--i)
    {
        printf("%d\n", i);
    }
        printf("Blastoff!");





}

你应该使用 Switch case。

    switch(choice) {
     case 1: //first for loop
     break;
     case 2: //second for loop
     break;
    }

看来您在这里遗漏了几点。首先,您还没有编写任何函数。尝试查看 here 以获得关于这方面的一些见解。

其次,要根据用户输入做出选择,您需要以某种方式实际获得该输入。您可能需要使用 scanf.

最后,一旦您获得了用户的输入(例如,在声明为 int input; 的变量中),您可以使用 if 来基于该变量控制程序的流程,如下所示:

if(input == 1){
    greet();
}
else {
    countDown();
}

干杯!如果您有任何其他问题,请随时在下面发表评论。

您应该读取用户键盘的输入:

int c;
c = getchar();
if (c == '1')
{
// display greeting and name 4 times
for(i=1;i<=4;i++)
{
    printf("Hi, my name is Bridget\n");
}
}
if (c == '2')
{
// display countdown
for(i=10;i>=0;--i)
{
    printf("%d\n", i);
}
}
printf("Blastoff!");

首先你实际上并没有声明你的函数。 C 中的函数应该像 main 函数那样声明。有关详细信息,请参阅 here

// display greeting and name 4 times
void greeting(){
    for(i=1;i<=4;i++)
    {
        printf("Hi, my name is Bridget\n");
    }
}

void countdown() {
// display countdown
    for(i=10;i>=0;--i)
    {
        printf("%d\n", i);
    }
        printf("Blastoff!");
}

获取用户输入最常见的方式是通过键盘。 scanf 在 C 中实现了这一点。有关 scanf here

的详细信息
int main(void){
  int i, choice;

  //prompt the user to make a choice
  // You don't need 2 printf for the newlines stick them to one.
  printf("What would you like to do?\n  1. Print my name\n  2. Count down from 10\n\n");

  //This takes the user's input and puts it in the variable choice
  scanf(%d, &choice);
}

最后,要根据用户输入决定要做什么,您可以使用 if then else 语句或 switch。我将提供一个带有 if 语句的解决方案,您可以自己计算带有 switch 的解决方案。您的最终代码应如下所示。

int main(void){
    int i, choice;

    //prompt the user to make a choice
    // You don't need 2 printf for the newlines stick them to one.
    printf("What would you like to do?\n  1. Print my name\n  2. Count down from 10\n\n");

    //This takes the user's input and puts it in the variable choice
    scanf(%d, &choice);

    if(choice == 1){
      greeting();
    }else{
      countdown();
    }
}

// display greeting and name 4 times
void greeting(){
    for(i=1;i<=4;i++)
    {
        printf("Hi, my name is Bridget\n");
    }
}

void countdown() {
// display countdown
    for(i=10;i>=0;--i)
    {
        printf("%d\n", i);
    }
        printf("Blastoff!");
} 

请记住,此代码有很多缺陷(主要是错误检查),但我想您的分配与此无关。

首先,您需要包含具有您需要的功能的库。您通过

执行此操作
#include <someLibrary.h>

在文档的开头。图书馆大多有 .h 扩展名。如果您尝试做某事,请始终寻找它们。您认为它们尽可能具有最佳性能和功能(并非总是如此)。

接下来你声明你的函数。函数有名称、进入其中的参数、body 和 return 值(可以是 float、int、char 等)。如果函数没有 return 任何东西,它们 return 无效(最后没有 return)。您在 main() 之前声明的函数仅包含参数类型。整个 body 在 main 之后(更好看)。

如果你用参数声明函数,你必须在 () 括号中提供这些函数的参数。即使不需要参数,您也可以像下面示例中的 getch() 一样使用它们。请注意,函数变成了它 return。如果您在函数中声明了一些新变量,它们将仅在函数中可见。另一方面,函数将看不到来自其他函数(主函数)的任何变量。如果需要,请声明全局变量(不推荐)。

#include <stdio.h>
#include <conio.h>  //libraries

void function1(int);
float function2(float);  //declaration of functions

int main()
{   
char decision;
printf("press 'a' to run function1, press 'b' to run function2\n");
decision=getch();     //first see getch()? look in google for functionality and library !
    int someInt=10;
    float someFloat=11;

     if(decision== 'a')
    {
     function1(someInt);
    }
    else if(decision == 'b')
    {
     printf("%f", funcion2(someFloat));  //example that function become what    they return
    }
    else 
    {
     printf("No decision has been made");
    }
getch();   //program will wait for any key press
return 0;
}

void function1(int param1)
{
  //print your stuff               // this function return void, so doesnt have return; statement
} 
float function2(float param1)
{
 return 2*param1;                 //this function have to return some float
}