前驱后继字符--生成随机数--冒泡排序

任务一:从键盘输入1个字符,编程输出其前趋字符和后继字符,以其ASCII码

#include <stdio.h>
int main(){
    
    
//题一:从键盘输入1个字符,编程输出其前趋字符和后继字符,以其ASCII码 
  char ch1;
  scanf("%c",&ch1);
  printf("%c  %c  %c\n",ch1-1,ch1,ch1+1);
  printf("%d  %d  %d\n",ch1-1,ch1,ch1+1);
}

在这里插入图片描述






任务二:随机产生100个10—300之间的整数,找出其中的最小数(随机数种子)

#include<stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
    
    
//    随机产生100个10—300之间的整数,找出其中的最小数
    int random[100];
    int i,min=300;
    srand((int)time(0));
    printf("生成的随机数如下:\t");
    printf("\t");
	//生成100个随机数
    for (int j = 0; j < 100; j++) {
    
    
        random[j] = rand()%291+10;//生成的随机数最小为10,最大为(291+10-1);即:300
        printf("%d ",random[j]);
    }
    //比较大小,返回最小值
    for(i=0;i<100;i++){
    
    
        if(random[i] < min){
    
    
            min = random[i];
        }
    }
    printf("\n");
    printf("min= %d",min);
}

运行结果:
在这里插入图片描述





任务三:随机产生100个10—300之间的整数,按从小到大的顺序排序输出(冒泡排序)

#include<stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
    
    
//    随机产生100个10—300之间的整数,按从小到大的顺序排序输出
    int random[100];
    int i,min=300;
    int t;
    srand((int)time(0));
    printf("生成的随机数如下:======================================================\n");
    //生成100个随机数
    for (int j = 0; j < 100; j++) {
    
    
        random[j] = rand()%291+10;//生成的随机数最小为10,最大为(291+10-1);即:300
        printf("%d ",random[j]);
    }
    //冒泡排序算法,最小的数排在最前面;时间复杂度:O(n的2次方);
    for(i=0;i<99;i++){
    
    //2个数进行冒泡排序:第二个for循环执行一次
        for(int k=0;k<99-i;k++){
    
    //注意:此处的max是指:参与比较的值里面的最大值;
            //第一次循环: 比较前100个数里的最大值,并将max到最后一个位置。
            //第二次循环: 比较前99个数里的最大值,并放max到第99个位置上。
            //第三次循环: 比较前98个数里的最大值,并放max到第98个位置上。
            //第99次循环:。。。。。。
            if(random[k]>random[k+1]){
    
    
                t=random[k];
                random[k]=random[k+1];
                random[k+1]=t;
            }
        }
    }
    printf("\n排序结果如下:=============================================================\n");
    for (int j = 0; j <100;j++) {
    
    
        printf(" %d ",random[j]);
    }
}

//        for(int j=i+1;j<100;j++){。。。}//和第二个for循环效果一样

运行结果
在这里插入图片描述
注意冒泡排序两个for循环:

//这个for循环只是为了:确定下面for的执行次数。
for(i=0;i<99;i++){
    
    //2个数进行冒泡排序:下面的for循环执行1次
    			//3个数进行冒泡排序:下面的for循环置换2次
    			//100个数进行冒泡排序:下面的for循环置换99次
        for(int k=0;k<99-i;k++){
    
    
            //比较排序
        }

    for(int j=i+1;j<100;j++){}              

和第二个for循环效果一样



有兴趣的读者可以点击下面的超链接去看下排序动态的过程。
哔哩哔哩:冒泡排序动画演示

猜你喜欢

转载自blog.csdn.net/qq_49612126/article/details/125812325