本文目錄一覽:
C語言中怎樣實現對數組數據的刪除、修改?
#includestdio.h
typedef struct Node{
int a,b;
}node;
node c[100];
int n;
void print(){
int i;
printf(“\n當前數據:\n”);
for(i=1;i=n;i++){
printf(“第%d組:a=%d,b=%d\n”,i,c[i].a,c[i].b);
}
printf(“\n\n”);
}//輸出
void setnum(){
int i;
printf(“輸入n,表示共有n組數據:\n”);
scanf(“%d”,n);
for(i=1;i=n;i++){
printf(“輸入第%d組數據的兩個值a、b,用空格隔開:\n”,i);
scanf(“%d%d”,c[i].a,c[i].b);
}
}//設置數據
void remove(){
int i,j;
printf(“輸入i,表示要刪除第i數據:\n”);
scanf(“%d”,i);
for(j=i;j=n-1;j++){
c[j]=c[j+1];
}//循環覆蓋,讓後一個覆蓋前一個,所以j最大值取n-1
n–;//結構體中的元素減少1個
}//刪除數據
void chang(){
int i,aa,bb;
printf(“輸入i,a,b,表示要將第i組數據修改成a、b:\n”);
scanf(“%d%d%d”,i,aa,bb);
c[i].a=aa;
c[i].b=bb;//直接賦值修改
}//修改數據
main(){
int m;
while(1){
printf(“輸入:1-輸入數據,2-修改數據,3-刪除數據\n 4-輸出數據,0-退出\n”);
scanf(“%d”,m);
if(m==0) break;
else if(m==1) setnum();
else if(m==2) chang();
else if(m==3) remove();
else if(m==4) print();
}
}
C語言中的數組是什麼意思?
把具有相同數據類型的若干變量按有序的形式組織起來,
以便於程序處理,這些數據元素的集合就是數組,按照數組
元素的類型不同,可分為:數值數組、字符數組、指針數組
結構數組等各種類別。
數組說明的一般形式為:
類型說明符 數組名[常量表達式],……;
其中類型說明符可以是任一種基本數據類型或構造數據類型
數組名是定義的數組標識符。常量表達式表示數據元素的個
數,也就是數組的長度。
對數組類型的說明應注意:
1)數組的類型實際上是數組元素的取值類型。
2)數組名的書寫應符合標識符的書寫規範。
3)數組名不能與其他變量名相同。
4)常量表達式表示數組元素的個數,但是其下標從0開始計算
5)不能在方括號中用變量來表示元素的個數,但是可以用符號
常數或常量表達式。
6)允許在同一個類型說明中,說明多個數組和多個變量。
數組元素的表示方法
一般比較簡單就是數組名[下標]來引用,先定義後用,如果
是小數的話,直接自動取整。
數組賦值分為:初始化賦值和動態賦值
初始化賦值一般形式為:
static 類型說明符 數組名[常量表達式]={值,值……};
static表示靜態存儲類型,c語言規定只有靜態存儲數組和外部數組
才可做初始化賦值。
c語言對數組的初始化賦值還有幾個規定:
1)可以只給部分元素賦值。
2)只能給元素逐個賦值,不能給數組整體賦值。
3)如不給可初始化的數組賦初值,在在數組說明中,可以不給出數組
元素的個數。
下面看一下多維數組
主要看一下二維數組,其他的就可以用二維數組類推得到
二維數組的類型說明的一般形式是:
類型說明符 數組名[常量表達式1][常量表達式2]…;
在c語言中二維數組是按行排列的
二維數組的表示方法:
數組名[下標][下標]
二維數組的初始化
二維數組初始化也是在類型說明時給各下標變量賦以初值。 二維數組可
按行分段賦值,也可按行連續賦值。
二維數組的初始化還應該注意:
1)可以只對部分元素賦初值,未賦初值的元素自動取為0。
2)如對全部元素賦初值,則第一維的長度可以不給出。
字符數組:
用來存放字符變量的數組稱為字符數組。
C語言允許用字符串的方式對數組作初始化賦值。例如:
static char c[]={‘c’, ‘ ‘,’p’,’r’,’o’,’g’,’r’,’a’,’m’}; 可寫為:
static char c[]={“C program”}; 或去掉{}寫為:
sratic char c[]=”C program”;
用字符串方式賦值比用字符逐個賦值要多佔一個位元組, 用於存放字符串結
束標誌’\0’。上面的數組c在內存中的實際存放情況為: C program\0`\0’是
由C編譯系統自動加上的。由於採用了`\0’標誌,所以在用字符串賦初值時一
般無須指定數組的長度, 而由系統自行處理。在採用字符串方式後,字符數
組的輸入輸出將變得簡單方便。 除了上述用字符串賦初值的辦法外,還可用
printf函數和scanf函數一次性輸出輸入一個字符數組中的字符串, 而不必
使用循環語句逐個地輸入輸出每個字符。
void main()
{
static char c[]=”BASIC\ndBASE”;
printf(“%s\n”,c);
} printf(“%s\n”,c);
注意在本例的printf函數中,使用的格式字符串為”%s”, 表示輸出的是一
個字符串。而在輸出表列中給出數組名則可。 不能寫為: printf(“%s”,c[]);
void main()
{
char st[15];
printf(“input string:\n”);
scanf(“%s”,st);
printf(“%s\n”,st);
} char st[15];
本例中由於定義數組長度為15, 因此輸入的字符串長度必須小於15,
以留出一個位元組用於存放字符串結束標誌`\0`。 應該說明的是,對一個字
符數組,如果不作初始化賦值,則必須說明數組長度。還應該特別注意的是,
當用scanf函數輸入字符串時,字符串中不能含有空格,否則將以空格作為串
的結束符。例如運行例4.8,當輸入的字符串中含有空格時,運行情況為:
input string:this is a book this 從輸出結果可以看出空格以後的字符
都未能輸出。 為了避免這種情況, 可多設幾個字符數組分段存放含空格的
串。程序可改寫如下:
Lesson
void main()
{
char st1[6],st2[6],st3[6],st4[6];
printf(“input string:\n”);
scanf(“%s%s%s%s”,st1,st2,st3,st4);
printf(“%s %s %s %s\n”,st1,st2,st3,st4);
}
本程序分別設了四個數組, 輸入的一行字符的空格分段分別裝入四個數組。
然後分別輸出這四個數組中的字符串。在前面介紹過,scanf的各輸入項必須以
地址方式出現,如 a,b等。但在例4.8中卻是以數組名方式出現的,這是為
什麼呢?這是由於在C語言中規定,數組名就代表了該數組的首地址。 整個
數組是以首地址開頭的一塊連續的內存單元。如有字符數組char c[10],在
內存可表示如圖4.2。設數組c的首地址為2000,也就是說c[0]單元地址為2000。
則數組名c就代表這個首地址。因此在c前面不能再加地址運算符。如寫作
scanf(“%s”,c);則是錯誤的。 在執行函數printf(“%s”,c) 時,按數組名c
找到首地址,然後逐個輸出數組中各個字符直到遇到字符串終止標誌’\0’為止。
字符串常用函數:
用於輸入輸出的字符串函數在使用前應包含頭文件”stdio.h”,使用其他字符串
函數則應包含頭文件”string.h”.下面介紹幾個常用的字符串函數:
1)字符串輸出函數 puts 格式:puts(字符數組名) 功能:把字符數組中的字符
串輸出到顯示器。
#include”stdio.h”
main()
{
static char c[]=”BASIC\ndBASE”;
puts(c);
}
2)字符串輸入函數gets 格式:gets(字符數組名) 功能:從標準輸入設備上
輸入一個字符串。
#include”stdio.h”
main()
{
char st[15];
printf(“input string:\n”);
gets;
puts;
}
tips:gets函數並不以空格作為字符串輸入結束的標誌,而只是以回車作為輸入
結束,這是與scanf不同的部分
3)字符串連接函數strcat 格式:strcat(字符數組名1,字符數組名2)
功能:把字符數組2中的字符串連接到字符數組1中字符串後面,並刪去字符串
1後的串標誌”\0″,本函數返回字符數組1的首地址。
#include”string.h”
main()
{
static char st1[30]=”My name is “;
int st2[10];
printf(“input your name:\n”);
gets(st2);
strcat(st1,st2);
puts(st1);
}
4)字符串拷貝函數strcpy 格式:strcpy(字符數組名1,字符數組名2)
功能:把字符數組2中的字符串拷貝到字符數組1中,串結束標誌 “\0″也一同
拷貝,字符數組2也可以是一個字符常量,就相當於把一個字符串賦予一個字符數組
#include”string.h”
main()
{
static char st1[15],st2[]=”C Language”;
strcpy(st1,st2);
puts(st1);
printf(“\n”);
}
5)字符串比較函數strcmp格式:strcmp(字符數組1,字符數組2) 功能:
按照ASCII碼順序比較兩個數組中的字符串,並有函數返回值返回比較結果
#include”string.h”
main()
{
int k;
static char st1[15],st2[]=”C Language”;
printf(“input a string:\n”);
gets(st1);
k=strcmp(st1,st2);
if(k==0) printf(“st1=st2\n”);
if(k0) printf(“st1st2\n”);
if(k0) printf(“st1st2\n”);
}
6)測字符串長度的函數strlen 格式:strlen(字符數組名) 功能:
測字符串的實際長度(不含字符串結束標誌”\0″)並作為函數返回值
#include”string.h”
main()
{
int k;
static char st[]=”C Language”;
k=strlen;
printf(“The lenth of the string is %d\n”,k);
}
程序舉例:
例一:
main()
{
int i,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};
for(i=0;i10;i++)
{
p=i;q=a[i];
for(j=i+1;j10;j++)
if(qa[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;i10;i++)
if(na[i])
{for(s=9;s=i;s–) a[s+1]=a[s];brbreak;}
a[i]=n;
for(i=0;i10;i++)
printf(“%d”,a[i]);
printf(“\n”);
}
例二:
main()
{
static int a[][4]={3,16,87,65,4,32,11,108,10,25,12,27};
int b[3],i,j,l;
for(i=0;i=2;i++)
{
l=a[i][0];
for(j=1;j=3;j++)
if(a[i][j]l) l=a[i][j];
b[i]=l;
}
printf(“\narray a:\n”);
for(i=0;i=2;i++)
{
for(j=0;j=3;j++)
printf(“%5d”,a[i][j]);
printf(“\n”);
}
printf(“\narray b:\n”);
for(i=0;i3;i++)
printf(“%5d”,b[i]);
printf(“\n”);
}
例三:
void main()
{
char st[20],cs[5][20];
int i,j,p;
printf(“input country’s name:\n”);
for(i=0;i5;i++)
gets(cs[i]);
printf(“\n”);
for(i=0;i5;i++)
{
p=i;strcpy(st,cs[i]);
for(j=i+1;j5;j++)
if(strcmp(cs[j],st)0) {p=j;strcpy(st,cs[j]);}
if(p!=i)
{strcpy(st,cs[i]);brstrcpy(cs[i],cs[p]);brstrcpy(cs[p],st);br}
puts(cs[i]);
printf(“\n”);
c語言怎麼定義數組
首先雙擊啟動visual studio 2015,如果你使用的是其他版本的vs也是可以的。單擊「文件」-「新建」-「項目」,選擇visual c++,然後是「空項目」。
12怎麼下載visual studio2015及安裝教程
請點擊輸入圖片描述
單擊「解決方案資源管理器」,右鍵源文件-添加–新建項,選擇c++文件,最後單擊添加。
請點擊輸入圖片描述
第一種方法:
一維數組:
int arry1[10];
float arry2[100];
定義了2個一維數組,一個名為arry1的整形數組,有1個元素;arry2為實型數組,有100個元素,注意數組下標是從0開始的,不是從1開始,比如arry1的第一個數組為arry[0]不是arry[1]。
請點擊輸入圖片描述
對數組賦值或者部分賦值:
int x[5] = { 1,2,3,4,5 };
int x[5] = { 1,2,3,};
第一個表示x[0]=1,x[1]=2,x[2]=3,x[3]=4,x[4]=5;第二個表示對前三個元素賦值,後面的元素都為0,x[0]=1,x[1]=2,x[2]=3,x[3]=0,x[4]=0;
請點擊輸入圖片描述
二維數組:
一般形式:數組名[下標1][下標2],下標也是從0開始表示是第一個元素。比如:
int x[1][2];定義了一個名為x的整型的1行2列的二維數組。
請點擊輸入圖片描述
對二維數組賦值:
int x[2][2] = { {1,2},{3,4} };
表示x[0][0]=1,x[0][1]=2,x[1][0]=3,x[1][1]=4,x[0][0]表示第一行第一列,其他依次類推。
請點擊輸入圖片描述
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/152835.html