• 第七章:数组


    【例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语言编程的要素,而敲那么多的代码和程序以来,感觉还没有完全理解,还需要再接再厉!

  • 相关阅读:
    JAVA中==与equals的区别
    spring面试重点
    struts2
    每个新手程序员必看的 SQL 指南
    QueryRunner的使用
    jquery GET POST
    jquery添加元素
    jquery 滑动动画
    jdbc 安装驱动
    为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
  • 原文地址:https://www.cnblogs.com/zhangling213549/p/3356494.html
Copyright © 2020-2023  润新知