zoukankan      html  css  js  c++  java
  • 中国大学MOOC-翁恺-C语言程序设计习题集 08-2 到 10-2

    08-2. 求矩阵的局部极大值(15)

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    徐镜春(浙江大学)

    给定M行N列的整数矩阵A,如果A的非边界元素A[i][j]大于相邻的上下左右4个元素,那么就称元素A[i][j]是矩阵的局部极大值。本题要求给定矩阵的全部局部极大值及其所在的位置。

    输入格式:

    输入在第1行中给出矩阵A的行数M和列数N(3<=M,N<=20);最后M行,每行给出A在该行的N个元素的值。数字间以空格分隔。

    输出格式:

    每行按照“元素值 行号 列号”的格式输出一个局部极大值,其中行、列编号从1开始。要求按照行号递增输出;若同行有超过1个局部极大值,则该行按列号递增输出。若没有局部极大值,则输出“None 总行数 总列数”。

    输入样例1:
    4 5
    1 1 1 1 1
    1 3 9 3 1
    1 5 3 5 1
    1 1 1 1 1
    
    输出样例1:
    9 2 3
    5 3 2
    5 3 4
    
    输入样例2:
    3 5
    1 1 1 1 1
    9 3 9 9 1
    1 5 3 5 1
    
    输出样例2:
    None 3 5
    
    代码:
    //08-2
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    int main()
    {
        int m,n,i,j;
        int a[21][21];
        scanf("%d%d",&m,&n);
        for(i=0;i<m;i++)
        {
            for(j=0;j<n;j++)
                scanf("%d",&a[i][j]);
        }
        int flag=0;
        for(i=1;i<m-1;i++)
        {
            for(j=1;j<n-1;j++)
            {
                if(a[i][j]>a[i-1][j]&&a[i][j]>a[i+1][j]&&a[i][j]>a[i][j-1]&&a[i][j]>a[i][j+1])
                {
                    flag=1;
                    printf("%d %d %d
    ",a[i][j],i+1,j+1);
                }
            }
        }
        if(flag==0)
        {
            printf("None %d %d
    ",m,n);
        }
        return 0;
    }

    08-3. 组个最小数 (20)

    时间限制
    100 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    CAO, Peng

    给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如:给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558。

    现给定数字,请编写程序输出能够组成的最小的数。

    输入格式:

    每个输入包含1个测试用例。每个测试用例在一行中给出10个非负整数,顺序表示我们拥有数字0、数字1、……数字9的个数。整数间用一个空格分隔。10个数字的总个数不超过50,且至少拥有1个非0的数字。

    输出格式:

    在一行中输出能够组成的最小的数。

    输入样例:
    2 2 0 0 0 3 0 0 1 0
    
    输出样例:
    10015558
    代码:
    //08-3
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    int main()
    {
        int num,i,j,a[20];
        for(i=0;i<10;i++)
        {
            scanf("%d",&num);
            a[i]=num;
        }
        for(i=0;i<10;i++)
        {
            if(a[i]!=0)
            {
                if(i!=0)
                {
                    printf("%d",i);
                    a[i]--;
                    break;
                }
            }
        }
        for(i=0;i<10;i++)
        {
            if(a[i]!=0)
            {
                for(j=1;j<=a[i];j++)
                {
                    printf("%d",i);
                }
            }
        }
        printf("
    ");
        return 0;
    }
    

    10-0. 说反话 (20)

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    CHEN, Yue

    给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

    输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。

    输出格式:每个测试用例的输出占一行,输出倒序后的句子。

    输入样例:
    Hello World Here I Come
    
    输出样例:
    Come I Here World Hello
    代码:
    //10-0
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    int main()
    {
        char a[100];
        int b[100];
        gets(a);
        int len=strlen(a),i,j,k=0,flag=0;
        for(i=0;i<len;i++)
        {
           if(a[i]==' ')
              b[flag++]=i;
        }
        for(i=len-1;i>=0;i--)
        {
            for(j=b[flag-1]+1;flag-1>=0&&j<=i;j++)
            {
                printf("%c",a[j]);
            }
            if(flag!=0)
            {
                printf(" ");
            }
            if(flag==0)
            {
                for(j=0;j<=i;j++)
                    printf("%c",a[j]);
                break;
            }
            i=b[flag-1];
            flag--;
        }
        printf("
    ");
        return 0;
    }

    10-1. 在字符串中查找指定字符(15)

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    白洪欢(浙江大学)

    输入一个字符串S,再输入一个字符c,要求在字符串S中查找字符c。如果找不到则输出“Not found”;若找到则输出字符串S中从c开始的所有字符。

    输入格式:

    输入在第1行中给出一个不超过80个字符长度的、以回车结束的非空字符串;在第2行中给出一个字符。

    输出格式:

    在一行中按照题目要求输出结果。

    输入样例1:
    It is a black box
    b
    
    输出样例1:
    black box
    
    输入样例2:
    It is a black box
    B
    
    输出样例2:
    Not found
    代码:
    //10-1
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    int main()
    {
        char s[10000],ch;
        gets(s);
        ch=getchar();
        int len=strlen(s),i,j,flag=0;
        for(i=0;i<len;i++)
        {
            if(s[i]==ch)
            {
                for(j=i;j<len;j++)
                {
                    flag=1;
                    printf("%c",s[j]);
                }
                break;
            }
        }
        if(flag==0)
        {
            printf("Not found
    ");
        }
        return 0;
    }
    

    10-2. 删除字符串中的子串(20)

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    白洪欢(浙江大学)

    输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。

    输入格式:

    输入在2行中分别给出不超过80个字符长度的、以回车结束的2个非空字符串,对应S1和S2。

    输出格式:

    在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。

    输入样例:
    Tomcat is a male ccatat
    cat
    
    输出样例:
    Tom is a male 
    代码:
    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        char *p;
        char s1[81],s2[81],temp[81]={0};
        gets(s1);
        gets(s2);
    
        while((p = strstr(s1,s2)) != NULL){                 //指针指向s1中匹配s2的地方
            *p = '';                                      //截掉s1指针后面的内容
            strcat(temp,s1);                                //在temp后面粘贴s1
            strcat(temp,p+strlen(s2));                      //把指针后移s2的长度,在temp后面粘贴指针所指向的数组
            strcpy(s1,temp);                                //把temp内容赋给s1
            temp[0]='';                                   //清空temp数组
        }
    
        printf("%s
    ",s1);
        return 0;
    }

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    随机数生成程序代码( 伪随机<stdlib.h> )
    C++的学习 (此博客将一直补充更新下去,C++语法方面的内容不开新随笔了, *【语法学习】)
    sdut oj 1510 Contest02-4 Spiral
    POJ 2017 Speed Limit (直叙式的简单模拟 编程题目 动态属性很少,难度小)
    JavaWeb-入门第一课-1.静态web动态web 2.web服务器 3.下载和安装Tomcat-web服务器
    java小知识,驼峰规则
    亚马逊 协同过滤算法 Collaborative filtering
    第一个JSP程序
    物理学步入禅境:缘起性空
    人既然知道努力就可以进步,为什么还是会不努力?
  • 原文地址:https://www.cnblogs.com/Tobyuyu/p/4965267.html
Copyright © 2011-2022 走看看