加减运算
#include<stdio.h>#include<stdlib.h>
#include<time.h>
void main()
{
int a,b,numOfQues=0,numOfRignt=0;
char inquiry;
srand(time(NULL));
printf("***欢迎你来做两位数的加减法***\n");
do
{
int temp=rand()%2;
a=rand()%100;
b=rand()%100;
switch(temp)
{
case 0:
{
int ans;
printf("%d+%d=",a,b);
scanf("%d",&ans);
if (ans==a+b)
{
numOfRignt++;
printf("恭喜!答对了!\n");
}
else
printf("答错了,再接再厉!\n");
}
case 1:
{
int ans;
printf("%d-%d=",a,b);
scanf("%d",&ans);
if (ans==a-b)
{
numOfRignt++;
printf("恭喜!答对了!\n");
}
else
printf("答错了,再接再厉!\n");
}
}
numOfQues++;fflush(stdin);
printf("你还要做一题吗?(N表示不要)");
scanf("%c",&inquiry);
}while(!('N'==inquiry||'n'==inquiry));
printf("你的答题正确率为%d。再见!\n",numOfRignt/numOfQues);
}
代码如上,其它都没有问题,就是最后这个正确率,总是1,故意做错也是如此,请问是哪里出了错误? #include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
int a, b, numOfQues = 0, numOfRignt = 0;
char inquiry;
srand(time(NULL));
printf("***欢迎你来做两位数的加减法***\n");
do
{
int temp = rand() % 2;
a = rand() % 100;
b = rand() % 100;
switch (temp)
{
case 0:
{
int ans;
printf("%d + %d = ", a, b);
scanf("%d", &ans);
if (ans == a + b)
{
printf("恭喜!答对了!\n");
numOfRignt++;
}
else
{
printf("答错了,再接再厉!\n");
}
}
numOfQues++; // 统计做题次数
case 1:
{
int ans;
printf("%d - %d = ", a, b);
scanf("%d", &ans);
if (ans == a - b)
{
printf("恭喜!答对了!\n");
numOfRignt++;
}
else
{
printf("答错了,再接再厉!\n");
}
}
}
numOfQues++; // 统计做题次数
fflush(stdin);
printf("你还要做一题吗?(N表示不要):\n");
getchar();
scanf("%c", &inquiry);
} while (!('N' == inquiry || 'n' == inquiry));
printf("你的答题正确率为 %.2f 。再见!\n", 100.0 * (float)numOfRignt / (float)numOfQues);
} 风过无痕1989 发表于 2020-12-15 00:21
这个的话输入n也不能结束程序是咋回事,就是输入n后又有题目出来了 905853663 发表于 2020-12-15 09:56
这个的话输入n也不能结束程序是咋回事,就是输入n后又有题目出来了
可以呀。就是因为不能结束,昨天我调试节近3个小时 风过无痕1989 发表于 2020-12-15 11:06
可以呀。就是因为不能结束,昨天我调试节近3个小时
太感谢了!!! 风过无痕1989 发表于 2020-12-15 11:06
可以呀。就是因为不能结束,昨天我调试节近3个小时
我在试试 风过无痕1989 发表于 2020-12-15 11:06
可以呀。就是因为不能结束,昨天我调试节近3个小时
确实不能结束哦,好奇怪,这里又发不了图片 因为你的getchar和scanf冲突了,要输入两次,我改了一下#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
int a, b, numOfQues = 0, numOfRignt = 0;
char inquiry;
int op;
srand(time(NULL));
printf("***欢迎你来做两位数的加减法***\n");
do
{
int temp = rand() % 2;
a = rand() % 100;
b = rand() % 100;
switch (temp)
{
case 0:
{
int ans;
printf("%d + %d = ", a, b);
scanf("%d", &ans);
if (ans == a + b)
{
printf("恭喜!答对了!\n");
numOfRignt++;
}
else
{
printf("答错了,再接再厉!\n");
}
}
numOfQues++; // 统计做题次数
case 1:
{
int ans;
printf("%d - %d = ", a, b);
scanf("%d", &ans);
if (ans == a - b)
{
printf("恭喜!答对了!\n");
numOfRignt++;
}
else
{
printf("答错了,再接再厉!\n");
}
}
}
numOfQues++; // 统计做题次数
fflush(stdin);
printf("你还要做一题吗?(N表示不要):\n");
// getchar();
scanf("%c", &inquiry);
printf("%c\n", inquiry);
op = (inquiry == 'N' || inquiry == 'n')?0:1;
} while (op);
printf("你的答题正确率为 %.2f 。再见!\n", 100.0 * (float)numOfRignt / (float)numOfQues);
} 我添加了一个op来判断循环 bonst 发表于 2020-12-15 18:21
我添加了一个op来判断循环
这样可以,还有个就是,怎么输出100%,就是那个百分号 905853663 发表于 2020-12-15 21:50
这样可以,还有个就是,怎么输出100%,就是那个百分号
% 我试过多种方法,都输不出来,不然我也肯定会写在程序里的 兄弟,这个百度一下就知道了,也就是#include <stdio.h>
int main()
{
int i = 520;
printf("%d%%\n",i);
return 0;
}
页:
[1]