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
给啊哈C恰饭(确信){:10_256:} 老八秘制 发表于 2020-5-13 12:05
给啊哈C恰饭(确信)
那么下期去洛谷{:10_256:} 本帖最后由 xiaosi4081 于 2020-5-13 16:19 编辑
有人吗?
这个帖子要沉底了 @永恒的蓝色梦想@zltzlt @Hello. @WangJS 老八秘制 发表于 2020-5-13 12:05
给啊哈C恰饭(确信)
我的第一本编程书就是 啊哈C{:10_257:} liuzhengyuan 发表于 2020-5-13 12:29
我的第一本编程书就是 啊哈C
{:10_270:} 那么下期去别的网站抽 我才刚学c liuzhengyuan 发表于 2020-5-13 12:29
我的第一本编程书就是 啊哈C
+1 有人吗 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;
} xiaosi4081 发表于 2020-5-13 14:49
有人吗
你是来求解答还是来出题的呢? 4goodworld 发表于 2020-5-14 10:11
你是来求解答还是来出题的呢?
求解答、来加入都可以 标记,回头上机给出不要注释的代码 有些看不懂。你是要同学输入一个序号,你就给加进去,程序自动识别,是一样的就不加。最后排序输出。还是不管输入多少个序号都给加进去,然后把一样的删除,再排序输出? 405794672 发表于 2020-5-15 13:28
有些看不懂。你是要同学输入一个序号,你就给加进去,程序自动识别,是一样的就不加。最后排序输出。还是不 ...
上面输入一个数,表示有多少个ISBN号,下面输入所有ISBN号,然后把一样的删除,再排序输出 liuzhengyuan 发表于 2020-5-13 12:29
我的第一本编程书就是 啊哈C
{:10_257:}{:10_256:} 有几点疑问,但是我刚学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));
} 妈的,想了好半天,这下不会还有问吧?#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]