2 qq 4646484 qq_4646484 于 2016.01.24 09:40 提问

c语言多组数据测试问题?(O_O)

在下编程大门的新手一枚,遇到了这样一道题:2016年,小豪喜欢数字6,于是一个数的某一位有数字6他都喜欢(比如2016个位是6,所以小豪喜欢2016这个数),但是小豪讨厌9(因为9的颜值太低),任意一个数,只要某个数字是9他都不喜欢(就算这个数有6,比如6699这个数就是小豪不喜欢的)。那么问题来了,现在给一个a,b,求a到b之间有多少个数是小豪喜欢的。
先输入一个T表示测试数据组数(T<=50)
每组数据输入a,b(0 输出小豪喜欢数的个数。
代码如下:
#include
void main()
{
long a,b,s,i;
int n,k=0,j,t,m;
while(scanf("%d",&n)==1)
{
s=0;
scanf("%ld%ld",&a,&b);
for(i=a;i<=b;i++)
{
t=i;j=0;
while(t)
{
m=t%10;
t=t/10;
if(m==6)j=1;
if(m==9)
{
j=0;
break;
}
}
s+=j;
}
printf("%ld\n",s);
k++;
if(k>=n)break;
}
}
经过多次测试,发现第二组数据就开始出了问题,猜测应该是初始化的问题,可是经过小白2天时间的思考,并没有什么问题(O_O)。这样的问题已经积累了好几道题了。实在是无能为力了,希望在这里找到大神指点迷津让我开窍。谢谢图片说明图片说明

3个回答

qq_27183003
qq_27183003   Ds   Rxr 2016.01.24 09:54
已采纳
 #include <stdio.h>
void main()
{
    long a,b,s,i;
    int n,k=0,j,t,m;
    scanf("%d",&n);//修改
    while(n)//修改
    {
        s=0;
        scanf("%ld%ld",&a,&b);
        for(i=a;i<=b;i++)
        {
            t=i;j=0;
            while(t)
            {
                m=t%10;
                t=t/10;
                if(m==6)j=1;
                if(m==9)
                {
                    j=0;
                    break;
                }
            }
            s+=j;
        }
        printf("%ld\n",s);
        k++;
        if(k>=n)break;
        n--;//修改
    }
}
qq_4646484
qq_4646484 对比了修改后的代码,又看了看题目,发现题目只需要输入一次n,然而我用了while语句循环输入n,导致了下面代码的错误。自己好傻。谢谢指点,谢谢
2 年多之前 回复
qq_27183003
qq_27183003   Ds   Rxr 2016.01.24 10:00

完善一下:

 #include <stdio.h>
void main()
{
    long a,b,s,i,t;//修改t类型
    int n,j,m;
    scanf("%d",&n);//修改
    while(n)//修改
    {
        s=0;
        scanf("%ld%ld",&a,&b);
        for(i=a;i<=b;i++)
        {
            t=i;j=0;
            while(t)
            {
                m=t%10;
                t=t/10;
                if(m==6)j=1;
                if(m==9)
                {
                    j=0;
                    break;
                }
            }
            s+=j;
        }
        printf("%ld\n",s);
        //k++;
        //if(k>=n)break;
        n--;//修改
    }
}
qq_4646484
qq_4646484   2016.01.24 09:44

0<a<=b<1000000 (⊙_⊙)漏掉了

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
o_O???
侑佷茤話想說,却吥倁該侞何開ロ                                  言午多字想写,不矢口言亥女口亻可下笔   或言午真的该好好静下心来想想 好好想想  不想就这么浑浑噩噩的过下去三年说长不长说短不短再这样下去  或许就是一辈子
解决多组数据测试问题
我发现了两个方法,这里直接以代码表示 方法一 #include  int main()  {  int i,n; while(scanf("%d",&n)!=EOF)表示读到文件末尾。 { } return 0; } 方法二 #include  int main()  {  int i,n; while(scanf("%d",&n)&&n)如果n=0就结束
HDU 2587 - 很O_O的汉诺塔
HDU上这个汉诺塔问题并不好解决,AC人数少之又少。 现在我带你来解答~
很O_O的汉诺塔
题目来源:hdu2587 很O_O的汉诺塔 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 470    Accepted Submission(s): 39 Problem Description
1的个数不同语言的实现(多组数据测试)
1的个数时间限制:3000 ms  |  内存限制:65535 KB难度:1描述小南刚学了二进制,他想知道一个数的二进制表示中有多少个1,你能帮他写一个程序来完成这个任务吗?输入第一行输入一个整数N,表示测试数据的组数(1&amp;lt;N&amp;lt;1000)每组测试数据只有一行,是一个整数M(0=&amp;lt;M&amp;lt;=10000)输出每组测试输出占一行,输出M的二进制表示中1的个数样例输入3 4 6 7样例...
如何输入多组测试数据
Problem Description 输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。   Input 输入数据有多组,每组占一行,有三个字符组成,之间无空格。   Output 对于每组输入数据,输出一行,字符中间用一个空格分开。   Sample Input qwe asd zxc
EOF,C语言输入多组数据
第一次,小小的记录一下while((scanf("%d,%d",&a,&b)!=EOF)&&(a!=0))EOF是控制程序让自己可以源源不断地输入数据,但是如果要求停止,就要用到&&,再加入其他的附属条件,才能控制程序的结束。
C语言输入多组数据------“~”与 “EOF”的抉择
while(~scanf("%d",&A))通过这样这样也可以获取多组数据 scanf的返回的值 EOF定义 ACMer
c语言数据测试
C语言数据类型测试 ANSI 表准中的数据类型定义 char 8 -127--127 unsigned char 8 0---255 signed char 8 -127 -- 127 int 16 -32
ACM输入输出--多组测试用例--C、C++、Java
最近在练习一些关于ACM的题,往往会有多组测试用例,不知道该怎么办,查找资料总结之。