C语言
编程且快乐
这个作者很懒,什么都没留下…
展开
-
蓝桥杯:完全平方数
#include <stdio.h>#include <math.h>#define X 1000000000000long long f(long long num, long i){ int a, b; b = num*i;//将两个数相乘得到平方数 a = sqrt(b);//然后使用sqrt函数开平方 if (a*a == b)//上一句得到的值的平方如果相乘等于b的话就说明主函数的b就是我们要找的最小正整数 { return 1; } ret.原创 2021-05-14 18:43:58 · 1173 阅读 · 2 评论 -
1016 部分A+B (15分)
思路:计算每个指定数字出现的次数并记录下来,然后传函数计算并返回结果。#include <stdio.h>#include <math.h>int fannum(int k, int sum1);int fank(int shu1, int sum1);int main(void){ int shu1, shu2; int sum1, sum2; int num,num1; scanf("%d %d %d %d", &shu1, &sum1, &.原创 2020-09-15 12:25:32 · 81 阅读 · 0 评论 -
用宏函数编写PTA的1011 A+B 和 C (15分)
需要注意题目中所给数据范围是[-2 31,2 31],而int型的数据范围是[-2 31,2 31-1],最大值超过int型数据的范围,并且两个int型数据相加也可能超过int型,因此在本题中需使用long long 作为ABC的数据类型。题目描述:给定区间 [−2 31,2 31] 内的 3 个整数 A、B 和 C,请判断 A+B 是否大于 C。输入格式:输入第 1 行给出正整数 T (≤10),是测试用例的个数。随后给出 T 组测试用例,每组占一行,顺序给出 A、B 和 C。整数间以空格分隔原创 2020-09-02 17:58:53 · 300 阅读 · 0 评论 -
PAT1009 说反话 (20分)
**1009 说反话 (20分)**给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。输出格式:每个测试用例的输出占一行,输出倒序后的句子。输入样例:Hello World Here I Come输出样例:Come I H...原创 2020-09-01 10:32:13 · 312 阅读 · 0 评论 -
C语言1007 素数对猜想 (20分)
1007 素数对猜想 (20 分)让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<105),请计算不超过N的满足猜想的素数对的个数。输入格式:输入在一行给出正整数N。输出格式:在一行中输出不超过N的满足猜想的素数对的个数。输入样例:20输出样例:4思路:第一步,先找到正整数N以内的全部素数,并用一原创 2020-08-29 19:47:37 · 477 阅读 · 0 评论 -
PAT C语言1005 继续(3n+1)猜想 (25分)
卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对 n=3 进行验证的时候,我们需要计算 3、5、8、4、2、1,则当我们对 n=5、8、4、2 进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计算,因为这 4 个数已经在验证3的时候遇到过了,我们称 5、8、4、2 是被 3“覆盖”的数。我们称一个数列中的某个数 n 为“关键数”,如果 n 不能被数列中的其他数字所覆盖原创 2020-08-29 10:18:49 · 182 阅读 · 1 评论 -
C语言PAT1004 成绩排名 (20分)
1004 成绩排名 (20分)读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。输入格式:每个测试输入包含 1 个测试用例,格式为第 1 行:正整数 n第 2 行:第 1 个学生的姓名 学号 成绩第 3 行:第 2 个学生的姓名 学号 成绩… … …第 n+1 行:第 n 个学生的姓名 学号 成绩其中姓名和学号均为不超过 10 个字符的字符串,成绩为 0 到 100 之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。输出格式:原创 2020-08-28 18:55:57 · 483 阅读 · 0 评论 -
C语言中的变参宏:(...)与__VA_ARGS__怎么使用
宏是通过预处理器在程序运行前执行的,宏由三个部分组成,第一部分是#define预处理指令,第二部分是选定的缩写,也称为宏,第三部分称为替换体,或替换列表:#define(预处理指令) MAX(选定的缩写) 5(替换体),宏的起名规则跟其他变量的规则一样,由数字,字符,下划线组成,其中不能首字符不能是数字,宏分为两大类,一类是类对象宏,一类是类函数宏,好了,宏的基本知识讲到这里就结束先了,现在我们来讲讲变参宏的使用,我们先给出一个声明:#define MAX(X,…) printf(" HELLO x=原创 2020-08-19 10:06:08 · 571 阅读 · 0 评论 -
C语言怎么样将十进制转换成二进制
观察以下代码:`我用到的主要知识点有:字符串,位操作。有不懂的可以在评论区评论我会解答你们的`#include <stdio.h>#include <limits.h>#define MASK 01 //这个明示常量的二进制是00000001`char * itob(char * st, int n);int main(void){ int conut1, conut2; int num; char st[CHAR_BIT*sizeof(原创 2020-08-15 18:28:07 · 1344 阅读 · 0 评论 -
怎么样编写一个扑克牌发牌函数
先定义一个结构体,里面的成员有存储花色和牌面的数组,然后在主函数里面声明一个结构体数组p大小为52,用来存储花色跟牌面,还有一个的整型数组arc大小也是52,用来存储牌面跟花色的顺序。1.void baoc(CHUC p[])函数:首先先编写一个void baoc(CHUC p[])函数,这个函数用来保存52张扑克牌,这个函数里面用了两个数组指针来分别保存花色与牌面,如果把52张扑克牌按1到52的牌面顺序来排序,那么strcpy函数里面的(i/13)的意思是i<13的相除都是0那么就可以把存储花色的原创 2020-08-06 21:18:49 · 897 阅读 · 1 评论 -
C语言fwrite函数
fwrite函数的原型是**size_t fwrite(const void *p,size_t SIZE,size_t count,FILE *fp);**处存在stdio.h头文件中第一个参数是一个指针,或者数组地址。第二个参数SIZE是这个指针或者数组单个存储单元的大小。第三个参数是从数组或者指针中写入到文件中的字符个数。第四个参数是文件指针。函数的返回值是从数组或者指针存储到文件的字符个数,正常运行的返回值一般是count,总而言之当你想把一些字符存储到文件中时,就可以考虑使用这个函数。原创 2020-08-06 20:48:28 · 6534 阅读 · 0 评论 -
C语言怎么样从文件中读取特定的一行字符
让我们从一道例题来分析,分析我都写在注释里面了。例:编写一个程序,以一个字符和任意文件名作为命令行参数。然后输入字符所在的整行内容。(此题目是我为了讲解而自己想的,若有不足之处请多指教)代码如下:#include <stdio.h>#include <stdlib.h>#include <string.h>//这个函数的返回值用来作为主函数中if语句是否输出int has_ch(char ch, const char *line);int main(int原创 2020-08-01 21:58:47 · 5632 阅读 · 0 评论 -
fgets函数的使用
fgets函数的函数原型:char *fgets(char * ch,int mode,FILE *fp);第一个参数ch是一个字符数组;第二个参数mode表示这个数组需要读取多少个字符;第三个参数fp表示一个文件指针;fgets函数可以在读取(mode-1)个字符后就结束,或读取到换行符后结束,再或者读到文件结尾后结束;例子:char ch[10]; int mode=10;(假设fp已经分配好了)fgets(ch,10,fp);这个函数表示从fp这个文件指针中读取10个字符第一种情况:当原创 2020-07-29 21:49:07 · 15964 阅读 · 0 评论 -
fread函数的使用
fread函数的原型是:size_t fread(void * ch,size_t mode,size_t number,FILE *fp)。第一个参数是数组的地址;第二个参数是数据类型的大小;第三个参数是需要读取多少个这样的数据类型;第四个参数是文件指针。该函数正常情况下返回的值是number,这表示读取了多少个数据。例子:double ret[10];(其中有一个文件指针名为fp)fread(ret,sizeof(double),10,fp);这个例子表示fread函数将要从fp文件指针中原创 2020-07-28 22:50:57 · 4413 阅读 · 0 评论 -
处理文件的fseek函数
fseek()函数的函数原型是:FILE *fseek(FILE *fp,0L,)原创 2020-07-22 22:51:13 · 2230 阅读 · 0 评论 -
malloc函数的注意事项
malloc函数定义在#include <stdlib.h>的头文件中,函数原型的void *malloc(unsigned int ret)类型如果申请不成功就会返回NULL,void * 是一种不指定指向的指针,可以是任意的指针,但是得强制转换类型,如 :以下代码片段int *p;p=(int *)malloc(4);malloc函数一般是跟free()函数结合使用,因为malloc函数是在堆里面寻找的内存,这是由我们程序员自己管理的内存,所以使用之后要记得用free()函数释放内存原创 2020-06-24 22:21:08 · 734 阅读 · 0 评论 -
函数strlen的使用
函数strlen是C语言的提供的函数,它包含在#include <string.h>这个头文件中,strlen函数接受的实参是一个字符串数组,返回值是字符串数组的长度,不包括空字符在内,返回的值是一个int类型的整数值。...原创 2020-06-01 23:33:39 · 12535 阅读 · 0 评论 -
## 数组跟指针的关系
数组跟指针的关系先简单说一下指针和数组的基本概念指针是一个变量,声明形式为 int * p,其中 * 号是一个解引用符,变量p储存的是一个地址。数组是一个多个同类型元素的集合体,例如声明一个数组int * a[4]数组,数组名a是一个地址,这个地址跟&a[0]是等价的,也就是数组表示的是第一个数组元素的地址。指针跟数组的关系以下文章都以两个变量展开说明int * p,int a[4]第一:我们先以地址的形式来理解他们的关系,当指针得到了数组的首地址之后,就可以把指针跟数组一样使用了,因原创 2020-06-01 19:55:21 · 90 阅读 · 0 评论