c编程习题
sifanchao
这个作者很懒,什么都没留下…
展开
-
把字符串转化成整数
这道题看似很简单,实现其基本功能,大部分人都能用10行代码之内的代码解决。...while(*str){ count=count*10+str-'0'; str++;}...但是,当我们要把很多特殊的情况即测试用例都考虑进去,却不是一件容易的事。 比如:空指针、空字符串“”、正负号、溢出等方方面面的测试用例都考虑到,并在写代码时对这些特殊的输入都定义好合...原创 2018-05-27 20:37:49 · 353 阅读 · 0 评论 -
有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student".
思路:先将整个字符串逆序,得到:I ma a tneduts再对于每个单词进行逆序,结果为:i ma a student。注意:当转换每个单词时 ,要判断指针当前指向位置,去除“\0”和“ ”的干扰。#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include <stdlib.h>#includ...原创 2018-04-17 03:09:54 · 586 阅读 · 0 评论 -
一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。 请找出这个数字
首先,一个数组里面的元素可能是奇数个也可能是偶数个。同时,判断数组里的数是否成对出现有三种情况:可能有一个单数、也可能没有、还有可能有两个单数。当数组个数奇数时:例如{1,3,5,7,1,3,5}; 数组不全成对出现,且只可能有一个单数,全部异或的结果为那个单数。当数组个数偶数时:例如{1,3,5,1,3,5}; 数组成对出现,全部异或的结果为0。例如{3,5,7,3,...原创 2018-04-17 02:12:09 · 813 阅读 · 1 评论 -
打印杨辉三角
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include<stdlib.h>int main(){ int n = 0; int i = 0; int j = 0; int arr[20][20] = { 0 }; printf("打印行数:"); scanf("%d", &n);...原创 2018-04-03 22:51:27 · 153 阅读 · 0 评论 -
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯 的一个。以下为4个嫌疑犯的供词
题目:日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯 的一个。以下为4个嫌疑犯的供词。 A说:不是我。 B说:是C。 C说:是D。 D说:C在胡说 已知3个人说了真话,1个人说的是假话。 现在请根据这些信息,写一个程序来确定到底谁是凶手。 #define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h> #include &...原创 2018-04-03 01:49:32 · 354 阅读 · 0 评论 -
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果(使用函数)
题目:5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二; D选手说:C最后,我第三; E选手说:我第四,A第一; 比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。 #define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include &...原创 2018-04-03 01:20:11 · 577 阅读 · 0 评论 -
打印100~200 之间的素数
素数的定义为只能被1和其本身所整除。所以我们只要进行一个循环,将这个数n不断除以2~n-1,如果余数为0,那么是素数;否则不是素数。#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h> //system()的头文件int main(){ int i = 0; int cou...原创 2018-03-19 21:51:40 · 381 阅读 · 0 评论 -
输出乘法口诀表
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>int main(){ int i = 0; printf("--------九九乘法表--------\n"); for (i = 1; i < 10; i++) { int j = 0; for (j...原创 2018-03-19 22:22:49 · 270 阅读 · 0 评论 -
判断1000年---2000年之间的闰年
能被4且100整除或者能被400整除的年份为闰年#include <stdio.h>#include <stdlib.h>int main(){ int year = 0; int number = 0; for (year = 1000; year <= 2000; year++) { if ((year % 4 == 0 && ...原创 2018-03-19 22:47:02 · 365 阅读 · 0 评论 -
给定两个整形变量的值,将两个值的内容进行交换
1.中转型(给定两个整形变量的值)#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>int main(){ int a = 10; int b = 20; int c = 0; ...原创 2018-03-21 01:01:35 · 375 阅读 · 0 评论 -
计算两个数的平均值
我们最直接的方法就是(a+b)/2#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>int ave(int x, int y){ return (x + y) / 2;}int main(){ int a, b = 0; printf("输...原创 2018-04-22 01:38:26 · 2202 阅读 · 0 评论 -
将参数字符串中的字符反向排列
编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中 的字符串操作函数方法1:递归#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#include <asse...原创 2018-04-22 15:46:41 · 508 阅读 · 0 评论 -
八皇后问题
八皇后问题是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 以4皇后为例,如图所示,在图(a)中,第1行第1列上放置一个皇后,图(b)中确定第2行的可能放法,在尝试第1列、第2列由于相互攻击而放弃之后,确定在第3列放置...原创 2018-05-15 01:50:39 · 310 阅读 · 0 评论 -
打印蛇形数组-----2种结构
结构1: 此题需要小小地思考下:在按蛇形填充矩阵的过程中,我们注意到这个固定的过程:右、下、左、上、右、下、左、上、… …这个过程是循环的。 也就是说我们找到了解决问题的规律~接下来只要模拟这个过程就可以了!#define _CRT_SECURE_NO_WARNINGS #include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#inclu...原创 2018-05-14 01:03:20 · 676 阅读 · 0 评论 -
实现字符串到整数的转换,例如输入字符串“12345”,输出整数12345
首先我们得知道字符串转为整数的核心算法,我们以“12345”为例 核心算法:int sum=0;sum=sum*10+str-'0';str为1时,sum=0*10+1-‘0’=1; str为2时,sum=1*10+2-‘0’=12; str为3时,sum=12*10+3-‘0’=123; str为3时,sum=123*10+4-‘0’=1234; str为4时,sum=123...原创 2018-05-20 09:37:54 · 5840 阅读 · 1 评论 -
分别用数组和指针两种方式对一组数由大到小排序
思路:冒泡方法比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。方法1.用数组方式#define _CRT_SECURE_NO_WARNINGS 1...原创 2018-04-20 22:34:43 · 1263 阅读 · 0 评论 -
杨氏矩阵
有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N); 数组: 1 2 3 2 3 4 3 4 5 1 3 4 2 4 5 4 5 6思路:从右上角的数开始,如果查找数>该位数,则行数+1;如果查找数<该位数,则列数-1;直到找到这个数为止。 #de...原创 2018-04-19 12:41:28 · 136 阅读 · 0 评论 -
一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。找出这两个数字
方法1:遍历,查找定义一个临时变量k=0,不断将数组每个数与数组每个元素比较,如果两个数相等k++,然后判断k是否等于1。如果为1,则这个数在数组只出现一次;如果k=2,说明出现两次。#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>void find_num(int...原创 2018-04-22 17:50:39 · 1283 阅读 · 0 评论 -
喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水。编程实现
用一般方式: 代码实现int main(){ int total = 0; int kps = 0; int ys = 0; printf("请输入钱数:"); scanf("%d", &total); kps = total; while (kps >= 1) { kps += ys; ...原创 2018-04-22 16:59:29 · 2285 阅读 · 0 评论 -
求两个数的最大公约数(4种)
#include <stdio.h>#include <stdlib.h>int main(){ int a, b; printf("请输入两个数:\n"); scanf("%d%d", &a, &b); int n = a; if (n > b) n = b; for (int i = n; i >= 1; i--)...原创 2018-03-21 21:47:39 · 588 阅读 · 2 评论 -
六种主流编程语言(C、C++、Python、JavaScript、PHP、Java)特性对比
这些年来我陆陆续续已经学习了六种编程语言,有些人会说语言学到最后不都差不多吗?其实可以这样讲,也可以不这样讲。虽然每种语言的表达能力大部分是重合的,只是语法表现形式不一样,但是由于历史发展的原因,每种语言形成了自己的支撑环境,所以都有其主要的适用范围。 C、C++、Python和Java四种是通用编程语言,JavaScript和PHP算是Web环境的专用编程语言。C语言由于其底层操作...转载 2018-03-21 23:12:18 · 1402 阅读 · 1 评论 -
判断两个数组是否有相同元素,有就输出“有”,没有就输出“没有(2种)
#include <stdio.h>#include <stdlib.h>int main(){ int num1[] = { 1, 2, 3, 4}; int num2[] = { 5,6,7,8}; int i = 0; for (i = 0; i < sizeof(num1)/sizeof(num1[0]); i++) //sizeof(num1...原创 2018-03-23 01:39:51 · 540 阅读 · 0 评论 -
在一个有序数组中查找具体的某个数字n(折半查找法)
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>int main(){ int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int left = 0; int right = sizeof(arr) / sizeof(arr[...原创 2018-03-28 02:56:07 · 7206 阅读 · 0 评论 -
编写一个程序,可以一直接收键盘字符,如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>int main(){ int ch = 0; int tmp = 0; printf("请输入:\n"); while ((ch = getchar()) != EOF) { if ((ch >= 'a'...原创 2018-03-28 17:37:08 · 247 阅读 · 0 评论 -
获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>int main(){ int m = 0; int n = 0; int i = 0; int count = 0; int arr1[32]; int arr2[32]; printf("请输入两个数:\n"...原创 2018-03-30 01:15:46 · 222 阅读 · 0 评论 -
两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?(2种方法)
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>int main(){ int m = 0; int n = 0; int i = 0; int count = 0; int arr1[32]; int arr2[32]; printf("请输入两个数:\n"...原创 2018-03-30 02:19:55 · 301 阅读 · 0 评论 -
使用结构体打印一个人的信息
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#include <string.h>struct STU // 结构体类型,不占用地址空间{ char name[20]; short int age; char sex[5]; char id[15]...原创 2018-03-30 20:22:04 · 1126 阅读 · 0 评论 -
创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。 要求:自己设计函数的参数,返回值。(使用动态内存)
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>void init(int *arr, int sz){ int i = 0; for (i = 0; i < sz; i++) arr[i] = 0;}void empty(int *arr, int sz...原创 2018-03-31 23:24:17 · 238 阅读 · 0 评论 -
判断一个字符串是否为另外一个字符串旋转之后的字符串
根据左旋或右旋结果和原字符串的联系,可以将一个给定的字符串拷贝一份放在该字符串的后面得到新的字符串(原来字符串数组空间的2倍加1(算上’\0’)),只需要判断另一个字符串是不是组合的新字符串的子字符串就可以解决问题。#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#incl...原创 2018-04-15 17:25:23 · 275 阅读 · 0 评论 -
实现一个函数,可以左旋字符串中的k个字符。 ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB
方法1.采用循环移位,对需要旋转的k个字符按顺序进行旋转,先将要旋转的一个字符保存起来,将后面的往前挪动一位,再将保存起来的这个字符赋给最后一位,这样连续循环k次#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#include <string.h>void...原创 2018-04-15 16:18:09 · 461 阅读 · 0 评论 -
扫雷程序
该程序实现了扫雷的基本功能,可以先写出扫雷实现的框架。它大致可以分为这么几部分: 1)初始化棋盘 2)显示棋盘 3)布雷 4)扫雷其中扫雷部分可以再细化,该程序实现的功能有:第一次下子不会被炸死显示周围雷的个数坐标周围没雷,实现展开 下面是程序部分 (使用两个二维数组,为了方便统计雷的个数,在显示的数组周...原创 2018-04-08 15:51:27 · 656 阅读 · 0 评论 -
猜数字游戏
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#include <time.h>void menu(){ printf("***********************************\n"); printf("*********** 1.pl...原创 2018-03-28 01:58:54 · 232 阅读 · 0 评论 -
求一个整数存储在内存中的二进制中1的个数(4种)
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>int main(){ int num = 0; int count = 0; printf("输入一个数num="); scanf("%d", &num); while (num) { if (num...原创 2018-03-28 01:27:24 · 710 阅读 · 0 评论 -
将数组A中的内容和数组B中的内容进行交换(数组一样大)
#include <stdio.h>#include <stdlib.h>int main(){ int num1[] = { 1, 2, 3, 4 }; int num2[] = { 4, 5, 6, 7 }; int tmp; int i = 0;//交换数组 for (i = 0; i < sizeof(num1) / sizeof(nu...原创 2018-03-23 21:16:46 · 199 阅读 · 0 评论 -
计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的sum(3种)
方法1.pow函数型#include <stdio.h>#include <stdlib.h>#include <math.h>int main(){ int i = 0; double sum = 0; for (i = 1; i <= 100; i++) { sum += (pow(-1, i+1) * 1 / i); // po...原创 2018-03-23 22:28:04 · 1159 阅读 · 0 评论 -
演示多个字符从两端移动,向中间汇聚
1.while循环#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#include <Windows.h> //Sleep()函数的头文件int main(){ char arr1[] = "Welcome to China!!!"; char arr2...原创 2018-03-24 18:38:13 · 152 阅读 · 0 评论 -
计算n的阶乘
方法1.for循环#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>int main(){ int n = 0; int i = 0; int sum = 1; printf("输入n="); scanf("%d", &n); for (i = 1; ...原创 2018-03-24 21:03:59 · 499 阅读 · 0 评论 -
计算1!+2!+3!+...+10!
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>int main(){ int i = 0; int j = 0; int ret = 1; int sum = 0; for (i = 1; i <= 10; i++) { ret = 1; for...原创 2018-03-24 22:26:56 · 4340 阅读 · 0 评论 -
在屏幕上输出菱形,用*表示(3种)
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#include <string.h>#include <Windows.h> //Sleep()的头文件int main(){ char arr1[] = "*************"; ...原创 2018-03-25 00:13:27 · 8243 阅读 · 2 评论 -
求出0~999之间的所有“水仙花数”并输出。(“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身)
方法1.for循环#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>int main(){ int i = 0; int count = 0; printf("水仙花数有:\n"); for (i = 100; i < 1000; i++) { int b...原创 2018-03-25 01:13:25 · 1257 阅读 · 0 评论