牛客山东理工大学第四届新生赛思考与总结(C语言)

目录

牛客山东理工大学第四届新生赛思考与总结(C语言)

1.1正确代码:

1.2输出格式总结:

1.3char 字符串简介

1.4头文件介绍

2题目描述

2.1正确题解:

2.2if的用法解析

3.1正确题解:

4

4.1正确题解:

5.1正确题解:


牛客山东理工大学第四届新生赛思考与总结(C语言)

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网

1.AI 绘图是近期很流行的一种画图程序,它可以通过一些标签自动生成二次元图片,也可以给出图片来画新图片。每个标签可以通过花括号({})来设置权重,标签之间用逗号(,)分隔。

最近 Messywind 沉迷于 AI 绘图,他用的标签太多以至于统计不过来了,请你帮他输出每个标签的名称以及权重。

权重的定义为花括号的层数,若没有花括号权重为 000

输入描述:

第一行包含一个长度不超过 10310 ^ 3103 字符串 SSS

字符串只包含大小写英文字母、数字、{}、,、_,保证用逗号(,)分隔标签且行末无逗号(,)

数据保证每种标签只出现一次,无重复标签。

输出描述:

按标签的出现顺序输出 xxx 行,其中 xxx 为 SSS 中所有标签出现次数。

每行输出标签名称和标签权重,用空格分隔。

1.1正确代码:

C语言:kindred_ 提交的代码

提交时间:2022-11-24 15:38:27 语言:C 代码长度:340 运行时间: 2 ms 占用内存:296K运行状态:答案正确

#include <stdio.h>

#include <string.h> //C语言字符串函数

char s[10000];

int main()

{   char a;

    int n=0,i=0;

    scanf("%c",&a);  //1.2输出格式总结:

    for(;a!='\n';)//

    {  

        if(a=='{')   //字符串只包含大小写英文字母、数字、{}、,、_,保证用逗号(,)           分隔标签且行末无逗号(,)

            n++;

        else if(a==',')

        {   printf("%s %d\n",s,n);

            memset(s,'\0',size of(s));

            i=0;

            n=0;

        }

        else if(a!='}')

        {   s[i]=a;

            i++;

        }

        scanf("%c",&a);

    }

    printf("%s %d\n",s,n);

    return 0;

}

1.2输出格式总结:

%a(%A) 浮点数、十六进制数字和p-(P-)记数法(C99)

%c 字符

%d 有符号十进制整数

%f 浮点数(包括float和doulbe)

%e(%E) 浮点数指数输出[e-(E-)记数法]

%g(%G) 浮点数不显无意义的零"0"

%i 有符号十进制整数(与%d相同)

%u 无符号十进制整数

%o 八进制整数 e.g. 0123

%x(%X) 十六进制整数0f(0F) e.g. 0x1234

%p 指针

%s 字符串

1.3char 字符串简介

在C 语言中,除了前面介绍的int 整型、float / double 浮点数、bool 值….等等,char 字符串也是一种非常重要的数据类型;

字符串:一般用一对双引号””括起的一串字符来表示字符串常量,字符串默认以转义字符 \0 结尾,字符串常量是不可被修改的,如:

"Hello!"、"\aWarning!\a"、"123abc\n"、""

1.4<string.h>头文件介绍

 

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网

2题目描述

众所周知,2021 年 6 月的星空杯决赛,MDY 战队的卡莎在决赛圈完成了 1v3 的精彩操作。看过这场比赛后,sty 每次 1v3 时都会大喊:“我要易大山了!我要易大山了!易大山!”。

现在给出一局游戏决赛圈的的击杀记录和 sty 使用的游戏 ID,请你判断 sty 是否完成了一打三。由于决赛圈可能存在多支三人小队,为简化问题,存在以下两个特殊规则:
1. 只要 sty 完成了三次击杀且无论最终是否阵亡,都认为他完成了一打三。
2. 由于重生的 bug 实在是太多了。即使 sty 被击杀后,他击杀其他人仍视为有效击杀。

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网

输入描述:

 第一行为一个整数 NNN,代表有 NNN 条击杀记录。

 第 222 至 N+1N+1N+1 行为一行字符串,代表击杀记录。

 第 N+2N + 2N+2 行为一行字符串,代表 sty 使用的游戏 ID。

 格式如下:

3

PlayerName kill PlayerName

PlayerName kill PlayerName

PlayerName kill PlayerName

ID

 题目保证 N≤20N \le 20N≤20,PlayerName 和 ID 均为长度不超过 10510 ^ 5105 且仅由字母、数字、下划线组成的非空字符串。

  

输出描述:

如果 sty 完成了一打三,输出 yidashan!,否则输出 kexi

2.1正确题解:

#include<stdio.h>

#include<string.h>

#include<math.h> //调用数学库

char e[100005],a[20][100001];

int main(){

    int n,flag=0;

    char d;

    scanf("%d",&n);

    d=getchar(); //字符串存入d中

    for(int i=0;i<n;i++){

        scanf("%s kill %s",a[i],e); //%s 对应输入字符串

    }

    scanf("%s",e);

    for(int i=0;i<n;i++){

        if(!strcmp(a[i],e)) flag++;//strcmp比较两个字符串的大小,一个字符一个字符比较,按ASCLL码比较

    }

    if(flag>=3) printf("yidashan!\n");

    else printf("kexi\n");

    return 0;

}

2.2if的用法解析

CSDN

当我们要写多条语句时,要用到{},将代码括起来。

if (表达式)

   语句1;

else

   语句2;

#include <stdio.h>

int main()

{

    int age = 0;

    scanf("%d", &age);

    if (age < 18)

    {

        printf("未成年\n");

    }

    else

    {

        printf("成年\n");

    }

②//多分支

if (表达式1)

       语句1;

else if (表达式2)3.

       语句2;

else

       语句3;

#include <stdio.h>

int main()

{

    int age = 0;

    scanf("%d", &age);

    if (age < 18)

    {

        printf("少年\n");

    }

    else if (age >= 18 && age < 30)

    {

        printf("青年\n");

    }

    else if (age >= 30 && age < 50)

    {

        printf("中年\n");

    }

    else if (age >= 50 && age < 80)

    {

        printf("老年\n");

    }

    else

    {

        printf("老寿星\n");

    }

}

多分支语句:

从上到下依次判断,若符合 if 条件,就执行if下面的语句;若不符合 if ,就看是否满足下一条 else if 的条件;

直到找出符合条件的为止,若所有条件都不符合,就执行 else 的语句。

3

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网

因为 Bulbul 太喜欢说 666 了,yuyansheng 释放了一个魔法,使他忘记了数字 666 的存在。

所以,他在数数的时候会跳过所有包含数字 666 的数,如果让 Bulbul 说出从 111 开始的前十个数字,他会大声喊出: 1 2 3 4 5 7 8 9 10 11 。他说的 777 实际上是 666 , 888 实际上是 777 ,以此类推。

zzk 可以解开这个魔法,条件是 Bulbul 说出一个数字 xxx zzk 可以立刻说出实际上 xxx 是多少,但是 zzk 太笨了,无法立刻说出这是几,所以向聪明的你寻求帮助。

请你编写一个程序,来帮助 zzk 和 Bulbul 解除 yuyansheng 的魔法吧!

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网

输入描述:

第一行为一个整数 NNN (1≤N≤104)(1 \le N \le 10 ^ 4)(1≤N≤104),代表 Bulbul 说出的数的个数。

第二行至第 N+1N + 1N+1 行每行包含一个整数 xix_ixi​ (1≤xi≤106)(1 \le x_i \le 10 ^ 6)(1≤xi​≤106),代表 Bulbul 说出的数字,保证 xix_ixi​ 中不包含 666

输出描述:

输出共 NNN 行。

第 iii 行表示 xix_ixi​ 实际上对应的数字。

3.1正确题解:

#include<stdio.h>

int main()

{

    int N;

    scanf("%d",&N);

   int num[1000001]={0};

    int i,t;

    for(i=1;i<=1000000;i++)

    {

        int a=i;

        int b=1;

        while(a)

        {

            if(a%10==6)

                b=0;

            a/=10;

        }

        num[i]=num[i-1]+b;

    }

     

    for(i=0;i<N;i++)

    {

        scanf("%d",&t);

        printf("%d\n",num[t]);

    }

4

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网

题目描述

yxlxszx 作为知名 OP,每天都花非常多的时间刷圣遗物,希望能让自己心爱的角色早点毕业。作为一个极度自律的人,yxlxszx 每天至少要刷 nnn 次副本,一共有 mmm 个副本。每个副本只能刷一次。但是 yxlxszx 最近 212121 抽抽到了一命小草神,喜出望外导致大脑宕机,你能帮帮 yxlxszx 数一数,他有多少种不同的刷副本方案?

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网

输入描述:

第一行包含两个整数 n,mn,mn,m (1≤n≤m≤60)(1≤n≤m≤60)(1≤n≤m≤60) 表示每天至少要刷的副本次数和所有的副本个数。

输出描述:

输出一个整数,表示不同的刷副本方案。

4.1正确题解:

#include <stdio.h>

int main()

{

    long long m,n,sum=0,c[61];

    c[0] = 1;

    scanf("%lld%lld",&m,&n);

    for(long long i = 1;i<= n;i++)

    {

        c[i] = c[i-1] * (n - i + 1) / i;

    }

    for(int i = m;i <= n;i++)

    {

        sum += c[i];

    }

    printf("%lld",sum);

    return 0;

}

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网

示例1

输入  

114514

输出 

8

示例2

输入

1092718960

输出

40

示例3

输入

23333333333

输出

2

5.1正确题解:

#include<stdio.h>

int main()

{

    long long n, i, ans = 0;

    scanf("%lld", &n);

    for (i = 1; i*i <= n; i++)

    if (n % i == 0)

    {

        ans++;

     if(n/i!=i)

         ans++;

    }

    printf("%lld", ans);

    return 0;

}

仅上传了几道自己思考过后的题,如有错误,欢迎各位指正!

以下附上此次比赛完整题目:

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时雨h

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值