代码改变世界

实验六—数组1

2013-10-28 08:57  Summer.xia  阅读(236)  评论(0编辑  收藏  举报
/*输入n个整数,将它们存入数组a中。输出最大值和它所对应的下标*/
#include<stdio.h>

int main(void)

{

    int i,index,n;    /*index记录最大值对应的下标*/

    int a[10];

 

    printf("输入 n:");

    scanf("%d",&n);

    printf("输入 %d 个整数:",n);


for(i=0;i<n;i++) scanf("%d",&a[i]); /*找最大值a[index]*/ index=0; for(i=1;i<n;i++) if(a[i]>a[index]) /*二者比较,取更大的值代入a[index]*/ index=i; printf("最大值是 %d\n 其数组下标是 %d\n",a[index],index); return 0; }

 

/*输入n个整数,存入数组a中,分别按正序和逆序输出这些数*/
#include  <stdio.h>

int main(void)
{
    int i,n;
    int a[10]; /*定义一个有五个整型元素的数组*/
    printf("输入 n:");
    scanf("%d",&n);
    printf("输入 %d 个整数:",n);


    for(i=0;i<5;i++)
    scanf("%d",&a[i]); /*循环输入10个整数*/ 

    printf("正序输出一组数组a\n:");
    for(i=0;i<5;i++)
        printf("数组元素 %d\n",a[i]);/*正循环输出*/

    printf("逆序输出一组数组a\n:"); 
    for(i=5;i>0;i--)
        printf("数组元素 %d\n",a[i]);/*逆循环输出*/

        getchar(); /*按回车后程序结束*/

        return 0;
}

1、在输出时后缀“\n”表示换行;

2、注意“i=0;i<=5”中有五个数,不应加“=”。

问题:为什么逆序输出中第一组元素会这么奇怪?

 

/*设计一个程序,利用二维数组输出3x2矩阵*/
#include<stdio.h>
int main(void)
{
    int i,j;
    int a[3][2];
    /*输入一个3*2矩阵*/
    for(i=0;i<3;i++){
        for(j=0;j<2;j++){
            printf("enter a:");
            scanf("%d",&a[i][j]);
        }
    }
    /*输出3x2矩阵*/
    for(i=0;i<3;i++){
        for(j=0;j<2;j++){
            printf("%4d",a[i][j]);
        }
        
        printf("\n");
    }
    return 0;
}

 

/*定义一维数组arr,用冒泡排序法,由大到小排序并输出*/
#include<stdio.h>
int main(void)
{
    double arr[5];
    int i,j;
    double x;
    /*输入数组*/
    printf("请输入5个实数:\n");
    for(i=0;i<5;i++){
        scanf("%lf",&arr[i]);
    }
    /*用冒泡排序法排序*/
    for(i=0;i<5;i++){
        for(j=0;j<5-i;j++){
            if(arr[j]<arr[j+1]){
                x=arr[j+1];
                arr[j+1]=arr[j];
                arr[j]=x;
            }
        }
    }
    /*输出数组*/
    for(i=0;i<5;i++){
        printf("%lf\n",arr[i]);
    }
    return 0;
}

/*定义一个3×3的整形二维数组arr,找出最小值以及它的行下标和列下标,并输出该矩阵*/
#include<stdio.h>
int main(void)
{
    int arr[3][3];
    int i,j,x,y;
    /*输入矩阵*/
    for(i=0;i<3;i++){
        for(j=0;j<3;j++){
            printf("输入数组arr各元素值:\n");
            scanf("%d",&arr[i][j]);
        }
    }
    x=y=0;
    /*求出最小值*/
    for(i=0;i<3;i++){
        for(j=0;j<3;j++){
            if(arr[i][j]<arr
                [x][y]){
                x=i;
                y=j;
            }
        }
    }
    /*输出矩阵*/
    for(i=0;i<3;i++){
        for(j=0;j<3;j++){
            printf("%4d",arr[i][j]);
        }
        printf("\n");
    }
    /*找出最小值以及它的行下标和列下标*/
    printf("第%d行%d列最小值是%d\n",x,y,arr[x][y]);
    return 0;
}