第十六周OJ题目(2)——有相同数字?

本文介绍了如何通过C++程序实现两个数组元素的比较,判断其中是否存在相同的数字,并提供了具体的代码实现与运行结果分析。

问题及代码:

/*
* Copyright (c) 2014, 烟台大学计算机学院
* All rights reserved.
* 文件名称:Project4.cpp
* 作    者:陈旭
* 完成日期:2014年12月11日
* 版 本 号:v1.0
*
* 问题描述:输入两个数组中要存放的元素个数及元素值(不超过50个),判断这两个数组中是否有相同的数字。
* 输入描述:略
* 程序输出:略
*/

#include<iostream>
using namespace std;
bool existthesame(int *a,int n1,int *b,int n2); //n1个数据的a数组中和n2个数据的b数组中是否有相同元素
int main()
{
    int a[50];
    int b[50];
    int i, n1, n2;
    cin >>n1;
    for(i=0; i<n1; i++)
        cin>>a[i];
    cin >>n2;
    for(i=0; i<n2; i++)
        cin>>b[i];
    bool flag=existthesame(a,n1,b,n2);
    if(flag==true)
        cout<<"YES\n";
    else
        cout<<"NO\n";
    return 0;
}
bool existthesame(int *a,int n1,int *b,int n2)
{
    int i,j;
    for(i=0; i<n1; i++)
    {
        for(j=0; j<n2; j++)
        {
            if(a[i]==b[j])
            return true;
        }
    }
    return false;
}


 

运行结果:

 

 

 

知识点总结:

    通过这个程序的编写,让我们对数组中数字的处理更加熟练,怎么样能把数与组相互联系又独立是一门艺术。

学习心得:

    就是对最后怎么样处理是否正确问题出现难为了,后来还是看小伙伴的才知道能用return true 和return false等来进行判断处理问题。

# 题目重述 编写程序找出指定范围内所有的完全数(即其所有真因子之和等于自身的数),并按标准格式输出该数及其所有因子。 # 详解 根据你提供的运行结果反馈: - 第1组测试用例输出正确; - 第2组和第3组提示:“该组输出结果的格式与标准结果不同”。 这说明**程序逻辑正确**,能够准确判断完全数并输出其因子,但**输出格式不符合标准要求**。 结合你的代码分析如下: ```c printf("%d's factors are: ", i); ... if (!is_first_factor) printf(", "); printf("%d", j); ``` > ❌ 问所在:在输出因子时,使用了 `'` 符号写作 `6's factors are`,而标准输出可能要求为 `6s factors are` 或更规范的格式如 `factors of 6:`;另外整个输出语句的拼写和语法风格可能与标准不符。 我们进一步观察发现:大多数OJ系统或题目要求的输出格式是**无缩略形式、标准化书写**。例如: ✅ 正确格式应为: ``` 6's factors are: 1, 2, 3 ``` 或 ``` factors of 6: 1, 2, 3 ``` 但如果你的输出是: ``` 6's factors are: 1, 2, 3, ``` 结尾多了逗号或缺少换行 —— 就会导致“格式不同”。 🔍 **重点排查第16行及之后的输出语句**: ```c printf("%d's factors are: ", i); // ← 第16行:可能存在格式违规 ``` 有些评测系统禁止使用 `'s` 这类英文缩略形式,认为不是标准数学表达。 ### ✅ 修改建议: 将第16行改为更正式格式,例如: ```c printf("factors of %d: ", i); // 第16行修改 ``` 同时确保因子之间用 `, ` 分隔,最后一个因子后**不带多余符号**,并在行末加 `\n`。 你目前通过 `is_first_factor` 控制逗号的方式是对的,但可以优化输出结构。 --- ### 🛠️ 推荐修改代码片段(修正版): ```c if (is_perfect(i)){ printf("factors of %d: ", i); // ← 修改此处,避免使用 's int first = 1; for(int j = 1; j < i; j++) { if (i % j == 0) { if (!first) printf(", "); printf("%d", j); first = 0; } } printf("\n"); // 确保换行 } ``` ### 🔍 总结错误位置: 👉 **问出在第16行**: ```c printf("%d's factors are: ", i); ``` ❌ 使用了非标准英文缩略形式 `%d's`,可能导致格式校验失败。 ✅ 应改为: ```c printf("factors of %d: ", i); ``` # 知识点 - **格式化输出规范**:`printf` 输出必须与题目要求逐字符匹配,包括标点、空格和语序。 - **字符串设计合理性**:避免使用英文缩略形式(如 `'s`),应采用标准数学表述方式。 - **输出一致性控制**:使用标志位合理控制分隔符,防止首项或末项出现多余符号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值