楼主: chenp1111
107 0

[经济学教育] 吉林大学高级语言设计2025级11.20OJ考试(下半场) [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

40%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
20 点
帖子
1
精华
0
在线时间
0 小时
注册时间
2018-3-29
最后登录
2018-3-29

楼主
chenp1111 发表于 2025-11-21 15:01:56 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

吉林大学高级语言设计2025级11.20OJ考试(下半场)

第一题:三角形判断

问题描述:
给定三个整数 a、b、c,表示三角形的三条边长。判断这三条边是否能构成一个合法的三角形。若可以,输出“yes”;否则输出“no”。

输入形式:
输入为三个整数 a、b、c,以空格分隔。

输出形式:
输出一行字符串:“yes” 或 “no”。

解题思路:
根据三角形的基本性质,任意两边之和必须大于第三边。因此只需验证以下三个条件是否同时成立:
- a + b > c
- a + c > b
- b + c > a
若全部满足,则可构成三角形。

代码实现:

#include <stdio.h>
int main() {
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);
    if (a + b > c && a + c > b && b + c > a) {
        printf("yes");
    } else {
        printf("no");
    }
    return 0;
}
3 4 5

yes

1 2 3

no

第二题:较大的质因数

问题描述:
输入一个正整数 n,该数保证恰好由两个质数相乘得到。要求输出这两个质因数中较大的那个。

输入形式:
一个正整数 n,满足 6 ≤ n ≤ 2×10^9。

输出形式:
输出 n 的较大质因数。

样例说明:
例如,当 n = 15 时,其分解为 3 × 5,其中较大的质因数是 5。

解题思路:
由于题目限定 n 只能分解成两个质数的乘积,我们只需从最小的可能因子 2 开始枚举,找到第一个能整除 n 的质数 factor1,则另一个因子为 factor2 = n / factor1。随后比较两者大小,输出较大值即可。

代码实现:

#include <stdio.h>
#include <math.h>

int isPrime(int n) {
    if (n <= 1) return 0;
    if (n == 2) return 1;
    if (n % 2 == 0) return 0;
    for (int i = 3; i <= sqrt(n); i += 2) {
        if (n % i == 0) return 0;
    }
    return 1;
}

int main() {
    int n;
    scanf("%d", &n);
    int factor1 = 0, factor2 = 0;
    for (int i = 2; i <= n / 2; i++) {
        if (n % i == 0 && isPrime(i)) {
            factor1 = i;
            factor2 = n / i;
            break;
        }
    }
    if (factor1 > factor2) {
        printf("%d", factor1);
    } else {
        printf("%d", factor2);
    }
    return 0;
}
15

5

第三题:输出数位上的数

问题描述:
输入一个整数 n(n < 10^9),要求从低位到高位依次输出它的每一位数字,数字之间用一个空格分隔,行末不允许有多余空格。

输入形式:
一个整数 n。

输出形式:
按从个位开始的顺序输出每一位数字,各数字间以单个空格分隔。

解题思路一:
特判 n = 0 的情况,直接输出 0。
使用数组存储每一位数字:通过取模和整除操作逐位提取个位、十位等,并存入数组。由于提取顺序本身就是从低位到高位,因此可以直接顺序输出数组元素,注意控制末尾无多余空格。

代码实现一:

#include <stdio.h>
int main() {
    int n;
    scanf("%d", &n);
    if (n == 0) {
        printf("0\n");
        return 0;
    }
    int digits[10];
    int count = 0;
    while (n > 0) {
        digits[count] = n % 10;
        n /= 10;
        count++;
    }
    for (int i = 0; i < count; i++) {
        printf("%d", digits[i]);
        if (i != count - 1) {
            printf(" ");
        }
    }
    return 0;
}

解题思路二:
无需额外数组,直接在循环中处理输出格式。利用变量记录当前是第几位,首次输出不加前导空格,后续每位前添加一个空格,从而避免结尾多出空格的问题。

代码实现二:

#include <stdio.h>
int main() {
    int n, time = 0;
    scanf("%d", &n);
    while (n) {
        if (time == 0) {
            printf("%d", n % 10);
        } else {
            printf(" %d", n % 10);
        }
        n /= 10;
        time++;
    }
    return 0;
}
12345

5 4 3 2 1

while
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:吉林大学 下半场 林大学 include factor

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
扫码
拉您进交流群
GMT+8, 2026-1-31 19:40