c - 打印菜单功能选择后继续打印
问题描述
我应该制作一个程序,它是一个使用函数来提供结果的计算器。我把它记下来了,一切正常,但在幽默的一切中,我的打印功能有点小问题;出于某种原因,每当程序打印解决方案时,我似乎都无法理解,它还会打印第一个选择,即 add(num1, num2) 并且我一生都无法弄清楚原因。任何投入将不胜感激!谢谢!这是我的代码:
//Function to Add
int add (int a, int b);
//Function to Substract
int sub (int a, int b);
//Function to Multiply
int mul (int a, int b);
//Function to Divide
int div (int a, int b);
//Function to get remainder
int rem (int a, int b);
//Function to print menu
int printmenu();
//Begin main
int main()
{
//Initialize Variables
int num1=0;
int num2=0;
unsigned int selection =0;
//Loop
while ((selection=printmenu()) != 6)
{
switch (selection)
{
//Addition Case
case 1:
printf("Enter two numbers: ");
scanf("%d %d", &num1 , &num2 );
printf("%d added to %d is %d",num1,num2,add(num1,num2));
break;
case 2:
printf("Enter two numbers: ");
scanf("%d %d", &num1 , &num2 );
printf("%d substracted to %d is %d",num1,num2,sub(num1,num2));
break;
case 3:
printf("Enter two numbers: ");
scanf("%d %d", &num1 , &num2 );
printf("%d multiplied to %d is %d",num1,num2,mul(num1,num2));
break;
case 4:
printf("Enter two numbers: ");
scanf("%d %d", &num1 , &num2 );
printf("%d divided to %d is %d",num1,num2,div(num1,num2));
break;
case 5:
printf("Enter two numbers: ");
scanf("%d %d", &num1 , &num2 );
printf("%d divided to %d has a remainder of %d",num1,num2,rem(num1,num2));
break;
case 6:
return 0;
default:
printf("That is not a valid choice.");
break;
}//End switch
}//End while
return 0;
}//End main
//Function to add
int add (int a, int b)
{
int total=0;
total = a + b;
return total;
}
//Function to substract
int sub (int a, int b)
{
int total=0;
total = a - b;
return total;
}
//Function to multiply
int mul (int a, int b)
{
int total=0;
total = a * b;
return total;
}
//Function to Divide
int div (int a, int b)
{
int total=0;
total = a / b;
return total;
}
//Function to get Remainder
int rem (int a, int b)
{
int total=0;
total = a % b;
return total;
}
//Function to Print Menu
int printmenu()
{
int selection=0;
//Print menu
printf("1.Add\n");
printf("2.Substract\n");
printf("3.Multiply\n");
printf("4.Divide\n");
printf("5.Remainder\n");
printf("6.Exit\n");
printf("Selection: ");
scanf("%d", &selection);
return selection;
}
解决方案
当您打印操作结果时,您不会在输出末尾包含换行符。因此,当您打印菜单时,菜单的第一行也会打印在同一行上。
\n
在每个结果打印语句的末尾添加,例如:
printf("%d added to %d is %d\n",num1,num2,add(num1,num2));
推荐阅读
- c# - 通过命令行创建 7-Zip 存档时创建逻辑文件夹结构
- javascript - TypeError:无法读取未定义的属性“通道”
- vue.js - 在 nuxt.js/vue.js 上每页加载不同的 css
- javascript - Discord.js 类型/声明扩展不起作用
- python - 如何在python中自动对列表中的值进行舍入
- node.js - 从 Git 安装 nvm 而不是 curl 或 wget 有什么好处?
- flutter - Flutter,多个包,多个lib文件夹
- html - 我无法对齐段落的行。意味着从第一行开始,我也希望从那里开始第二行
- r - 几乎没有观察值的下降因子水平
- python - 如何通过将键分配给 Python 字典中的每个值元素来创建元组列表?