P176 1.2.3

心得:第一题是使用一维数组编程中的例题。

1.第一步在未排序的n个数(a[0]~a[n-1])中找到最小数,将它与a[0]交换。

2.第二步在剩下未排序的n-1个数(a[1]~a[n-1])中找到最小数,将它与a[1]交换。

...........

3.第n-1步在剩下未排序的两个数(a[n-2]~a[n-1])中找到最小数,将它与a[n-2]交换。

第二题与例题7-6相似。

第三题是使用二维数组编程中关于矩阵上三角的问题。下标规律为   i<=j

/*
1.选择法排序。输入一个正整数n (1<n<10),再输入n个正整数,将它们从大到小排序后输出。
 试编写相应的程序。*/
#include<stdio.h>
int main (void)
{
    int i,index,k,n,t;
    int a[10];
    printf("enter n:");
    scanf("%d",&n);
    printf("enter %d integer;",n);
        for(i=0;i<n;i++)
            scanf("%d",&a[i]);
        for(k=0;k<n-1;k++)
{
            index=k;
          for(i=k+1;i<n;i++)
            if(a[i]<a[index])
                index=i;
            t=a[index];
            a[index]=a[k];
            a[k]=t;
}
     printf("after sorted:");
       for(i=0;i<n;i++)
         printf("%4d",a[i]);
         printf("
");
         return 0;

}

/*求一批整数中出现最多的数字*/

#include<stdio.h>
int main(void)
{
  int n,i,max=0,temp,time[10]={0};
  printf("Enter n:");
  scanf("%d",&n);
  printf("Enter %d integers:",n);
  for(i=0;i<n;i++){
    scanf("%d",&temp);
    while(temp!=0){
      time[temp%10]++;
      temp/=10;
    }
  }
    for(i=0;i<10;i++){
      if(max<time[i])
        max=time[i];
    }
  printf("出现最多次数%d次的数字是:",max);
  for(i=0;i<10;i++)
    if(time[i]==max)
      printf("%d ",i);

  printf("
");
  return 0;
}

/*
3.判断上三角矩阵。输入一个正整数n(1<n<6)和n阶方阵a中的元素,
如果a是上三角矩阵,输出"YES",否者输出“NO”。上三角矩阵
指主对角线以下的元素都为零的矩阵。主对角线为从矩阵的左上角至右下角的连线。
试编写相应程序。*/
#include<stdio.h>
int main(void)
{
    int a[6][6],flag,i,j,n;
    printf("enter n:");
    scanf("%d",&n);
    printf("enter array:
");
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
            scanf("%d",&a[i][j]);
    flag=1;
    for(i=0;i<n;i++)
        for(j=0;j<i;j++)
            if(a[i][j]!=0)
                flag=0;
            if(flag)
                printf("YES
");
            else
                printf("NO
");
            return 0;
}

原文地址:https://www.cnblogs.com/yixiaoxia/p/yixiaoxia8.html