2021-11-25学习总结

今天做了一些题目。个人认为可以记录下来的有这些:

一、输出杨辉三角形(要求输出前10行)

经对杨辉三角形的观察,其各行的系数有以下的规律:

1.各行第1个数都是1。

2.各行最后一个数都是1。

3.从第3行起,除上面指出的第1个数和最后一个数外,其余各数是上一行同列和前一列两个数之和。可以这样表示:a[i][j]=a[i-1][j]+a[i-1][j-1]。其中,i为行数,j为列数。

程序如下:

#include<stdio.h>
int main()
{
    int a[20][20];
    int i,j;
    for(i=0;i<10;i++)
    {
        a[i][i]=1;                          //使对角线元素的值为1
        a[i][0]=1;                          //使第1列元素的值为1
    }
    for(i=2;i<10;i++)                       //从第3行开始处理
    {
        for(j=1;j<=i-1;j++)
        {
            a[i][j]=a[i-1][j-1]+a[i-1][j];
        }
    }
    for(i=0;i<10;i++)
    {
        for(j=0;j<=i;j++)
        {
            printf("%5d",a[i][j]);          //输出数组各元素的值
        }
        printf("\n");
    }
    return 0;
}

若要输出前n行,只需将10改为所要求的n,将n输入即可。

本人的程序可能较为繁琐,还望指教。

二、YRZ学长的随机数

描述

YRZ学长想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助YRZ学长完成“去重”与“排序”的工作。

格式

输入格式

输入数据有2行,第1行为1个正整数,表示所生成的随机数的个数:N

第2行有N个用空格隔开的正整数,为所产生的随机数。

输出格式

输出有2行,第1行为1个正整数M,表示不相同的随机数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。

样例

样例输入 Copy

10
20 40 32 67 40 20 89 300 400 15

样例输出 Copy

8
15 20 32 40 67 89 300 400

 代码如下:

#include<stdio.h>
int main()
{
    int a[1100]= {0};
    int i,t,n,c=0;
    scanf("%d",&n);
    for(i=0; i<n; i++)        //使用桶排法来记录各数出现的次数,同时进行去重
    {
        scanf("%d",&t);
        if(a[t]<1)
        {
            a[t]++;
            c=c+1;
        }
    }
    printf("%d\n",c);
    for(i=0; i<=1000; i++)    //按升序输出各数
    {
        if(a[i]>0)
        {
            printf("%d ",i);
            a[i]--;
        }
    }
    return 0;
}

三、

 

这个题目卡了我较长时间,终于在老师、学长、同学的帮助下做出来了。

代码如下:

#include<stdio.h>
int main()
{
    int a[3]= {0},b[3]= {0};
    int n,i,j,k,max,min;
    scanf("%d",&n);
    for(i=0; i<n; i++)
    {
        for(j=0; j<3; j++)
        {
            scanf("%d",&a[j]);
        }
        max=a[0];                  //假设一个最大值
        k=1;
        if(max==a[1])              //统计max出现的次数
            k++;
        else if(max<a[1])
            max=a[1];
        if(max==a[2])
            k++;
        else if(max<a[2])
            max=a[2];
        if(a[0]==max&&k==1)       //根据各数情况给数组b赋值
            b[0]=0;
        else if(a[0]==max&&k>1)
            b[0]=1;
        else
            b[0]=max-a[0]+1;
        if(a[1]==max&&k==1)
            b[1]=0;
        else if(a==max&&k>1)
            b[1]=1;
        else
            b[1]=max-a[1]+1;
        if(a[2]==max&&k==1)
            b[2]=0;
        else if(a==max&&k>1)
            b[2]=1;
        else
            b[2]=max-a[2]+1;
        for(k=0; k<3; k++)        //输出结果
            printf("%d ",b[k]);
        printf("\n");
    }
    return 0;
}

 代码比较多,如有可以1完善的地方还请指教。

四、 LeeLdler的小黑盒

描述

LeeLdler有一个小黑盒,小黑盒里面有n个小球,每个小球的编号为1到n,所以每个小球都不一样。LeeLdler打算从小盒里直接摸m个球,问摸到的球有多少种情况。
例如一共有四个球,LeeLdler摸两个,可能摸到1 2,1 3,1 4,2 3,2 4,3 4六种情况。

格式

输入格式

多组输入,对于每组数据输入为一行,输入n,m以一个空格隔开。1<=m<=n<=10。

输出格式

输出有多少种情况。

样例

样例输入 Copy

4 2

样例输出 Copy

6		

个人思路:

这个题目可以用高中知识解答,代码比较简洁。

代码如下:

#include <stdio.h>
int main()
{
    int n,m,i,j;
    int s;
    while(scanf("%d%d",&n,&m)!=EOF)    //多组输入
    {
        s=1;
        for(i=n,j=1; j<=m; i--,j++)    //运用到高中的排列组合
        {
            s=s*i/j;
        }
        printf("%d\n",s);
    }
}

 五、 Petya and Strings

Little Petya喜欢礼物。 他的妈妈送给他两个长度相同的字符串作为礼物。 字符串由大写和小写字母组成。 现在Petya想按字典序比较这两个字符串。 但是字母的大小写无关紧要,即大写字母被认为等同于相应的小写字母。 请帮助Petya执行比较。

Input

每个测试点包含两行字符串,长度为1 to 100 .保证长度相等且包含大小写字母

Output

如果第一行小于第二行,输出 "-1". 如果第二行小于第一行,输出"1". 如果相等,输出"0".注意比较时要忽略字母的大小写

Examples

Input

aaaa
aaaA

Output

0

Input

abs
Abz

Output

-1

Input

abcdefg
AbCdEfF

Output

1

代码如下:

#include<stdio.h>
#include<string.h>
int main()
{
    char str1[110],str2[110];
    scanf("%s",str1);
    scanf("%s",str2);
    strlwr(str1);
    strlwr(str2);                  //将str1,str2全部转化为小写字母组成的字符串
    if(strcmp(str1,str2)>0)
        printf("1");
    else if(strcmp(str1,str2)<0)
        printf("-1");
    else
        printf("0");
}

这些代码可能还有许多的不足之处,还望斧正。

おすすめ

転載: blog.csdn.net/qq_62531911/article/details/121538671