![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
PAT【C语言】 (Basic Level)
PAT (Basic Level)
咸鱼xxx
小小咸鱼
展开
-
1005 继续(3n+1)猜想 (25分)
#include <stdio.h>int main(){ int K, num[10005] = {0}, n;//扩大数组 scanf("%d", &K); for(int i = 0; i < K; i++) { scanf("%d", &n); num[n] = 1; } for(int i = 1; i <= 100; i+...原创 2020-04-14 18:33:54 · 92 阅读 · 0 评论 -
1047 编程团体赛 (20分)
so easy#include <stdio.h>int main(){ int N, players[10000] = {0}, max = 0, flag; scanf("%d", &N); for(int i = 0; i < N; i++) { int team, tab, score; scanf("%d-%d %d", &team...原创 2020-04-14 18:32:31 · 134 阅读 · 0 评论 -
1043 输出PATest (20分)
一开始out数组没有定义为char型导致有个测试点过不去#include <stdio.h>#include <ctype.h>int main(){ char c, index[6] = {'P', 'A', 'T', 'e', 's', 't'}; int num = 0, out[128] = {0};//注意out数组定义为char型 whil...原创 2020-04-05 11:53:13 · 159 阅读 · 0 评论 -
1042 字符统计 (20分)
#include <stdio.h>#include <ctype.h>int main(){ int str[1000] = {0}, max = 0; char c; while((c = getchar()) != '\n') if(isalpha(c))//注意必须字母才记录 str[tolower(c)]++; for(int i ...原创 2020-04-05 11:52:24 · 145 阅读 · 0 评论 -
1039 到底买不买 (20分)
#include <stdio.h> int main() { int pearls[1000] = {0}, duo = 0, shao = 0; char c; while((c = getchar()) != '\n') pearls[c]++; while((c = getchar()) != '\n') { if(pearls[c]) pea...原创 2020-04-05 11:51:37 · 101 阅读 · 0 评论 -
1038 统计同成绩学生 (20分)
#include <stdio.h> int main() { int N, stu[100000] = {0}, K; scanf("%d", &N); for(int i = 0; i < N; i++) { int score; scanf("%d", &score); stu[score]++; } scanf...原创 2020-04-05 11:50:43 · 92 阅读 · 0 评论 -
1033 旧键盘打字 (20分)
这题太坑了,一开始理解题意理解错了,我以为那四个键都是上档键,其实就+是上档键。。#include <stdio.h>#include <ctype.h>int main(){ int bad[128] = {0}; char c; while((c = getchar()) != '\n') bad[toupper(c)] = 1; while((c ...原创 2020-04-05 11:49:39 · 88 阅读 · 0 评论 -
1029 旧键盘 (20分)
#include <stdio.h>#include <ctype.h>int main(){ char str[1000], c, index[1000];//index记录输入顺序 int j = 0; for(int i = 0; i < 1000; i++) { str[i] = '\0'; index[i] = '\0'; ...原创 2020-04-05 11:47:07 · 103 阅读 · 0 评论 -
1015 德才论 (25分)
这题挺简单的,qsort要会用#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct { char id[100]; int de; int cai; int sum; int rank;}Stu;Stu stu[100000];//必须全局变量且数组开的...原创 2020-04-05 11:45:35 · 154 阅读 · 0 评论 -
1048 数字加密 (20分)
一开始敲代码前俩个测试点总是没过去,参考这位PAT Basic 1048. 数字加密(20)(C语言实现)代码如下/*#include <stdio.h>int main(){ char A[1000], B[1000], *pa, *pb, str[1000]; int index = 0; pa = A; pb = B; scanf("%s %s", A, B);...原创 2020-04-05 11:44:31 · 175 阅读 · 0 评论 -
1024 科学计数法 (20分)
分三种情况,小数点在前在中在后。#include <stdio.h>#include <string.h>int main(){ char *p, P[10000]; int e; p = P; scanf("%[^E]E%d", P, &e); if(*p++ == '-') putchar('-'); if(e < 0) { ...原创 2020-04-05 11:41:38 · 103 阅读 · 0 评论 -
1014 福尔摩斯的约会 (20分)
很久之前写的代码如下(那会代码格式都很丑。。),后来又看见一个大神代码很漂亮照着敲了一遍PAT Basic 1014. 福尔摩斯的约会 (20)(C语言实现)#include<stdio.h>#include<ctype.h>int main(){ char str1[100],str2[100],str3[100],str4[100]; char week[...原创 2020-04-05 11:38:55 · 96 阅读 · 0 评论 -
1009 说反话 (20分)
scanf!=EOF 这点很巧妙#include <stdio.h>int main(){ char str[90][90]; int index = 0; while(scanf("%s", str[index]) != EOF) index++; for(; --index >= 0;) printf("%s%c", str[index], in...原创 2020-03-29 11:55:09 · 118 阅读 · 0 评论 -
1002 写出这个数 (20分)
#include <stdio.h>int main(){ int num[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, j; char count[10][10] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"}, c; int sum = 0, index = ...原创 2020-03-29 11:53:54 · 97 阅读 · 0 评论 -
1031 查验身份证 (15分)
#include <stdio.h>int main(){ int n, count = 0; int weight[] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}; char M[] = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'}; ch...原创 2020-03-29 11:50:54 · 110 阅读 · 0 评论 -
1021 个位数统计 (15分)
注意字符数字之间的转换(用‘0’)#include <stdio.h>int main(){ int num[10] = {0}; for(char c; (c = getchar()) != '\n';) num[c - '0']++; for(int i = 0; i < 10; i++) { if(num[i]) printf("%d:%d\n"...原创 2020-03-29 11:47:38 · 175 阅读 · 1 评论 -
1006 换个格式输出整数 (15分)
很简单~#include <stdio.h>int main(){ int n; scanf("%d", &n); for(int i = 0; i < n / 100; i++) printf("B"); for(int i = 0; i < n / 10 % 10; i++) printf("S"); for(int i = 0; i &...原创 2020-03-29 11:45:28 · 76 阅读 · 0 评论 -
1037 在霍格沃茨找零钱 (20分)
转换成最小单位然后再转换回去#include <stdio.h>// S = 29K G = 17Sint main(){ int PG, PS, PK, AG, AS, AK; int Psum = 0, Asum = 0; scanf("%d.%d.%d %d.%d.%d", &PG, &PS, &PK, &AG, &AS, &...原创 2020-03-29 11:42:33 · 80 阅读 · 0 评论 -
1022 D进制的A+B (20分)
这题很简单,常规方法用数组存储然后倒序输出,还有个更好的方法,同样也是这位大神给的启发~PAT Basic 1022. D进制的A+B (20)(C语言实现)#include <stdio.h>int main(){ int a, b, r, sum, num[100] = {0}, i = 0; scanf("%d%d%d", &a, &b, &r...原创 2020-03-29 11:39:44 · 93 阅读 · 0 评论 -
1027 打印沙漏 (20分)
这题,同样是这个大神给了我很多启发,不得不说这位大神的代码简洁又漂亮,思路也清晰。(就是刚开始看有点难懂),理解了大神的代码然后敲了遍。大神代码链接PAT Basic 1027. 打印沙漏(20)(C语言实现)#include <stdio.h>#include <stdlib.h>//等差数列前n项和,上半部m^2个字符,包括最中间一行 //每行分为俩部分,空格...原创 2020-03-29 11:35:38 · 86 阅读 · 0 评论 -
1036 跟奥巴马一起编程 (15分)
有个小知识点,四舍五入直接用(len + 1) / 2#include <stdio.h>int main(){ int len; char c; scanf("%d %c", &len, &c); for(int i = 0; i < (len + 1) / 2; i++) { for(int j = 0; j < len; j++)...原创 2020-03-29 11:31:22 · 101 阅读 · 0 评论 -
1032 挖掘机技术哪家强 (20分)
很简单就不解释了~#include <stdio.h>int main(){ int N, players[100010] = {0}; scanf("%d", &N); for(int i = 0; i < N; i++) { int j, score; scanf("%d%d", &j, &score); playe...原创 2020-03-29 11:28:58 · 108 阅读 · 0 评论 -
1028 人口普查 (20分)
这道题一开始敲了很多代码,最后还有几个测试点不过。。最后看了一个大神的代码给我很多启发,然后看懂了自己照着敲了一遍如下。大神代码:PAT Basic 1028. 人口普查(20)(C语言实现)用strcmp会很方便#include <stdio.h>#include <string.h> int main(){ int N, count = 0; char...原创 2020-03-29 11:24:06 · 89 阅读 · 0 评论 -
1004 成绩排名 (20分)
很简单,利用qsort#include <stdio.h>#include <stdlib.h>typedef struct{ char name[100]; char id[100]; int score;}Stu;Stu stu[1010];int cmp(const void *a, const void *b){ Stu *A = (Stu *...原创 2020-03-06 22:33:31 · 73 阅读 · 0 评论 -
1041 考试座位号 (15分)
一开始因为结构体数组开小了导致测试点不过#include <stdio.h>typedef struct{ long long id; int test;}Stu;int main(){ int N, n; Stu stu[10001]; scanf("%d", &N); for(int i = 0; i < N; i++) { long lo...原创 2020-03-06 22:30:16 · 97 阅读 · 0 评论 -
1010 一元多项式求导 (25分)
这题很坑,有个容易忽略的点,就是输入格式为 0 0 时 输出也为0 0还有就是循环条件是!=EOF以下代码借鉴了这位大神的PAT Basic 1010. 一元多项式求导 (25)(C语言实现)#include <stdio.h>int main(){ int e, n, flag = 0; while(scanf("%d%d", &n, &e) != E...原创 2020-03-06 12:03:43 · 150 阅读 · 0 评论 -
1018 锤子剪刀布 (20分)
很简单,没什么要注意的,就是我的代码冗余了点,其实甲乙胜负以及平局都用石头剪刀布的数目表示就好,这位大神的代码极其简洁PAT Basic 1018. 锤子剪刀布 (20)(C语言实现)以下是我的#include <stdio.h>char max(int b, int c, int j){ if(b >= c && b >= j) retur...原创 2020-03-06 11:59:13 · 702 阅读 · 0 评论 -
1012 数字分类 (20分)
#include <stdio.h>int main(){ int N, a[1000], a1 = 0, a2 = 0, a3 = 0, a5 = 0, num = 0; double a4 = 0, count = 0; scanf("%d", &N); for(int i = 0; i < N; i++) scanf("%d", a + i); f...原创 2020-03-04 23:33:26 · 102 阅读 · 0 评论 -
1008 数组元素循环右移问题 (20分)
#include <stdio.h>int main(){ int N, M, a[1000]; scanf("%d%d", &N, &M); M %= N; for(int i = 0; i < N; i++) scanf("%d", &a[(i + M) % N]); for(int i = 0; i < N; i++)...原创 2020-03-04 23:30:59 · 157 阅读 · 0 评论 -
1046 划拳 (15分)
#include <stdio.h>int main(){ int N, a = 0, b = 0; scanf("%d", &N); while(N--) { int c, d, f, g; scanf("%d%d%d%d", &c, &d, &f, &g); if(c + f == d && c + f...原创 2020-03-04 23:29:26 · 80 阅读 · 0 评论 -
1026 程序运行时间 (15分)
#include <stdio.h>int main(){ int tick = 100, C1, C2, C; scanf("%d%d", &C1, &C2); C = C2 - C1; if(C % 100 >= 50)//不足一秒,四舍五入 C = C / 100 + 1; else C = C /100; printf("%02d:...原创 2020-03-03 23:26:33 · 83 阅读 · 0 评论 -
1016 部分A+B (15分)
#include <stdio.h>int main(){ int A, B, a, b, PA = 0, PB = 0; scanf("%d%d%d%d", &A, &a, &B, &b); while(A) { if(A % 10 == a) PA = PA * 10 + a; A /= 10; } while(B) ...原创 2020-03-03 23:24:10 · 75 阅读 · 0 评论 -
1011 A+B 和 C (15分)
#include <stdio.h>int main(){ long long T, a, b, c, i = 1; scanf("%lld", &T); while(T--) { scanf("%lld%lld%lld", &a, &b, &c); if(a + b > c) printf("Case #%lld: tr...原创 2020-03-03 23:22:00 · 66 阅读 · 0 评论 -
1001 害死人不偿命的(3n+1)猜想 (15分)
#include<stdio.h>int main(){ int n, count = 0; scanf("%d", &n); while(n != 1) { if(n % 2 == 0) n /= 2; else n = 3 * n + 1, n /= 2; count++; } printf("%d", count); return...原创 2020-02-02 18:40:38 · 92 阅读 · 0 评论