wjwwjw04 2023-11-14 23:08 采纳率: 0%
浏览 10

初学c语言有点问题请大家看一看

img

img


这是pta上的题,我的思路是先判断是不是完全平方数,然后将每一位数存入数组,判断是否有数字相同。上面这个程序我用m算出了位数当做数组的边界,结果把不符合的数也输出出来了

img

img


上面这个用终止符判断数组边界,没有多输出数但是不知道为什么少了一个400

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-15 08:43
    关注

    【以下回答由 GPT 生成】

    问题分析: 根据问题描述,我们可以将问题分为两个部分:判断一个数是否为完全平方数、将每一位存入数组并判断数组中是否有重复的数字。其中,你已经计算了数组的边界并输出了不符合条件的数,但结果中也有一些不符合条件的数被输出了。另外,你尝试用终止符来判断数组的边界,虽然避免了多余的输出,但却少了一个数值为400的情况。下面我将分别给出解决方案。

    1. 判断一个数是否为完全平方数: 你可以使用循环从1开始依次遍历每个数,并计算它的平方是否等于给定的数。如果找到一个平方等于给定数的数,那么该数就是完全平方数,否则不是。以下是具体的解决方案代码:
    #include <stdio.h>
    
    int isPerfectSquare(int num) {
        for (int i = 1; i * i <= num; i++) {
            if (i * i == num) {
                return 1;
            }
        }
        return 0;
    }
    
    int main() {
        int num = 16; // 你可以将其改为其他的数进行测试
        printf("%d\n", isPerfectSquare(num));
        return 0;
    }
    
    1. 将每一位存入数组并判断数组中是否有重复的数字: 你可以使用一个数组来存储每一位,然后遍历数组查找是否有重复的数字。具体的解决方案代码如下:
    #include <stdio.h>
    
    int isDuplicate(int *arr, int size) {
        for (int i = 0; i < size; i++) {
            for (int j = i + 1; j < size; j++) {
                if (arr[i] == arr[j]) {
                    return 1;
                }
            }
        }
        return 0;
    }
    
    int main() {
        int num = 123456789; // 你可以将其改为其他的数进行测试
        int digits[10]; // 数组的大小设置为10,因为我们只会存储0-9这几个数字
        int count = 0;
    
        while (num > 0) {
            digits[count++] = num % 10; // 取余得到最低位的数字
            num /= 10; // 将num除以10,使得num的最低位消失
        }
    
        if (isDuplicate(digits, count)) {
            printf("数组中有重复的数字\n");
        } else {
            printf("数组中没有重复的数字\n");
        }
    
        return 0;
    }
    

    关于你提到的使用终止符来判断数组的边界,以及数值为400的情况没有被正确处理的问题,我无法确定你具体的实现细节。但一般来说,我们可以通过设置一个标记变量或者在数组最后添加一个特殊值来表示数组的边界,以避免多余的输出和丢失特定情况。具体的实现代码根据你的具体逻辑可能会有所不同。

    希望以上解决方案对你有所帮助,如果你还有其他问题,请随时提问。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 11月14日

悬赏问题

  • ¥15 无源定位系统的时差估计误差标准差
  • ¥15 请问这个代码哪里有问题啊
  • ¥20 python--version在命令端输入结果Python is not defined怎么办?还有pip不是exe格式是不是没安装成功?
  • ¥15 通过GaussianView进行结构微调消除虚频
  • ¥15 调用transformers库
  • ¥15 由于导出的数据名字中带有/,导致Matlab打不开,怎么办?
  • ¥15 新硬盘安装的程序总是崩溃,提示遇到错误
  • ¥15 openpcdet自制数据集评估bev精度和3d精度相同
  • ¥15 excel 上下按钮 显示行
  • ¥20 云卓h12pro 数传问题