程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 簡單學C——第四天,第四天

簡單學C——第四天,第四天

編輯:關於C語言

簡單學C——第四天,第四天


數組

在學數組之前,有必要把前面的知識復習一遍,當然我的復習,僅僅只是提一下,而對於你,則應該認真的看一下前面的知識點,不懂可以百度,哈哈。

前面我們大致學了 1.定義變量,2.數據的輸入與輸出,3.判斷語句if...else if ...else  ,4.循環語句 while,do while,for 三種循環方式。

 

然而上面面講的都是廢話。。。下面開始講數組。

數組是什麼?數組是構造數據類型。很難懂嗎?說直白一點,數組就是很多個相同的數據類型的元素聚集在一起之後的結果。

當然,使用數組的時候,同樣需要定義它。還記得怎麼定義一個變量嗎?   現在,請定義一個整型變量a。如果你認真復習過前面的類容,相信可以很容易寫出來 int  a; 這樣的語句。那麼,我現在問,如何定義1000個整型變量,難道要取一千個變量名,諸如int a,b,c,d,e......;這樣嗎?那也太麻煩了吧。所以就出現了數組這一概念。數組的定義很方便,如下

#include<stdio.h>
int main()
{//定義了有一千個空間的整型變量
//此時在計算機中會開辟1000個整型大小的內存空間
//每個空間都可以表示一個整型變量
    int a[1000];
}

 上面的程序中就定義了一個大小為1000的整型數組。當然數組的出現就是為了輸入和存儲的方便。運用數組一般都與上一篇文章的循環相結合。

 

 1.從鍵盤中第一行輸入一個數字a,第二行輸入a個數字,按回車,然後出現每個數字加一的結果。

 代碼:

#include<stdio.h>
int main()
{
  //為防止出現n的值過大的情況,一般吧數組開的比較大
   int n,i,a[100000];
   scanf("%d",&n); //從鍵盤中輸入一個數
   for(int i=0;i<n;i++) 
   {//通過循環從鍵盤中輸入n個數
       scanf("%d",&a[i]);
    //i代表著數組的下標,數組下標從0開始
   }
   for(int i=0;i<n;i++)
   {
       a[i]+=1;//通過循環使數組中的每個數都加1
       //輸出結果
       printf("%d ",a[i]);
   }
   return 0;
}

運行結果

 當然用while循環也能做到如上操作,自己可以試試,此處就不再說明了。真正值得關注的是,1.數組必須提前說明開辟了多少的空間,並且要開的夠用。例如上題,如果第一行輸入的是n是1001

,很明顯,我只開了1000個空間,只能存放1000個數,這種現象稱為數組越界,程序雖然可以運行,不會報錯,但是是錯誤的。2.訪問數組存放的第一個數是0,即a[0]代表數組存放的第一個數,a[n-1]代表數組存放的最後一個數。3.數組空間是邏輯地址是連續的,即可以通過0~n-1來訪問數組中的所有的元素。

 

2.觀察這段數字 1,1,2,3,5,8,13,21... 發現規律,現在從鍵盤中輸入一個小於50的數m,按下回車,輸出數列中的第m個數。

可以看出,這個數的前兩數的和等於這個數。即  a(n)=a(n-1)+a(n-2) n>=3 

規律發現了,那麼用程序如何實現它:

#include<stdio.h>
int main()
{
 /*用數組來存放這個數列,
 因為已知前兩個數,就能知道下一個數
 ,所以可以用遞推的思想來求解*/
  int n,i,a[50];
  //數組的下標從0開始,
  a[0]=1;
  a[1]=1;
  for(i=2;i<=50;i++)
  {
      //遞推式
      a[i]=a[i-1]+a[i-2];
  }
  scanf("%d",&n);
  /*由於數組下標從0開始,a[0]即數列的第一個數
  所以第n個數是a[n-1].*/
  printf("%d",a[n-1]);
}

運行結果

 

3.不止語句是可以嵌套使用,數組同樣也可以,比如如果有兩個數組a[100],b[100]。如果b數組是一個整型數組,完全可以用b數組裡面的某個數數來表示a數組的下標,例如a[b[i]]; b[i]作為了a數組的下標.

 

不過數組用的比較多的不只是存數字,它還可以存字符,即字符數組,定義一個字符數組:char a[100];每一個空間可以存放一個字符,例如,'a','b','.'.'?','8'......等。此處需要區分字符數組與字符串的區別。字符串一般都有一個結束符‘\0’,放在存放的字符末尾.表示字符串的結束.例如我要存放"good,time",一共有九個字符,在數組中需要開辟10個空間,存放情況為'g','o','o','d',',','t','i','m','e','\0'.最後一個為結束符.並且對於字符數組的操作c定義了許多的庫函數,有些例如復制syrcpy,求長度strlen,比較strcmp函數都是很常用的,需要掌握它。

例題:從鍵盤中輸入一串字符串,無空格,把它倒著輸出出來

代碼:

#include<stdio.h>
//關於字符,庫函數所以需要的頭文件
#include<string.h>
int main()
{
    int i,l;
    char a[10000];
    //輸入字符串
    scanf("%s",a);
    //庫函數求字符串的長度
    l=strlen(a);
    //倒著輸出
    for(i=l-1;i>=0;i--)
        printf("%c",a[i]);
}

 

由於只想著能讓大家對c語言有一個簡單的整體的認識,並且限於個人水平,所以都寫的是一些比較基礎的東西。如想了解的更深入需要自己去下功夫。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved