
cpp初步
sherry_zhe
拾阶而上,步步生花.
展开
-
编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确的成对出现。
花括号匹配:{}、{{}}、{{}{}}int main(){ int ch; //定义一个变量来接收文件读取的信息 int count = 0; //定义一个计数器来验证括号匹配情况 while ((ch = getchar()) != EOF) //当文件没有结束时用ch接收输入的信息.注:EOF为文件结束标志 当在编译器输入框输完所输的内...原创 2018-03-29 18:56:42 · 188 阅读 · 0 评论 -
动态内存开辟 malloc calloc realloc free 函数
一、malloc和freemalloc和free都是c语言的库函数,一般在stdlib.h中,主要用来进行一段动态内存的分配,包括申请和释放。malloc的函数原型为Void *malloc(size_t size),主要用于从堆上进行一段内存的申请,返回无类型的指针,需要将返回的指针转换为数据的类型,同时对申请的数据不进行初始化。free用于将一段指针所指向的内存进行释放原创 2017-11-28 17:13:30 · 440 阅读 · 0 评论 -
研究 sscanf sprintf 与fread fwrite
一、sscanf函数 sscanf函数原型为int sscanf(const char *str, const char *format, ...)。将参数str的字符串根据参数format字符串来转换并格式化数据,转换后的结果存于对应的参数内。具体功能如下:(1)根据格式从字符串中提取数据。如从字符串中取出整数、浮点数和字符串等。(2)取指定长度的字符串原创 2017-11-28 17:07:40 · 229 阅读 · 0 评论 -
一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的,找出这个数字(使用位运算)
位运算包含按位与、按位或、按位异或、按位取反、左移和右移按位与:& 1 & 1 = 1 1 & 0 = 0 0 & 1 =0 0 & 0 = 0按位或:| 1 | 1 = 1 1 | 0 = 1 0 | 1 = 1 0 | 0 = 0按位异或:^ 1 ^ 1 = 0 1 ^ 0 = 1 0 ^ 1 = 1 0 ^原创 2017-10-26 00:34:55 · 239 阅读 · 0 评论 -
.编写函数: unsigned int reverse_bit(unsigned int value); 这个函数的返回值value的二进制位模式从左到右翻转后的值。
例:25在32位机器上25这个值包含下列各位: 00000000000000000000000000011001 翻转后:(2550136832) 10011000000000000000000000000000 程序结果返回: 2550136832 将value的二进制值从右至左依次从左至右赋给另一个数代码如下:#include#includeint原创 2017-10-25 20:47:08 · 509 阅读 · 0 评论 -
不使用(a+b)/2这种方式,求两个数的平均值。
因为不能使用(a+b)/2这种方式,故用右移这种计算方式。(右移一位相当于除二)代码如下:#include#includeint main(){ int a, b,c; scanf_s("%d,%d", &a, &b); c = a + b; c = c >> 1; printf("%d", c); system("pause"); return 0;}原创 2017-10-25 20:29:59 · 330 阅读 · 0 评论 -
打印杨辉三角
#include#include#define M 10int main(){ int a[M][M], i, j; for (i = 0; i<M; i++) for (j = 0; j <= i; j++) { if (i == j || j == 0) a[i][j] = 1; else a[i][j] = a[i - 1][j] + a[原创 2017-10-25 19:04:14 · 235 阅读 · 0 评论 -
实现一个函数,判断一个数是不是素数
#include #include sushu(int m){ int i; for (i = 2; i <= m; i++); { if (m%i == 0) printf("%d是素数", m); else printf("%d不是素数", m); }}int main(){ int a; scanf("%d", &a); sushu(a); s原创 2017-10-15 16:12:10 · 929 阅读 · 0 评论 -
实现一个函数判断year是不是润年。
#include #include void RN(int i){ if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) printf("是闰年"); else printf("不是闰年");}int main(){ int a; scanf_s("%d ", &a); RN(a); system("pause"); r原创 2017-10-14 17:48:09 · 298 阅读 · 0 评论 -
使用函数实现两个数的交换。
在函数中交换应为交换地址而非单纯的交换数字大小。#include #include void swap(int*pa, int*pb){ int tmp; tmp = *pa; *pa = *pb; *pb = tmp;}int main(){ int a, b; scanf_s("%d %d", &a, &b); swap(&a, &b); printf("%d原创 2017-10-14 17:22:39 · 2200 阅读 · 0 评论 -
实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定
实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定, 输入9,输出9*9口诀表,输出12,输出12*12的乘法口诀表。#include #include cheng(int m){ int i, j; for (i = 1; i <= m; i++) { for (j = 1; j <= i; j++) printf("%d*%d=%2d ", i,原创 2017-10-14 17:19:09 · 511 阅读 · 0 评论 -
实现一个通讯录
实现一个通讯录; 通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名、性别、年龄、电话、住址 提供方法: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联系人信息 4. 修改指定联系人信息 5. 显示所有联系人信息 6. 清空所有联系人 7. 以名字排序所有联系人#define LEN 3 struct peop原创 2017-11-28 17:16:20 · 356 阅读 · 0 评论 -
自定义类型:结构体,枚举,联合体
结构体的声明假如要定义一个结构体A有两种:1.struct A { 2.struct { char c;原创 2017-11-28 17:46:11 · 527 阅读 · 0 评论 -
关于指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针
函数指针:重点在指针,表示它是一个指针,它指向的是一个函数。eg: int (*fun)();指针函数:重点在函数,表示它是一个函数,它的返回值是指针。 eg: int* fun();数组指针:重点在指针,表示它是一个指针,它指向的是一个数组。int (*fun)[8];指针数组:重点在数组,表示它是一个数组,它包含的元素是指针 itn* fun[8];原创 2017-11-16 16:02:46 · 198 阅读 · 0 评论 -
字符串函数模拟实现
strchr函数函数功能:查找一个字符。在一个字符串中查找一个特定的字符。函数原型:char *strchr(char const *str,int ch);函数说明:strchr在字符串str中查找字符ch第一次出现的位置,找到后返回一个指向该位置的指针。如果该字符不存在于字符串中,则返回一个NULL指针。注意:第二个参数是一个整型值,但是,它包含了一个字符串值。#i原创 2017-11-16 15:59:26 · 282 阅读 · 0 评论 -
写冒泡排序可以排序多个字符串
冒泡排序:每次对相邻的两个元素进行比较,若前者大于后者则交换,如此一趟下来最后一个则是最大的一个元素;重复以上步骤,除了已经确定位置的元素。#include #include void bubble_sort_str(char *str[],int sz) { int i = 0; int j = 0; for (i = 0; i <原创 2017-11-16 15:25:39 · 400 阅读 · 0 评论 -
使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。例如:命令行参数输入:test.exe -a 1 2 执行1+2输出3 #include #include int main(int argc, char* argv []) {原创 2017-11-16 15:23:31 · 306 阅读 · 0 评论 -
模拟实现strcat
#define _CRT_SECURE_NO_WARNINGS 1 #include #include #include char* my_strcat(char *dest, char *src) { assert(dest); assert(src); char *strdest = dest;原创 2017-11-16 15:20:45 · 170 阅读 · 0 评论 -
模拟实现strcpy
#include #include char *my_strncpy(char *dest, const char* src, int n) { assert(dest != NULL); assert(src != NULL); char*ret = dest; while (n) //复制n个字原创 2017-11-16 15:18:52 · 166 阅读 · 0 评论 -
喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水。
#include #include int main(){ int money = 20; int count = 20; while (1) { if (money % 2 != 0) { count = count + money - 1; break; }原创 2017-11-16 15:17:14 · 419 阅读 · 0 评论 -
一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 找出这两个数字,编程实现。
从头到尾依次异或数组中的每一个数字,那么最终得到的结果就是两个只出现一次的数字的异或结果。因为其他数字都出现了两次,在异或中全部抵消掉了。由于这两个数字肯定不一样,那么这个异或结果肯定不为0,也就是说在这个结果数字的二进制表示中至少就有一位为1。我们在结果数字中找到第一个为1的位的位置,记为第N位。现在我们以第N位是不是1为标准把原数组中的数字分成两个子数组,第一个子数组中每个数字的第N位都为1,原创 2017-11-16 15:15:15 · 230 阅读 · 0 评论 -
模拟实现printf函数,完成函数调用
通过函数原型可以看出printf函数其实是一个可变参数函数,在printf函数中只需要知道传入函数的第一个参数,就可以根据该参数在栈中的存储位置获取后面参数的位置及信息了。printf函数第一个参数const cahr *format,该字符串内包含并确定了后面参数的输出格式,比如"%c","%d","%d","%x"等等。printf函数返回值,就是通过该函数打印到标准输出流(屏原创 2017-11-16 15:09:42 · 765 阅读 · 0 评论 -
使用可变参数,实现函数,求函数参数的平均值和最大值
利用可变参数列表:可变参数列表是通过宏来实现的,这些宏定义在stdarg.h中。值得注意的是:可变参数列表传参时,第一个传的参数的个数。步骤:1.定义一个va_list类型的变量 arg2.宏va_start(arg,num)---这个宏有两个参数,第一个参数为va_list类型的变量,第二个参数为可变参数列表之前的参数。作用就是使得 va_list 的变量指向可变原创 2017-11-16 14:12:39 · 1952 阅读 · 0 评论 -
警查审问四名嫌疑人,其中三人说真话,一人说谎。
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯 的一个。以下为4个嫌疑犯的供词。 A说:不是我。 B说:是C。 C说:是D。 D说:C在胡说 已知3个人说了真话,1个人说的是假话。 现在请根据这些信息,写一个程序来确定到底谁是凶手。需要注意的是如何判定三人说真话,一人说谎。已知每人说谎为0,说真话为1,所以只需判断三人的语句加起来的总和原创 2017-10-23 16:22:35 · 3377 阅读 · 0 评论 -
5位运动员参加了10米台跳水比赛,预测比赛结果
A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二; D选手说:C最后,我第三; E选手说:我第四,A第一; 比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。值得注意的是比赛成绩可以并列,即有多个第一或第二名。#include#includeint main(){ int a = 0; int b =原创 2017-10-21 19:07:16 · 351 阅读 · 0 评论 -
求两个数的最大公约数
最大公约数:指两个或多个整数共有约数中最大的一个。辗转相除法:用较小数除较大数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。#include int main(){ int a,b,c,d; scanf("%d %d",&a,&b);原创 2017-09-17 19:00:57 · 350 阅读 · 0 评论 -
三个整数排列大小
通过调换三个数的位置,将三个数由大到小排列。#include #includeint main(){ int a,b,c,max; scanf("%d %d %d",&a,&b,&c); if(a<b) { max=b; b=a; a=max; } if(a<c) { max=c; c=a; a=max; } if(b<c) { m原创 2017-09-17 18:58:29 · 412 阅读 · 0 评论 -
求十个数中最大的值
利用for循环将每一个值都与之前的最大值比较#include #includeint main(){ int arr[10],i,max=0; for(i=0;i<10;i++) { scanf("%d",&arr[i]); if (arr[i]>max) max=arr[i]; } printf("最大的数为:%d",max); system("pause")原创 2017-09-17 18:00:00 · 400 阅读 · 0 评论 -
利用for循环求1000到2000年间的闰年
闰年:能被4整除但不能被100整除,或能被400整除的年份即为闰年。利用for循环求1000到2000年间的闰年:#include#includeint main(){ int i; for(i=1000;i<=2000;i++) { if(i%4==0&&i%100!=0||i%400==0) printf("%6d",i); } system("p原创 2017-09-16 23:53:43 · 6148 阅读 · 0 评论 -
交换两个整型变量的值
方法一(引入变量):#include int main(){ int a=1; int b=2; int c; c=a; a=b; b=c; printf("a=%d b=%d",a,b); return 0; }方法二(不引入变量):#include #includeint main(){ int a=1; int b=2; a=a+b;原创 2017-09-17 17:52:03 · 715 阅读 · 0 评论 -
利用for循环求100~200内的素数
新建项目、文件,编写代码。for循环的结构:for(i=1;i<10;i++){ 循环体}步骤:1——i=0 初始化初值;2—— 进行条件判断i是否小于10,如果条件为真,则继续执行;3——执行循环体的代码;4——i++ 变量i自增一次;5——回到第2步,一直循环,直到第2步条件为假时, 退出循环,结束。素数:不能被处一和它本身外的原创 2017-09-16 23:04:08 · 17849 阅读 · 0 评论 -
利用for循环输出乘法口诀表
编写代码如下:#include<stdio.h>#include<windows.h>int main(){ int i,j,k; for(i=1;i<=9;i++) { for(j=1;j<=i;j++) { printf("%d*%d=%d\n",i,j,i*j); } } system("pause"); return ...原创 2017-09-17 00:26:13 · 2652 阅读 · 0 评论 -
求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和
如:2+22+222+2222+22222 #include int main(){ int i, n = 2, sum = 0; for (i = 1; i <= 6; i++){ sum += n; n = n * 10 + 2; } printf("%d\n", sum); return 0;}原创 2017-09-25 17:28:00 · 287 阅读 · 0 评论 -
求出0~999之间的所有“水仙花数”并输出
“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。 在数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),是指一N位数,其各个数之N次方和等于该数。 例如153、370、371及407就是三位数的水仙花数,其各个数之立方和等于该数原创 2017-09-25 17:25:42 · 312 阅读 · 0 评论 -
在屏幕上输出以下图案: * *** ***** ******* ********* *********** ************* *********** *********
在屏幕上输出以下图案: * *** ***** ******* ********* *********** ************* *********** ********* ******** ***** *** * int main(){ int i, j; for (i = 1; i <= 22; i+=2) { if (i <= 11...原创 2017-09-25 17:23:45 · 6519 阅读 · 0 评论 -
交换两个数组的内容
#includeint main(){ int i=0; int arr1[10] = {0,1,2,3,4,5,6,7,8,9}; int arr2[10] = {9,8,7,6,5,4,3,2,1,0}; swap(arr1,arr2, sizeof(arr1) / sizeof(arr1[0])); for (i = 0; i < sizeof(arr1)原创 2017-09-19 01:15:16 · 409 阅读 · 0 评论 -
用折半查找法在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.
#define _CRT_SECURE_NO_WARNINGS#include int main(){ int a[15] = { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 }; int l = 0, h = 14, x, m; printf("输入数字:"); scanf("%d", &x); while (l<h) {原创 2017-09-28 22:05:02 · 3293 阅读 · 0 评论 -
使用函数,调整数组使奇数全部都位于偶数前面
输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分下列代码为无函数调用时的代码#include#includeint main(){ int a[] = { 0, 1, 2, 3, 4, 9, 0, 2, 3, 1, 4 }; int len = sizeof(a) / sizeof(a[0]); in原创 2017-10-28 15:22:21 · 321 阅读 · 0 评论 -
c语言中的运算符
C语言运算符是说明特定操作的符号,它是构造C语言表达式的工具。C语言的运算异常丰富,除了控制语句和输入输出以外的几乎所有的基本操作都为运算符处理。除了常见的三大类,算术运算符、关系运算符与逻辑运算符之外,还有一些用于完成特殊任务的运算符,比如位运算符。 一、算术运算符 1. 加法运算符 + 除了可以进行加法运算外,还可以表示正号:+5212.减法原创 2017-10-05 14:53:23 · 877 阅读 · 0 评论 -
两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同
输入例子: 1999 2299 输出例子:7 #define _CRT_SECURE_NO_WARNINGS#include#include#includeint main(){ int i = 0; int m = 0; int n = 0; int count = 0; printf("请输入两个数:\n"); scanf("%d%d", &m, &n); fo原创 2017-10-05 14:45:41 · 273 阅读 · 0 评论