當前位置:首頁 » 編程語言 » c語言刪除指定數據代碼
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言刪除指定數據代碼

發布時間: 2023-04-30 23:04:31

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]);
}

⑵ 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語言代碼怎麼刪除數據

#include<stdio.h>

int main()

{

int a[10]={90,89,78,77,66,55,44,33,22,11};

int x;

scanf("%d",&x);//輸入要刪除的數

for(int i=0;i<10;i++)

if(a[i]==x)

a[i]='';

for(int i=0;i<10;i++)

if(a[i]!='')

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

}

⑷ C語言-刪除字元串中指定的字元

一、問題描述:從鍵盤輸入一個字元串給str和一個字元給c,刪除str中的所有字元c並輸出刪除後的字元串str。

1、輸入:第一行是一個字元串; 第二行是一個字元。

2、輸出:刪除指定字元後的字元串。

二、設計思路:

1、 同插入問題,定義兩個字元數組a,b。以及標志刪除位置的int型pos。

2、用gets函數輸入數組a的值,並利用for循環將數組a 到 數組b。

3、利用for循環,令pos位的數組b元素賦值到a。

三、實現代碼如下:

(4)c語言刪除指定數據代碼擴展閱讀

gets()函數用來從標准輸入設備(鍵盤)讀取字元串直到換行符結束,但換行符會被丟棄,然後在末尾添加''字元。其調用格式為:gets(s),其中s為字元串變數(字元串數組名或字元串指針)。

gets()函數讀取到 (我們輸入的回車)於是停止讀取,但是它不會把 包含到字元串裡面去。然而,和它配合使用的puts函數,卻在輸出字元串的時候自動換行。

gets(s) 函數中的變數s為一字元串指針。如果為單個字元指針,編譯連接不會有錯誤,但運納仿納行後內存溢出錯誤。寬字元版本,當使用unicode寬字元文本時,使用這個函數 _getws();在C11標准中被刪除,可用C標准庫中的fgets代替.

⑸ 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語言刪除文件中的指定的一行數據怎麼做

  1. 你平時應該有這樣的經歷,打開一個.txt格式的小說,在裡面刪除幾個字,系統反應卻很慢,這是為什麼呢?因為文件里的內容都是在硬碟上按順序一個位元組挨著一個位元組擺放的,讀取文件的時候,會從文件首地址一直讀到文件結束標記「-1」。如果能夠直接把文件裡面的幾個位元組刪掉,那麼下次這個文件怎麼讀呢?怎麼區分中間那幾個位元組被刪掉了呢?所以對於這些簡單的文件來說,要想直接刪除裡面的內容是不可能的。
    一般有兩個方法實現這個功能:
    1.把要保留的內容寫到另一個文件中,要刪掉的內容就不用寫了。
    2.把要保留的內容存儲到一個字元串變數中,要刪掉的內容不用存儲,最後把這個字元串再寫回到原文件中覆蓋原來的內容。

  2. 常式:

    #include<stdio.h>
    structdata
    {
    intbianhao;
    charfenlei[10];
    charming[12];
    intshijian[3];
    floatjiage;
    }
    voiddel(intnum){//定義刪除指定編號的內容的函數
    FILE*f1;//操作的文件
    longlength;//文件總長度
    char*f2;//用於記錄要保存的內容
    chars[100];//用於保存每次讀取的一行內容
    intn;//用於存儲編號
    f1=fopen("data.txt","r");//以讀的方式打開文件
    fseek(f1,0,2);//文件指針移到文件尾
    length=ftell(f1);//取得文件長度
    f2=(char*)malloc(sizeof(char)*length);//給f2分配文件長度的空間
    *f2=0;//使得f2字元串的長度初始為0
    rewind(f1);//文件指針回到文件頭
    while(ftell(f1)<length-3){//當文件沒有結束時就依次讀取文件的每一行
    fgets(s,100,f1);//讀取一行信息
    n=atoi(s);//從讀取的信息取得編號
    if(n==num)continue;//如果編號是要刪除的編號,就不用保存這一行信息了
    strcat(f2,s);//保存讀取到的這一行信息
    }
    fclose(f1);//關閉文件
    f1=fopen("data.txt","w");//重新以寫的方式打開文件
    fputs(f2,f1);//把保存的信息重新存儲到文件當中
    fclose(f1);//關閉文件
    }
    intmain(){
    del(1);//調用上面定義的函數刪除指定編號的內容
    del(3);//參數為編號
    system("pause");//暫停一下
    }