IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> PTA c++ week3 -> 正文阅读

[C++知识库]PTA c++ week3

这一周一切慢慢好起来了!

1.函数的参数个数和类型都相同,只是返回值不同,这不是重载函数。? ? (T)

2.两个以上的函数,具有相同的函数名,且形参的个数或形参的类型不同,或返回的数据类型不同,则称之为函数的重载。? ? ? ? ? ? ? ?(F)

3.下列说法中正确的是( )? ? ? ? (A)

A.在函数参数定义中可以使用const说明符,其值在函数体内不可改变

B.在函数参数定义中可以使用const说明符,但必须指定缺省值

C.在函数参数定义中可以使用const说明符,但只能有一个参数使用const

D.在函数参数定义中不可以使用const说明符

4.const char * pc与char const * pc的作用完全相同? ?(T)

5.对定义重载函数的下列要求中,( )是错误的。? ?(C)

A.要求参数的个数不同

B.要求参数中至少有一个类型不同

C.要求函数的返回值不同

D.要求参数个数相同时,参数类型不同

6.一个函数为void f(int x, char y = ‘a’),另一个函数为void f(int),则它们____。 (B)

A.不能在同一程序块中定义

B.可以在同一个程序块中定义并可重载

C.可以在同一个程序块中定义,但不可以重载

D.以上说法均不正确

7.使用内联函数的目是提高程序运行速度。? (T,空间换时间)

8.(记住那些规则哦)

int const x = 3;
auto y { x };
auto& z { x };

则y和z的类型分别是

A.const int 和 int

B.int 和 int

C.int 和 const int

D.int 和 int&

9.代码实例1:auto与重载:

设计一个重载函数add,该函数有两个参数,可以实现两个类型相同的参数相加的操作,函数返回相加的结果。两个参数可以是整数、实数和字符串,但必须保证两个参数类型相同。

我的代码:(其实可以return Pa+Pb;)

auto add(int pa,int pb)
{   int t;
    t=pa+pb;
    return t;
}
auto add(double pa,double pb)
{  double t;
    t=pa+pb;
    return t;
}
auto add(string pa,string pb)
{   string t;
    t=pa+pb;
    return t;
}

10.代码实例2:有代表性与过渡性的年月日编辑题

void init(Date& date, int year, int month, int day);
init函数用于设置日期结构体变量date的年、月、日的信息。在设置数据值时,对参数给出的日期数据做有效性检查,检查顺序为如果年的数据小于1900年或者大于2120年,则视为非法数据,输出字符串“year is invalid”,,程序结束;如果月的数据小于1或者大于12,则视为非法数据,输出字符串“month is invalid”,程序结束;如果日的数据不在当前年和月份的有效数据范围内(注意2月的天数闰年和非闰年的区别),则视为非法数据输出字符串“day is invalid”,程序结束。程序结束。
void addDay(Date& date, int n);
addDay函数用于根据给定的整型参数值n(28>n>0),用于设定当前date的n天后的日期;
void show(Date date, char spor);
show函数用于根据参数spor给出的分隔符输出日期date的年月日信息。

提示:exit() 函数可以强行退出程序,该函数在头文件<cstdlib>?当日期年、月、日不符合逻辑时,仅输出规定的字符串,不要输出任何多余信息;(实际我们后面用的时候返回exit(0))

输入格式:

三个由空格分隔的整数,分别代表日期的年、月、日。

输出格式:

如果输入年数据非法,输出字符串“year is invalid”,程序结束

如果输入月数据非法,输出字符串“month is invalid”,程序结束

如果输入日数据非法,输出字符串“day is invalid”,程序结束

如果输入日期数据均合法,以"年-月-日"的格式输出该日期,换行,接着输出2021/3/18,换行,接着以"年-月-日"的格式输出该日期十天后的日期。

标准代码:(这里直接标准代码,因为它体现了我的所有,还做到了我没注意的,比如%,if与else的顺序安排,使得整个代码量更小)

int area(int a,int b)
{
	return a * b;
 } 
int area(int a,int b,int c)
{
	return 2 * (a * b + a * c + b * c);
}
6-2
int add(int a, int b)
{
	return a + b; 
}
double add(double a, double b)
{
	return a + b;
}
string add(string a, string b)
{
	return a + b;
}
6-3
#include<iostream>
using std::cout;
using std::cin;
using std::endl;
struct Date{
    int year;
    int month;
    int day;
    int maxDay[2][13] = {{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
};
void init(Date& date, int year, int month, int day);
void addDay(Date& date, int n);
void show(Date date, char spor);
int main()
{

    int year, month, day;

    cin >> year >> month >> day;

    Date myBirth;

	init(myBirth, year, month, day);

    Date startTime;

	init(startTime, 2021, 3, 18);

    show(myBirth, '-');

    show(startTime, '/');

    addDay(myBirth, 10);

	show(myBirth, '-');

    return 0;

}
void init(Date& date, int year, int month, int day)
{
    if(year >= 1900 && year <= 2120)
        if(month >= 1 && month <= 12)
            if(day >= 1 && day <= date.maxDay[(year % 4 == 0 && year % 100 != 0) || year % 400 == 0][month])
            {
                date.year = year;
                date.month = month;
                date.day = day;
            }else{
                cout << "day is invalid" << endl;
                exit(0);
            }
        else{
            cout << "month is invalid" << endl;
            exit(0);
        }
    else {
        cout << "year is invalid" << endl;
        exit(0);
    }
}
void addDay(Date& date, int n)
{
    date.day += n;
    if(date.day > date.maxDay[(date.year % 4 == 0 && date.year % 100 != 0) || date.year % 400 == 0][date.month]){
        date.day %= date.maxDay[(date.year % 4 == 0 && date.year % 100 != 0) || date.year % 400 == 0][date.month];
        date.month ++;
        if(date.month > 12){
            date.year ++;
            date.month %= 12;
        }
    }
}
void show(Date date, char spor)
{
    cout << date.year << spor << date.month << spor << date.day << endl;
}

11.代码实例3:合法c->cpp:

本题要求从键盘上输入一行不带空格的字符串,如果该字符串为合法的c程序源文件名,则将重命名为c++源文件名(文件名后缀为.cpp),否则,输出invalid。合法的c程序源文件名为文件名的后缀必须为.c,且“.”不能出现在首位。

  1. 在主函数中定义一个string类型的变量接收键盘输入的不带空格的字符串;
  2. 获取字符'.'的位置;
  3. 获取输入文件的后缀名;
  4. 判断文件名是否为c程序源文件的合法文件名(合法的c程序源文件名为文件名的后缀必须为.c,且“.”不能出现在首位。),如果是,将文件名的后缀.c替换为.cpp,否则输出invalid。
  5. 不得使用C语言中的输入输出函数

输入输出例

如new.c---new.cpp

.c、new.v---?invalid

直接看代码吧,又学到自己哉写时不知道的几个函数:

#include<iostream>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main()
{
	string file_name;
	cin >> file_name;
	int last_index =file_name.find_last_of(".");
	int first_index = file_name.find_first_of(".");
    string prefix =file_name.substr(last_index+1);

//很秀,substr函数在s.substr(x)时,返回s字符串从第x位置开始之后的所有字符串

	if (last_index!=string::npos && first_index != 0 && prefix=="c") 
	{


		file_name.replace(last_index+1, 3, "cpp");

//replace函数在s.replace(a,b,"...")时,将s字符串从a位置,将之后的b个字符换成"..."

		cout << file_name;
	}
	else cout << "invalid";
	return 0;
}

加油加油加C加加!!!

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-30 11:45:05  更:2021-09-30 11:47:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 0:01:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码