C 谁是赢家?
我是C语言的新手。我已经编写了代码,但我似乎无法找到为什么输出没有显示出来 问题2:谁是赢家?(二级) •问题描述 爱丽丝和鲍勃正在玩游戏。他们都写下一个整数。如果两个整数之和是一个整数的平方,爱丽丝就赢了。如果总和的倒数是整数的平方,则Bob获胜。如果双方都不赢,或者双方都赢,那就是平局 例如,爱丽丝写了一个8,鲍勃写了一个10。18不是任何整数的平方。但是81是9的平方。所以鲍勃是赢家。 写一个程序,取两个整数并输出游戏的赢家 •输入和输出要求 输入两个正整数。输出应遵循示例结果中所示的格式: 样本1 样本2 代码:C 谁是赢家?,c,C,我是C语言的新手。我已经编写了代码,但我似乎无法找到为什么输出没有显示出来 问题2:谁是赢家?(二级) •问题描述 爱丽丝和鲍勃正在玩游戏。他们都写下一个整数。如果两个整数之和是一个整数的平方,爱丽丝就赢了。如果总和的倒数是整数的平方,则Bob获胜。如果双方都不赢,或者双方都赢,那就是平局 例如,爱丽丝写了一个8,鲍勃写了一个10。18不是任何整数的平方。但是81是9的平方。所以鲍勃是赢家。 写一个程序,取两个整数并输出游戏的赢家 •输入和输出要求 输入两个正整数。输出应遵循示例结果中所示的格
#include <stdio.h>
int reverse(int numOne, int numTwo)
{
int rev;
rev = numTwo*10 + numOne;
return rev;
}
int issquare(int num)
{
int i, valid;
valid = 0;
for(i = 0; i < num; i++)
{
if((i*i) == num)
{
valid = 1;
}
}
return valid;
}
int main()
{
int num1, num2, normal, rev, alice, bob;
scanf("%d %d", &num1, &num2);
printf("%d %d", num1, num2);
rev = reverse(num1, num2);
normal = num1*10 + num2;
bob = issquare(normal);
alice = issquare(rev);
if(bob==1)
{
if(alice==1)
{
printf("Tie");
}
}
if(bob==1)
{
if(alice==0)
{
printf("Bob wins.");
}
}
if(alice==1)
{
if(bob==0)
{
printf("Alice wins.");
}
}
return 0;
}
#包括
内翻(内翻货币,内翻货币)
{
国际修订版;
rev=numTwo*10+numOne;
返回版本;
}
整数平方(整数)
{
int i,有效;
有效=0;
对于(i=0;i
必须是bob==0
和alice==0
的大小写。在else语句中添加打印语句,您将知道原因。你的死刑在某种程度上证明了这一点
同样在issquare
中,应该有这样的循环
for(i=0;i计算normal
的方法不正确
normal=num1+num2;
您为反转编写的函数也不正确
int reverse(int num1,int num2)
{
int sum=num1+num2;
int ans=0;
while(sum>0)
{
ans =ans*10 +(sum%10);
sum/=10;
}
return ans;
}
而且您也没有检查都丢失的情况。
同时添加该条件。尝试调试您的代码。这通常会有帮助。使用所有警告和调试信息编译:gcc-Wall-Wextra-g
with.Think。改进代码以不获得警告。使用调试器gdb
。思考。重复,直到您满意为止。修复我的代码和完成我的家庭作业问题不在这里讨论。欢迎来到StackOverflow。这是正在进行的比赛的一部分吗?哎呀,很抱歉给你添麻烦。谢谢你的建议。有没有一个部分可以教我如何正确使用StackOverflow?你好,yajiv,谢谢你的回复。
#include <stdio.h>
#include <stdlib.h>
int reverse(int num)
{
int rev=0,inter = 0;
while(num){
inter = rev*10;
if( inter/10 != rev){
fprintf(stderr, "%s\n", "Overflow\n");
exit(1);
}
rev=inter+num%10;
num/=10;
}
return rev;
}
int issquare(int num)
{
for(int i = 0; i <= num; i++){
long long ii = i;
long long mul = ii*ii;
if( ii!= 0 && mul/ii != ii){
fprintf(stderr, "%s\n", "Overflow\n");
exit(1);
}
if(mul == num)
return 1;
else if(mul > num){
break;
}
}
return 0;
}
int main()
{
int num1, num2, normal, rev, alice, bob;
if( scanf("%d%d", &num1, &num2)!= 2){
fprintf(stderr,"Error in input\n");
exit(1);
}
printf("%d %d", num1, num2);
rev = reverse(num1+num2);
normal = num1+ num2;
bob = issquare(rev);
alice = issquare(normal);
if(bob==alice)
printf("Tie");
else if(bob > alice)
printf("Bob wins.");
else
printf("Alice wins.");
return 0;
}
normal=num1+num2;
int reverse(int num1,int num2)
{
int sum=num1+num2;
int ans=0;
while(sum>0)
{
ans =ans*10 +(sum%10);
sum/=10;
}
return ans;
}