关于#c语言#的问题,请各位专家解答!

写一个函数,其功能是:在3位整数(100~999)中寻找既是完全平亏数(东个数的平
方),又有两位数字相同的整数,例和|44、676等,并依次从小到大存入数狙b中;满足该
条件的整数的个数通过所编制的函数返回。我运行结束后只显示了百位数和十位数没有个位数,请问是哪里出了问题?

#include<studio.h>
int main()
{
int n=100
for(n;n<=999;n++)
{
for(int m=1;n<=n;m++)
{
if(m*m==n)
{
int i=n%10;
int j=(n=/10)%/10;
int k=n/100;
if(i==j||i==k||j==k)
{
printf("%\b",n);
break;
}
}
}
}
}

修改如下,见注释,供参考:

#include<stdio.h>
int main()
{
    int n = 100;  // 修改  少了 ';' 分号
    for (n; n <= 999; n++)
    {
        for (int m = 1; m < n; m++)  //for (int m = 1; n <= n; m++) 修改
        {
            if (m * m == n)
            {
                int i = n % 10;
                int j = (n / 10) % 10;   //int j = (n = / 10) % / 10; 修改
                int k = n / 100;
                if (i == j || i == k || j == k)
                {
                    printf("%d ", n);   //printf("%\b",n); 修改
                    break;
                }
            }
        }
    }
    return 0;
}

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/703312
  • 这篇博客也不错, 你可以看下求100以内的素数的个数,并以每行显示5个数的方式打印出来
  • 除此之外, 这篇博客: C语言基础练习题初学者可参考中的 4.练习: 1.设计一个程序,实现功能: 输入一个字符, 如果是大写的,就转换成小写的输出 如果是小写的,就转换成大写输出 如果是数字,就 * 10 输出 如果是其他字符,都输出 # a --> A B --> b 2 --> 20 ( --> # 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • #include<stdio.h>
    
    int main(int argc, const char *argv[])
    {
        char v = 0;
        scanf("%c", &v);
        getchar();
     
        if (v >= 'A' && v <= 'Z'){
            v += 32;
            printf("%c\n", v);
        }else if (v >= 'a' && v <= 'z'){
            v -= 32;
            printf("%c\n", v);
        }else if (v >= '0' && v <= '9'){
            v -= '0'; 
            v *= 10;
            printf("%d\n", v);
        }else{
            printf("%c\n", '#');
        }
    
        return 0;
    }
  • 以下回答由chatgpt基于相关博客总结生成:
    #include <stdio.h>
    #include <math.h>
    
    // 判断是否满足条件
    int testNumber(int num) {
        int h = num / 100;  // 百位
        int t = num / 10 % 10;  // 十位
        int l = num % 10;  // 个位
        if (h == t || t == l || h == l) {  // 两位相同
            double tmp = sqrt(num);
            if (tmp == floor(tmp)) {  // 是完全平方数
                return 1;
            }
        }
        return 0;
    }
    
    // 寻找符合条件的整数
    int searchNumber(int nums[]) {
        int idx = 0;
        for (int i = 100; i <= 999; i++) {
            if (testNumber(i)) {  // 符合条件
                nums[idx] = i;
                idx++;
            }
        }
        return idx;
    }
    
    int main() {
        int nums[500] = {0};  // 存储符合条件的整数
        int count = searchNumber(nums);
        for (int i = 0; i < count; i++) {
            printf("%d ", nums[i]);
        }
        return 0;
    }
    

    问题可能出现在寻找符合条件的整数的函数中。本题中要求两位数字相同,但代码中判断的是两个位数是否相同,因此可能会将个位数相同的数字漏掉。可以修改判断条件为 if (h == t || t == l || h == l || t == h || l == h || l == t) 。此外,还要确保存储符合条件的整数的数组足够大,可以根据实际情况调整。

你这代码错误一大堆,你确认这东西能编译运行?

#include<stdio.h>
int main()
{
int n=100;
for(;n<=999;n++)
{
for(int m=1;m<=n;m++)
{
if(m*m==n)
{
int i=n%10;
int j=(n/10)%10;
int k=n/100;
if(i==j||i==k||j==k)
{
printf("%d ",n);
break;
}
}
}
}
}