【PTA】代码部分基础整理

本文分享了C语言编程中的实用技巧,包括控制输出格式、字符串操作、数据类型转换及大小写转换等,适合初学者及备考PTA的考生。

目录

一、结尾无空格

二、数字和字符串转换

三、数值格式化输出

四、字符串长度

五、判断字符串是否相等

六、字母大小写转换

1.char 类

2.string 类

七、define、typedef、const


报名了PTA考证,最近打算开始刷题,之前没怎么打C代码,基础不是很好。积累一些自己容易忘的知识或者没发现的技巧在里面

一、结尾无空格

1.把空格的输出放在内容的输出之前

for(int i=1;i<=N;i++){
    if(i!=1)printf(" ");
    printf("%d\n",context)
}

 2.计数变量count,当count不等于0时输出空格

int n = 10;
int temp = n;
for(int i=0;i<n;i++){
	cout << temp;
	temp--;
	if (temp != 0)cout << " ";
}

二、数字和字符串转换

//数字转字符串sprintf
int a=1234321;
double b=123.4321;
char s1[10];
char s2[10];
sprintf(s1, "%d", a);
sprintf(s2, "%.3lf", b);
//数字转字符串to_string
string s = to_string(a + b);

//字符串转数字
char s1[]="1234321";
char s2[]="123.321";
int a;
sscanf(s1,"%d",&a);
double b;
sscanf(s2,"%lf",&b);

sprintf函数具体使用方式:https://www.runoob.com/cprogramming/c-function-sprintf.html

sscanf函数具体使用方式:https://www.runoob.com/cprogramming/c-function-sscanf.html

其他的还有stoi【用于string】https://blog.youkuaiyun.com/sinat_40872274/article/details/81367815

三、数值格式化输出

#include<iostream>
#include <iomanip>
using namespace std;
double a=3.1415926;
//保留两位数字
cout << setiosflags(ios::fixed) << setprecision(2) << a;
#include<cstdio>
double ans=3.1415926
printf("%.2f",ans);

四、字符串长度

#include<iostream>
#include<string>
#include<cstring>
using namespace std;

int main() {
	char a[20] = { "1316167" };
	string s1 = "dsaf65";
	cout << strlen(a)<<endl;
	cout << s1.length();
	return 0;
}

输出结果:

7

6

五、判断字符串是否相等

//第一种
//判断是否相同
//这里只能用单引号
char a = 'F';
if (a == 'F')cout << "True";

//第二种
char a[10] = "abcd";
if (strcmp(a,"abcd")==0)cout << "True";

//第三种
//判断是否相同
//#include<cstring>
string s1 = "abc", s2 = "abc";
if (s1==s2)cout << "True";

在strcmp函数中。strcmp(const char* s1,const char* s2)的返回值是int型

s1<s2时,返回-1;s1==s2时,返回0;s1>s2时,返回1。可用于判断s1是否包含s2

六、字母大小写转换

1.char 类

  • tolower(char c)和toupper(char c)
#include<iostream>
using namespace std;
int main() {
	char a = 'a',b='B';
	a = toupper(a), b = tolower(b);
	cout << a << " " << b;
	return 0;
}
  • s[i]±=32
#include<iostream>
using namespace std;
int main() {
	char a = 'a',b='B';
	a = a - 32; b = b + 32;  //a大写,b小写
	cout << a << " " << b<<endl;
	return 0;
}

2.string 类

  • transform(str.begin(),str.end(),str.begin(),::tolower);
#include<iostream>
#include <algorithm>
using namespace std;
int main() {
	string str;
	cin >> str;	
	transform(str.begin(), str.end(), str.begin(), ::tolower);
	cout << str << endl;
	transform(str.begin(), str.end(), str.begin(), ::toupper);
	cout << str << endl;
	return 0;
}
  • 循环设置每个字符
#include<iostream>
#include<string>
using namespace std;
int main() {
	string str;
	getline(cin,str);
	//up
	for (int i = 0; i < str.length(); i++) {
		if (str[i] >= 'a' && str[i] <= 'z') {
			str[i] = str[i] -32;
		}
	}
	cout << str<<endl;
	//low
	for (int i = 0; i < str.length(); i++) {
		if (str[i] >= 'A' && str[i] <= 'Z') {
			str[i] = str[i] + 32;
		}
	}
	cout << str;
	return 0;
}

七、define、typedef、const

这几个都有不一些不同的用法,这里只列举了最常用的,详细的可以参考其他博主的博客.

define:https://blog.youkuaiyun.com/u012611878/article/details/52534622

const:https://www.cnblogs.com/lanjianhappy/p/7298427.html

typedef:https://www.cnblogs.com/eeluo/articles/7470826.html

1.#define 标识符 字符串

它将一个标识符定义为一个字符串,定义之后标识符不可在后续程序中修改

2.const 类型说明符 变量名

同样的其他函数不能对该成员赋值。它与define的区别是:

const 拥有内存空间有地址,所以要用数据类型定义

define 只是一个表示符号

3.typedef 类型名称 类型标识符;

为已有的数据类型重新命名

【任何声明变量的语句前面加上typedef之后,原来是变量的都变成一种类型】

//define
#define END "end"
#define MAXN 10001

//const int
const int MAXN=10001
const float=52.0

//typedef
typedef int I;  //指定标识符I代表int类型
typedef double D;  //指定标识符D代表double类型
//以下两者等价
int i; double j;
I i;D j;
<think>嗯,用户这次明确想查找PTA浙大版相关资料,结合之前的引用内容来看,用户应该是在准备编程练习或学习数据结构算法。用户引用的三份资料分别涉及Python题库、C语言函数题和堆排序实现,说明用户可能同时在用多种语言刷题。 从用户上次提问风格看,ta更关注实用资源而非理论说明,所以优先推荐可直接做题的题库入口和技术社区。考虑到PTA平台的特殊性,补充了刷题策略和资源导航建议——毕竟新手容易在环境配置上卡壳。 注意到引用[3]的堆排序代码完整度很高,用户可能正在啃硬骨头,所以专门在数据结构部分强调算法可视化工具。浙大内部资源放第一位是合理的,毕竟官方的《Python习题集》最权威,而C语言的函数题合集对练指针很实用。 用户没提具体语言,所以Python和C的资源都覆盖了。最后用提问引导用户细化需求很必要,因为"PTA相关资料"范围太广,可能是想找某道题解析,也可能是想系统备考。 </think>以下是针对 **PTA浙大版** 编程练习资源的系统整理,涵盖平台使用指南、题库资源、学习资料及实用工具: --- ### **一、官方核心资源** 1. **PTA平台入口** - 浙大专用入口:[PTA程序设计类实验辅助教学平台](https://pintia.cn/) - **浙大版题库路径**:登录后 → 题目集 → 选择 **"浙江大学"** 标签 → 按课程筛选(如《Python程序设计》《C语言程序设计》) 2. **权威教材配套题集** - **《Python程序设计》**(浙大版) - 题目集名称:*浙江大学《Python程序设计》题目集* - 内容:基础语法、函数、文件操作、面向对象等 - 参考代码库:[PTA-Python-Answers (GitHub)](https://github.com/ednow/PTA-Python-Answers)[^1] - **《C语言程序设计》**(浙大版) - 指针专项练习(如函数 `void sum_diff()` 实现)[^2] - 数据结构实现(如堆排序算法 `MaxHeapSort()` [^3]) --- ### **二、高效刷题指南** 1. **高频考点分类** | 语言 | 重点章节 | 典型题型 | |------------|---------------------------|------------------------------| | **Python** | 列表推导式、文件读写 | 词频统计、数据清洗 | | **C语言** | 指针操作、动态内存管理 | 链表处理、数组排序(如堆排序)| 2. **调试技巧** - **边界用例**:数组空值、极端输入(如1e5量级数据) - **内存检查**:C语言题目需通过 `valgrind` 验证无泄漏 - **Python性能优化**:用 `sys.stdin` 加速大规模输入读取 --- ### **三、扩展学习资料** 1. **免费开源项目** - [PTA浙大版题解合集 (GitHub)](https://github.com/Zhenghao-Liu/PTA):含Python/C++实现与复杂度分析 - [算法可视化工具](https://visualgo.net/):动态演示堆排序等流程 2. **浙大课程参考** - **《数据结构》** 配套实验: - 堆排序、AVL树等代码模板(见引用[^3]的堆排序实现) - **MOOC资源**: - [浙江大学-数据结构 (中国大学MOOC)](https://www.icourse163.org/course/ZJU-93001) --- ### **四、常见问题解决** ```python # PTA Python输入加速模板 import sys data = sys.stdin.read().split() # 替代input() ``` ```c // PTA C语言输入输出规范 int main() { int n; scanf("%d", &n); // 严格匹配题目输入格式 ... } ``` --- ### **相关问题** 1. 如何针对PTA浙大版《Python程序设计》第八章(文件操作)系统刷题? 2. PTA提交C语言代码时遇到 **"返回非零"** 错误如何排查? 3. 是否有浙大版PTA官方题目的**时间复杂度分析参考**? > 提示:使用 **`浙江大学`+`PTA`+`[语言]`** 组合关键词在GitHub搜索,可获取更多开源题解[^1][^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值