请问我的代码有什么问题吗,求改正
感觉可能是有什么情况没考虑到
输入100的时候输出跟标准答案不符合.
你的c没清零啊,所以输入100的时候会把之前计算10的加一起了
还有,你的格式也跟要求的不一致啊
#include<stdio.h>
#include <stdlib.h>
#include<math.h>
void comp(int n,int q){
int b=0,c=0,count=0;
for(c=n;c>=0;){
for(b=n-c;b>1;){
count++;
// printf("count=%d,c=%d\n",count,c);
b-=2;
}
c-=5;
count++;
}
printf("case %d:%d\n",q,count);
}
int main()
{
int n,q=0,j,k,l,m,f,c=0,i;
do{
aa: scanf("%d",&n);
if(n<0){
printf("输入错误,请重新输入\n");
system("pause");
goto aa;
}else{
q++;}
if(n!=0){ comp(n,q);}
}while(n!=0);
return 0;
}
你可以把printf的内容放开,看一下你就明白了
在学习的过程中,对于哪一步产生的结果有怀疑就打印出来看看,在实际开发过程中,打印这个函数用的是非常频繁的,这要比打断点方便我认为,不管是什么语言,Java也好,go语言也好,JavaScript也好,都有对应的打印函数,用的都比较多,不要怕麻烦,当你看到那个位置的结果时,你问题就已经解决了一部分
改完还是错了TAT
其实我给你的这个答案我发现还有问题,如果是5的倍数结果没问题,如果不是5的倍数会出错,你想想怎么写小于5时,我也想想,稍微有点儿麻烦
2 2 2 2
2 2 2 2 1 1
2 2 2 1 1 1 1
2 2 1 1 1 1 1 1
2 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1111
2 2
2 11 1
11111
2 111
2 2 1