c - 如何调试产生意外输出的 C 程序?
问题描述
我是 C 编程新手,我不知道为什么我的程序没有打印所需的输出。
#include <stdio.h>
void main(void)
{
char res,res1;
float money=10;
printf("***Wealcome to Peace of Mind***");
printf("\nHello we have the menu please check::");
printf("\n***Menú***");
printf("\n");
printf("\n<<<Bebidas>>>");
printf("\n 1 - Coca-Cola = 1,5 2 - IceTea = 1,4");
printf("\n 3 - Super Bock = 1,70 4 - Sumol = 1,6");
printf("\n");
scanf("%d",&res);
switch(res)
{
case 1 || 'Coca-Cola':money - CocaCola;break;
}
printf("%.1f",money);
//Is that result i want:
printf("\n%.1f",10-1.5);
}
我的程序的输出:
解决方案
您的语句的语法case
不正确。该代码还scanf()
用于读取整数,但将整数大小的值存储在char
.
我整理了代码:
#include <stdio.h>
int main(void)
{
int res;
float cost = 0;
float money = 10;
printf("***Wealcome to Peace of Mind***\n");
printf("Hello we have the menu please check::\n");
printf("***Menú***\n");
printf("\n");
printf("<<<Bebidas>>>\n");
printf(" 1 - Coca-Cola = 1,5 2 - IceTea = 1,4\n");
printf(" 3 - Super Bock = 1,70 4 - Sumol = 1,6\n");
printf("\n");
scanf("%d", &res);
switch(res)
{
case 1:
cost = 1.5;
break;
case 2:
cost = 1.4;
break;
// TODO: case 3 & 4
default:
printf("Invalid Entry\n");
cost = 0;
}
printf("money = %.1f\n", money - cost);
return 0;
}
一些进一步的说明:
- 正如评论员指出的那样,放在
\n
字符串的末尾 - 编译时,打开警告,并尝试修复所有警告。
- 在
case
块中,有一个default
捕获错误的好习惯 - 将饮料价格存储为
#define
常量(或值数组,或某个公共区域,因此该值仅在程序中设置一次,其他所有内容都只是引用它)是值得的。#define COLA_COST 1.5
推荐阅读
- kubernetes - 如何使用 HTTP 请求连接到同一集群中的 Kubernetes pod?
- python-3.x - 熊猫除以日期的聚合计数
- reactjs - React 中的 OnLoad 事件运行速度比访问我需要的数据快
- javascript - 如何检查表格的每一行,选择的值而不是获取所有可用的选项和文本输入值
- xml - 在 XML 文件中增加数千个值,然后在文件夹中的许多文件中执行此操作
- python - str.contains 是否有替代代码用于一个值而不是系列?
- react-native - 在解析时间戳时,在 React 本机时刻总是只返回当前日期?
- azure-active-directory - 为非 B2C 用户使用 Graph REST API 从 AAD 检索用户信息
- postgresql - 为什么 postgres 进程在执行 RUN/CMD/ENTRYPOINT 之前不运行?
- jenkins - 使用 Ansible 修改现有 EC2 安全组的 CIDR