有大神帮我改下或编一个程序,题目是任意输入两个数x,y输出他们中间含任意一位数z的数

#include
#include
void qiu7(const int x,const int y,const int z){
int i=1;
int f=0;
int tem=0;
for(i=y;i<=x;++i){
tem=i;
while(tem !=0){
f=tem%10;
tem=tem/10;
if(f==z){
printf("%d\n",tem);
continue;}

}
}

}
int main(void){
int a=0;
int b=0;
int c=0;

printf("shu ru shang xian x=");
scanf("%d",&a);
printf("shu ru xia xian y=");
scanf("%d",&b);
printf("shu ru bao han shu z=");
scanf("%d",&c);
qiu7(a,b,c);
return 0;}
这是我的代码运行有问题

任意输入两个数x,y输出他们中间含任意一位数z的数

这就很简单啦 首先 x y确定了
String number="";//数(循环数)
String Znumber ="" //z
if(x>y ){ //因为x,y的顺序没意义只要保证是这两个数就可以了,这样就不用ifelse写两个循环了
int m = x;
x=y;
y=x
}else if(x=y){//如果两个数相等
itoa(z, Znumber, 10);//转换成String类型
itoa(x, number, 10);
if(number.indexof(Znumber) == -1){//判断是否存在z 不存在
printf("不存在!");
}else{
printf("存在");
}
}
for(int i = x;i<y;i++){
itoa(z, Znumber, 10);//转换成String类型
itoa(i, number, 10);
if(number.indexof(Znumber) == -1){//判断是否存在z 不存在
printf("不存在!");
}else{
printf("存在");
}
}
就这样了

不用真的每个数都分解出来,因为你根本不知道有多少位数


#include <stdio.h>


void qiu7(const int x,const int y,const int z)
{
    int i = 1;
    int f = 0;
    int temp = 0;

    //for(i = y; i <= x; ++i)
    for(i = x; i <= y; ++i)
    {
        temp = i;
        while(temp !=0)
        {
            f = temp % 10;
            temp = temp / 10;
            if(f == z)
            {
                printf("%d\n", i);
               // printf("%d\n", temp);
                //continue;
                break;
            }
        }
    }
}
int main()
{
    int a = 0;
    int b=0;
    int c=0;

    printf("shu ru shang xian x=");
    scanf("%d", &a);
    printf("shu ru xia xian y=");
    scanf("%d", &b);
    printf("shu ru bao han shu z=");
    scanf("%d", &c);
    qiu7(a, b, c);

    return 0;
}

三处错误,在上述代码的注释处

几个建议. 第一函数名变量太随意, 第二代码要适当缩进和换行,第三学学楼上的兄弟多写注释,不过话又说回来,如果你的函数名变量名写的够明了,这种简单的逻辑应该不要一行注释都能看的很明白.

就比如那个 int x , int y 改成 int upBound , int lowBound 你看一眼就找到一个buf

for循环里 多写一个局部变量 int originalValue = i; 一眼就能看出来,你printf打错值了..

还有尽量少用 ++i i++ i = i + 1; 好的很啊, 哪有那么多效率问题, 编译器优化-O3都差不多把, 不差这一点效率, 代码可读性真的十分十分重要.

我比较唠叨, 见谅

可能我们理解有问题, 你应该是两处错误.我把你先输入的当做是下届, 第二个输入的当做上届... 我习惯了先输入小数, 后大.....

刚下班, 调了下你的代码....

#include <stdio.h>


int get_BetweenUpperAndLowerBounds_IncludeOneDigit_Numbers(const int upperBound,
                                                            const int lowerBound,
                                                            const int oneDigit)
{
    int total = 0;

    int i = 1;
    for(i = lowerBound; i <= upperBound; i = i + 1)
    {
        int origalValue = i;

        int temp = origalValue;
        while(temp !=0)
        {
            int remainder;
            remainder = temp % 10;

            temp = temp / 10;

            if(remainder == oneDigit)
            {
                printf("%d\n", origalValue);
                total = total + 1;
                break;
            }
        }
    }

    return total;
}

int main()
{
    int upperBound = 0;
    printf("input upperBound = ");
    scanf("%d", &upperBound);

    int lowerBound =0;
    printf("input lowerBound = ");
    scanf("%d", &lowerBound);

    if(upperBound < lowerBound)
    {
        printf("inpot error [upperBound < lowerBound]");
        return 0;
    }

    int oneDigit = 0;
    printf("input oneDigit = ");
    scanf("%d", &oneDigit);

    if (0 > oneDigit || 10 < oneDigit)
    {
        printf("inpot error [oneDigit not one Digit]");
        return 0;
    }

    int total = 0;
    total = get_BetweenUpperAndLowerBounds_IncludeOneDigit_Numbers(upperBound,
                                                                   lowerBound,
                                                                   oneDigit);
    if (0 == total)
    {
        printf("can't find");
    }
    return 0;
}

我有几个坏毛病, 我喜欢把变量定义在离使用它的地方,尽可能近的地方.
我写{喜欢换行.
我宁可写又臭又长的变量名,也不愿意去写注释..