12.26练习总结

第一题:打印金字塔

题目描述:

输入n值,打印下列形状的金字塔,其中n代表金字塔的层数。

输入:

输入只有一个正整数n。

输出

打印金字塔图形,其中每个数字之间有一个空格。

样例输入

3

 

样例输出 

    1
  1 2 1
1 2 3 2 1

 解答如下:

#include
int main()
{
    int n,i,j,k;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        for(k=0;k1;j--)
        {
            printf("%d ",j);
        }
        if(i!=1)
        {
            printf("%d",j--);
        }
        printf("\n");
    }
    return 0;
}

第二题:分配小球

题目描述:现在有n个不同的小球,你需要选出m个小球,请问有多少种选择方案。

输入:

第一行输入一个整数 t (1 <= t <= 1e5) 代表询问次数。
第二行输入两个整数 n, m (1 <= m <= n <= 20) 

输出:

输出 t 行,每行输出一个整数代表对于一个n和m的选择方案。

 样例输入

3
2 1
3 2
4 2

样例输出 

2
3
6

其实就是简单的排列组合问题

代码如下:

#include

int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        long long int n,m;
        scanf("%lld %lld",&n,&m);
        long long int i,j,sum1=1,sum2=1;
        for(i=n;i>n-m;i--)
        {
            sum1=sum1*i;
        }
        for(i=1;i<=m;i++)
        {
            sum2=sum2*i;
        }
        j=sum1/sum2;
        printf("%lld\n",j);
    }
    return 0;
}

 第三题: 做串串题咯

 题目描述:

wcp学长非常喜欢字符串,于是乎他也想考考你是不是也学了串串,现在他给定你两个字符串s和t,如果t是s的子串(s包含t)则输出Yes,否则输出No

输入:

两个字符串s和t

输出:

Yes或No

 

样例输入

sss
s

样例输出 

Yes

 实际为字符串的包含问题。

代码如下:

#include
#include
int main()
{
    char s[1000],t[1000];
    scanf("%s",&s);
    getchar();
    scanf("%s",&t);
    getchar();
    int i,j=0,k1=0,k2=0;
    k1=strlen(s);
    k2=strlen(t);
    for(i=0; i

 第四题:智将点兵

题目描述

一位智将才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。 输入3个非负整数a,b,c ,表示每种队形排尾的人数(a<3,b<5,c<7),输出总人数的最小值(或报告无解)。已知总人数不小于10,不超过100 。

输入:

输入3个非负整数a,b,c ,表示每种队形排尾的人数(a<3,b<5,c<7)。例如,输入:2 4 5

输出:

输出总人数的最小值(或报告无解,即输出No answer)。实例,输出:89

样例输入 

2 1 6

样例输出 

41

 代码如下:

#include
int main()
{
    int m,n,k;
    scanf("%d %d %d",&m,&n,&k);
    int i;
    for(i=10;i<100;i++)
    {
        if(i%3==m)
        {
            if(i%5==n)
            {
                if(i%7==k)
                {
                    printf("%d",i);
                }
            }
        }
    }
    return 0;
}

第五题:黑色星期五

题目描述:

13号又是星期五是一个不寻常的日子吗? 13号在星期五比在其他日少吗?为了回答这个问题,写一个程序来计算在n年里13 日落在星期一,星期二......星期日的次数.这个测试从1900年1月1日到 1900+n-1年12月31日.n是一个非负数且不大于400. 这里有一些你要知道的: 1900年1月1日是星期一. 4,6,11和9月有30天.其他月份除了2月有31天.闰年2月有29天,平年2月有28天. 年份可以被4整除的为闰年(1992=4*498 所以 1992年是闰年,但是1990年不是闰年) 以上规则不适合于世纪年.可以被400整除的世纪年为闰年,否则为平年.所以,1700,1800,1900和2100年是平年,而2000年是闰年. 请不要预先算好数据!

输入:

一个整数n.

输出:

七个在一行且相分开的整数,它们代表13日是星期六,星期日,星期一.....星期五的次数.

样例输入 

20

样例输出 

36 33 34 33 35 35 34

 代码如下:

#include 

int fun(int year,int month)
{
	int days=0,i;
	if(year>1900)
	{
		for(i=1900;i=2)
	{
		for(i=1;i

你可能感兴趣的:(c语言,c语言,算法)