C语言练习
Wu_Qiyou_csdn
请往前走,不必回头。
展开
-
打印100-200之间的素数
打印100-200之间的素数:#include #include int main(){ int i,j= 0; int count = 0; for(i = 101;i <= 200;i+=2) { for(j = 2;j < i;j++)//(2) for(j = 2;j <= i/2;j++)//(3) for(j = 2;j <= sqrt(i);j++) {原创 2017-03-20 18:40:06 · 439 阅读 · 1 评论 -
折半查找
#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 · 331 阅读 · 0 评论 -
输出一个整数的每一位
#include #include int main(){ int i = 0; int num = 0; scanf("%d",&num); while(num != 0) { i = abs(num%10); printf("%d ",i); num = num/10; } return 0;}原创 2017-03-25 19:01:24 · 306 阅读 · 0 评论 -
扫雷
Magical experience !!!用C语言编写小游戏——扫雷整体思路:程序主要通过两个大小相同的二维字符数组完成,其一为布雷数组(mine[ ][ ]),其二为显示数组(show[ ][ ])。(1)布雷数组: 在此数组内,字符('0')代表没有雷,字符('1')代表有雷,这样便于后面对雷区分布的统计。先用字符('0'原创 2017-04-07 18:22:49 · 595 阅读 · 1 评论 -
创建一个数组, 并实现函数 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 评论 -
编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确的成对出现
#include int main(){ int count = 0; int ch = 0; while((ch=getchar()) != EOF) { if(ch == '{') { count++; } else if(ch == '}') { if(count > 0) count--; else if(count == 0)原创 2017-03-31 20:31:44 · 359 阅读 · 0 评论 -
求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字
#include int main() { int a = 0; int n = 0; int sum = 0; int i = 0; int ret = 0; printf("请输入a的值与相加相的个数n的值 :\n"); scanf("%d",&a); scanf("%d",&n); for(i=0; i<n; i++) { ret = re原创 2017-03-31 20:25:06 · 640 阅读 · 0 评论 -
求出所有“水仙花数”并输出
#include #include int main(){ int i = 0; int sz = 0; printf("请输入查询的范围,即最大值 sz = "); scanf("%d",&sz); for(i=1; i<=sz; i++) { int count = 0; int tmp = i; int sum = 0; while(tmp) {原创 2017-03-31 20:11:21 · 700 阅读 · 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 · 1321 阅读 · 0 评论 -
两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同
两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同? 输入例子:1999 2299输出例子:7 解决这个问题,需要两个知识点:(1)异或:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。(2)一个数和这个数减一,按位与(&),可以去掉二进制中最右面的"1"。 即, 十进制 二原创 2017-04-10 12:32:20 · 928 阅读 · 1 评论 -
5位运动员参加了10米台跳水比赛的问题
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果A选手说:B第一,我第三。B选手说:我第二,E第四。C选手说:我第一,D第二。D选手说:C最后,我第三。E选手说:我第四,A第一。比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。首先,由分析知,这五位选手一定存在并列名次。其次,关于名次的颁排,应该服从一,二,三...这样连续排列名次。程序如下:原创 2017-04-02 23:12:10 · 452 阅读 · 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 · 416 阅读 · 0 评论 -
三子棋
用C语言实现,三子棋。整个程序大体由三部分组成,分别是game.h , game.c , test.c game.h原创 2017-04-03 23:47:18 · 456 阅读 · 0 评论 -
写一个宏可以将一个数字的奇数位和偶数位交换
如何交换一个数字的奇数比特位和偶数比特位呢?1.首先,要想办法得出奇数为和偶数位由 与(&) 的特性可知:任何数 &1等于它本身,0&任何数都为0。所以要得出奇数位 :给奇数位都&1,偶数位都&0 即 :num&0101 0101 0101 0101 0101 0101 0101 0101原创 2017-04-13 13:39:58 · 927 阅读 · 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 · 469 阅读 · 0 评论 -
编写程序数一下 1到 100 的所有整数中出现多少次数字9
#include int main(){ int i = 0; int k = 0; for(i = 1; i < 100; i++) { if(i%10 == 9) { k++; } if(i/10 == 9) { k++; } } printf("%d\n",k); return 0;}原创 2017-03-25 19:06:56 · 2552 阅读 · 0 评论 -
乘法口诀表
乘法口诀表#include int main(){ int i,j = 0; for(i = 1;i <= 9;i++) { for(j = 1;j <= i;j++) { printf("%d*%d=%2d ",i,j,i*j); } printf("\n"); } return 0;}原创 2017-03-20 18:52:52 · 221 阅读 · 0 评论 -
判段1000-2000之间的闰年
判段1000-2000之间的闰年#include int main(){ int i,j = 0; for(i = 1000;i <= 2000;i++) { //if(((i%4==0)&&(i%100!=0))||(i%400==0)) //j++; //printf("%d ",i);原创 2017-03-20 19:14:51 · 274 阅读 · 0 评论 -
给定两个整形变量的值,将两个值的内容进行交换
给定两个整形变量的值,将两个值的内容进行交换#include void Swap(int *x, int *y){ int tmp; tmp = *x; *x = *y; *y = tmp;}int main(){ int a = 10; int b = 20; Swap(&a, &b); printf("a= %d b = %d\n", a,b); return 0原创 2017-03-20 21:29:12 · 482 阅读 · 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 · 332 阅读 · 0 评论 -
求10 个整数中最大值
求10 个整数中最大值#include int main(){ int arr[10]; int i, j, max; for(i = 0; i < 10; i++) { scanf("%d",&arr[i]); } max = arr[0]; for(j = 1; j < sizeof(arr)/sizeof(arr[0]); j++) { if(arr[j] > m原创 2017-03-20 21:36:33 · 411 阅读 · 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 评论 -
将数组A中的内容和数组B中的内容进行交换(数组一样大)
#include int main(){ int arr1[5]={0, 1, 2, 3, 4}; int arr2[5]={5, 6, 7, 8, 9}; int i = 0; for(i = 0; i < sizeof(arr1)/sizeof(arr1[0]); i++) { arr1[i] = arr1[i] ^ arr2[i]; arr2[i] = arr1[i] ^原创 2017-03-24 15:54:49 · 302 阅读 · 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 · 234 阅读 · 0 评论 -
将三个数按从大到小输出
#include void Swap(int* px, int* py){ int tmp = *px; *px = *py; *py = tmp;}int main(){ int a = 0; int b = 0; int c = 0; int t = 0; scanf("%d%d%d",&a,&b,&c); if(a<b) { Swap(&a, &b);原创 2017-03-24 16:25:24 · 395 阅读 · 0 评论 -
求两个数的最大公约数
#include int main(){ int x = 0; int y = 0; int num1, num2, temp; printf("请输入两个正整数:\n"); scanf("%d %d", &num1, &num2); if(num1 < num2) { temp = num1;原创 2017-03-24 16:33:18 · 195 阅读 · 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 · 85 阅读 · 0 评论 -
编写一个程序,可以一直接收键盘字符,如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出
#include int main(){ int ch = 0; while((ch = getchar())!= EOF) { if(ch >= 'a' && ch <= 'z') { printf("%c\n",ch - 32); } if(ch >= 'A' && ch <= 'Z') { printf("%c\n",ch + 32); } e原创 2017-03-25 18:56:05 · 399 阅读 · 0 评论 -
计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值
#include #include int main(){ double i = 0; double sum = 0; for(i = 1; i <= 100; i++) { sum = sum + 1/i * pow(-1,i-1); } printf("%lf\n",sum); return 0;}原创 2017-03-25 18:58:57 · 1160 阅读 · 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 评论