WY c语言入门 (6)

6.1.1 数组

如何记录输入的很多数字?

int number[100] 数组

 1 #include<stdio.h>
 2 
 3 int main()
 4 {
 5     int x;
 6     double sum = 0;
 7     int cnt = 0;
 8     int number[100];//引入数组
 9     scanf("%d", &x);
10     while ( x!= -1 ){
11         number[cnt] = x;//对数组赋值
12         sum += x;
13         cnt ++;
14         scanf("%d", &x);
15     }
16     if ( cnt > 0 ){
17         printf("%f\n", sum/cnt);
18         int i;//遍历数组
19         for ( i=0; i<cnt; i++){
20             if ( number[i] > sum/cnt){
21                 printf("%d\n", number[i]);
22             }
23         }
24     }
25     return 0;
26 } 


6.1.2 定义数组

类型 变量名称[元素数量];   数量为整数 下标索引从0开始

需保证只使用下标不越界[0,数组最大值-1 ]

越界提示 segmentation fault

 

6.1.3 例:统计个数

#include<stdio.h>

int main()
{
    const int number = 10;//数组大小 
    int x;
    int count[number];//定义数组 
    int i;
    
    for ( i=0; i<number; i++ ){
        
        count[i] = 0;
    }//初始化数组 
    scanf("%d", &x);
    while( x!= -1 ){
        if ( x>=0 && x<=9 ){
            count[x]++;
        }
        scanf("%d", &x);
    }
    for ( i=0; i<number; i++){
        printf("%d:%d\n", i, count[i]);
    }//遍历 
    return 0;
}

6.2.1 数组计算

搜索

数组的集成初始化

int a[] = {2,4,6,7,1,3,5,9,11,13,23,14,32};

数组大小 sizeof[a]/sizeof[a0]

数组的赋值 本身不可直接赋值 可用遍历(做遍历时 循环结束条件<值)

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

      b[i] = a[i];

}

数组传导参数 须引入另一参数

 

6.2.2 例:素数

 1 #include<stdio.h>
 2 int isprime(int x, int knownprimes[], int number0fknownprimes)
 3 {
 4     int ret = 1;
 5     int i;
 6     for ( i=0; i<number0fknownprimes; i++){
 7         if ( x % knownprimes[i] == 0){
 8             ret = 0;
 9             break;
10         }
11     }
12         return ret;
13 }
14 int main(void)
15 {   
16     const int number = 100;
17     int prime[number] = {2};
18     int count = 1;
19     int i =3;
20     while ( count < number ){
21         if ( isprime(i, prime, count)){
22             prime[count++] = i;
23         }
24         i++;
25     }
26     for ( i=0; i<number; i++ ){
27         printf("%d", prime[i]);
28         if( (i+1)%5 )printf("\t");
29         else printf("\n");
30 
31     } 
32     return 0;
33 }

构造素数表

构造n以内 素数表

开辟prime[n],初始化所有元素为1,prime[x]为1

令x = 2

如果x是素数 则对于(i=2;x*i<n;i++)令prime[i*x]=0

令x++ 如果x<n 重复 否则结束

 

6.2.2二维数组

int a[3][5]三行五列

遍历

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

    for ( j=0; j<5; j++){

    a[i][j] = i*j;}

}

初始化定义  int a[][5] = {

            {0,1,2,3,4},

            {2,3,4,5,6},

};

 

posted @ 2017-03-12 21:48  YS云澄  阅读(432)  评论(0编辑  收藏  举报