这段代码错在哪里?
发布网友
发布时间:2022-05-20 11:16
我来回答
共1个回答
热心网友
时间:2023-10-17 10:58
"
#include "stdlib.h"
int main()
{
/*Start by declaring arrays and pointers*/
char guessNumber[4]=, userGuess(我用了缩写,不然太麻烦)[4]; int a; char *origin=guessNumber, (无需指针)*user=userGuess;
/*for (a=0;a<4;a++)
{
srand(a);
guessNumber[a]=rand()%9; (我已经帮你改成随机产生了)
printf("%d",guessNumber[a]);
}*/
/*Initialization end*/
/*introction starts*/ (注释太多,影响阅读)
printf("Hello and welcome to \'GUESS MY NUMBER\'\n");
printf("If you are right on both positon and value, you receive B.\n");
printf("If you are right on value but not position, you receive S.\n");
printf("Good luck!\n"); (规则帮你改的更明确了)
/*introction end*/
/*Core coding starts*/
int tryCount=0, maxTry=20, temp, i, j, count_B=0, count_S=0;
char *P=origin, *U=user;
for(tryCount=0;tryCount<20;tryCount++)
{
printf("\nWhat's the number:**** ");
/*Loop for user input*/
for(temp=0;temp<4;temp++)
scanf("userGuess[temp]"); (用户数据输入的代码有问题,已经帮你改了)
temp=0; //Set temp back to zero for next loop
for(i=0;i<4;i++) /*i for guessNumber*/
{
for(j=0;j<4;j++) /* j for userGuess*/
{
if((i==j)&&((*P)+i)==((*U)+j)) /*if position and number match*/
count_B++; /*B++*/
else if((i!=j)&&(*(P)+i)==(*(U)+j)) /*If number match*/ (这里有问题,只要*P==*U就可以了,你为什么加了i和j呢? )
count_S++; /*S++*/
}
}
if(count_B==4)
{ (猜对,输出祝贺语句)
//All code goes here....
tryCount=100; break;
}
printf("\n%dB%dS",count_B, count_S);
(输出提示,之后要清零,不然B和S会累加)
}
(我帮你加入了重复猜的代码,不过没有修补漏洞,输入时如果你输入负号(-),或者小数点(.)或者超过4位的数,比如1598546,程序会出问题的)
}
修改后的程序代码:
#include "stdio.h"
#include "stdlib.h"
#include "iostream.h"
int main()
{
int gn[4],ug[4];//gn is short for guessnumber,ug is short for userguess.
char p;
//proce a correct number
printf("Hello and welcome to 'GUESS THE NUMBER'\n\n");
printf("The correct number consists four digits between 0~9 !!!!!!!!!\n\n");
printf("If you are right on both positon and value, you receive a B !!!!!!!!!\n");
printf("If you are right on value but not position, you receive a S !!!!!!!!!\n\n");
printf("Good luck!\n");
START: gn[0]=rand()%10;// randomly proce number between 0~9
do gn[1]=rand()%10;
while (gn[1]==gn[0]);
do gn[2]=rand()%10;
while(gn[2]==gn[1]||gn[2]==gn[0]);
do gn[3]=rand()%10;
while(gn[3]==gn[2]||gn[3]==gn[1]||gn[3]==gn[0]);
/* if the correct number is randomly proced, we should use rand() under stdlib.h
so the program is more complicated*/
//printf("\n%-2d%-2d%-2d%-2d\n\n",gn[0],gn[1],gn[2],gn[3]);
printf("\nIMPORTANT: No digits appear twice in the correct number!!!!!!!!!\n");
int tryCount=0, maxTry=20, i, j,count_B=0, count_S=0;
int n1,n2,n3,n4; //n is short for number
for(tryCount=0;tryCount<20;tryCount++) {
printf("\nThen what's your number:");
SUN: scanf("%1d%1d%1d%1d",&n1,&n2,&n3,&n4);//user input
if (n1*n2*n3*n4<0||n1*n2*n3*n4>6561)
{printf("error!!!!!!!!!");
goto SUN;}
else {}
ug[0]=n1;
ug[1]=n2;
ug[2]=n3;
ug[3]=n4;
printf("\nThe number you input is %d %d %d %d",ug[0],ug[1],ug[2],ug[3]);
printf("\nYou have tried %d times",tryCount+1);
for(i=0;i<4;i++)
{
for(j=0;j<4;j++) {
if((i==j)&&(gn[i]==ug[j]))
count_B++;
else if((i!=j)&&(gn[i]==ug[j]))
count_S++; }
}
if(count_B==4)
{ printf("\n\nYou have guessed the number!\n");
printf("\nCONGRATULATIONS!!!!!!!!!\n\n");
printf("Want to guess again?<y/n>\n");
cin>>p;
if (p=='y')
goto START;
else goto SET;
}
else printf("\n\nThe clue is %d B %d S\n",count_B, count_S);
count_B=0;
count_S=0;
}
printf("\nYou have tried 20 times, but failed to figure out the number!\n");
printf("\nThe correct number is %d %d %d %d\n",gn[0],gn[1],gn[2],gn[3]);
printf("\nWant to guess again?<y/n>\n");
cin>>p;
if (p=='y')
goto START;
else goto SET;
SET:{}
return 0;
}
学编程的 请帮我看下这段代码错在哪里 应该怎么改?
你的代码写的就不对,肯定不会有正确的输出 以下两种写法 第一种 //1!+2!+3!...+10!int sum = 0;for (int i = 1; i <= 10; i++){ int mul = 1;for (int j = i; j >= 1; j--){ mul *= j;} sum += mul;} System.out.println(sum);第二种 int sum=0;int ...
aippt自动生成工具
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图、条形...
这段代码错误在哪?为什么会显示最后一行 “语法错误,将”{“插入到完整...
这只是一个ide没及时刷新的问题,你粘到记事本重新再弄进来就好了,遇到过
这段java代码提示出错,请问到底是哪里出错了,怎么解决
一共三个错误:第一:函数的格式是访问修饰符(public之类) 返回值(int之类) 函数名(){} 第二:函数的在其他地方调用,至少应该是:函数名()的形式。第三:静态函数可以使用类名.函数名()的方式调用,非静态函数,则应该是对象名.函数名()的方式调用 如果需要详细指导,请查看我资料的网址连接,我...
请帮忙看一下下面的这段代码错在 哪儿,编译有错误。
你代码中可能存在错误。就是头文件的引用 #include<inttypes.h> 这个文件一般是没有的,得自己加进去 文件内容如下 /* 7.8 Format conversion of integer types <inttypes.h> */#ifndef _INTTYPES_H_#define _INTTYPES_H_#include <_mingw.h>#include <stdint.h>#define __need_wchar_t#inclu...
一段C语言代码不知道错哪儿了,请高手指教
运行错误,就是程序通过编译,却在运行时出错,一般是逻辑上的问题,比如数组越界,空指针等等。比较常见的运行时错误是在做除法运算时所产生的“除数为零”错误。如下列 VB 代码:Dim a As Double, b As Double, Result As Doublea = 100b = 0Result = a / b 该程序在语法上并没有错误,...
这段java代码错在哪里,怎么改。错误提示对于结果类型为空的方法, 无法...
public void getAge() {return age;}上面这个你弄错了, 有返回值只能改成int,修改后的如下class AbstractCaseDemo02{public static void main(String args[]){Person per1 = null;Person per2 = null;per1 = new Student("张三",22,333.9f);per2 = new Worker("李四",33,5555.8f);per...
这是一个登录窗口的代码,求大神赐教,错在哪儿?
这段代码有几处错误:"Application.ScreenUpdating = False"应该放在Sub过程的最开始,并配合使用"Application.ScreenUpdating = True"来恢复正常的屏幕刷新操作。"Sheets(“警录界面”)hctivate"这里的"hctivate"拼写错误,应该是"Activate"。"Application.WindowState = xlMarimized"和"ApplicationVisible = ...
大家帮我看看这段代码的错误在哪里啊,为什么提示找不到类型或命名空间...
using System;你命名空间搞错了。[Serializable]其实是SerializableAttribute 类。
这个代码错在哪里啊?
在这段python代码中,for n in range(1, n+1):这一段循环,在第一次循环时,s = s + int(str(a) * n)此时n为1,int(str(a) * n)得到的值是a,也就是a+a,此后就演变成a + a + aa + aaa + aaa…aaa了。所以应该改成range(2, n+1) 。ps.打断点、输出日志不会可以翻...
这个代码有错误吗?如果有,错在哪?求解!
= CLng(Text1.Text)注意两个都要修改,还有,修改后最多也就计算到12,也就是12及12以下的阶乘都可以求,如果输入一个大于12的数,也会报溢出,还有这段代码没有做一个非空判断,也就是在计算的时候,如果你什么都不输入,直接计算,是会报异常的(执行代码时候出现的错误,不是语法错误)...