新人自学C语言
第一次发帖。大牛勿喷。C primer plus 第12章12.9.6练习题。
编写一个程序,生成1000个1~10范围内的随机数。不用保存或打印这些数字,仅打印每个数出现的次数。在度娘查了半天没答案。自行摸索了很久写出来了。分享给正在学C语言的同学们。大神勿喷!
//main.c文件 #include#include #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#include #include"rand_head.h" void row_rand(int *arr_rand,int size,unsigned int let,unsigned int max) { for(int i =0;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 此乃函数文件.
#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语言的同学有所帮助.另外没养成注释的习惯.抱歉!



