C语言数组问题求编程
要求用数组编写程序,用scanf函数输入10个整数的数列,先将整数按照从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。...
要求用数组
编写程序,用scanf函数输入10个整数的数列,先将整数按照从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。 展开
编写程序,用scanf函数输入10个整数的数列,先将整数按照从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。 展开
2个回答
展开全部
#include <stdio.h>
void paixu_a(int a[]){
int i,j;
for(i=0;i<9;i++){
for(j=i+1;j<10;j++){
if(a[i]<a[j]){
a[i]^=a[j];
a[j]^=a[i];
a[i]^=a[j];
}
}
}
}
void paixu_b(int b[]){
int i,j;
for(i=0;i<10;i++){
for(j=i+1;j<11;j++){
if(b[i]<b[j]){
b[i]^=b[j];
b[j]^=b[i];
b[i]^=b[j];
}
}
}
}
int main(void){
int a[10],b[11],k,x,cnt=0;
for(k=0;k<10;k++){
scanf("%d",&a[k]);
b[k]=a[k];
}
scanf("%d",&x);b[10]=x;
paixu_a(a);paixu_b(b);
for(k=0;k<10;k++) printf("%d ",a[k]);printf("\n");
for(k=0;k<11;k++) printf("%d ",b[k]);printf("\n");
return 0;
}
因为你要求特定输入10个数再加1个数,所以我就特殊情况特殊处理了,可以参考一下~
追问
辛苦啦
展开全部
#include <stdio.h>
// 交换两个数据
void swap(int * a, int * b)
{
int t = *a; *a = *b; *b = t;
}
// 向后复制数据
void copy_back(const int *src, int n, int * dst)
{
dst += n, src += n;
while(n--) *--dst = *--src;
}
// 将数据插入到array的pos处
void insert(int * array, int * n, int pos, int num)
{
if(pos < 0) pos = 0;
if(pos > *n) pos = *n;
copy_back(array + pos, *n - pos, array + pos + 1);
array[pos] = num;
(*n)++;
}
// 排序
void sort(int * array, int n)
{
int i, j, pos;
for(i=0; i<n; i++)
{
pos = i;
for(j = i + 1; j < n; j++) if(array[j] > array[pos]) pos = j;
if(pos != i) swap(array + i, array + pos);
}
}
// 查找num在array中的位置
int findPos(int * array, int n, int b, int num)
{
int m;
if(n < b) swap(&n, &b);
if(n - b > 1)
{
m = (n + b) / 2;
if(array[m] < num) return findPos(array, b, m, num);
else return findPos(array, m, n, num);
}
if(array[b] < num) return b;
else return n;
}
// 显示array
void printArray(int * array, int n)
{
int i;
for(i=0; i<n; i++) printf("%d\t", array[i]);
printf("\n");
}
int main()
{
int array[20];
int num;
int i, n = 10;
for(i=0; i<n; i++) scanf("%d", array + i);
printArray(array, n);
sort(array, n);
printArray(array, n);
scanf("%d", &num);
int pos = findPos(array, n, 0, num);
insert(array, &n, pos, num);
printArray(array, n);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询