头歌实践教学平台C语言之一维数组和二位数组

第7关:杨辉三角

杨辉三角的代码参考了这个博主的文章:

(41条消息) C语言杨辉三角代码详解(超级详细,真的不进来看看吗?)_醒醒起来学习啦的博客-CSDN博客_杨辉三角c语言程序

题目描述:还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形:

头歌实践教学平台C语言之一维数组和二位数组_第1张图片

 输出

打印出杨辉三角图形的10行。格式见题目描述部分。每个整数后面接一个空格来分隔开整数

#include 
int main(void)
{
    int data[10][10];//定义一个二维数组
    for(int i=0;i<10;i++){
        for(int j=0;j<10;j++){
            data[i][j]=1;//该二维数组全部赋初值为1
        }
    }
    //处理中间的数据:从第3行第2列开始,当前数=上一行的数+上一行前面的数
    for(int k=1;k<10;k++){
        for(int p=1;p

 第6关:删除最大值

题目描述:输入10个互不相同的整数并保存在数组中,找到该最大元素并删除它,输出删除后的数组

#include
int main(void)
{
    /*********Begin*********/
    int a[10];

    for(int i=0;i<10;i++){
        scanf("%d",&a[i]);
    }
    int max=a[0],num=0;
    for(int i=0;i<10;i++){//找到最大值max,num
        if(a[i]>max){
            max=a[i];
            num=i;
        }
     }
     for(int i=num;i<9;i++){//删除最大值a[num]
        a[i]=a[i+1];
     }
    //输出数组
    for(int i=0;i<9;i++){
        printf("%d ",a[i]);
    }
    /*********End**********/
    return 0;
}

第5关:鞍点

题目描述:找出具有mn列二维数组Array的“鞍点”,即该位置上的元素在该行上最大,在该列上最小,其中1<=m,n<=10

输入

输入数据有多行,第一行有两个数mn,下面有m行,每行有n个数。

输出

按下列格式输出鞍点: Array[i][j]=x 其中x代表鞍点,ij为鞍点所在的数组行和列下标,我们规定数组下标从0开始。 一个二维数组并不一定存在鞍点,此时请输出None 我们保证不会出现两个鞍点的情况,比如:

#include
int main(void)
{
    /*********Begin*********/
    int m,n;
    scanf("%d %d",&m,&n);
    int a[m][n];
    //输入
    for(int i=0;iMAX){
                    MAX= a[i][j];
                    //printf("%d***\n",MAX);
                    row=i;
                    col=j;
                }
        }

        //判断该数是不是同一列最小的数
        int flag=0;
        for(int i=0;i

 第4关:二分查找

题目描述:将n个从小到大排序的整数(n<1000000)从1~n进行编号,并一个待查找的整数m,请使用二分法进行查找。

输入 输入包括3行,第一行为整数n,第二行包括n个整数,以空格分隔,第三行为整数m

输出 如果能够在序列中找到整数m,则输出编号(如果存在多个编号,返回编号最小的),如果不存在,则输出None

#include
int main(void)
{
    /*********Begin*********/
    int m,n,t;

    scanf("%d",&n);
    int a[n];
    for(int i=0;ia[j]){
                t=a[i];
                a[i] = a[j];
                a[j] = t;
            }
        }
    }
    scanf("%d",&m);

    int low=0;
    int high=n-1;
    while(1){
        int mid=(low+high)/2;
        if(a[mid]==m){
            printf("%d",mid+1);
            break;
        }else if(a[mid]m){
            high=mid-1;
        }
         if(low>high){
            printf("None");
            break;
        }

    }
    return 0;
}

 第3关:计算数组中元素的最大值及其所在的行列下标值

题目描述:按如下函数原型编程从键盘输入一个mn列的二维数组,然后计算数组中元素的最大值及其所在的行列下标值。其中mn的值由用户键盘输入。已知mn的值都不超过10

输入

输入数组大小:"%d,%d" 下面输入数组中元素。

输出

输出格式: 数组大小输入提示信息:"Input m, n:" 数组元素输入提示信息:"Input %d*%d array: " 输出格式:"max=%d, row=%d, col=%d"

头歌实践教学平台C语言之一维数组和二位数组_第2张图片 

#include
int main(void)
{
    /*********Begin*********/
    int m,n,col,row;
    printf("Input m, n:");
    scanf("%d,%d",&m,&n);
    int a[m][n];
    printf("Input %d*%d array:",m,n);
    for(int i=0;i=max){
                max= a[i][j];
                row=i+1;
                col=j+1;
            }
        }
    }
    printf("\nmax=%d, row=%d, col=%d",max,row,col);
    return 0;
}

 第2关:查找整数

题目描述:给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。

输入

第一行包含一个整数n。 第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。 第三行包含一个整数a,为待查找的数。

输出

如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1

样例输入:

6

1 9 4 8 3 9

9

样例输出:

2

提示: 数据规模与约定。 1 <= n <= 1000

#include
int main(void)
{
    /*********Begin*********/
    int a[10],n,b,c=0;
    scanf("%d",&n);
    for(int i=0;i

第1关:排序问题

本关任务:将十个数进行从大到小的顺序进行排列。

输入 输入十个整数。

输出 以从大到小的顺序输出这个十个数。

#include
int main(void)
{
    /*********Begin*********/
    int a[10],t;
    for(int i=0;i<10;i++){
        scanf("%d",&a[i]);
    }
    for(int i=0;i<10;i++){
        for(int j=i+1;j<10;j++){
            if(a[i]

你可能感兴趣的:(C语言练习题,c语言,开发语言)