数组的一些经典案例(循环)(max=score[0])(冒泡)(flag标志)(杨辉三角)

1.根据用户输入的10人成绩并将其保存到数组中,求最高成绩,最低成绩和平均成绩

 

#include <stdio.h>

void main(){
    int score[10];
    int i,sum=0,avg,max,min;
    for(i=0;i<10;i++){
        printf("请输入第%d个成绩:\n",i+1);
        scanf("%d",&score[i]);
        sum+=score[i];
        avg=sum/10;
        
    }
    
    min=max=score[0];   //假设第一个人的成绩最高/最低 !!!!
    for(i=1;i<10;i++){
        if(score[i]>max){
            max=score[i];
            
        }
        if(score[i]<min){
            min=score[i];
            
        }
    }
    
    printf("平均成绩是%d,最高成绩是%d,最低成绩是%d",avg,max,min);
}

 

2.根据用户输入的5个数字并将其保存到数组中,对其进行从高到低排序

思路:用冒泡排序法实现

 

int nums[5];
    int i,j,temp;
    for(i=0;i<5;i++){
        printf("请输入第%d个数字",i+1);
        scanf("%d",&nums[i]);
    } 
    for(i=0;i<4;i++){
        for(j=0;j<4-i;j++){
            if(nums[j]<nums[j+1]){
                temp=nums[j];
                nums[j]=nums[j+1];
                nums[j+1]=temp;
            }
        }
    }
    printf("从高到低排序为:");
    for(i=0;i<5;i++){
        printf("%d\t",nums[i]);
    }

 

3.根据用户输入的10个数字并将其保存到数组中,用户输入要查找的数字,如果查找到该数字打印其在数组中的位置,否则打印该数组中没有你要查找的元素。

 

1,2,3,4,5,6,7,8,9,10

 

5=→5在数组中的第5个位置

 

15=→对不起,该数字15没有在数组中。

思路:输入10个数字并将其保存到数组中,输入要查找的数字,对数组进行循环遍历将数组中的值与用户输入的值比较,此处用了flag标志来解决循环打印

"对不起,该数字%d没有在数组中”的问题。
int nums[10];
    int num,i,flag=0;
    for(i=0;i<10;i++){
        printf("请输入第%d个数字:",i+1);
        scanf("%d",&nums[i]);
    }
    
    printf("请输入要查找的数字:");
    scanf("%d",&num);
    
    for(i=0;i<10;i++){
        if(num==nums[i]){
            flag=1;
            break;//找到与用户输入数字相同的数字即跳出循环,这时i就是跳出循环时i的值。如果把break去掉,则会循环遍历数组中的10个数字,这时如果数组中有该数字,会打印输出在第11位 
        }
    }
    
    if(flag==1){
        printf("%d在数组中第%d位\n",num,i+1);
    }
    if(flag==0){
        printf("该数组中没有你要查找的元素!\n");
    }

 

int nums[10];
    int i,num,flag=0;

    //根据用户输入的10个数字并将其保存到数组中
    for(i=0;i<10;i++){
        printf("请输入第%d个数字:",i+1);
        scanf("%d",&nums[i]);
    }

    // 用户输入要查找的数字
    printf("请输入要查找的数字:");
    scanf("%d",&num);

    for(i=0;i<10;i++){
        
        if(num==nums[i]){
            printf("%d在数组中的第%d个位置\n",num,i+1);
            flag=1;
            //break;//找到要查找的数字即跳出循环,如果数组中有两个与要查找数字相同的数字,则只会输出第一个数字的相应位置,这时braek最好不要 
        }
        
    }
    
    if(flag==0){
            printf("对不起,该数字%d没有在数组中\n",num);
        }

 

4.打印杨辉三角(二维数组)

 

1

 

1    1

 

1    2    1

 

1    3    3    1

 

1    4    6    4    1

 

…..

思路:把杨辉三角当做二维数组。找规律:第一列是1,即num[i][1]=1,对角线上是1,即i与j相等的时候是1→num[i][i]=1,其他位置上的值等于它上面的值加上上面的左边的值,即num[i][j]=num[i-1][j-1]+num[i-1][j];最后通过循环嵌套来输出。

int i,j;
    int num[6][6];
    for(i=0;i<6;i++){
        num[i][0]=1;
        num[i][i]=1;
    }
    for(i=1;i<6;i++){
        for(j=1;j<i;j++){
            num[i][j]=num[i-1][j-1]+num[i-1][j];
        }
    }
    for(i=0;i<6;i++){
      for(j=0;j<=i;j++){
          printf("%d\t",num[i][j]);
          
      }
      printf("\n");
   }

 

posted on 2017-03-24 19:35  我是小美女  阅读(578)  评论(0编辑  收藏  举报