❶ c語言:從數組中刪除數據怎麼做
#include<stdio.h>
#define N 10
void main( )
{
int a[N] , num ,i , *p , n=N;
int j;
/*輸入N個數到數組a中;*/
for(i=0;i<n;i++)
{
scanf(「%d」,&num);
a[i]=num;
}
/*在數組a中刪除指定的數num;*/
for(i=0;i<n;i++)
{
if(a[i] == num)
{
//a[i]=a[n];//如果不保留原數組里的順序,此一句即可代替下邊2行語句,同時省掉變數j
for(j=i;j<n-1;j++)
a[j]=a[j+1];
n--;
}
}
/*輸出刪除了num後的數組a;*/
for(i=0;i<n;i++)
printf("%d ",a[i]);
getchar();
}
❷ C語言循環輸入10個數,存入數組,刪除指定數據
#include<stdio.h>
intmain(){
inta[]={23,12,34,52,35,53,32,34,52,11,24,56,73,21,24};
inti,j,x,n=sizeof(a)/sizeof(a[0]);
intflag=1;
for(i=0;i<n;++i)
printf("%d",a[i]);
printf(" 要刪除的數:");
scanf("%d",&x);
for(i=0;i<n&&flag;++i){
if(a[i]==x){
for(j=i;j<n-1;++j)
a[j]=a[j+1];
--n;
flag=0;
}
}
if(flag)printf("數組中沒有找到:%d,刪除失敗! ",x);
else{
printf("刪除%d後: ",x);
for(i=0;i<n;++i)
printf("%d",a[i]);
printf(" ");
}
return0;
}
❸ c語言中怎麼把一個數組清空
1. 在斗櫻C語言中如何把數組清空
有兩種方法可以實現。
為方便說明,定義整型數組a,並實現將a清空。
int a[4] = {1,2,3,4};
1、通過數組遍歷,逐個賦值為0。
定義循環變數int i;
for(i = 0; i < 4; i ++)
a[i]=0;
該程序功能為遍歷數組a,逐個將元素賦值為0,實現清空效果。
2、藉助內存賦值函數memset,整體賦值為0。
void *memset(void *dst, int value, size_t size);
這個函數的功能為將src上,大小為size位元組的數據賦值為value。需要注意的是,該函數賦值是以位元組為單位的。
調用該空純叢函數時需要引用頭文件string.h,即
#include <string.h>
清空數組的代碼為
memset(a,0,sizeof(a));
2. C語言如何從數組中刪除一個指定元素
del函數的作用是刪除數組a中的指定元素x,n為數組a的元素個數。函數的返回值,為刪除元素後的有效元素個數(數組中可能有重復元素)。
函數的原型為:
int del (int a[10],int n,int x)
(1)請實現這個函數,並完成測試。
[參考解答]
[cpp] view plain
#include
int del(int a[],int n, int x);
int main( )
{
int a[20]= {86,76,62,58,77,85,92,80,96,88,77,67,80,68,78,87,64,59,61,76};
int i, n;
n = del(a, 20, 77);
printf("剩餘褲頌 %d 個:\n", n);
for(i=0; iprintf("%d ", a[i]);
printf("\n");
return 0;
}
int del(int a[],int n, int x) 刪除長度為n的a數組中值為x的元素
{
int p=0, q=0; 用p和q兩個變數
while (q{
if(a[q]!=x) 只有當元素值不等於x才往p標識的位置上「搬」
{
a[p]=a[q];
p++;
}
q++;
} 最後的效果,等於x的元素都沒有「搬」過來,它們被「覆蓋」了,也即被刪除了
return p; p代表的,就是刪除後的元素個數
}
(2)如果在函數調用時,要求數組中的元素呈升序排列呢?[參考解答]
思路:例如在下面main函數中的測試,刪除77時,分三個階段:①先找到77;②跨過若干個77後,找到了80;③從80開始,將數據逐個地搬到前面合適的位置(「覆蓋」了77及隨後的位置)。
[cpp] view plain
#include
int del(int a[],int n, int x);
int main( )
{
int a[20]= {58, 59, 61, 62, 64, 67, 68, 76, 77, 77, 77, 80, 80, 85, 86, 87, 88, 88, 92, 96};
int i, n;
n = del(a, 20, 77);
printf("剩餘 %d 個:\n", n);
for(i=0; iprintf("%d ", a[i]);
printf("\n");
return 0;
}
int del(int a[],int n, int x) 刪除長度為n的a數組中值為x的元素
{
int p=0, q;
while (a[p]p++;
q=p; 階段②:p將標記住這個待刪除的位置
while(a[q]==x && qq++;
while(qa[p++]=a[q++]; 階段③:將要保留的元素,直接「覆蓋」到p標記住的位置,逐個賦值,結果就是將等於x的元素刪除了
return p; p代表的,就是刪除後的元素個數
}
3. C語言中怎麼刪除數組中的一個元素
方法: 刪除就是將其下標所在位置的中的內容置為空(也就是0),然後從此位置開始,後面的內容前移,再把最後那個位置的置為空(就是0)。
前移無非就是 類似 arr[ i - 1] = arr[ i ] 這個意思。 當可以確認數組中存放的都是整數,你可以將這個元素置為-1表示刪除。
增加就是先檢查你的數組中有沒有-1的元素,如果有,就設置為你的值。如果全部都滿了,就開一個更大的數組,把數據拷貝過去。
把相應位後面的一次前移一位,就是實現了刪除操作,可以用個for循環就可以實現了。 數組的內存分配:變數在內存中是從大到小定址的(內存中以位元組為單位),比如00000000 00000000 00000000 00001010在內存中,00001010的地址是最小的;而數組則有些不同,數組的元素自然的從上往下排列 存儲,整個數組的地址為首元素的地址。
(但是組成元素的位元組還是按從大到小)。 。
4. C語言數組清空的幾種方法比較
任何類型的數組都可以,實際上memset函數是對某一個地址以及該地址之後的一串空間進行賦值操作,只要是地址值,都可以被賦值。
1、memset是計算機中C/C++語言函數。將s所指向的某一塊內存中的前n個 位元組的內容全部設置為ch指定的ASCII值, 第二個值為指定的內存地址,塊的大小由第三個參數指定,這個函數通常為新申請的內存做初始化工作, 其返回值為指向s的指針。
2、函數介紹:void *memset(void *s, int ch, size_t n);
函數解釋:將s中前n個位元組 (typedef unsigned int size_t )用 ch 替換並返回 s 。
memset:作用是在一段內存塊中填充某個給定的值,它是對較大的結構體或數組進行清零操作的一種最快方法。
5. c語言:如何在一個排序好的數組中刪除一個數
辦法不至一個,比較直觀的是找到要刪除的元素後,將它後面的元素依次向前移動(拷貝)一位。舉例代碼如下:
#include "stdafx.h"If the vc++6.0, with this line.
#include "stdio.h"
int main(void){
int a[10]={1,2,3,4,5,6,7,8,9,10},i,j,x;
printf("Enter a number to delete。\n");
scanf("%d",&x);輸入要刪除的元素值
for(i=0;i<10;i++)找要刪除的元素
if(a[i]==x)
break;找到後跳出循環
if(i<10){
for(j=i+1;j<10;a[i++]=a[j++]);找到後後續元素依次向前移動一位
j=9;因為刪除了一位,長度變為9
}
else{
printf("Not find %d。\n",x);
j=10;沒有找到,長度仍為10
}
for(i=0;i<j;printf("%d ",a[i++]));結果輸出來看看
printf("\n");
return 0;
}
❹ C語言中怎麼刪除數組中的一個元素
#include "stdio.h"
int main()
{ int a[10],x;//x是要刪除數組元素的下標
int i;
for(i=0;i<10;i++)
scanf("%d",&a[i]); //輸入10個數據放在數組中
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("請輸入要刪除元素的下標值:\n");
scanf("%d",&x); //輸入要刪除的數組元素的下標
for(i=x;i<10;i++)
a[i]=a[i+1];
for(i=0;i<9;i++) //因為刪除了一個元素,所以有9個元素
printf("%d ",a[i]);
}
❺ c語言。一維數組。數據刪除,刪除指定位置的數據
#include<stdio.h>
main()
{
inti,j,x,a[]={12,5,4,23,8,18,41,34,15,9};
printf("輸入要刪除的數:");
scanf("%d",&x);
for(i=0;i<10;++i)
{
if(x==a[i])
{
for(j=i;j<9;++j)//刪除指定的數
a[j]=a[j+1];
a[9]=0;
break;
}
}
if(i==10)
printf("沒有找到指定的數");
else
for(i=0;i<9;++i)//輸出刪除後的數組
printf("%d",a[i]);
}