C语言
cerf-volant
这个作者很懒,什么都没留下…
展开
-
C语言基础知识
1个字节由8位比特位(0/1)组成 数据占据的空间越大,表示数字的范围越大笔试:char数据类型占几个字节? 在32位windows系统下,占1个字节(附加前提)字符串不是类型,通过字符数组表示字符串 若局部变量与全局变量命名冲突,则局部覆盖全局 作用域:变量在哪些代码范围中有效 生命周期:何时销毁(释放)占用内存 常量:a.字面常量b.const修饰的常量(不可修...原创 2018-10-09 22:37:37 · 112 阅读 · 0 评论 -
反向排列字符串的字符
编写一个函数不使用C函数库中的字符串操作函数,递归实现参数字符串中的字符反向排列。代码:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int StringLength(char* str){ if (*str == '\0'){ return 0; } re...原创 2018-10-15 16:20:33 · 478 阅读 · 0 评论 -
两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
代码:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>//将数转化为反向的二进制int Trans(int num){ int arr[32] = { 0 }; int i = 0; while (i<32){ arr[i] = num % 2; i+...原创 2018-10-18 23:22:34 · 102 阅读 · 0 评论 -
获取一个数二进制序列中所有的偶数位和奇数位
代码:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>//1.将数字转化为二进制//2.由于二进制数是由数字对2反向取模,//即取模后得到的第奇数个数字为偶数位(偶数同理)void Sequence(int num){ int num1 = num; int a...原创 2018-10-19 08:57:54 · 201 阅读 · 0 评论 -
选择排序
代码:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>//交换函数int Swap(int* num1, int* num2){ int temp; temp = *num1; *num1 = *num2; *num2 = temp;}//将最小的数筛选出来...原创 2018-10-19 10:49:37 · 81 阅读 · 0 评论 -
自定义棋盘大小的N子棋
三子棋代码:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>//对于数组的长度,最好定义成宏//方便程序的扩展,改宏定义则可修改数组元素个数#define ROW 3#define COL 3//1.定义二维数组来表示棋盘char g_chess_board[R...原创 2018-10-19 16:11:07 · 723 阅读 · 0 评论 -
返回参数二进制中 1 的个数
代码:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int CountOneBits(unsigned int value){ //1.转换为二进制,即对2反向取模 由于本程序只是求取1的个数,所以不考虑方向 //2.若模为二,则计数加1 /...原创 2018-10-17 09:19:38 · 159 阅读 · 0 评论 -
输出一个整数的每一位
代码:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int Func(int num){ if (num > 10){ Func(num / 10); } printf("%d ", num%10);}int main(){ int num; p...原创 2018-10-17 10:43:10 · 109 阅读 · 0 评论 -
扫雷
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>int Menu( ){ printf("1.开始游戏\n"); printf("0.退出游戏\n"); printf...原创 2018-10-21 13:16:37 · 130 阅读 · 0 评论 -
指针
指针概念 指针是个变量,也是一个具有特定含义的数字——表示一个内存的地址(房间号)指针的大小在32位平台是4个字节,在64位平台是8个字节 指针类型 零号内存(房间号)存在但不可用,用其代表特定的含义——空指针NULL(本质是个宏) 指针运算 指针和整数相加减时,最终的取值和指针的类型密切相关:#include <stdio.h>#incl...原创 2018-10-25 22:31:33 · 84 阅读 · 0 评论 -
结构体
基本概念:自定制的数据类型结构体变量的定义、初始化和访问:一个空指针对应的内存,既不能读,也不能写带有垃圾回收机制的编程语言,都具有STW问题(stop the world)#include <stdio.h>#include <stdlib.h>//自定指一种类型,该类型的变量用来表示一个学生//抽象typedef struct Stude...原创 2018-10-26 10:10:14 · 120 阅读 · 0 评论 -
推理编程
1.5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二; D选手说:C最后,我第三; E选手说:我第四,A第一; 比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。 代码:#include <stdio.h>#include <stdlib.h>in...原创 2018-10-26 11:16:01 · 297 阅读 · 0 评论 -
在屏幕上打印杨辉三角
代码:#include <stdio.h>#include <stdlib.h>//杨辉三角形//每一行的首元素和尾元素都为1//第n行有n个元素//arr[n+1][i]=arr[n][i]+arr[n][i-1]//打印到第N行#define N 10int main(){ int n; //第n行 int i; //每行第i个元素...原创 2018-10-26 16:59:46 · 112 阅读 · 0 评论 -
编写函数可求得返回值value的二进制位模式从左到右翻转后的值
编写函数: unsigned int ReverseBit(unsigned int value); 这个函数的返回值value的二进制位模式从左到右翻转后的值。 如: 在32位机器上25这个值包含下列各位: 00000000000000000000000000011001 翻转后:(2550136832) 10011000000000000000000000000000 程序结果...原创 2018-10-26 18:49:57 · 138 阅读 · 0 评论 -
求两个数的平均值
由于当两个数较大时,(a+b)/2这种方式可能会溢出,因此不采用此方法求两个数的平均值。 代码:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>//不使用(a + b) / 2,求两个数的平均值。int main(){ int a, b; printf("请输入...原创 2018-10-27 08:34:10 · 310 阅读 · 0 评论 -
C语言——操作符
算术运算符 + - * / %注:不可除0也不可模0 两个整数相除得到的结果为整数。 移位操作符 左移<< 右移>>不可移动负数位对于CPU来说,计算移位操作,效率远远高于计算除法操作 移位操作是按照二进制进行移位:左移一位相当于 *2,右移一位相当于 /2#include <std...原创 2018-10-24 17:23:44 · 422 阅读 · 0 评论 -
找出一组数据中唯一单独出现的数字
一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。 请找出这个数字。 代码:#include <stdio.h>#include <stdlib.h>int main(){ int arr[11] = { 11,10,1,1,20,7,9,20,10,11,7 }; int j = 0; int i = 0; for (i = 0; i ...原创 2018-10-27 09:14:44 · 389 阅读 · 0 评论 -
递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和
例:调用DigitSum(1729),则应该返回1+7+2+9,它的和是19代码:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int Add(int num){ if (num < 9){ return num; } return num % 10+...原创 2018-10-14 17:41:30 · 285 阅读 · 0 评论 -
利用递归编写一个函数实现n^k
代码:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>double Power(double n, double k){ if (k == 0){ return 1; } if (n == 0){ return 0; } if (k > 0){ ...原创 2018-10-14 17:32:18 · 290 阅读 · 0 评论 -
数组
数组的定义,必须在定义时指明数组元素个数 严禁使用未初始化的变量,如果使用了未初始化的变量,这样的行为叫做未定义行为(Undefined Behavior,UB)int arr[5]={1,2} //arr[5]={1,2,0,0,0,}二维数组就是一个一维数组,数组的每个元素也是一个一维数组arr[3][4]:一个长度为3的数组,里面每个元素是长度4对应的内存空间仍然是...原创 2018-10-14 16:48:44 · 122 阅读 · 0 评论 -
练习(对两个整型变量的值进行交换、求10 个整数中最大值、将三个数按从大到小输出、求两个数的最大公约数)
1.给定两个整型变量的值,将两个值的内容进行交换分析:利用临时变量对两个整型变量进行交换代码:#include <stdio.h>#include <stdlib.h>int main(){ int a = 10; int b = 20; int c; printf("a=%d,b=%d\n", a, b); c = a; a = b;...原创 2018-09-24 09:40:47 · 176 阅读 · 0 评论 -
将数组A中的内容和数组B中的内容进行交换。(数组一样大)
代码:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>//定义一个交换数组值的函数void swap(int arr1[], int arr2[],int length){ int i,temp; for (i = 0; i < length; i++){ ...原创 2018-09-26 15:58:18 · 113 阅读 · 0 评论 -
计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值
分析:将式子拆分成两部分:正数相加部分、负数相加部分。利用for循环分别求得第一部分和第二部分之和,再将两个和相减。#include <stdio.h>#include <stdlib.h>double add(double a, double b){ double sum = a + b; return sum;}int main(){ int...原创 2018-09-26 17:48:29 · 273 阅读 · 0 评论 -
1到 100 的所有整数中出现多少次数字9
分析:定义一个变量time=0,利用for循环遍历1-100,若i除以10余数为9/商为9,则time加1。注意:99中9出现了两次,可以利用其除以10的余数为9且商也为9,进行运算。#include<stdio.h>#include<stdlib.h>int main(){ int time = 0; int i = 1; for (i; i &...原创 2018-09-26 17:56:14 · 607 阅读 · 0 评论 -
在屏幕上输出菱形
分析:最长的部分为13个*,将整个图案拆分成两部分——上三角、下三角,分别利用for循环实现。代码:方法一:#include <stdio.h>#include <stdlib.h>int main(){ int j; int i; int k; for (i=0; i < 7; i++){ for (j=0; j <6 - ...原创 2018-09-28 15:42:05 · 1096 阅读 · 0 评论 -
求出0~999之间的所有“水仙花数”并输出
代码:#include <stdio.h>#include <stdlib.h>int main(){ int i = 0; int g,s,b; printf("0~999之间的水仙花数为:\n"); for (i; i < 1000; i++){ g = i % 10; s = i / 10 - (i / 100)*10; b = ...原创 2018-09-28 21:07:22 · 186 阅读 · 0 评论 -
求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字
代码:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int main(){ int fir; int sec; int th; int fou; int fif; printf("请输入一个个位数:\n"); scanf("%d", &fir); ...原创 2018-09-28 21:26:28 · 96 阅读 · 0 评论 -
分支与循环语句
while语句 练习:打印1-100之间的奇数#include <stdio.h>#include <stdlib.h>int IsOdd(int x){ if (x%2 == 0){ return 0; } return 1;} int main(){ int i=1; while (i<101){ ...原创 2018-10-10 17:09:07 · 104 阅读 · 0 评论 -
猜数字游戏
计算机自动生成一个随机数字,用户输入一个数字。若该数值与生成的数字不同,有计算机提示大小,直到猜对。代码:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int Menu(){ int choice; printf("************************...原创 2018-10-12 17:32:14 · 182 阅读 · 0 评论 -
折半查找
可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1代码:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int BinarySearch(int arr[],int left,int right,int key){ int mid; while (...原创 2018-10-12 18:13:33 · 84 阅读 · 0 评论 -
用户登录
最多能输入三次密码,密码正确,提示“登录成功”;密码错误,可以重新输入,最多输入三次。三次均错,则提示退出程序。代码:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int main(){ char password[1024]="123456"; char pas...原创 2018-10-12 23:22:02 · 200 阅读 · 0 评论 -
接收字符
编写一个程序,可以一直接收键盘字符。如果是小写字符就输出对应的大写字符,如果接收的是大写字符就输出对应的小写字符,如果是数字不输出。解析:可以利用ASCII码对字符进行转换。先将输入的字符转换为ASCII码,再对ASCII码进行加减运算,最后将运算后的ASCI码转化为字符输出。代码:#define _CRT_SECURE_NO_WARNINGS#include <stdi...原创 2018-10-12 23:52:10 · 380 阅读 · 0 评论 -
函数
strcmp函数:依次比较字符数组中的每一个元素,数组可隐式转换为指针,因此该函数的参数可用数组表示若第一个参数字符小于第二个参数字符,则返回<0若第一个参数字符大于第二个参数字符,则返回>0若两个字符串相等,则返回0 字符大小比较(字典序): 依次取两个字符串的对应字符,若两个字符能区分出大小,则字符串也可区分出大小;若两个字符不能区分大小,则 ...原创 2018-10-13 17:30:10 · 95 阅读 · 0 评论 -
求字符串的长度
字符串是通过字符数组的形式来模拟,字符数组本质上就是一个普通的数组,每个元素的类型是char类型代码://方法一#include <stdio.h>#include <stdlib.h>#include <string.h>int Strlen(char* str){ return strlen(str);}int main(){ ...原创 2018-10-14 14:08:30 · 2380 阅读 · 0 评论 -
求n的阶乘
代码:借助for循环编写阶乘函数#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int Factorial(int n){ int num=1; for (n; n > 0; n--){ num *=n; } return num;}int ma...原创 2018-10-14 14:30:45 · 138 阅读 · 0 评论 -
求第n个斐波那契数
代码:利用循环:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int Fibonacci(int n){ int num; int i = 1; int j = 1; int count = 3; if (n == 1 || n == 2){ retur...原创 2018-10-14 14:56:18 · 291 阅读 · 0 评论 -
有一个字符数组的内容为:"student a am i", 将数组的内容改为"i am a student"
有一个字符数组的内容为:"student a am i", 将数组的内容改为"i am a student"要求: 不能使用库函数只能开辟有限个空间(空间个数和字符串的长度无关)eg:student a am i i ma a tneduts i am a student 先将整个字符串翻转过来,再依次将单词翻转过来代码:#include <stdio.h>...原创 2018-10-27 10:19:18 · 200 阅读 · 0 评论