//选择排序法
//从大到小排列
#include<stdio.h>
int main()
{
int i,index,k,n,temp;
int a[10];
printf("Enter n: ");
scanf("%d",&n);
printf("Enter %d:",n);
for(i=0; i<n; i++)
{
scanf("%d",&a[i]);
}
for(k=0; k<n-1; k++) //k<n-1
{
index=k;
for(i=k+1; i<n; i++) //i=k+1
if(a[i]>a[index])
index=i;
temp=a[index];
a[index]=a[k];
a[k]=temp;
}
printf("After sorted: ");
for(i=0; i<n; i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
Enter n: 4
Enter 4:1 2 3 4
After sorted: 4 3 2 1
//例7-2
//求一批整数中出现最多的数字
#include<stdio.h>
int main()
{
int n,i,j,k;
int a[100];
int count[100] = {0,0,0};
printf("Enter n: ");
scanf("%d",&n);
printf("Enter %d numbers: ",n);
for(i=0; i<n; i++)
{
scanf("%d",&a[i]);
}
for(i=0; i<n; i++)
{
while(a[i]!=0)
{
j=a[i]%10;
a[i]=a[i]/10;
count[j]++;
}
}
for(j=0; j<10; j++)
{
printf("%d %d\n",j,count[j]);
}
return 0;
}
Enter n: 3
Enter 3 numbers: 1234 2345 3456
0 0
1 1
2 2
3 3
4 3
5 2
6 1
7 0
8 0
9 0
//改进
#include<stdio.h>
int main()
{
int n,i,j,k;
int a[100];
int count[100] = {0,0,0};
printf("Enter n: ");
scanf("%d",&n);
printf("Enter %d numbers: ",n);
for(i=0; i<n; i++)
{
scanf("%d",&a[i]);
}
for(i=0; i<n; i++)
{
while(a[i]!=0)
{
j=a[i]%10;
a[i]=a[i]/10;
count[j]++;
}
}
k=0;
for(j=0; j<10; j++)
{
if(count[k]<count[j]) //找到出现最多的次数
k=j;
}
for(j=0; j<10; j++)
{
if(count[k]==count[j]) //如果有相同的次数,一并输出
printf("%d %d\n",j,count[j]);
}
return 0;
}
Enter n: 3
Enter 3 numbers: 1234 2345 3456
3 3
4 3
//习题7-3
//判断矩阵是否为上三角矩阵
#include<stdio.h>
int main()
{
int i,j,k;
int n;
int a[10][10];
printf("Enter n: ");
scanf("%d",&n);
printf("Enter numbers: ");
for(i=0; i<n; i++)
for(j=0; j<n; j++)
scanf("%d",&a[i][j]);
for(j=0; j<n; j++)
{
for(i=0; i<j; i++)
{
if(a[i][j]==0)
printf("YES\n");
else
printf("NO\n");
}
}
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
return 0;
}
Enter n: 3
Enter numbers: 1 2 3 4 5 6 0 0 0
NO
NO
NO
1 2 3
4 5 6
0 0 0