CPP2022-30-期末模拟测试03

 

 

 

6-1 引用作函数形参交换两个整数

分数 5

全屏浏览题目

切换布局

作者 李廷元

单位 中国民用航空飞行学院

设计一个void类型的函数Swap,该函数有两个引用类型的参数,函数功能为实现两个整数交换的操作。

裁判测试程序样例:

 

#include <iostream> using namespace std; /* 请在这里填写答案 */ int main() { int a, b; cin >> a >> b; Swap(a, b); cout << a << " " << b << endl; return 0; }

输入样例:

3 5

输出样例:

5 3
void Swap(int &a,int &b)
{
    int temp=a;
    a=b;
    b=temp;
}

 

6-2 小写转大写

分数 5

全屏浏览题目

切换布局

作者 李祥

单位 湖北经济学院

C语言标准函数库中包括 toupper 函数,用于将小写字母转换为大写字母。作为练习,我们自己编写一个功能与之相同的函数。

函数原型

 

char ToUpper(char x);

说明:参数 x 是任意字符的 ASCII 码。若 x 是小写字母的 ASCII 码,则函数值为对应大写字母的 ASCII 码,否则函数值与 x 相同。

裁判程序

 

#include <stdio.h> int IsLower(char x); char ToUpper(char x); int main() { char a, b; a = getchar(); b = ToUpper(a); putchar(b); putchar('\n'); return 0; } /* 你提交的代码将被嵌在这里 */

提示:利用前面作业中编写的 IsLower 函数判断小写字母。

输入样例1

k

输出样例1

K

输入样例2

W

输出样例2

W

输入样例3

!

输出样例3

!

关联习题:判断小写字母

char ToUpper(char x)
{
    if(IsLower(x))
    {
        return x-'a'+'A';
    }
    else
    {
        return x;
    }
}

 

6-3 求字符串长度

分数 5

全屏浏览题目

切换布局

作者 王和兴

单位 东北大学秦皇岛分校

本题要求实现一个函数,计算所给出字符串的长度。

函数接口定义:

 

int StrLen ( const char *str );

裁判测试程序样例:

 

#include <iostream> using namespace std; int main() { int StrLen(const char *str ); char a[1024]; gets(a); int n = StrLen(a); cout<<n<<endl; return 0; } /* 请在这里填写答案 */

输入样例:

在这里给出一组输入。例如:

abcd

输出样例:

在这里给出相应的输出。例如:

4
int StrLen ( const char *str )
{
    int n=0;
    while(str[n]!='\0')
    {
        n++;
    }
    return n;
}

 

6-4 使用类计算矩形的面积

分数 10

全屏浏览题目

切换布局

作者 李廷元

单位 中国民用航空飞行学院

定义并实现一个矩形类,有长和宽两个属性,由成员函数计算矩形的面积。

矩形类Rectang接口定义如下:

 

class Rectangle { public: void setLength(int l);//设置矩形的长度 void setWidth(int w); //设置矩形的宽度 int getArea(); //计算并返回矩形的面积 private: int length, width; //矩形的长度和宽度 };

请实现Rectangle类的成员函数。

裁判测试程序样例:

 

#include <iostream> using namespace std; class Rectangle { public: void setLength(int l);//设置矩形的长度 void setWidth(int w); //设置矩形的宽度 int getArea(); //计算并返回矩形的面积 private: int length, width; //矩形的长度和宽度 }; int main() { Rectangle r; int len, w; cin >> len >> w; r.setLength(len); r.setWidth(w); cout << r.getArea() << "\n"; return 0; } /* 你的代码将嵌在这里 */

输入样例:

10 20

输出样例:

200
void Rectangle::setLength(int l)
{
    length=l;
}
void Rectangle::setWidth(int w)
{
    width=w;
}
int Rectangle::getArea()
{
    return length*width;
}

 

7-1 分段函数

分数 10

全屏浏览题目

切换布局

作者 王和兴

单位 东北大学秦皇岛分校

按照要求计算下列分段函数y的值。

y=⎩⎨⎧​2x−14x−53x+5​​(x<2)(2≤x<10)(x≥10)​

输入格式:

在一行中给出整数x。

输出格式:

在一行中按“y=result”的格式输出,其中result计算结果。结尾有换行。

输入样例:

在这里给出一组输入。例如:

3

输出样例:

在这里给出相应的输出。例如:

y=7

 

#include<bits/stdc++.h>
using namespace std;
int main()
{
    double x;
    cin>>x;
    if(x<2)
    {
        cout<<"y="<<2*x-1;
    }
    else if(x>=10)
    {
        cout<<"y="<<3*x+5;
    }
    else
    {
        cout<<"y="<<4*x-5;
    }
    return 0;
}

7-2 统计字符

分数 10

全屏浏览题目

切换布局

作者 颜晖

单位 浙大城市学院

本题要求编写程序,输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。

输入格式:

输入为10个字符。最后一个回车表示输入结束,不算在内。

输出格式:

在一行内按照

letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数

的格式输出。

输入样例:

aZ &
09 Az

输出样例:

letter = 4, blank = 3, digit = 2, other = 1
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int cnt_e=0,cnt_b=0,cnt_n=0,cnt_o=0;
    for(int i=0;i<10;i++)
    {
        char ch;
        ch=getchar();
        if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
        {
            cnt_e++;
        }
        else if(ch==' '||ch=='\n')
        {
            cnt_b++;
        }
        else if(ch>='0'&&ch<='9')
        {
            cnt_n++;
        }
        else
        {
            cnt_o++;
        }
    }
    cout<<"letter = "<<cnt_e<<", blank = "<<cnt_b<<", digit = "<<cnt_n<<", other = "<<cnt_o;
    return 0;
}

 

7-3 冒泡法排序之过程

分数 10

全屏浏览题目

切换布局

作者 颜晖

单位 浙大城市学院

本题要求使用冒泡法排序,将给定的n个整数从小到大排序后输出,并输出排序过程中每一步的中间结果。

冒泡排序的算法步骤描述如下:

第1步:在未排序的n个数(a[0]〜 a[n−1])中,从a[0]起,依次比较相邻的两个数,若邻接元素不符合次序要求,则对它们进行交换。本次操作后,数组中的最大元素“冒泡”到a[n−1];

第2步:在剩下未排序的n−1个数(a[0] 〜 a[n−2])中,从a[0]起,依次比较相邻的两个数,若邻接元素不符合次序要求,则对它们进行交换。本次操作后,a[0] 〜 a[n−2]中的最大元素“冒泡”到a[n−2];

……

第i步:在剩下未排序的n−k个数(a[0]〜a[n−i])中,从a[0]起,依次比较相邻的两个数,若邻接元素不符合次序要求,则对它们进行交换。本次操作后,a[0] 〜 a[n−i]中的最大元素“冒泡”到a[n−i];

……

第n−1步:在剩下未排序的2个数(a[0] 〜a[1])中,比较这两个数,若不符合次序要求,则对它们进行交换。本次操作后,a[0] 〜 a[1]中的最大元素“冒泡”到a[1]。

输入格式:

输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。

输出格式:

在每一行中输出排序过程中对应步骤的中间结果,即每一步后a[0]〜 a[n−1]的值,相邻数字间有一个空格,行末不得有多余空格。

输入样例:

5
8 7 6 0 1

输出样例:

7 6 0 1 8
6 0 1 7 8
0 1 6 7 8
0 1 6 7 8
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    int a[10];
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    if(n==1)
    {
        cout<<a[0]<<endl;
        return 0;
    }
    for(int i=0;i<n-1;i++)
    {
        for(int j=0;j<n-i-1;j++)
        {
            if(a[j]>a[j+1])
            {
                swap(a[j],a[j+1]);
            }
        }
        for(int k=0;k<n;k++)
        {
            if(k<n-1)
            {
                cout<<a[k]<<" ";
            }
            else
            {
                cout<<a[k]<<endl;
            }
        }
    }
    return 0;
}

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值