xiaosi4081 发表于 2020-5-13 12:02:46

C语言小练习-第三期【招人】

本帖最后由 xiaosi4081 于 2020-5-13 13:21 编辑

欢迎来到第三期的C语言小练习

在开始之前,先要说一件事:

我们学生党要开学了
帖子要没人更新了

所以……
也要向外招人了!

要求:

技术水平:中等
题目要求:可以有些提高,但不能太难
题目数量:能保证周更就行

如果有人想加入,又符合要求,请在评论区留言


今天的题目:
小哼的学校要建立一个图书角,老师派小哼去找一些同学做调查,看看同学们都喜欢读哪些书。
小哼让每个同学写出一个自己最想读的书的ISBN号。
当然有一些好书会有很多同学都喜欢,这样就会收集到很多重复的ISBN号。
小哼需要去掉其中重复的ISBN号,即每个ISBN号只保留一个,也就说同样的书只买一本(学校真是够抠门的)。
然后再把这些ISBN号从小到大排序,小哼将按照排序好的ISBN号去书店去买书。请你协助小哼完成“去重”与“排序”的工作。
https://bbs.codeaha.com/data/attachment/forum/201312/25/164110c0g1k848kk6z1r8g.png
输入格式:
输入有2行,第1行为一个正整数,表示有n个同学参与调查(n<=100)。
第2行有n个用空格隔开的正整数,为每本图书的ISBN号(假设图书的ISBN号在1~1000之间)。
输出格式:
输出也是2行,第1行为一个正整数k,表示需要买多少本书。
第2行为k个用空格隔开的正整数,为从小到大已排好序的需要购买的图书ISBN号。

例1:
输入:
10
20 40 32 67 40 20 89 300 400 15
输出:
8
15 20 32 40 67 89 300 400

老八秘制 发表于 2020-5-13 12:05:54

给啊哈C恰饭(确信){:10_256:}

xiaosi4081 发表于 2020-5-13 12:07:45

老八秘制 发表于 2020-5-13 12:05
给啊哈C恰饭(确信)

那么下期去洛谷{:10_256:}

xiaosi4081 发表于 2020-5-13 12:28:11

本帖最后由 xiaosi4081 于 2020-5-13 16:19 编辑

有人吗?
这个帖子要沉底了 @永恒的蓝色梦想@zltzlt @Hello. @WangJS

liuzhengyuan 发表于 2020-5-13 12:29:06

老八秘制 发表于 2020-5-13 12:05
给啊哈C恰饭(确信)

我的第一本编程书就是 啊哈C{:10_257:}

老八秘制 发表于 2020-5-13 12:34:22

liuzhengyuan 发表于 2020-5-13 12:29
我的第一本编程书就是 啊哈C

{:10_270:}

xiaosi4081 发表于 2020-5-13 12:51:28

那么下期去别的网站抽

MIke_python小小 发表于 2020-5-13 13:25:38

我才刚学c

优秀的Aurora 发表于 2020-5-13 13:46:06

liuzhengyuan 发表于 2020-5-13 12:29
我的第一本编程书就是 啊哈C

+1

xiaosi4081 发表于 2020-5-13 14:49:41

有人吗

liuzhengyuan 发表于 2020-5-13 17:09:48

xiaosi4081 发表于 2020-5-13 14:49
有人吗

#include<stdio.h>

int main()
{
        int a, n, i, j, t;
        scanf("%d", &n);
        for(i=0; i<n; i++)
        {
                scanf("%d", &a);
        }
       
        for (i=0; i<n-1; ++i)//比较n-1轮
    {
      for (j=0; j<n-1-i; ++j)//每轮比较n-1-i次,
      {
            if (a < a)
            {
                t = a;
                a = a;
                a = t;
            }
      }
    }
        int temp=-1;
        for(i=n-1; i>=0; i--)
        {
                if(temp != a)
                        printf("%d ", a);
                        temp = a;
        }
       
        return 0;
}

4goodworld 发表于 2020-5-14 10:11:06

xiaosi4081 发表于 2020-5-13 14:49
有人吗

你是来求解答还是来出题的呢?

xiaosi4081 发表于 2020-5-14 10:13:23

4goodworld 发表于 2020-5-14 10:11
你是来求解答还是来出题的呢?

求解答、来加入都可以

howzyao 发表于 2020-5-14 21:57:08

标记,回头上机给出不要注释的代码

405794672 发表于 2020-5-15 13:28:57

有些看不懂。你是要同学输入一个序号,你就给加进去,程序自动识别,是一样的就不加。最后排序输出。还是不管输入多少个序号都给加进去,然后把一样的删除,再排序输出?

xiaosi4081 发表于 2020-5-18 08:17:59

405794672 发表于 2020-5-15 13:28
有些看不懂。你是要同学输入一个序号,你就给加进去,程序自动识别,是一样的就不加。最后排序输出。还是不 ...

上面输入一个数,表示有多少个ISBN号,下面输入所有ISBN号,然后把一样的删除,再排序输出

xiaosi4081 发表于 2020-5-18 08:20:59

liuzhengyuan 发表于 2020-5-13 12:29
我的第一本编程书就是 啊哈C

{:10_257:}{:10_256:}

405794672 发表于 2020-5-18 16:39:19

有几点疑问,但是我刚学C,根本找不出来有什么问题。希望大家帮忙找找#include<stdio.h>
int TOTAL;//换成全局变量,照样是输入几本就几本,去重完全没有起作用
void total(int book[], int n)//统计书本数量并去重
{
        int j,m;
        for (j = 0; j < n-1; j++)
        {
                if (book == book)
                {
                        for (m = j; m < n - j; m++)
                        {
                                if (m < n - 2)
                                {
                                        book = book;
                                }
                                else
                                {
                                        book = NULL;
                                }
                        }
                        TOTAL--;
                        //i--;
                }
        }
        printf("总共需要买%d本书\n", TOTAL);
}
void sort(int book[],int n)//对里面内容排序并输出
{
        int i,j;
        for (i = 0; i < n - 1; i++)
        {
                for (j = 0; j < n - 1 - i; j++)
                {
                        if (book > book)
                        {
                                book ^= book;
                                book ^= book;
                                book ^= book;
                        }
                }
        }
        for (i = 1; i <= (n / 10); i++)
        {
                for (j = (i - 1) * 10 + 1; j <= i * 10; j++)
                {
                        printf("%d\t", book);
                }
                printf("\n");
        }
}

void main()
{
        int i,num;
        printf("请输入想买书的同学数量(不超过100人):\n");
        scanf("%d\n",&TOTAL);
        //fflush(stdin);加此代码则不执行sort函数
        for (i = 0; i < TOTAL; i++)//总是先输入,再连续出现两行printf内容,然后才正常。始终未查出什么原因
        {
                printf("请输入第%d个同学想买的书的IBSN号:\n",i+1);
                scanf("%d",&num);
        }
        total(num, TOTAL);
        sort(num, TOTAL);
        //sort(num, total(num, n));
}

405794672 发表于 2020-5-20 17:18:08

妈的,想了好半天,这下不会还有问吧?#include<stdio.h>
#include<stdlib.h>
int TOTAL;
void total(int book[])//统计书本数量并去重
{
        int j,m,i;
       
        for (j = 0; j < TOTAL-1; j++)
        {
                for (m = j+1; m < TOTAL; )
                {                       
                        if(book == book)
                        {
                                for (i = m; i < TOTAL; i++)
                                {
                                        if (i < TOTAL - 1)
                                        {
                                                book = book;
                                        }
                                        else
                                        {
                                                book = 0;
                                        }
                                }

                                TOTAL--;
                        }
                        else
                        {
                                m++;
                        }
                }
        }       
        printf("总共需要买%d本书\n", TOTAL);       
}
void sort(int book[])//对里面内容排序并输出
{
        int i,j;
        for (i = 0; i <TOTAL - 1; i++)
        {
                for (j = 0; j < TOTAL - 1 - i; j++)
                {
                        if (book > book)
                        {
                                book ^= book;
                                book ^= book;
                                book ^= book;
                        }
                }
        }
        for (i = 0; i < (TOTAL / 10+1); i++)
        {
                for (j = i* 10 ; j < (i +1)* 10&&j<TOTAL; j++)
                {
                        printf("%d\t", book);
                }
                printf("\n");
        }
}

void main()
{
        int i, num;
        printf("请输入想买书的同学数量(不超过100人):\n");
        scanf("%d",&TOTAL);//百度知道解释将\n去掉。果然不出现顺序颠倒的问题了。
       
        for (i = 0; i < TOTAL; i++)
        {
                printf("请输入第%d个同学想买的书的IBSN号:\n",i+1);
                scanf("%d",&num);
        }
        total(num);
        sort(num);       
        system("pause");
}
页: [1]
查看完整版本: C语言小练习-第三期【招人】