标题:一个函数赋值的问题
只看楼主
于小满01
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2014-6-4
结帖率:75%
已结贴  问题点数:20 回复次数:3 
一个函数赋值的问题
编写一个函数,利用参数传入一个3位数number,找出101~number之间所有满足下列两个条件的数:
它是完全平方数,又有两位数字相同,如144、676等,函数返回找出这样的数据的个数。请同时编写主函数。
我的问题是,为何输出的结果是不对的,而我把flag1和flag2的赋值放在最外层的for循环以内输出的结果就对了呢,刚刚学C。很多地方都不甚明白,求大神指教啊。
#include <stdio.h>
#include <math.h>
int search(int n);
int main(void)
{
    int number,ri,repeat;

    scanf("%d",&repeat);
    for(ri=1;ri<=repeat;ri++){
        do{
            scanf("%d",&number);
        }while(number<101||number>999);
        printf("count=%d\n",search(number));
    }
}
/*---------*/
int search(int number)
{
    int i,j,k,count,flag1,flag2;
    count=0;
        flag1=0;flag2=0;
    for(k=101;k<=number;k++){


        



        for(j=sqrt(k*1.0)-1;j<=sqrt(k*1.0)+1;j++)
    {
        if(k==j*j)
        {flag2=1;
        break;}
    }
   
    int a1,a2,a3;
    a1=k%10;
    a2=(k/10)%10;
    a3=k/100;
    if(a1==a2||a1==a3||a2==a3)
    flag1=1;

   
    if(flag1==1&&flag2==1)
    count++;
    }
    return count;
}
搜索更多相关主题的帖子: include search number repeat 
2014-06-13 22:39
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
得分:20 
那么错误的版本是放在哪个位置呢

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2014-06-14 06:47
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
得分:0 
你好好学习下for循环,要知道for循环的控制范围及变量在变化中是如何控制循环的控制的。

我不是砖家,要努力成为砖家。
2014-06-14 07:57
zhangganglei
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-3-6
得分:0 
那个错误还是自己调试吧,,要学会调试,上网搜搜“VC6.0调试”
或者看看这个 http://www.

但告诉你个效率的方法:
// n为输入的数
int sqrt_n = sqrt(n);
for(i=1; i<=sqrt_n; i++)
{    如果(i*i的值 有两位数相同)
        个数++;
}
如此保证只要循环次数为 根号n,并且不用判断是否为平方数

[ 本帖最后由 zhangganglei 于 2014-6-14 08:46 编辑 ]
2014-06-14 08:30



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-432904-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.295682 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved