随机产生n个[-10,10]范围内的无序随机数,C语言,运用数组
用rand函数啊
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int n,a[1000];
scanf("%d",&n);
srand(time(NULL));
for(int i=0;i<n;i++)
a[i] = rand()%21-10;
for(int i=0;i<n;I++)
printf("%d ",a[i]);
}
//例题10-24 有若干个学生的成绩(每个学生有4门课),要求在用户输入学生序号以后,能输出该学生的全部成绩。用指针函数实现。
#include<stdio.h>
int main()
{
float score[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};
float *search(float (*pointer)[4],int n); //函数声明
float *p;
int i,m;
printf("ente the number of student:");
scanf("%d",&m); //m是要查找的学生序号
printf("The scores of No.%d are:\n",m);
p=search(score,m);
for(i=0;i<4;i++)
printf("%5.2f\t",*(p+i));// *(p+i):该学生第i门课程的成绩
printf("\n");
return 0;
}
float *search(float (*pointer)[4],int n)
//pointer是指向包含4个元素的一维数组的指针变量
//pointer+1 指向socre数组序号为1的行
// *(pointer+1) 指向1行0列元素。加上*后,指针 行控制-->列控制
{
float *pt;
pt=*(pointer+n);
return pt;
}
输入:1
结果如图:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int n;
scanf("%d", &n); // 输入n
if (n > 20) { // 判断n是否过大
printf("n should be less than or equal to 20.");
return 0;
}
srand(time(0)); // 设置种子,确保每次运行结果不同
int arr[n]; // 定义长度为n的整型数组
for (int i = 0; i < n; i++) { // 循环n次填充数组
int rand_int;
do {
rand_int = rand() % 21 - 10; // 生成[-10,10]之间的随机整数
} while (rand_int_is_duplicate(arr, i, rand_int)); // 检查该随机整数是否已存在于数组中
arr[i] = rand_int; // 将该随机整数填入数组中
}
printf("The random array is:\n"); // 输出数组
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
int rand_int_is_duplicate(int arr[], int len, int rand_int) { // 检查该随机整数是否已存在于数组中
for (int i = 0; i < len; i++) {
if (arr[i] == rand_int) {
return 1; // 存在相同的整数,返回1表示重复
}
}
return 0; // 没有重复,返回0
}