C语言程序设计的问题

有一长度为10的整型数组,数组中的元素通过随机方法生成,数组元素的大小在0-100之间,同时找出数组中值最大和最小的元素,并输出

min初值101,max初值0,循环遍历数组,找到最大值和最小值,示例代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    int arr[10];

    // 用当前时间作为随机数种子
    srand(time(NULL));

    // 生成随机数组
    for (int i = 0; i < 10; i++) {
        arr[i] = rand() % 101; // 生成0-100之间的随机数
    }
    printf("生成的随机数组为: ");
    for (int i = 0; i < 10; i++) {
        printf("%d ", arr[i]);
    }

    // 找出最大值和最小值
    int min = 101;
    int max = 0;
    for (int i = 1; i < 10; i++) {
        if (arr[i] < min) {
            min = arr[i];
        }
        if (arr[i] > max) {
            max = arr[i];
        }
    }

    // 输出结果
    printf("\n");
    printf("最小值:%d\n", min);
    printf("最大值:%d\n", max);

    return 0;
}

可以在一个循环下,产生10个随机数存入数组,同时计算其最大值和最小值,最后打印结果就可以了。

测试代码如下:

参考链接:


#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void){
    
    int nums[10]; //长度为10的数组 
    int max,min;  // 分别存储数组最大值和最小值的变量 
     
    //https://zhuanlan.zhihu.com/p/451608851
    srand((unsigned long)time(NULL));  // 使用当前时间来产生随机数种子 
    for(int i=0;i<10;i++){
        nums[i] = rand()%101; // 产生一个0-100之间的整数来存入数组当前元素 
        
        if(i==0){  // 如果是数组第一个数,则把它赋值给最大值和最小值 
            max=min=nums[0];
        }else{  // 数组其他位置的数,则比较计算最大值和最小值 
            
            // 判断最大值 
            if(max<nums[i]){
                max=nums[i];
            }
            
            // 判断最小值 
            if(min>nums[i]){
                min=nums[i];
            }
        }
        printf("%d ",nums[i]);  //打印产生的随机数 
    }
    printf("\n"); 
    
    // 打印结果 
    printf("数组最大值为:%d.\n",max);    
    printf("数组最小值为:%d.\n",min);    
    
    return 0;
} 

img

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7571355
  • 你也可以参考下这篇文章:【C语言编程】输入4个整数,要求按从小到大的顺序输出
  • 除此之外, 这篇博客: C语言基础100例子中的 题目3:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 程序分析:

    假设该数为 x。

    1、则:x + 100 = n2, x + 100 + 168 = m2

    2、计算等式:m2 - n2 = (m + n)(m - n) = 168

    3、设置: m + n = i,m - n = j,i * j =168,i 和 j 至少一个是偶数

    4、可得: m = (i + j) / 2, n = (i - j) / 2,i 和 j 要么都是偶数,要么都是奇数。

    5、从 3 和 4 推导可知道,i 与 j 均是大于等于 2 的偶数。

    6、由于 i * j = 168, j>=2,则 1 < i < 168 / 2 + 1

    7、接下来将 i 的所有数字循环计算即可。

    具体实现如下:

    #include <stdio.h>
     
    int main (void)
    {
        int  i, j, m, n, x;
        for (i = 1; i < 168 / 2 + 1; i++)
        {
            if (168 % i == 0)
            {
                j = 168 / i;
                if ( i > j && (i + j) % 2 == 0 && (i - j) % 2 == 0)
                {
                    m = (i + j) / 2;
                    n = (i - j) / 2;
                    x = n * n - 100;
                    printf ("%d + 100 = %d * %d\n", x, n, n);
                    printf ("%d + 268 = %d * %d\n", x, m, m);
                }
            }
        }
        return 0;
    }
    

    以上实例输出结果为:

    -99 + 100 = 1 * 1
    -99 + 268 = 13 * 13
    21 + 100 = 11 * 11
    21 + 268 = 17 * 17
    261 + 100 = 19 * 19
    261 + 268 = 23 * 23
    1581 + 100 = 41 * 41
    1581 + 268 = 43 * 43
    
  • 您还可以看一下 尹成老师的C语言系列之 数组与算法实战课程中的 10.二维数组分析小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    #define LEN 10
    
    void findMaxAndMin(int* arr, int len, int* pMax, int* pMin) {
        *pMax = *pMin = arr[0];
        for (int i = 1; i < len; ++i) {
            if (arr[i] > *pMax) {
                *pMax = arr[i];
            } else if (arr[i] < *pMin) {
                *pMin = arr[i];
            }
        }
    }
    
    int main() {
        srand(time(NULL)); // 初始化随机数种子
        int arr[LEN];
        for (int i = 0; i < LEN; ++i) {
            arr[i] = rand() % 101; // 生成0-100之间的随机数
            printf("%d ", arr[i]);
        }
        puts("");
    
        int max, min;
        findMaxAndMin(arr, LEN, &max, &min);
        printf("max=%d, min=%d\n", max, min);
        return 0;
    }