新人自学C语言
第一次发帖。大牛勿喷。C primer plus 第12章12.9.6练习题。
编写一个程序,生成1000个1~10范围内的随机数。不用保存或打印这些数字,仅打印每个数出现的次数。在度娘查了半天没答案。自行摸索了很久写出来了。分享给正在学C语言的同学们。大神勿喷!
//main.c文件
#include <stdio.h>
#include <stdlib.h>
#include "rand_head.h"
int main()
{
unsigned int let = 0,max = 0;
int count;
int *arr_rand;
puts("请输入要获得的随机数数量");
scanf_s("%d",&count);
while(getchar()!='\n');
while(count<=0 && count!= -1)
{
puts("输入错误,请输入(请输入不小于0的正整数)输入-1退出");
scanf_s("%d",&count);
while(getchar()!='\n');
}
if(count != -1)
{
puts("请输入要获得随机数的最小值");
scanf_s("%ud",&let);
while(getchar()!='\n');
puts("请输入要获得随机数的最大值");
scanf_s("%ud",&max);
while(getchar()!='\n');
while(let<=0 || max<=let )
{
puts("输入错误");
puts("请输入要获得随机数的最小值");
scanf_s("%ud",&let);
while(getchar()!='\n');
puts("请输入要获得随机数的最大值");
scanf_s("%ud",&max);
while(getchar()!='\n');
}
arr_rand = (int*)calloc(count,sizeof(int));
row_rand(arr_rand,count,let,max);
print_arr(arr_rand,count); //未排序
arrange(arr_rand,count);
print_arr(arr_rand,count);
num_count(arr_rand,count,max);
free(arr_rand);
}else
{
puts("结束!");
}
return 0;
}
这个是主函数.
//s_rand.c文件代码.
#include<stdio.h>
#include<stdlib.h>
#include"rand_head.h"
void row_rand(int *arr_rand,int size,unsigned int let,unsigned int max)
{
for(int i =0;i<size;i++)
{
*(arr_rand+i) = rand()%max+let;
}
}
void print_arr(int *arr_rand,int size) //打印数组
{
for(int i = 0;i<size;i++)
printf("%d ",*(arr_rand+i));
putchar('\n');
}
int max_arr(int *arr_rand,int size) //计算最大的元素
{
int maxid = 0;
for(int i=1;i<size;i++)
{
if(*(arr_rand+i) > *(arr_rand+maxid))
maxid = i;
}
return maxid;
}
void arrange(int *arr_rand,int size) //数组排序
{
int temp =0;
int maxid =0;
for(int i=size-1;i>0;i--)
{
maxid = max_arr(arr_rand,i+1);
if(*(arr_rand+i) <*(arr_rand+maxid))
{
temp=*(arr_rand+i);
*(arr_rand+i) = *(arr_rand+maxid);
*(arr_rand+maxid) = temp;
}
}
}
void num_count(int *arr_rand,int size,int sizes) //元素出现计次.
{
int count[sizes];
for(int i=0;i<10;i++)
{
count[i] = 0;
for(int j=0;j<size;j++)
{
if(*(arr_rand+j) ==i+1)
count[i] ++;
}
}
puts("下边是元素计次:");
for(int c = 0;c<sizes;c++)
{
printf("%d 出现了: %d 次\n",c+1,count[c]);
}
}
此乃函数文件.
#ifndef RAND_HEAD_H
#define RAND_HEAD_H
extern void row_rand(int* arr_rand, int size, unsigned int let, unsigned int max);
extern void print_arr(int* arr_rand, int size);
extern void arrange(int* arr_rand, int size);
extern void num_count(int* arr_rand, int size, int sizes);
#endif // RAND_HEAD_H
函数头.
有不足的地方欢迎指正.希望对学C语言的同学有所帮助.另外没养成注释的习惯.抱歉!