lazy-xy 发表于 2022-12-2 17:06:29

C语言编写程序

1.任意输入20个正整数,找出其中的素数,并将这些素数按由小到大排序。要求:判断一个数是否为素数用函数实现;排序用函数实现。

元豪 发表于 2022-12-2 17:46:08

C不会...
C++到会

zhangjinxuan 发表于 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 < a) {
                                int t = a;
                                a = a;
                                a = t;
                        }
                }
        }
}

int main() {
        int n = 20, x, a, 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);
}

zhangjinxuan 发表于 2022-12-2 18:00:29

元豪 发表于 2022-12-2 17:46
C不会...
C++到会

很相似的

元豪 发表于 2022-12-2 19:39:20

zhangjinxuan 发表于 2022-12-2 18:00
很相似的

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 > a){
                                int temp = a;
                                a = a;
                                a = temp;
                        }
                }
        }
}

int main(){
        int a, xiabiao = 0, x;
       
        for (int i = 0; i < 20; i++){
                cin >> x;
                if (isSuShu(x)){
                        a = x;
                        xiabiao++;
                }
        }
        sort(a, xiabiao);
        for (int i = 0; i < xiabiao; i++){
                cout << a << ' ';
        }
        cout << endl;
       
        return 0;
}

zhangjinxuan 发表于 2022-12-2 21:24:59

元豪 发表于 2022-12-2 19:39
C++版 :

嗨嗨嗨,我来Hack你:
121 144 169 0 156 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
你的程序输出了121和144,但是他们两个都是合数

元豪 发表于 2022-12-3 07:38:26

zhangjinxuan 发表于 2022-12-2 21:24
嗨嗨嗨,我来Hack你:

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

你输入了什么啊??

元豪 发表于 2022-12-3 07:42:54

zhangjinxuan 发表于 2022-12-2 21:24
嗨嗨嗨,我来Hack你:

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

要回车呀!

zhangjinxuan 发表于 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
正确输出:



zhangjinxuan 发表于 2022-12-3 09:35:19

元豪 发表于 2022-12-3 07:42
要回车呀!

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

元豪 发表于 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

Chinese-淼 发表于 2022-12-3 10:24:13

新人观摩下

zhangjinxuan 发表于 2022-12-3 10:38:41

本帖最后由 zhangjinxuan 于 2022-12-3 10:41 编辑

元豪 发表于 2022-12-3 10:10
我是说:
应该这样:

可以不用啊,scanf和cin遇到空格就停止读入,你Python玩的有点多吧{:10_282:}
页: [1]
查看完整版本: C语言编写程序