#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int contains(int arr[], int len, int num);
int main()
{
int arr[10] = { 0 };
int len = sizeof(arr) / sizeof(int);
//设置随机数,随机数不能放在外面,不然就只生成一个随机数
srand(time(NULL));
int sum = 0;
for (int i = 0; i < len; i++)
{
int num = rand() % 10 + 1;
int flag = contains(arr, len, num);
if (flag == 0)
{
arr[i] = num;
}
else
{
i--;
}
//but如果flag=1的话,这个if就不会运行,本次的arr就没有被赋值,所以把i++放在if里面,
//只有前一个arr成功被赋值,才对后一个arr赋值,不过我感觉可以加一个else{i--}
//这样的话printf("%d\n", arr[i]);和sum += arr[i];要重新放到另一个循环里面
//一个循环尽量只进行一个功能
}
for (int i = 0; i < len; i++)
{
printf("%d\n", arr[i]);
sum += arr[i];
}
printf("%d\n", sum);
return 0;
}
int contains(int arr[], int len, int num)
{
for (int j = 0; j < len; j++)
{
if (num == arr[j])
{
return 1;
}
/*
else
{
return 0;
}
不能在这里加else,只有确定完num和数组中已有数字都不同时才返回1
当运行到return时,函数就结束了
*/
}
return 0;
}
#include<stdio.h>
void printArr(int arr[], int len);
int main()
{
int arr[5] = { 0 };
int len = sizeof(arr) / sizeof(int);
for (int i = 0; i < 5; i++)
{
scanf_s("%d", &arr[i]);
}
printArr(arr, len);
int i = 0;
int j = len - 1;
while (i < j)
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
}
printArr(arr, len);
return 0;
}
void printArr(int arr[], int len)
{
for (int i = 0; i < 5; i++)
{
printf("%d\n", arr[i]);
}
}