C语言程序调试

#include "stdio.h"
#include "time.h"
#include "stdlib.h"
void main()
{
int computer,user;
char c;
srand ((unsigned)time(NULL));
printf("Starting!");
printf("Please input 1.Stone,2.Scissor,3.Paper");
scanf("%d",&user);
computer=rand()%3+1;
printf("Computer output is %s\n\n",computer==1?"Stone":computer==2?"Scissor":computer==3?"Paper");
switch (computer-user)
{
case 0:
printf("Draw!\n\n");
break;
case 1:
case -2:
printf("computer win!\n\n");
case -1:
case 2:
printf("You win!\n\n");
}
printf("Continue the game please press Y,press other key will exit");
getchar();
c=getchar();
}
while (c=="y"||c=="Y")
printf("It's all ready exit");
}
有五个错误,但是怎么也找不出来,望高手指点~~

main函数用int返回值比较好,不过也只是警告;
case 1/-2部分少了break;
缺少do,while上面的花括号没有对应的正括号;
while的判断条件char不能和字符串比较,这是指针和整型比较了,应该用单引号,如果用双引号,则判断会错误;
?:句式有问题,最后一个"paper"少一个:段,最后一个判断其实也没必要,模3得到的整数加1,只能是1/2/3,这个判断是废的。
如果补充了do,那么while后面应增加";"分号结束。

最终语法和逻辑都正确的应该是(当然其实并不够严谨,换行等排版也很难看):
#include "stdio.h"
#include "time.h"
#include "stdlib.h"

int main()
{
int computer,user;
char c;
do
{
srand ((unsigned)time(NULL));
printf("Starting!");
printf("Please input 1.Stone,2.Scissor,3.Paper");
scanf("%d",&user);
computer=rand()%3+1;
printf("Computer output is %s\n\n",computer==1?"Stone":computer==2?"Scissor":computer==3?"Paper":"unknow");
switch (computer-user)
{
case 0:
printf("Draw!\n\n");
break;
case 1:
case -2:
printf("computer win!\n\n");
break;
case -1:
case 2:
printf("You win!\n\n");
}
printf("Continue the game please press Y,press other key will exit");
getchar();
c=getchar();
}
while (c=='y'||c=='Y');

printf("It's all ready exit");
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-06-02
最后一个do while循环的do自己找地方放好,只是将语法错误改了
#include "stdio.h"
#include "time.h"
#include "stdlib.h"

void main()
{
int computer,user;
char c;
srand ((unsigned)time(NULL));
printf("Starting!");
printf("Please input 1.Stone,2.Scissor,3.Paper");
scanf("%d",&user);
computer=rand()%3+1;
printf("Computer output is %s\n\n",computer==1?"Stone":computer==2?"Scissor":computer==3?"Paper": "");
switch (computer-user)
{
case 0:
printf("Draw!\n\n");
break;
case 1:
case -2:
printf("computer win!\n\n");
case -1:
case 2:
printf("You win!\n\n");
}
do{
printf("Continue the game please press Y,press other key will exit");
getchar();
c=getchar();
}
while (c=='y'||c=='Y');
printf("It's all ready exit");
}
第2个回答  2011-06-02
#include "stdio.h"
#include "time.h"
#include "stdlib.h"
void main()
{
int computer,user;
char c;
srand ((unsigned)time(NULL));
printf("Starting!");
printf("Please input 1.Stone,2.Scissor,3.Paper");
scanf("%d",&user);
computer=rand()%3+1;
//printf("Computer output is %s\n\n",computer==1?"Stone":computer==2?"Scissor":computer==3?"Paper");
//三目运算符不匹配
printf("Computer output is %s\n\n",computer==1?"Stone":computer==2?"Scissor":computer==3?"Paper":"");
switch (computer-user)
{
case 0:
printf("Draw!\n\n");
break;
case 1:
case -2:
printf("computer win!\n\n");
case -1:
case 2:
printf("You win!\n\n");
}
printf("Continue the game please press Y,press other key will exit");
getchar();
c=getchar();
//}多了个}
//while (c=="y"||c=="Y")char 用''
while (c=='y'||c=='Y')
printf("It's all ready exit");
}
第3个回答  2011-06-02
改成下面这样就正确了:
#include "stdio.h"
#include "time.h"
#include "stdlib.h"
void main()
{
int computer,user;
char c;
srand ((unsigned)time(NULL));
printf("Starting!");
printf("Please input 1.Stone,2.Scissor,3.Paper");
scanf("%d",&user);
computer=rand()%3+1;
printf("Computer output is %s\n\n",computer==1?"Stone":computer==2?"Scissor":"Paper");
switch (computer-user)
{
case 0:
printf("Draw!\n\n");
break;
case 1:
case -2:
printf("computer win!\n\n");
case -1:
case 2:
printf("You win!\n\n");
}
printf("Continue the game please press Y,press other key will exit");
getchar();
c=getchar();

while (c=='y'||c=='Y')
printf("It's all ready exit");
}
第4个回答  2011-06-02
自己看吧
#include "stdio.h"
#include "time.h"
#include "stdlib.h"
void main()
{
int computer,user;
char c;
char *p1="Stone",*p2="Scissor",*p3="Paper";
srand ((unsigned)time(NULL));
printf("Starting!");

do{
printf("Please input 1.Stone,2.Scissor,3.Paper\n");
scanf("%d",&user);
computer=rand()%3+1;
// printf("Computer output is %s\n\n",computer==1?"Stone":computer==2?"Scissor":computer==3?"Paper");
printf("Computer output is %s\n\n",computer==1?"Stone":computer==2?"Scissor":computer==3?"Paper":" ");
switch (computer-user)
{
case 0:
printf("Draw!\n\n");
break;
case 1:
case -2:
printf("computer win!\n\n");
case -1:
case 2:
printf("You win!\n\n");
}
printf("Continue the game please press Y,press other key will exit\n\n");
getchar();
c=getchar();

}
while (c=='y'||c=='Y');

printf("It's all ready exit");
}
// while (c=='y'||c=='Y')
// printf("It's all ready exit");
//}

如何用VC单步调试C语言
1、F5进入调试。2、F10单步调试,F11进入子函数单步调试。调试常用快捷键:1、逐过程调试F10 。2、逐语句调试F11。3、跳到光标处Ctrl加F10。4、跳出本循环Shift加F11 。5、设定断点F9 。6、删除所有断点Ctrl加Shift加F9。7、开始编译 F7。8、重新编译 Ctrl加F7。9 ...

C语言程序设计《DEBUG调试方法技巧》
使用编译选项定义调试宏 通过编译选项`-D`,我们可以在编译时定义调试宏,以控制调试信息的输出。bash gcc -DDEBUG debug.c -o debug 预处理指令+自定义调试函数 通过预处理指令定义自定义的`DebugPrintf`函数,可以实现更灵活的调试控制和信息输出。c include \/\/ 插桩信息宏 define DEBUG \/\/ 自定义...

怎样调试一个C语言的程序?
C语言程序上机调试步骤如下:1. 编写程序代码:确保代码语法正确,符合C语言规范。2. 编译程序:使用C语言编译器将代码编译成可执行文件。3. 运行程序:在命令行或集成开发环境(IDE)中运行程序,观察程序的输出结果是否符合预期。4. 调试程序:如果程序运行出现错误,可以使用调试器逐步执行程序,查看变...

c语言怎么一步一步调试
C语言的调试步骤如下:在keil中调试c语言程序:1、打开我们的程序,点击菜单栏右侧的start\/stopdebug..按钮,进入调试模式。2、左侧为寄存器窗口,右上方是汇编窗口,我们可以看到各个寄存器的数值和c语言对应的汇编代码。3、点击单步执行按钮或者点击f11、f10,都可以进入单步执行模式,方便我们看程序流程和...

【C-32】C语言调试工具gdb
GDB(GNU Debugger)是GCC的调试工具,主要用于帮助开发者完成以下四个方面的功能:当程序运行的结果与预期不符合时,可以使用gdb进行调试。需要注意的是,在使用gdb调试时,需要在编译时添加-g参数。如果没有添加-g参数,将无法看到程序的函数名、变量名,而是显示运行时的内存地址。以【C-30】C语言gcc...

c语言如何调试程序?
1、首先打开Microsoft Visual Studio 2010如下图:然后点文件---新建---项目,如下图:然后在已安装的模板下选Win32---右边选Win32控制台应用程序---最后在下面输入项目名称,然后点确定,如下图:点确定后会出现如下图,接着点下一步:点下一步后会出现如下图,把控制台应用程序和空项目选中,...

【C-32】C语言调试工具gdb
首先,启动gdb的过程以【C-30】中gcc编译器和静态\/动态库的示例为例。修改Makefile,确保在编译时包含-g参数。执行gdb,输入你编译得到的可执行文件名,如"program",通常位于当前目录下。在调试过程中,GDB允许查看源代码。在编译时添加-g参数至关重要,这样gdb才能在运行时显示源代码。使用list命令...

使用VS2019编写C语言程序,环境安装配置+代码调试,保姆级教程_百度知 ...
了解VS2019安装与C语言程序调试的保姆级教程,首先访问Visual Studio官网,下载专业版安装包。安装过程中,选择继续并耐心等待,点击安装按钮,配置仅选择使用C++的桌面开发。若不希望默认安装在C盘,可点击更改自定义安装路径。下载时安装,优化安装时间,安装完成后选择“以后再说”或注册账号登录。进入Visual ...

C语言中编译生成调试测试运行各是什么意思有什么区别
1. 编译:编译过程涉及将C语言源代码转换成机器可执行的代码。在Visual C++(VC)中,这一步骤会将源代码(.c文件)编译成目标代码(.obj文件),这个过程称为编译。2. 生成:生成步骤通常指的是链接过程,它将编译后的目标代码与其他库文件或模块合并,形成一个完整的可执行程序。在VC中,这涉及到...

vscode怎么调试c语言 调试步骤
1、打开你要写c++程序的文件夹,我们这里新建一个Test文件夹并打开test,打开后:使用VScode运行调试C\/C++,在左侧打开的目录中新建一个 main.cpp 文件。2、新建后点左侧的调试按钮(英文:Debug),可以看到,目前没有调试配置。3、这时我们需要配置自己的调试配置,回到资源管理器界面,我们可以看到目录...

相似回答