2022年湖南科技大学大一上C语言期末考试

46 篇文章 23 订阅

问题 A: 考试谜之自信

时间限制: 1 Sec  内存限制: 128 MB

题目描述

走进考场,没有从前的紧张,反而莫名其妙、毫无逻辑的自我感觉良好,心态非常的傲娇,有种藐视一切他人的感觉。 
这或许就是我的“谜之自信”吧! 
翻开试卷,心中还在无数次默念:“相信自己,我肯定能通过本次考试!” 

输入

输入一个正整数n,n表示默念的次数。

输出

输出我默念的n次谜之自信狂语:“相信自己,我肯定能通过本次考试!”

样例输入

3

样例输出

相信自己,我肯定能通过本次考试!
相信自己,我肯定能通过本次考试!
相信自己,我肯定能通过本次考试!
#include <bits/stdc++.h>
 
typedef long long ll;
using namespace std;
 
int main()
{
    int n;
    cin >> n ;
    for (int i = 0 ; i < n ; i++) {
        cout << "相信自己,我肯定能通过本次考试!" << endl ;
    }
    return 0;
}
 
/**************************************************************
    Problem: 2318
    User: 21XXXXXXXX
    Language: C++
    Result: 正确
    Time:0 ms
    Memory:2024 kb
****************************************************************/

问题 B: 矩形块的面积

时间限制: 1 Sec  内存限制: 128 MB

题目描述

如图所示,数字表示矩形块4个角的位置号。其中,外层大矩形左上角标记为0,求内层某一黄色矩形块面积(4个角标记为1、2、3、4)
假设area(n,m)表示以n为左上角且以m为右下角的矩形块的面积area(n,m), 
则area(0,1)表示以0为左上角且以1为右下角的矩形块的面积(如绿色块所示),area(1,4)表示以1为左上角且以4为右下角的矩形块的面积(如黄色块所示)。 
现已知area(0,1)、area(0,2)、area(0,3)、area(0,4),求area(1,4)。 

 

输入

输入4个正整数,分别表示4个矩形块的面积area(0,1)、area(0,2)、area(0,3)和area(0,4)。

输出

输出area(1,4)的面积值。

样例输入

10 30 50 150

样例输出

80
#include <bits/stdc++.h>
 
typedef long long ll;
using namespace std;
 
int main()
{
    int A,B,C,D;
    cin >> A >> B >> C >> D ;
    cout << D - B - C + A ;
    return 0;
}
 
/**************************************************************
    Problem: 2301
    User: 21XXXXXXXX
    Language: C++
    Result: 正确
    Time:0 ms
    Memory:2024 kb
****************************************************************/

问题 C: 压缩编码的解码

时间限制: 1 Sec  内存限制: 128 MB

题目描述

输入一个字符串,字符串是一种简单的压缩编码,由正整数和字母交替组合而成。 
本题要求对该压缩编码进行解码并输出。 

输入

输入一个字符串,字符串由正整数和字母交替组合而成。例如:5a7b12C13d 

输出

输出解码后的结果。 
解码规则是:对于各个字母,输出指定次数,次数由字母左边的整数确定。 
例如若输入的压缩编码为5a7b12C13d,则解码后为aaaaabbbbbbbCCCCCCCCCCCCddddddddddddd。 其中,5a解码后对应5个a,7b解码后对应7个b,12C解码后对应12个C,13d解码后对应13个d。

样例输入

5a7b12C13d

样例输出

aaaaabbbbbbbCCCCCCCCCCCCddddddddddddd
#include <bits/stdc++.h>
 
typedef long long ll;
using namespace std;
 
int main()
{
    int a;
    char b;
    while (cin >> a >> b) {
        for (int i = 0 ; i < a ; i++) {
            cout << b ;
        }
    }
    return 0;
}
 
/**************************************************************
    Problem: 2303
    User: 21XXXXXXXX
    Language: C++
    Result: 正确
    Time:1 ms
    Memory:2024 kb
****************************************************************/

问题 D: 知识抢答赛

时间限制: 1 Sec  内存限制: 128 MB

题目描述

我院举行“青年知识大学习”知识抢答赛,总共50道抢答题。抢答规定,抢答对1题得3分,抢答错1题扣1分,不抢答得0分。小明参加了抢答比赛并抢答了其中20道题,要使最后得分不少于n分,求小明至少要答对多少题?

输入

输入想要得到的最低分数n。 
n是一个整数,可以是正值、0值或负值。 

输出

输出小明至少要答对的题数。 
若输入的最低分数不可能达到,输出”Score is error!"。 

样例输入

50

样例输出

18
#include <bits/stdc++.h>
 
typedef long long ll;
using namespace std;
 
int main()
{
    int n,a,ans,b,flag=1;
    cin >> n ;
    for (a = 0 ; a <= 20 && flag ; a++) {
        if (4*a>=n+20) {
            flag = 0 ;
            ans = a ;
            break ;
        }
    }
    if (flag || n < -20) {
        cout << "Score is error!" ;
    } else {
        cout << ans ;
    }
    return 0;
}
 
/**************************************************************
    Problem: 2304
    User: 21XXXXXXXX
    Language: C++
    Result: 正确
    Time:0 ms
    Memory:2024 kb
****************************************************************/

问题 E: 字符串模糊匹配

时间限制: 1 Sec  内存限制: 128 MB

题目描述

在字符串A中,按给定规则查找是否包含字符串B。 
查找时,不必追求精确匹配,而是采用模糊匹配,既可以查找一模一样的字符串,也可以查找接近的字符串。 
本题采用的模糊匹配规则是:对于字符串B中从左到右的各个字符,在字符串A中从左到右都能依次找到,即可视为查找成功。简单说来,就是字符串B若在字符串A中存在的话,各个字符可以分散分布,只是仍然要保持原来的顺序。 

输入

输入字符串A和字符串B。字符串仅由英文字母组成,长度不超过100000。

输出

输出模糊查找的结果。 
查找成功,输出"Congratulations!" 
查找失败,输出”Sorry!“ 

样例输入

qqbqqeqqsqqtyy
best

样例输出

Congratulations!
#include <bits/stdc++.h>
 
typedef long long ll;
using namespace std;
 
int main()
{
    char ch[100005],a[100005];
    int flag=1;
    scanf("%s",ch);
    scanf("%s",a);
    int l1=strlen(ch);
    int l2=strlen(a);
    if (l1 < l2) {
        cout << "Sorry!" ;
    } else {
        int temp=0;
        for (int i = 0 ; i < l1 ; i++) {
            if (ch[i] == a[temp]) {
                temp++ ;
            }
            if (temp == l2) {
                cout << "Congratulations!" ;
                flag=0;
                break ;
            }
        }
        if (flag) {
            cout << "Sorry!" ;
        }
    }
    return 0;
}
 
/**************************************************************
    Problem: 2302
    User: 21XXXXXXXX
    Language: C++
    Result: 正确
    Time:3 ms
    Memory:2100 kb
****************************************************************/

 

问题 F: 湖南省大学生程序设计竞赛团体名次(Ⅱ)

时间限制: 1 Sec  内存限制: 128 MB
提交: 712  解决: 618
[状态] [提交] [命题人:外部导入]

题目描述

湖南省大学生计算机程序设计竞赛每年举办一次,每校限4支队参赛,每支参赛队由3名队员组成,每队设1 名指导教师。其设置的团体总分奖以学校为单位计算团体总分,依次取前8名。团体总分是参赛学校所有参赛队正确解题数目的总和。如果多个学校正确解题数目相同,则根据学校所有参赛队伍解题总耗时间与不正确提交的惩罚时间之和从低到高排序。

湖南科技大学ACM集训队在2012年-2021年取得的团体成绩如下:

 

请提供查询功能,当输入一个年份时,输出该年份我校的团体总分成绩。

 

输入

仅一个整数,代表年份year。 (2012<=year<=2021)

输出

输出湖南科技大学在year年度取得的湖南省大学生计算机程序设计竞赛团体名次。

样例输入

2014

样例输出

4

#include <bits/stdc++.h>
 
typedef long long ll;
using namespace std;
 
int main()
{
    int n;
    cin >> n ;
    switch ( n ) {
    case 2012:
    case 2014:
        cout << "4" ;
        break ;
    case 2013:
        cout << "3" ;
        break ;
    case 2015:
    case 2017:
    case 2021:
        cout << "5" ;
        break ;
    case 2016:
    case 2018:
        cout << "6" ;
        break ;
    case 2019:
        cout << "9" ;
        break ;
    case 2020:
        cout << "2" ;
        break ;
    }
    return 0;
}
 
/**************************************************************
    Problem: 2309
    User: 21XXXXXXXX
    Language: C++
    Result: 正确
    Time:0 ms
    Memory:2024 kb
****************************************************************/

问题 G: 就业率(函数版)

时间限制: 1 Sec  内存限制: 128 MB

题目描述

每年毕业的大学生越来越多,就业也就成了大家关心的问题。今年,身为班主任的命题人就经常收到学院各班的就业对比信息。 
给定一个班级的人数和该班就业人数,问该班的就业率有多少?要求用函数求出就业百分比。 


本题要求实现函数int cal_employment_rate(int class_size, int employed),并且提交语言只能选择C(不能选C++).
该函数求出班级的就业百分比。注意只要求完成函数,不用写其他的代码。   


百分比只保留整数,小数部分四舍五入。下面给出几组数据:
 cal_employment_rate(30, 6) 应该返回20   
 cal_employment_rate(30, 7) 应该返回23 
 cal_employment_rate(30, 8) 应该返回27 

输入

输入包含两个整数class_size和employed,分别代表班级的人数和该班就业人数, 0<=employed <= class_size <= 50,  20<= class_size

输出

该班的就业百分比

样例输入

30  6

样例输出

20%
#include <stdio.h>
/****** begin ******/
// 你的函数实现位置
int cal_employment_rate(int class_size, int employed) {
    return employed*100.0/class_size + 0.5 ;
}
/******** end *******/


int main()
{
   int class_size, employed;

   scanf("%d%d", &class_size, &employed);
   printf("%d%%\n", cal_employment_rate(class_size, employed));
}

/**************************************************************
    Problem: 2308
    User: 21XXXXXXXX
    Language: C
    Result: 正确
    Time:0 ms
    Memory:1120 kb
****************************************************************/

问题 H: 质数个数

时间限制: 1 Sec  内存限制: 128 MB

题目描述

质数(Prime number,又称素数),指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个正因数的数)。 
我们这里的问题是区间[a,b]中有多少个质数? 

输入

输入仅一行, 两个整数a和b。 1<=a<=b<2000000000。 
80%的数据, b-a <= 1000,  
100%的数据, b-a<=1000000。 
大部分的同学只能得到80%的分数。 

输出

区间[a,b]中的质数个数。

样例输入

1 10

样例输出

4
#include <bits/stdc++.h>

typedef long long ll;
using namespace std;
int a[10005];
bool b[1000005];
int main(){
	int cnt=0,ans=0;
	ll L,R;
	for (int i = 2 ; i * i < 50001 ; i++) {
		if (!b[i]) {
			for (int j = i << 1 ; j < 50001 ; j += i) {
				b[j] = 1 ;
			}
		}
	}
	for (int i = 2 ; i < 50001 ; i++) {
		if (!b[i]) {
			a[cnt++] = i ;
		}
	}
	memset(b,0,sizeof(b)) ;
	cin >> L >> R ;
	for (int i = 0 ; i < cnt ; i++) {
		for (ll j = max(2ll,(L - 1)/a[i] + 1)*a[i] ; j <= R ; j += a[i]) {
			b[j - L] = 1 ;
		}
	}
	for (ll i = L ; i <= R ; i++) {
		if (b[i - L] == 0) {
			ans++ ;
		}
	}
	if (L == 1) {
		ans-- ;
	}
	cout << ans ;
	return 0;
}
##本代码不确定是正确答案

问题 I: 一元多项式

时间限制: 1 Sec  内存限制: 128 MB

题目描述

一元多项式f(x)=anxn +an-1xn-1+…+a2x2 +a1x+a0(an≠0), 给定各系数,输出多项式。

输入

输入由两行组成。
第一行是整数n(0<=n<=10),表示多项式的次数。
第二行是n+1个空格分开的整数,分别是an(an≠0), an-1,...,a2,a1,a0。
70%的数据n为2。如果不会, 专注处理n为2的情形可以得到70%的分数。

输出

输出对应的一元多项式。注意输出形式必须如中学教科书,如样例,系数1就不必输出。

样例输入

2
1 3 -1

样例输出

x^2+3x-1

提示

再给出一组样例: 
输入 
10
2 3 4 5 6 7 8 9 10 11 12 
输出 
2x^10+3x^9+4x^8+5x^7+6x^6+7x^5+8x^4+9x^3+10x^2+11x+12

#include <bits/stdc++.h>
 
typedef long long ll;
using namespace std;
 
int main()
{
    int a[20],n;
    cin >> n ;
    for (int i = n ; i >= 0 ; i--) {
        cin >> a[i] ;
    }
    if (n == 0) {
        cout << a[0] ;
    } else {
        for (int i = n ; i >= 0 ; i--) {
            if (a[i] > 0) {
                if (i==n) {
                    if (a[i] == 1) {
                        cout << "x^" << i ;
                    } else {
                        cout << a[i] << "x^" << i ;
                    }
                } else if (i == 0) {
                    if (a[i] == 1) {
                        cout << "+" << "1" ;
                    } else {
                        cout << "+" <<a[i] ;
                    }
                } else if (i == 1) {
                    if (a[i] == 1) {
                        cout << "+x" ;
                    } else {
                        cout << "+" << a[i] << "x" ;
                    }
                } else {
                    if (a[i] == 1) {
                        cout << "+" <<"x^" << i ;
                    } else {
                        cout << "+" << a[i] << "x^" << i ;
                    }
                }
            } else if (a[i] == 0) {
            } else{
                if (i==0) {
                    cout << a[i] ;
                } else if (i == 1) {
                    if (a[i] == -1) {
                        cout << "-x" ;
                    } else {
                        cout << a[i] << "x" ;
                    }
                } else {
                    if (a[i] == -1) {
                        cout << "-x^" << i ;
                    } else {
                        cout << a[i] << "x^" << i ;
                    }
                }
            }
        }
    }
    return 0;
}
 
/**************************************************************
    Problem: 2310
    User: 21XXXXXXXX
    Language: C++
    Result: 正确
    Time:0 ms
    Memory:2024 kb
****************************************************************/

问题 J: 分数运算(结构体函数版)

时间限制: 1 Sec  内存限制: 128 MB

题目描述

给出两个分数,要求用结构体表示分数,并要求用函数的形式实现分数的加法和乘法操作。

为了帮助同学们测试程序。下面给出了程序的主体结构。同学们只需要提交add和multiply两个函数的代码。 

输入

输入包括一行,形如"a/b+(或*)c/d",见样例。a,b,c,d均为正整数,a<b且c<d。 
加法和乘法各占50%的数据。只完成一个函数也可以拿到部分分数。
 

输出

给出分数操作的结果(保证结果小于1),要求是最简分数形式。

样例输入

1/2+1/6

样例输出

2/3
#include <stdio.h>

struct fraction{
    int numer; //分子
    int deno; //分母
};

/************begin*************************/
// 你的函数实现位置。只需提交函数的定义代码,并且提交语言只能选择C(不能选C++)
int GCD(int n ,int m) {
    if (n < m) {
        return GCD(m,n);
    }
    n %= m ;
    if (n == 0) {
        return m ;
    }
    return GCD(m,n);
}
int LCD(int n ,int m) {
    return n*m/GCD(n,m);
}
//功能一:同学们在此实现函数 struct fraction add(struct fraction x, struct fraction y); 分数x和y的加法操作,并返回结构
struct fraction add(struct fraction x, struct fraction y) {
    struct fraction temp;
 
    int m=LCD(x.deno,y.deno);
    int n=GCD(x.numer,x.deno);
 
    temp.numer = x.numer*m/x.deno + y.numer*m/y.deno ;
    temp.deno = m ;
    n=GCD(temp.numer,temp.deno);
    while (n != 1) {
        temp.numer /= n ;
        temp.deno /= n ;
        n=GCD(temp.numer,temp.deno);
    }
    return temp ;
}
 //功能二:同学们在此实现函数 struct fraction multiply(struct fraction *px, struct fraction *py) ;分数*px和*py的乘法操作,并返回结构
struct fraction multiply(struct fraction *px, struct fraction *py) {
    struct fraction temp;
    temp.numer = (px -> numer) * (py -> numer) ;
    temp.deno = (px -> deno) * (py -> deno) ;
    int n=GCD(temp.numer,temp.deno);
    while (n != 1) {
        temp.numer /= n ;
        temp.deno /= n ;
        n=GCD(temp.numer,temp.deno);
    }
    return temp ;
}
/**************end*******************/
int main()
{
  char op;
  struct fraction a, b, c;

  scanf("%d/%d%c%d/%d", &a.numer, &a.deno, &op, &b.numer, &b.deno);
  if(op == '+') {
    c = add(a, b);
  } else if(op == '*') {
    c = multiply(&a, &b);
  }
  printf("%d/%d\n", c.numer, c.deno);
  return 0;
}
/**************************************************************
    Problem: 2311
    User: 21XXXXXXXX
    Language: C
    Result: 正确
    Time:0 ms
    Memory:1120 kb
****************************************************************/
  • 8
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值