第七章:数组

【例7-1】调查电视节目受欢迎程度。

/* 投票情况统计 */
#include<stdio.h>
int main(void)
{
    int count[9];
    int i,response;

    for(i=1;i<=8;i++)
        count[i]=0;
    for(i=1;i<=1000;i++){
        printf("input your response:");
        scanf("%d",&response);
        if(response<1||response>8)
            printf("this is a bad response:%dd",response);
        else
            count[response]++;
    }

    printf("result:
");
    for(i=1;i<=8;i++)
        printf("%4d%4d
",i,count[i]);

    return 0;
}

【例7-2】利用数组计算裴波那契数列的前10个数,即1,1,2,3,5,...,55,并按每行打印5个数的格式输出。

/* 输入裴波那契数列 */
#include<stdio.h>
int main(void)
{
    int i;
    int fib[10]={1,1};

    for(i=2;i<10;i++)
        fib[i]=fib[i-1]+fib[i-2];

    for(i=0;i<10;i++){
        printf("%6d",fib[i]);
        if((i+1)%5==0)
            printf("
");
    }

    return 0;
}

【例7-3】顺序查找法。

/* 在数组中查找一个给定的数 */
#include<stdio.h>
int main(void)
{
    int i,flag,x;
    int a[5];

    printf("Enter 5 integers:");
    for(i=0;i<5;i++)
        scanf("%d",&a[i]);
    printf("Enter x:");
    scanf("%d",&x);
    flag=0;
    for(i=0;i<5;i++)
        if(a[i]==x){
            printf("Index is %d
",i);
            flag=1;
            break;
        }
     if(flag==0)
        printf("Not Found
");

    return 0;
}

【例7-4】输入一个正整数n(1<n<=10),再输入n个整数,将他们存入数组a中。

/* 找出数组的最小值和它所对应的下标 */
#include<stdio.h>
int main(void)
{
    int i,index,n;
    int a[10];

    printf("Enter n:");
    scanf("%d",&n);
    printf("Enter %d integers:",n);
    for(i=0;i<0;i++)
        scanf("%d",&a[i]);
    index=0;
    for(i=1;i<n;i++)
        if(a[i]<a[index])
            index=i;
        printf("min is %d
",a[index],index);

    return 0;
}

【例7-5】选择排序法。

/* 选择法排序 */
#include<stdio.h>
int main(void)
{
    int i,index,k,n,temp;
    int a[10];

    printf("Enter n:");
    scanf("%d",&n);
    printf("Enter%d integers:",n);
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    for(k=0;k<n-1;k++)
        index=k;
        for(i=k+1;i<n;i++){
            index=k;
            if(a[i]<a[index]) index=i;
        temp=a[index];
        a[index]=a[k];
        a[k]=temp;
    }
    printf("After sorted:");
    for(i=0;i<n;i++)
        printf("%d",a[i]);
    printf("
");

    return 0;
}

    

【例7-6】二分查找法。

/* 二分查找法 */
#include<stdio.h>
int main(void)
{
    int a[10]={1,2,3,4,5,6,7,8,9,10};
    int low,high,mid,n=10,x;

    printf("Enter x:");
    scanf("%d",&x);

    low=0;high=n-1;
    while(low<=high) {
        mid=(low+high)/2;
        if(x==a[mid])
            break;
        else if(x<a[mid])
            high=mid-1;
        else
            low=mid+1;
    }
    if(low<=high)
        printf("Index is%d
",mid);
    else
        printf("Not Found
");

    return 0;
}

【例7-7】将1个3*2的矩阵存入1个3*2的二维数组中,找出最大值以及他的行下标和列下标,并输出该矩阵。

/* 找出矩阵中的最大值的行下标和列下标 */
#include<stdio.h>
int main(void)
{
    int col,i,j,row;
    int a[3][2];

    printf("Enter 6 integers:
");
    for(i=0;i<3;i++){
        for(j=0;j<2;j++)
            printf("%4d",a[i][j]);
        printf("
");
    }

    row=col=0;
    for(i=0;i<3;i++)
        for(j=0;j<2;j++)
            if(a[i][j]>a[row][col]){
                row=i;
                col=j;
            }
        printf("max=a[%d][%d]=%d
",row,col,a[row][col]);

        return 0;
}
        

【例7-8】定义一个3*2的二维数组a数组元素的值由式给出,按矩阵的形式输出a。

/*按数组的形式输出二维数组*/
#include<stdio.h>
int main(void)
{
    int i,j;
    int a[3][2];

    for(i=0;i<3;i++)
        for(j=0;j<2;j++)
            a[i][j]=i+j;

        for(i=0;i<3;i++){
            for(j=0;j<2;j++)
                printf("%4d",a[i][j]);
            printf("
");
        }

    return 0;
}

【例7-9】输入一个整数n(1<n<=6),根据下式生成一个n*n的方阵,将该方阵转置(行列互换)后输出。

/* 方阵转置 */
#include<stdio.h>
int main(void)
{
    int i,j,n,temp;
    int a[6][6];

    printf("Enter n;");
    scanf("%d",&n);
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
            a[i][j]=i*n+j+1;

        for(i=0;i<n;i++)
            for(j=0;j<n;j++)
                if(i<=j){
                    temp=a[i][j];
                    a[i][j]=a[j][i];
                    a[j][i]=temp;
                }

    for(i=0;i<n;i++){
        for(j=0;j<n;j++)
            printf("%4d",a[i][j]);
        printf("
");
    }

    return 0;
}

【例7-10】定义函数.....

【例7-11】回文.....

/* 判断字符串是否是回文 */
#include<stdio.h>
int main(void)
{
    int i,n,m;
    char s[10];

    printf("Enter a string:");
    i=0;
    while((s[i]=getchar())!='
')
        i++;
    s[i]='';

    for(n=0,m=i-1;n<m;n++,m--)
        if(s[n]!=s[m])
            break;
    if(n>=m)
        printf("It is a plalindrome
");
    else
        printf("It is not a plalindrome
");

    return 0;
}

【例7-12】

#include<stdio.h>
int main(void)
{
    int i,number;
    char str[10];

    printf("Enter a string:");
    i=0;
    while((str[i]=getchar())!='
')
        i++;
    str[i]='';

    number=0;
    for(i=0;str[i]!='';i++)
        if(str[i]>='0'&& str[i]<='9')
            number=number*10+str[i]-'0';

    printf("digit=%d
",number);

    return 0;
}

【例7-13】

/* 统计字符串中数字字符的个数 */
#include<stdio.h>
int main(void)
{
    int count,i;
    char str[80];

    printf("Enter a string:");
    i=0;
    while((str[i]=getchar())!='n')
        i++;
    str[i]='';

    count=0;
    for(i=0;str[i]!='';i++)
        if(str[i]<='9' && str[i]>='0')
            count++;
    printf("count=%d
",count);

    return 0;
}

【例7-14】进制转换。

/* 进制转换 */
#include<stdio.h>
int main(void)
{
    int i,k;
    char str1[80],str2[80];
    long number;
    printf("Enter a string:");
    i=0;
    while((str1[i]=getchar())!='
')
        i++;
    str1[i]='';

    k=0;
    for(i=0;str1[i]!='';i++)
        if
    (str1[i]>='0'&&str1[i]<='9'||str1[i]>='a'&&str1[i]<='f'||str1[i]>='A'&&str1[i]<='F')
        {
            str2[k]=str1[i];
            k++;
        }
    str2[k]='';

    number=0;
    for(i=0;str2[i]!='';i++)
        if(str2[i]>='0'&&str2[i]<='9')
            number=number*16+str2[i]-'0';
        else if(str2[i]>='a'&&str2[i]<='f')
            number=number*16+str2[i]-'a'+10;
        else if(str2[i]>='A'&&str2[i]<='F')
            number=number*16+str2[i]-'A'+10;

    printf("New string:");
    for(i=0;str2[i]!='';i++)
        putchar(str2[i]);
    printf("
");
    printf("number=%ld
",number);

    return 0;

心得:C语言编程是一项需要耐心和细心的工作,要要学好必须充分了解C语言编程的要素,而敲那么多的代码和程序以来,感觉还没有完全理解,还需要再接再厉!

原文地址:https://www.cnblogs.com/zhangling213549/p/3356494.html