仅供课外学习使用,任何个人与机构不得利用此文章进行任何形式的作弊。
实验目的:
- 能够进行一维数组的定义和初始化,以及数组元素的输入和输出;
- 熟悉数组处理的常用算法的设计方法以及对数组进行插入和删除等;
- 具备简单数据查找能力。
实验内容:
编写程序,实现如下任务:从键盘输入若干个整数,输入整数的个数小于100,其值在-100~100范围内,用-1作为输入结束的标志。统计每个整数的个数并从大到小排序,输出排序后的结果。
提示:定义两个数组,一个用来存放输入整数,另一个用来存放统计信息。
实验要求:
- 须独立完成算法设计及代码编写,严禁抄袭。
参考书目:
Stephen Prata著, 姜佑 译. C Primer Plus (第6版)中文版. 北京:人民邮电出版社,2016.
(作者注:实验二与实验一同时发布,出于实际情况考虑,此次老师老师亦未给出输入与输出样例)
代码实现:
实例一:每天都想睡十小时:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <windows.h>
int main()
{
int a[101], b[205][2] = {0};//a存数据b排序
int i, j, t;
for(i = 0; i < 101; i++)
{
scanf("%d", &a[i]);//输入
if(a[i] == -1)
{
a[i] = 0;
i--;
break;
}
if(a[i] >= 0) b[a[i]][0]++;//桶排
else b[-a[i] + 100][0]++;//Key Step: 从b[101]开始存储负数个数
}
for(i = 0; i <= 100; i++)
b[i][1] = i;
for(i = 101; i <=200; i++)
b[i][1] = 100 - i;
for(i = 0; i < 201; i++)//冒泡排序
for(j = 0; j < 200 - i; j++)
{
if(b[j][0] < b[j + 1][0])
{
t = b[j][0];
b[j][0] = b[j + 1][0];
b[j + 1][0] = t;
t = b[j][1];
b[j][1] = b[j + 1][1];
b[j + 1][1] = t;
}
}
for(i = 0; i < 202; i++)
if(b[i][0] != 0)
printf("The num of %d is %d\n", b[i][1], b[i][0]);//输出
return 0;
}
实例二:>C=C<:
#include <stdio.h>
void sort(int a[],int t);
int main()
{
const int num = 100;
int a[num];
int b[num];
int t = 0;
int i,k;
for(i=0;i<num;i++)
{
a[i] = b[i] = 0;
} //初始化
for(t=0;t<num;t++)
{
scanf("%d",&a[t]); //输入
if(a[t]!=-1)b[a[t]]++; //记录数字个数
else break;
}
sort(a,t-1); //调用函数
for(i=0;i<num;i++)
{
if(b[i]!=0)
printf("%d一共有%d个\n",i,b[i]);
}
for(i=0;i<t-1;i++)
{
printf("%d ",a[i]);
}
return 0;
}
void sort(int a[],int t) //冒泡排序
{
int m,n;
for(m=0;m<t;m++)
{
for(n=0;n<t-1-m;n++)
{
if(a[n]<a[n+1])
{
int temp = a[n+1];
a[n+1] = a[n];
a[n] = temp;
}
}
}
}
实例三:又欠又欠
#include <stdio.h>
//定义全局变量数组a,b
int a[101], b[101], i=0;
int main()
{
//用do while循环进行数据输入
//用数组a下标进行次数统计,数组b接收输入的值
do{
scanf("%d", &b[i]);
a[b[i]]++;
i++;
} while(b[i - 1] != -1);
printf("结果为:\n");
//让次数从上到下遍历,找到对应次数的数组下标
for(int i = 100; i > 0; i--)
{
for(int j = 0; j <= 100; j++)
{
if(a[j] == i)
printf("%d出现了%d次\n", j, i);
}
}
return 0;
}