本文经3-4个晚上整理,但仍有众多纰漏,还请在留言区提建议-;
本文未完,更新中。。。
温馨提示:本文为C语言数组专题小白特供,大佬请自行忽略。。
解法一
#include
int main()
{
int a[100],i,j,c=0,h,b;
for(i=0;i<5;i++)
scanf("%d",&a[i]);
scanf("%d",&b);
while(b!=-1)
{
a[i]=b;
scanf("%d",&b);
c++; //可以得到输入数组的个数
i++;
}
for(i=0;ia[j+1])
{
h=a[j];
a[j]=a[j+1];
a[j+1]=h;
}
}
}
for(i=0;i
本解法以冒泡排序为主体;先将第二个数组中的各个元素接到a[i]数组的后面,之后再排序;
#include
int main()
{
int n1,n2,i,j,k,l;
scanf("%d %d",&n1,&n2);
int a[n1],b[n2],c[n1+n2];
for(i=0;i
1.冒泡排序
for(i=0;ia[j+1]) //比较大小
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
2.选择排序
//降序排序
for(i=0;i
综上可见,冒泡排序是将最大(最小)的数通过循环上浮(下沉)[与前一个数或与后一个数的比较来实现]。而选择排序是通过第一个数与其后N-1个数进行比较,将最大(最小)的数通过交换排到最前面,再拿第二个数与后面N-2个数比较,取该数组中第二大的数,以此类推。
#include
#define N 100
int main()
{
int a[N],b,n,i=0;
scanf("%d",&n);
while(n!=0)
{
a[i++]=n%2; //将每一次的余数保留在数组的一个存储空间里;
n=n/2;
}
for(b=i-1;b>0;b--) //注意b应该从i-1取起,因为a[i]是随机数;
printf("%d",a[b]);
return 0;
}
#include
#define N 1000
int main()
{
int a[N],n,i;
scanf("%d",&n);
a[0]=1;
a[1]=1;
for(i=1;i
#include
#define N 10
int main()
{
int a[N],i,k,temp;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
temp=a[0];
for(k=0;k<10;k++)
{
a[k-1]=a[k];
if(k==9)
a[9]=temp;
}
for(i=0;i<10;i++)
printf("%-3d",a[i]);
return 0;
}
#include
#include
int main()
{
int a[5][5],b[100],max,temp,i,j,p;
for(i=0; i<=4; i++)
{
for(j=0; j<=4; j++)
scanf("%d",&a[i][j]);
}
for(i=0; i<=4; i++)
{
max=a[i][0];
for(j=0; j<=4; j++)
{
if(fabs(a[i][j])>fabs(max))
{
max=a[i][j];
b[i]=j;
}
}
}
for(i=0; i<=4; i++)
{
p=b[i];
if(a[i][i]!=a[i][p])
{
temp=a[i][i];
a[i][i]=a[i][p];
a[i][p]=temp;
}
}
for(i=0; i<=4; i++)
{
for(j=0; j<=4; j++)
{
printf("%d",a[i][j]);
if(j!=4)
printf(" ");
}
printf("\n");
}
return 0;
}
这道题的解法在思路上是正确的,但细节错误仍然存在。。。请想法的读者在留言区留言;
仍在更新中。。。