當前位置:首頁 » 編程語言 » 已排好的c語言數組
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

已排好的c語言數組

發布時間: 2022-05-12 20:46:56

㈠ 用c語言寫的一個程序:有一個已排好的數組,要求輸入一個數後,按原來排序的規律將它插入數組中。

主要有兩個問題:
第一:for(i=0;getchar()!='\n';i++)==>for循環里,每次執行前先檢測getchar()!='\n',而我們需要的是要在輸入數字後再檢查是否輸入回車,所以放在循環後面:
for(
i=0;
;i++
)
{
scanf("%d",&a[i]);
if(
getchar()
==
'\n'
)
break;
}
第二:i
是從0開始計數的,所以數組數還要加1.比如輸入0
1
2
3,i為3,但是是4個數。
//如下能正常運行:
#include
<stdlib.h>
#include
<stdio.h>
int
main()
{
int
a[20],i,n,x,k;
printf("請輸入一組順序數(從小到大的順序):");
for(
i=0;
;i++
)
{
scanf("%d",&a[i]);
if(
getchar()
==
'\n'
)
break;
}
n
=
i
+
1;
//n表示數組內數字的個數
printf("請輸入需要插入的數:");
scanf("%d",&x);
for(i=0;i<n;i++)
{
if(
x<=
a[i]
)
{
for(
k=
n-1;
k
>=
i;
k--)
{
a[k+1]=a[k];
}
a[i]=x;
break;
}
}
for(i=0;i<=n;
i++)
{
printf("%d
",a[i]);
}
printf("\n");
system("pause");
}

㈡ C語言有一個已排好序的整型數組,有10個元素,要求從鍵盤輸入一個數後,按原來排序的規律將它插入數組中

源代碼如下:

#include <stdlib.h>

#include <stdio.h>

int main()

{

int a[20],i,n,x,k;

printf("請輸入一組順序數(從小到大的順序):");

for( i=0; ;i++ )

{

scanf("%d",&a[i]);

if( getchar() == ' ' )

break;

}

n = i + 1; //n表示數組內數字的個數

printf("請輸入需要插入的數:");

scanf("%d",&x);

for(i=0;i<n;i++)

{

if( x<= a[i] )

{

for( k= n-1; k >= i; k--)

{

a[k+1]=a[k];

}

a[i]=x;

break;

}

}

for(i=0;i<=n; i++)

{

printf("%d ",a[i]);

}

printf(" ");

system("pause");

}

(2)已排好的c語言數組擴展閱讀

1、C語言支持數組數據結構,它可以存儲一個固定大小的相同類型元素的順序集合。數組是用來存儲一系列數據,但它往往被認為是一系列相同類型的變數。

2、數組的聲明並不是聲明一個個單獨的變數,比如 number0、number1、...、number99,而是聲明一個數組變數。

㈢ C語言編程:有一個已排好序的數組,現輸入一個數插入到數組中,要求插入該數後數組元素仍然有序

#include <stdio.h>
main(){
int a[100],n=10,i,j,x;
/*輸入10個數*/
for (i=0;i<n;i++) scanf("%d", &a[i]);
/*輸入1個數*/
scanf("%d",&x);
/*找到需要插入的位置j*/
for (i=0;i<n;i++) if (a[i]<x) j=i+1;
/*把j之後的數據後移*/
for (i=n;i>j;i--) a[i]=a[i-1];
/*插入數據*/
a[j]=x;
/*輸出結果*/
for (i=0;i<=n;i++) printf("%d\t", a[i]);
}

㈣ c語言程序設計:有一個已排好序的數組,要求輸入一個數後,按原來排序的規律將它插入數組中

【例】把一個整數按大小順序插入已排好序的數組中。
為了把一個數按大小插入已排好序的數組中,應首先確定排序是從大到小還是從小到大進行的。設排序是從大到小進序的,則可把欲插入的數與數組中各數逐個比較,當找到第一個比插入數小的元素i時,該元素之前即為插入位置。然後從數組最後一個元素開始到該元素為止,逐個後移一個單元。最後把插入數賦予元素i即可。如果被插入數比所有的元素值都小則插入最後位置。
main()
{
int i,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};
for(i=0;i<10;i++)
{ p=i;q=a[i];
for(j=i+1;j<10;j++)
if(q<a[j]) {p=j;q=a[j];}
if(p!=i)
{
s=a[i];
a[i]=a[p];
a[p]=s;
}
printf("%d ",a[i]);
}
printf("\ninput number:\n");
scanf("%d",&n);
for(i=0;i<10;i++)
if(n>a[i])
{for(s=9;s>=i;s--) a[s+1]=a[s];
break;}
a[i]=n;
for(i=0;i<=10;i++)
printf("%d ",a[i]);
printf("\n");
}

本程序首先對數組a中的10個數從大到小排序並輸出排序結果。然後輸入要插入的整數n。再用一個for語句把n和數組元素逐個比較,如果發現有n>a[i]時,則由一個內循環把i以下各元素值順次後移一個單元。後移應從後向前進行(從a[9]開始到a[i]為止)。 後移結束跳出外循環。插入點為i,把n賦予a[i]即可。 如所有的元素均大於被插入數,則並未進行過後移工作。此時i=10,結果是把n賦於a[10]。最後一個循環輸出插入數後的數組各元素值。
程序運行時,輸入數47。從結果中可以看出47已插入到54和 28之間。

㈤ c語言 已有一個已排好序的數組,今輸入一個數,要求按原來排序的規律將它插入數組中。

#include "stdio.h"
main()
{
int a[11]={1,4,6,9,13,16,19,28,40,100};
int num,i,j;
printf("Array a:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
printf("insert data:");
scanf("%d",&num);
for(i=0;i<10;i++)
if(a[i]>num)
{j=a[i];a[i]=num;num=j;}
a[i]=num;
printf("Now,array a:\n");
for(i=0;i<11;i++)
printf("%5d",a[i]);
printf("\n");
}
這絕對正確,我上機驗證過了!!要加分啊。。。

㈥ 用C語言對一維數組排序,並輸出已排好元素的原來位置

簡單的思路:

定義一個指針數組,找到b數組中元素在a數組中的地址,並存儲在指針數組對應位置。

之後將指針數組內的地址值依次取出來與a數組首地址相減,得到的就是原來的位置。

利用的原理:數組內地址是連續的!

#include<stdio.h>
intmain()
{
inta[5]={3,8,4,7,6},b[5]={8,7,6,4,3},c[5],i,j,*p[5];
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(b[i]==a[j])
p[i]=&a[j];
}
}

for(i=0;i<5;i++)
c[i]=p[i]-&a[0]+1;
printf("原來的位置數組c[5]={%d,%d,%d,%d,%d} ",c[0],c[1],c[2],c[3],c[4]);
}

㈦ c語言已有一個已經排好序的數組現輸入一個數,要求按原來的規律將它插入數組中

你的插入排好序的數組的C語言程序,我幫你改完了(改動的地方見注釋).

#include<stdio.h>

int main()

{

int a[7]={12,23,34,45,56,67};

int i,j,x;

printf("請輸入一個數: ");

scanf("%d",&x);

for(i=0;i<6;i++){

if(a[i]>x){

for(j=5;j>=i;j--){//這里修改for循環

a[j+1]=a[j];//這里把i改成j

}

a[i]=x;//這里這句移到這里

break;//這里這句移到這里

}

}

printf("新的數組為: ");

for(i=0;i<7;i++)

printf("%5d",a[i]);

printf(" ");

return 0;

}