鱼C论坛

 找回密码
 立即注册
查看: 2165|回复: 18

[已解决]C语言小练习-第三期【招人】

[复制链接]
发表于 2020-5-13 12:02:46 | 显示全部楼层 |阅读模式

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

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

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

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


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

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

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

要求:

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


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



今天的题目:
小哼的学校要建立一个图书角,老师派小哼去找一些同学做调查,看看同学们都喜欢读哪些书。
小哼让每个同学写出一个自己最想读的书的ISBN号。
当然有一些好书会有很多同学都喜欢,这样就会收集到很多重复的ISBN号。
小哼需要去掉其中重复的ISBN号,即每个ISBN号只保留一个,也就说同样的书只买一本(学校真是够抠门的)。
然后再把这些ISBN号从小到大排序,小哼将按照排序好的ISBN号去书店去买书。请你协助小哼完成“去重”与“排序”的工作。

                               
登录/注册后可看大图

输入格式:
  1. 输入有2行,第1行为一个正整数,表示有n个同学参与调查(n<=100)。
  2. 第2行有n个用空格隔开的正整数,为每本图书的ISBN号(假设图书的ISBN号在1~1000之间)。
复制代码

输出格式:
  1. 输出也是2行,第1行为一个正整数k,表示需要买多少本书。
  2. 第2行为k个用空格隔开的正整数,为从小到大已排好序的需要购买的图书ISBN号。
复制代码


例1:
输入:
  1. 10
  2. 20 40 32 67 40 20 89 300 400 15
复制代码

输出:
  1. 8
  2. 15 20 32 40 67 89 300 400
复制代码

最佳答案
2020-5-13 17:09:48
  1. #include<stdio.h>

  2. int main()
  3. {
  4.         int a[1000], n, i, j, t;
  5.         scanf("%d", &n);
  6.         for(i=0; i<n; i++)
  7.         {
  8.                 scanf("%d", &a[i]);
  9.         }
  10.        
  11.         for (i=0; i<n-1; ++i)  //比较n-1轮
  12.     {
  13.         for (j=0; j<n-1-i; ++j)  //每轮比较n-1-i次,
  14.         {
  15.             if (a[j] < a[j+1])
  16.             {
  17.                 t = a[j];
  18.                 a[j] = a[j+1];
  19.                 a[j+1] = t;
  20.             }
  21.         }
  22.     }
  23.         int temp=-1;
  24.         for(i=n-1; i>=0; i--)
  25.         {
  26.                 if(temp != a[i])
  27.                         printf("%d ", a[i]);
  28.                         temp = a[i];
  29.         }
  30.        
  31.         return 0;
  32. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-13 12:05:54 | 显示全部楼层
给啊哈C恰饭(确信)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-13 12:07:45 | 显示全部楼层
老八秘制 发表于 2020-5-13 12:05
给啊哈C恰饭(确信)

那么下期去洛谷
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-13 12:28:11 | 显示全部楼层
本帖最后由 xiaosi4081 于 2020-5-13 16:19 编辑

有人吗?
这个帖子要沉底了 @永恒的蓝色梦想  @zltzlt @Hello. @WangJS
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-13 12:29:06 | 显示全部楼层
老八秘制 发表于 2020-5-13 12:05
给啊哈C恰饭(确信)

我的第一本编程书就是 啊哈C
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-13 12:34:22 | 显示全部楼层
liuzhengyuan 发表于 2020-5-13 12:29
我的第一本编程书就是 啊哈C

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-13 12:51:28 | 显示全部楼层
那么下期去别的网站抽
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-13 13:25:38 | 显示全部楼层
我才刚学c
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-13 13:46:06 | 显示全部楼层
liuzhengyuan 发表于 2020-5-13 12:29
我的第一本编程书就是 啊哈C

+1
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-13 14:49:41 | 显示全部楼层
有人吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-13 17:09:48 | 显示全部楼层    本楼为最佳答案   
  1. #include<stdio.h>

  2. int main()
  3. {
  4.         int a[1000], n, i, j, t;
  5.         scanf("%d", &n);
  6.         for(i=0; i<n; i++)
  7.         {
  8.                 scanf("%d", &a[i]);
  9.         }
  10.        
  11.         for (i=0; i<n-1; ++i)  //比较n-1轮
  12.     {
  13.         for (j=0; j<n-1-i; ++j)  //每轮比较n-1-i次,
  14.         {
  15.             if (a[j] < a[j+1])
  16.             {
  17.                 t = a[j];
  18.                 a[j] = a[j+1];
  19.                 a[j+1] = t;
  20.             }
  21.         }
  22.     }
  23.         int temp=-1;
  24.         for(i=n-1; i>=0; i--)
  25.         {
  26.                 if(temp != a[i])
  27.                         printf("%d ", a[i]);
  28.                         temp = a[i];
  29.         }
  30.        
  31.         return 0;
  32. }
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
xiaosi4081 + 1 + 1 鱼C有你更精彩^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-14 10:11:06 | 显示全部楼层

你是来求解答还是来出题的呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-14 10:13:23 | 显示全部楼层
4goodworld 发表于 2020-5-14 10:11
你是来求解答还是来出题的呢?

求解答、来加入都可以
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-14 21:57:08 From FishC Mobile | 显示全部楼层
标记,回头上机给出不要注释的代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-15 13:28:57 | 显示全部楼层
有些看不懂。你是要同学输入一个序号,你就给加进去,程序自动识别,是一样的就不加。最后排序输出。还是不管输入多少个序号都给加进去,然后把一样的删除,再排序输出?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-18 08:17:59 From FishC Mobile | 显示全部楼层
405794672 发表于 2020-5-15 13:28
有些看不懂。你是要同学输入一个序号,你就给加进去,程序自动识别,是一样的就不加。最后排序输出。还是不 ...


上面输入一个数,表示有多少个ISBN号,下面输入所有ISBN号,然后把一样的删除,再排序输出
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-18 08:20:59 From FishC Mobile | 显示全部楼层
liuzhengyuan 发表于 2020-5-13 12:29
我的第一本编程书就是 啊哈C

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 16:39:19 | 显示全部楼层
有几点疑问,但是我刚学C,根本找不出来有什么问题。希望大家帮忙找找
  1. #include<stdio.h>
  2. int TOTAL;//换成全局变量,照样是输入几本就几本,去重完全没有起作用
  3. void total(int book[], int n)//统计书本数量并去重
  4. {
  5.         int j,m;
  6.         for (j = 0; j < n-1; j++)
  7.         {
  8.                 if (book[j] == book[j + 1])
  9.                 {
  10.                         for (m = j; m < n - j; m++)
  11.                         {
  12.                                 if (m < n - 2)
  13.                                 {
  14.                                         book[m + 1] = book[m + 2];
  15.                                 }
  16.                                 else
  17.                                 {
  18.                                         book[m + 1] = NULL;
  19.                                 }
  20.                         }
  21.                         TOTAL--;
  22.                         //i--;
  23.                 }
  24.         }
  25.         printf("总共需要买%d本书\n", TOTAL);
  26. }
  27. void sort(int book[],int n)//对里面内容排序并输出
  28. {
  29.         int i,j;
  30.         for (i = 0; i < n - 1; i++)
  31.         {
  32.                 for (j = 0; j < n - 1 - i; j++)
  33.                 {
  34.                         if (book[j] > book[j + 1])
  35.                         {
  36.                                 book[j] ^= book[j+1];
  37.                                 book[j+1] ^= book[j];
  38.                                 book[j] ^= book[j+1];
  39.                         }
  40.                 }
  41.         }
  42.         for (i = 1; i <= (n / 10); i++)
  43.         {
  44.                 for (j = (i - 1) * 10 + 1; j <= i * 10; j++)
  45.                 {
  46.                         printf("%d\t", book[j]);
  47.                 }
  48.                 printf("\n");
  49.         }
  50. }

  51. void main()
  52. {
  53.         int i,num[100];
  54.         printf("请输入想买书的同学数量(不超过100人):\n");
  55.         scanf("%d\n",&TOTAL);
  56.         //fflush(stdin);加此代码则不执行sort函数
  57.         for (i = 0; i < TOTAL; i++)//总是先输入,再连续出现两行printf内容,然后才正常。始终未查出什么原因
  58.         {
  59.                 printf("请输入第%d个同学想买的书的IBSN号:\n",i+1);
  60.                 scanf("%d",&num[i]);
  61.         }
  62.         total(num, TOTAL);
  63.         sort(num, TOTAL);
  64.         //sort(num, total(num, n));
  65. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-20 17:18:08 | 显示全部楼层
妈的,想了好半天,这下不会还有问吧?
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. int TOTAL;
  4. void total(int book[])//统计书本数量并去重
  5. {
  6.         int j,m,i;
  7.        
  8.         for (j = 0; j < TOTAL-1; j++)
  9.         {
  10.                 for (m = j+1; m < TOTAL; )
  11.                 {                       
  12.                         if(book[j] == book[m])
  13.                         {
  14.                                 for (i = m; i < TOTAL; i++)
  15.                                 {
  16.                                         if (i < TOTAL - 1)
  17.                                         {
  18.                                                 book[i] = book[i + 1];
  19.                                         }
  20.                                         else
  21.                                         {
  22.                                                 book[i] = 0;
  23.                                         }
  24.                                 }

  25.                                 TOTAL--;
  26.                         }
  27.                         else
  28.                         {
  29.                                 m++;
  30.                         }
  31.                 }
  32.         }       
  33.         printf("总共需要买%d本书\n", TOTAL);       
  34. }
  35. void sort(int book[])//对里面内容排序并输出
  36. {
  37.         int i,j;
  38.         for (i = 0; i <TOTAL - 1; i++)
  39.         {
  40.                 for (j = 0; j < TOTAL - 1 - i; j++)
  41.                 {
  42.                         if (book[j] > book[j + 1])
  43.                         {
  44.                                 book[j] ^= book[j+1];
  45.                                 book[j+1] ^= book[j];
  46.                                 book[j] ^= book[j+1];
  47.                         }
  48.                 }
  49.         }
  50.         for (i = 0; i < (TOTAL / 10+1); i++)
  51.         {
  52.                 for (j = i  * 10 ; j < (i +1)* 10&&j<TOTAL; j++)
  53.                 {
  54.                         printf("%d\t", book[j]);
  55.                 }
  56.                 printf("\n");
  57.         }
  58. }

  59. void main()
  60. {
  61.         int i, num[100];
  62.         printf("请输入想买书的同学数量(不超过100人):\n");
  63.         scanf("%d",&TOTAL);//百度知道解释将\n去掉。果然不出现顺序颠倒的问题了。
  64.        
  65.         for (i = 0; i < TOTAL; i++)
  66.         {
  67.                 printf("请输入第%d个同学想买的书的IBSN号:\n",i+1);
  68.                 scanf("%d",&num[i]);
  69.         }
  70.         total(num);
  71.         sort(num);       
  72.         system("pause");
  73. }
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
xiaosi4081 + 1 + 1 good

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-8 02:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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