C语言基础编程学习
这是我重新开始学习C语言的一个过程,记录了我学习的经历和点滴。对于自己来说,是一个新的开始,在编程中寻找乐趣。This is why we play!
Wu_Qiyou_csdn
请往前走,不必回头。
展开
-
两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同
两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同? 输入例子:1999 2299输出例子:7 解决这个问题,需要两个知识点:(1)异或:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。(2)一个数和这个数减一,按位与(&),可以去掉二进制中最右面的"1"。 即, 十进制 二原创 2017-04-10 12:32:20 · 924 阅读 · 1 评论 -
写一个宏可以将一个数字的奇数位和偶数位交换
如何交换一个数字的奇数比特位和偶数比特位呢?1.首先,要想办法得出奇数为和偶数位由 与(&) 的特性可知:任何数 &1等于它本身,0&任何数都为0。所以要得出奇数位 :给奇数位都&1,偶数位都&0 即 :num&0101 0101 0101 0101 0101 0101 0101 0101原创 2017-04-13 13:39:58 · 925 阅读 · 0 评论 -
创建一个数组, 并实现函数 init(),empty(), reverse()
创建一个数组并实现函数: init()初始化数组 empty()清空数组 reverse()完成数组元素的逆置#include void init(int a[],int sz){ int i = 0; for (i=1; i<=sz; i++) { a[i] = i; printf("%d ",a[i]); }}原创 2017-04-08 16:44:27 · 1287 阅读 · 0 评论 -
扫雷
Magical experience !!!用C语言编写小游戏——扫雷整体思路:程序主要通过两个大小相同的二维字符数组完成,其一为布雷数组(mine[ ][ ]),其二为显示数组(show[ ][ ])。(1)布雷数组: 在此数组内,字符('0')代表没有雷,字符('1')代表有雷,这样便于后面对雷区分布的统计。先用字符('0'原创 2017-04-07 18:22:49 · 594 阅读 · 1 评论 -
数组相关的运算(sizeof,strlen)
sizeof strlensizeof():简单的说其作用就是返回一个对象或者类型所占的内存字节数。strlen():用来计算指定的字符串s 的长度,不包括结束字符"\0"。1)一维数组int main(){ int a[] = {1,2,3,4}; printf("%d\n",sizeof(a)); //16 整个数组大小 printf(原创 2017-04-04 22:37:24 · 395 阅读 · 0 评论 -
不允许创建临时变量,交换两个数的内容
不允许创建临时变量,交换两个数的内容#include int main(){ int a = 10; int b = 20; a = a ^ b; b = a ^ b; a = a ^ b; printf("a= %d b = %d\n", a,b); return 0;}原创 2017-03-20 21:32:55 · 330 阅读 · 0 评论 -
写一个函数返回参数二进制中 1 的个数
写一个函数返回参数二进制中 1 的个数#include int count_one_bits(unsigned int value){ int count = 0; while(value) { if(value%2 == 1) { count++; } value = value/2; } return count; } int ma原创 2017-03-20 22:02:48 · 370 阅读 · 0 评论 -
获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列
#include int main(){ int num = 0; int i = 0; scanf("%d",&num); printf("奇数位:"); for(i = 30; i >= 0; i -= 2) { printf("%d ",(num >> i)&1); } printf("\n偶数位:"); for(i = 31; i >= 1;原创 2017-03-24 16:20:36 · 233 阅读 · 0 评论 -
编写代码模拟三次密码输入的场景
#include int main(){ int i = 0; int password[] = {0}; for(i = 1; i <= 3; i++) { scanf("%s",password); if(strcmp(password,"123456") == 0) { break; } else { printf("密码错误,请重新输入\n")原创 2017-03-24 19:57:46 · 84 阅读 · 0 评论 -
猜数字游戏
#include #include #include void menu(){ printf("##############################\n"); printf("####### 1.play 0.exit #######\n"); printf("##############################\n");}void game(){ in原创 2017-03-26 11:11:25 · 467 阅读 · 0 评论 -
折半查找
#include int binary_search(int arr[], int key){ int mid = 0; int left = 0; int right = 0; scanf("%d%d",&left,&right); while(left<=right) { mid = left-(left-right)/2; if(arr[mid]>key)原创 2017-03-26 11:13:28 · 328 阅读 · 0 评论 -
在屏幕上用"*"输出菱形图案
方法一:先计算菱形中最长"*"的个数,通过交换字符的方法来输出图案。void step1(int left,int right){ char arr1[] ="*************"; char arr2[] =" "; while((left>1)&&(right<12)) { arr2[left] = arr1[left]; arr2[rig原创 2017-03-31 19:50:31 · 1319 阅读 · 0 评论 -
5位运动员参加了10米台跳水比赛的问题
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果A选手说:B第一,我第三。B选手说:我第二,E第四。C选手说:我第一,D第二。D选手说:C最后,我第三。E选手说:我第四,A第一。比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。首先,由分析知,这五位选手一定存在并列名次。其次,关于名次的颁排,应该服从一,二,三...这样连续排列名次。程序如下:原创 2017-04-02 23:12:10 · 451 阅读 · 0 评论 -
推理日本谋杀案的问题
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。A说:不是我。B说:是C。C说:是D。D说:C在胡说已知3个人说了真话,1个人说的是假话。现在请根据这些信息,写一个程序来确定到底谁是凶手。程序如下:#include int main() { int sup = 0; for (sup =原创 2017-04-02 23:32:07 · 414 阅读 · 0 评论 -
三子棋
用C语言实现,三子棋。整个程序大体由三部分组成,分别是game.h , game.c , test.c game.h原创 2017-04-03 23:47:18 · 454 阅读 · 0 评论 -
冒泡排序
冒泡排序其基本思想就是不断比较相邻的两个数,让较大的元素不断地往后移。经过一轮比较,就选出最大的数;经过第2轮比较,就选出次大的数,以此类推。#include #include #define N 8void bubble_sort(int a[],int n){ int i = 0; int j = 0; for(i=0; i<n-1; i++) { for原创 2017-04-04 01:53:29 · 395 阅读 · 0 评论