C语言
zz070
这个作者很懒,什么都没留下…
展开
-
判断一个字符串是否为另外一个字符串旋转之后的字符串(C语言)
问题描述:判断一个字符串是否为另外一个字符串旋转之后的字符串。例如:给定a =AABCD和b = BCDAA,返回1给定a=abcd和b=ACBD,返回0.AABCD左旋一个字符得到ABCDAAABCD左旋两个字符得到BCDAAAABCD右旋一个字符得到DAABC思路:字符串旋转的方式分为左旋和右旋,要判断一个字符串是否为另外一个字符串旋转之后的字符串,首先,写出它左旋和右旋n位的...原创 2019-11-25 17:59:21 · 465 阅读 · 0 评论 -
在样式矩阵中查数(C语言)
题目描述:杨氏矩阵有一个二维数组.数组的每行从左到右是递增的,每列从上到下是递增的.在这样的数组中查找一个数字是否存在。时间复杂度小于O(N);数组:思路:运行结果:完整代码:...原创 2019-11-18 19:54:34 · 248 阅读 · 0 评论 -
调整数组使奇数全部都位于偶数前面(C语言)
题目描述:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。思路:运行结果:完整代码:...原创 2019-11-18 20:26:35 · 1312 阅读 · 0 评论 -
逆转字符串内容(C语言)
问题描述:有一个字符数组的内容为:“student a am i”,请你将数组的内容改为"i am a student".要求:不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。student a am ii ma a tnedutsi am a student思路:对字符串内容进行逆转,可以先逆转整个句子的顺序,再逆转每个单词的顺序。用到的函数及作用:vo...原创 2019-11-14 21:48:54 · 1103 阅读 · 0 评论 -
一组数据中其他所有数字都是成对出现的,找出只出现了一次的数字(C语言)
问题描述:.编程实现:一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。请找出这个数字。(使用位运算)思路:在一组数据中,除一个数据外,其他数据都是成对出现的,在这里,利用了异或运算符,相同为’ 1 ‘,不同为’ 0 '的特点;用数组存储这组数据,用数组的第一个元素作为标志位,与其后面的数进行异或运算,相同的数,其二进制位都为‘ 0 ’,最终a[0]的值即为唯一一个不同的数完...原创 2019-11-13 20:17:32 · 348 阅读 · 0 评论 -
在屏幕上打印杨辉三角(C语言)
思路:用二维数组来表示杨辉三角,由于每行端点与结尾的数为1,所以,可以用语句for (i = 0; i < n; i++){y[i][0] = 1;y[i][i] = 1;}表示,其他的数,等于临近的上面的两个数之和,可以用语句for (i = 2; i < n; i++){for (j = 1; j < i; j++){y[i][j] = y[i - 1][j - 1] +...原创 2019-11-11 22:47:34 · 483 阅读 · 0 评论 -
写一个程序来确定到底谁是凶手(C语言)
问题描述:日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。A说:不是我。B说:是C。C说:是D。D说:C在胡说已知3个人说了真话,1个人说的是假话。现在请根据这些信息,写一个程序来确定到底谁是凶手。思路:在确定凶手之前,每个人都可能是凶手,用for循环来表示每个人都是凶手的可能,已知3个人说了真话,1个人说的是假话,那么证明,在逻...原创 2019-11-11 22:06:09 · 1972 阅读 · 1 评论 -
编程确定比赛的名次(C语言)
问题描述:5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果A选手说:B第二,我第三;B选手说:我第二,E第四;C选手说:我第一,D第二;D选手说:C最后,我第三;E选手说:我第四,A第一;比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。思路:对于每一位运动员,在得出最终结果之前,每个人都有拿到1到5名成绩的可能,用for循环表示每一名运动员名次的可能性;对于每位运...原创 2019-11-11 21:55:21 · 1500 阅读 · 0 评论 -
两个int整数m和n的二进制表达中, 有多少个位不同(C语言)
问题描述:编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?例如:137(1000 1001)和248(1111 1000)一共有4位不同;1999(111 1100 1111)和2299(1000 1111 1011)一共有7位不同;思路:对于这个问题,我采用两种做法:第一种做 法:先把每个数字的二进制位取出来,然后逐一进行比较,定义一个变...原创 2019-11-07 20:51:07 · 570 阅读 · 0 评论 -
编写一个函数 reverse_string(char * string)(递归实现) (C语言)
思路:源程序:#include<stdio.h>#include<windows.h>void Reverse_string(char* ch){ ch++; if(*ch != '\0'){ Reverse_string(ch); } ch--; printf("%c", *ch);}void main(){ char ch[] = "ej...原创 2019-10-31 21:33:27 · 567 阅读 · 0 评论 -
写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和(C语言)
思路:源程序:运行结果:原创 2019-10-27 13:53:11 · 1445 阅读 · 0 评论 -
编写一个函数实现n^k(k>=0),使用递归实现(C语言)
思路:实现计算n的k(k>=0)次方,一共有三种情况,分别是:k=0时,return 1;k=1时,return -1;k>1时, return n*sq(n, k - 1);在sq()函数中实现这些功能,在main()函数中调用即可。源程序:#include<stdio.h>#include<windows.h>int sq(int n, i...原创 2019-10-25 18:07:14 · 433 阅读 · 0 评论 -
创建数组,完成初始化,赋值,排序,清空,逆转操作(C语言)
题目要求:创建一个数组,实现函数init()初始化数组、实现函数input()给数组赋值、实现函数swap()给数组排序、实现reverse()函数完成数组元素的逆置、实现empty()清空数组。要求:自己设计函数的参数,返回值。思路:在main()函数中,调用有不同功能的函数完成相应的功能;通过switch语句进行分支,通过while循环控制不断进行不同操作。创建Menu()...原创 2019-10-25 17:31:12 · 896 阅读 · 0 评论 -
编写程序,可以一直接收键盘字符,并输出其对应的大写字符或小写字符,若是数字不输出(C语言)
题目要求:编写一个程序,可以一直接收键盘字符,如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出。思路:在本程序中,用**getchar()和putchar()**输入和输出字符; 将字符进行大小写转换主要依据的是ASCII码表,A到Z在ASCII码表中用65到90表示,a到z在ASCII码表中用97到122表示,相对应的大小写的ASCII...原创 2019-10-18 16:25:25 · 731 阅读 · 0 评论 -
求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字(C语言)
思路:创建变量Sn来存放各个数之和;用变量a来表示式子中要计算的数字;设置一个临时变量m(m=m*10+a;)来表示Sn=a+aa+aaa+aaaa+aaaaa中每一项的数字,在累加起来(Sn += m;)就完成计算;一共五项,用一个for循环表示即可。源程序:#include<stdio.h>#include<windows.h>void main(){ i...原创 2019-10-14 21:26:22 · 372 阅读 · 0 评论 -
求出0〜999之间的所有“水仙花数”并输出(C语言)
题目要求:求出0〜999之间的所有“水仙花数”并输出。“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。在数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),是指一N位数,其各个数之N次方和等于该数。例如153、370、371及407...原创 2019-10-14 20:50:54 · 1089 阅读 · 0 评论 -
计算1/1-1/2+1/3-1/4+1/5 ⋯⋯ + 1/99 - 1/100 的值(C语言)
思路:计算1/1-1/2+1/3-1/4+1/5 ⋯⋯ + 1/99 - 1/100的值,分子不变,分母从1逐次增大到100,创建一个变量i,使用for循环实现从1到100 的增加;计算符号一正一负依次变化;每次循环给m乘上-1实现计算符号的变化。注意:sum的类型应当为double,分子也应当用double型,否则计算的值为整形(计算结果的类型与被除数类型一致)计算过程:for (in...原创 2019-10-13 15:24:53 · 1553 阅读 · 0 评论 -
将数组A中的内容和数组B中的内容进行交换(数组一样大)(C语言)
创建两个数组用于存放数据;创建变量n,控制存放数据的个数;用for循环输入数据;创建一个临时变量t,用于交换数组;最后再用一个for循环输出交换后的数组。(其中输入数据,交换,和输出交换后的数组,在函数swap(int n)中实现)输入数据: printf("请输入第一个数组的元素(共%d个):", n); for (i = 0; i < n; i++){ scanf_s("...原创 2019-10-13 14:51:56 · 269 阅读 · 0 评论 -
C语言操作符
操作符的分类1、算术操作符2、移位操作符3、位操作符4、赋值操作符5、单目操作符6、关系操作符7、逻辑操作符8、条件操作符9、逗号表达式10、下标引用、函数调用和结构体成员算数操作符 + - * / %1、% 操作符的两个操作数必须是整数,返回的值是两个操作数整除之后的余数;2、/ 操作符的两个操作数,若有一个是浮点数,那么计算结...原创 2019-11-11 21:05:03 · 110 阅读 · 0 评论 -
扫雷(C语言)
思路:进行扫雷游戏,每次点击,若该位置有雷,则游戏结束,若无雷,则显示周围雷的数量,一直进行循环直至游戏结束(胜利或失败);但一般情况下,第一次点到雷不会显示游戏结束,而是会把雷移到别的位置,不会让用户第一次落子就游戏结束;另外,若用户点击,该位置及周围都没有雷就将附近没有雷的地方都展开。在设计过程中,设计者和用户看到的是两个不同的棋盘,但是大小都是1212的,设计者布雷的区域和用户排雷的...原创 2019-11-04 20:41:15 · 1445 阅读 · 3 评论 -
三子棋(C语言)
思路:完成一个三子棋程序,首先要有一个菜单,用于用户选择开始还是退出;然后就可以开始游戏了,在游戏最开始,首先进行一个小的猜数游戏,用于决定接下来的游戏是电脑先开始还是用户先开始;开始游戏以后,每当用户或者电脑走一步后都要显示棋盘现在的状态,然后进行判断,棋盘是否满了,电脑和用户的输赢, 接下来在进行继续落子,或者游戏结束,由用户决定是否开始开始下一轮。在程序中要用到的函数有:void Me...原创 2019-11-01 16:52:05 · 107 阅读 · 0 评论 -
递归和非递归分别实现strlen (C语言)
思路:源程序:#include<stdio.h>#include<windows.h>int Strlen(char* ch){if(*ch != ‘\0’){return 1 + Strlen(ch+1);}return 0;}void main(){char ch[] = “ejjsbchdcujwqwjeqrhoi”;printf(“原字符...原创 2019-10-31 21:43:55 · 675 阅读 · 0 评论 -
递归方式实现打印一个整数的每一位(C语言)
思路:源程序:#include<stdio.h>#include<windows.h>void Output(int n){ if (n > 9){ Output(n/10); } printf("%d ", n % 10);}void main(){ int n; printf("请输入您想要分别输出每一位的数> "); s...原创 2019-10-27 12:39:01 · 2075 阅读 · 1 评论 -
递归和非递归分别实现求n的阶乘(C语言)
思路:n的阶乘即n!=n(n-1)(n-2)……32*1,只要实现n(n-1)然后进行循环或者递归即可源程序:递归:#include<stdio.h>#include<windows.h>int Fac(int n){ if (n == 0 || n == 1){ return 1; } return n*Fac(n - 1);}void mai...原创 2019-10-25 22:44:40 · 680 阅读 · 0 评论 -
递归和非递归分别实现求第n个斐波那契数(C语言)
思路:斐波那契数列的排列是:1,1,2,3,5,8,13,21,34,55,89,144……它后一个数等于前面两个数的和,在这个数列中的数字,就被称为斐波那契数。要求第n个斐波那契数,就要第n-1位和第n-2位斐波那契数之和,可以使用递归和迭代两种方法。递归:当求第一位和第二位斐波那契数时,直接返回1即可,求第n个斐波那契数,返回第n-1位和第n-2位斐波那契数之和即可。迭代(非递归):当...原创 2019-10-25 17:51:57 · 649 阅读 · 0 评论 -
编写代码模拟三次密码输入的场景(C语言)
题目要求编写代码模拟三次密码输入的场景。最多能输入三次密码,密码正确,提示“登录成功”,密码错误,可以重新输入,最多输入三次。三次均错,则提示退出程序。思路:首先,宏定义出正确的账号和密码;然后,在for循环中进行三次账号、密码的输入,再用strcmp 函数判断输入的账号、密码是否正确 ,如果正确,在显示登录成功,跳出循环;如果输入错误,提醒可以再次输入的次数,三次均错,则提示登录失败,...原创 2019-10-18 15:20:22 · 738 阅读 · 0 评论 -
猜数字游戏(C语言)
思路:首先,创建一个menu()函数,由于存放猜数游戏的菜单;然后,创建一个guess()函数,用于存放猜数的过程;最后,在main()函数中调用menu()函数和guess()函数即可。对于menu()函数,只需要用printf(“”)输出可以选择的游戏选项:1、play game 2、exist 即可。对于guess()函数,先生成一个随机数,再将生成的随机数与输入值进行比较,在wh...原创 2019-10-18 14:55:06 · 683 阅读 · 0 评论 -
在屏幕上输出由*组成的图案(C语言)
题目要求:思路:在屏幕上输出以上图案,可分为两部分实现,第一部分是正三角(共13行),‘ * ’ 的数量逐行加一,单数行打印‘ * ’,双数行不打印,只要使用for循环控制行数,在这个循环内再用一个for循环打印‘ * ’即可,第二部分是倒三角(共11行),‘ * ’ 的数量逐行减一,单数行打印 ‘ * ’,双数行不打印,只要使用for循环控制行数,在这个循环内再用一个for循环打印‘ * ...原创 2019-10-14 20:25:07 · 6636 阅读 · 0 评论 -
1到 100 的所有整数中出现多少个数字9(C语言)
思路:1到100的所有整数中出现数字9,即个位为9,或者十位为9,或十位和个位均为9,则经过这几个条件判断即可。用for循环表示1到100的所有整数,用if语句进行判断,创建一个变量count进行计数;最后输出count即为1到 100 的所有整数中出现数字9的个数。判断过程:for (int i = 0; i <= 100; i++){ if (i % 10 == 9 || i ...原创 2019-10-13 15:50:38 · 3884 阅读 · 4 评论 -
将n个数按从大到小输出(C语言)
用数组存储需要排序的数,用for循环输入需要排序的数,用冒泡排序法对n个数进行排序,最后用for循环输出排好的数输入需要排序的数:for (i = 0; i < n; i++){ scanf("%d", &a[i]); }冒泡排序法进行排序:for (int j = 0; j < n-1; j++){ for (i = 0; i < n-j-1; i+...原创 2019-10-11 22:36:16 · 15881 阅读 · 1 评论 -
求10 个整数中最大值(C语言)
用数组存储要比较的10个整数,用冒泡排序法比较10个整数,输出最终的最大值冒泡排序的代码块:for (i = 0; i < 9; i++){ if (a[i] > a[i + 1]){ int j = a[i+1]; a[i+1] = a[i]; a[i] = j; } }源程序:#include<stdio.h>#include&l...原创 2019-10-11 17:45:54 · 1241 阅读 · 0 评论 -
给定两个整形变量的值,将两个值的内容进行交换(C语言)
将交换过程写在函数中两种交换方法:1、给出一个新的变量c作为中间值,将a赋给c,将b赋给a,将c再赋给a代码块如下: c = a; a = b; b = c;2、不用新的变量,将a+b赋给a,将a-b赋给b,再将a-b赋给a代码块如下: a = a + b; b = a - b; a = a - b;**源代码:第一种方法(给出新变量):**#incl...原创 2019-10-11 17:18:29 · 567 阅读 · 0 评论 -
判断1000年---2000年之间的闰年(C语言)
判断闰年的条件:1、每四年一润,每一百年不润;2、每四百年一润C语言语句为:i %4==0&&i%100!=0 || i % 400 == 0用for循环判断1000年到2000年之间的闰年:for (i = 1000; i <= 2000; i++){ if (i %4==0&&i%100!=0 || i % 400 == 0){ p...原创 2019-10-10 22:45:18 · 390 阅读 · 0 评论 -
输出九九乘法表(C语言)
用两个for循环实现九九乘法表两种实现方式:1、输出的九九乘法表呈方形,每一行每一列都是完整的,有重复的式子。2、输出的九九乘法表呈三角形,没有重复的式子。第一种(方形)源代码#include<stdio.h>#include<windows.h>void main(){ int m, n; printf("输出九九乘法口诀:\n"); for (m...原创 2019-10-08 21:06:29 · 8830 阅读 · 0 评论 -
输出100到200之间的素数(C语言)
素数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数用for循环和if语句判断出100到200之间的素数for (i = 100; i <= 200; i++) { for (m = 2; m <= i / 2; m++) if (i%m == 0)break; if (m > i / 2) printf("%d ", i); }程序...原创 2019-10-08 20:38:28 · 3519 阅读 · 0 评论