鱼C论坛

 找回密码
 立即注册
查看: 3439|回复: 12

[已解决]C语言编写程序

[复制链接]
发表于 2022-12-2 17:06:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1.任意输入20个正整数,找出其中的素数,并将这些素数按由小到大排序。要求:判断一个数是否为素数用函数实现;排序用函数实现。
最佳答案
2022-12-2 17:59:17
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int prime(int x) {
        if (x <= 1) return 0;
        for (int i = 2; i * i <= x; ++i) {
                if (x % i == 0)
                        return 0;
        }
        return 1;
}

void sort(int *a, int len) {
        for (int i = 1; i <= len; ++i) {
                for (int j = 1; j < i; ++j) {
                        if (a[i] < a[j]) {
                                int t = a[i];
                                a[i] = a[j];
                                a[j] = t;
                        }
                }
        }
}

int main() {
        int n = 20, x, a[21], tot = 0;
        for (int i = 1; i <= 20; ++i) {
                scanf("%d", &x);
                if (prime(x)) a[++tot] = x;
        }
        sort(a, tot);
        for (int i = 1; i <= tot; ++i)
                printf("%d ", a[i]);
}
 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-2 17:46:08 | 显示全部楼层
C不会...
C++到会
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-2 17:59:17 | 显示全部楼层    本楼为最佳答案   
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int prime(int x) {
        if (x <= 1) return 0;
        for (int i = 2; i * i <= x; ++i) {
                if (x % i == 0)
                        return 0;
        }
        return 1;
}

void sort(int *a, int len) {
        for (int i = 1; i <= len; ++i) {
                for (int j = 1; j < i; ++j) {
                        if (a[i] < a[j]) {
                                int t = a[i];
                                a[i] = a[j];
                                a[j] = t;
                        }
                }
        }
}

int main() {
        int n = 20, x, a[21], tot = 0;
        for (int i = 1; i <= 20; ++i) {
                scanf("%d", &x);
                if (prime(x)) a[++tot] = x;
        }
        sort(a, tot);
        for (int i = 1; i <= tot; ++i)
                printf("%d ", a[i]);
}
 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-2 18:00:29 | 显示全部楼层

很相似的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-2 19:39:20 | 显示全部楼层

C++版 :
#include <iostream>
using namespace std;

bool isSuShu(int a){
        if (a == 2 || a == 3 || a == 5 || a == 7){
                return true;
        }
        else{
                if (a % 2 == 0 || a % 3 == 0 || a % 5 == 0 || a % 7 == 0 || a == 1){
                        return false;
                }
                else{
                        return true;
                }
        }
}

void sort(int *a, int len){
        for (int i = 0; i < len - 1; i++){
                for (int j = 0; j < len - i - 1; j++){
                        if (a[j] > a[j + 1]){
                                int temp = a[j];
                                a[j] = a[j + 1];
                                a[j + 1] = temp;
                        }
                }
        }
}

int main(){
        int a[20], xiabiao = 0, x;
        
        for (int i = 0; i < 20; i++){
                cin >> x;
                if (isSuShu(x)){
                        a[xiabiao] = x;
                        xiabiao++;
                }
        }
        sort(a, xiabiao);
        for (int i = 0; i < xiabiao; i++){
                cout << a[i] << ' ';
        }
        cout << endl;
        
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-2 21:24:59 | 显示全部楼层

嗨嗨嗨,我来Hack你:
121 144 169 0 156 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
你的程序输出了121和144,但是他们两个都是合数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-3 07:38:26 | 显示全部楼层
zhangjinxuan 发表于 2022-12-2 21:24
嗨嗨嗨,我来Hack你:

你的程序输出了121和144,但是他们两个都是合数

你输入了什么啊??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-3 07:42:54 | 显示全部楼层
zhangjinxuan 发表于 2022-12-2 21:24
嗨嗨嗨,我来Hack你:

你的程序输出了121和144,但是他们两个都是合数

要回车呀!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-3 09:33:02 | 显示全部楼层
元豪 发表于 2022-12-3 07:38
你输入了什么啊??


输入:
121 144 169 0 156 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
输出:
121 144
正确输出:


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-3 09:35:19 | 显示全部楼层

Hack的意思:在codeforces比赛中,当某道题Pretest Passed之后,可以选择锁定(Lock)该题代码,之后就可以查看同一个Room内其他选手该题的代码(当然了,这也是已经通过pretest的),并试图找出其中的漏洞,自己出一个数据(可以手打,也可以提交数据生成器)让这个代码不能通过,这就是Hack,有时也称Challenge.一次成功的Hack可以得到100分,而如果没有成功,将会被扣50分,分别被称为(un)successful hacking attempt.

专业名词应该要了解一下滴
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-3 10:10:14 | 显示全部楼层
zhangjinxuan 发表于 2022-12-3 09:35
专业名词应该要了解一下滴

我是说:
应该这样:
121 
144 
169 
0 
156 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-3 10:24:13 | 显示全部楼层
新人观摩下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-3 10:38:41 | 显示全部楼层
本帖最后由 zhangjinxuan 于 2022-12-3 10:41 编辑
元豪 发表于 2022-12-3 10:10
我是说:
应该这样:


可以不用啊,scanf和cin遇到空格就停止读入,你Python玩的有点多吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 13:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表