第八次作业
1.选择法排序。输入一个正整数n(1<n<=10),再输入n个整数,将它们从大到小排序后输出。试编写相应程序。
#include<stdio.h>
int main(void)
{
int a[10],n,i,k,temp,index;
printf("输入一个正整数:");
scanf("%d",&n);
printf("输入%d个整数:",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[index]<a[i])
{
index=i;
}
}
temp=a[index];
a[index]=a[k];
a[k]=temp;
}
printf("排序后:\n");
for(i=0;i<n;i++)
{
printf("%4d",a[i]);
}
return 0;
}
2.求一批整数中出现最多的数字。输入一个正整数n(1<n<=1000),再输入n个整数,分析每个整数的每一位数字,求出现最多的数字。试编写程序。
#include<stdio.h>
#include<math.h>
int main (void)
{
int t,wei,n,j,i,sum,most,max;
{
int a[10]={0,0,0,0,0,0,0,0,0,0};
printf("请输入一个正整数n(1≤n≤1000,输入0退出):\n");
scanf("%d",&n);
if(n>=1&&n<=1000)
{
printf("请输入%d个整数:\n",n);
for(j=1;j<=n;j++)
{
scanf("%d",&t);
if(t<0)
t=-t;
do{
wei=t%10;
t=t/10;
a[wei]++;
}while(t!=0);
}
sum=0;
max=a[0];
most=0;
for(i=1;i<10;i++)
if(a[i]>max)
{
max=a[i];
most=i;
}
printf("出现最多的数字为%d",most);
for(i=0;i<10;i++)
if(max==a[i]&&most!=i)
printf("和%d",i);
printf(",出现了%d次\n",max);
}
else if(n==0)
{
printf("程序运行结束\n");
}
else
{
printf("输入错误,请重新输入\n");
}
}
return 0;
}
3.判断上三角形矩阵。输入一个正整数n(1<=n<=6)和n阶方阵a中的元素,如果a是上三角形矩阵,输出YES,否则,输出NO。试编写程序。
#include<stdio.h>
int mat[10][10];
void main()
{
int n,i,j;
int ok=1;
scanf("%d",&n);
for(i=0;i<n;++i)
for(j=0;j<n;++j)
scanf("%d",&mat[i][j]);
for(i=1;i<n;++i)
{
for(j=0;j<i;++j)
if(mat[i][j]!=0)
ok=0;
}
printf("%s\n",ok?"YES":"NO");
}
4.心得:
在定义数组的时候[ ]里面只能写整形常量或者是返回整形常量的表达式。
数组的初始化
数组的数组名其实是数组首元素的地址