今日学校题目第一道:
煎蛋题,但是太懒惰,很多知识都忘了
一个问题,两个其他人代码的好点子:
问题:
#include <stdio.h>
int main()
{
int m, q, x;
int n = x % m;
scanf("%d", &q);
for (int i = 0; i < q; i++) {
scanf("%d %d", &m, &x);
if (x <= m)printf("%d\n", x);
else if (x >= m) {
if (n == 0)printf("%d\n", m);
else printf("%d\n", n);
}
}
return 0;
}
运行结果总是出错,问题在于定义的n,位置不对。
因为在输入m,x之前定义,那么此时n不是一个具体的数字,(字母相除取余能等于什么呢,那肯定是乱七八糟的东西)所以,正确方法如下:在m,n接受输入的准确数字的时候再定义n
#include <stdio.h>
int main()
{
int m, q, x;
scanf("%d", &q);
for (int i = 0; i < q; i++) {
scanf("%d %d", &m, &x);
int n = x % m;
if (x <= m)printf("%d\n", x);
else if (x >= m) {
if (n == 0)printf("%d\n", m);
else printf("%d\n", n);
}
}
return 0;
}
点子1:
还有其他同学做的很好的做法:关于取余数,用不着考虑x小于m,也用不着考虑x正好整除m,所有的x范围的方法都一样:
点子2:引i
同时对于输入多行,需要引入一个辅助进行多行的变量i,q是行数(chhh,我连这个都忘了没错
for (int i = 0; i < q; i++) {
}
最终代码:
#include<stdio.h>
int main(){
int q,m,x;
int i;
scanf("%d",&q);
for(i=0;i<q;i++){
scanf("%d %d",&m,&x);
if(x%m==0)
printf("%d\n",m);
else
printf("%d\n",x%m);
}
return 0;
}
(for里面可以才开始定义i,int i)