
C语言编程练习
R...
这个作者很懒,什么都没留下…
展开
-
排序使得奇数在前偶数在后使用快排的思想
#include <stdio.h>void main(){ int a[]={3,5,4,2,7,8,1,6}; int n=sizeof(a)/sizeof(a[0]); //插入排序的思想 O(n^2) for(int index=1;index<n;++index) { if(a[index]%2==1) //奇数 { int pos=i...原创 2019-08-30 21:34:38 · 240 阅读 · 0 评论 -
递归实现将整数转换成字符串
每次把之前存的往后放#include <stdio.h>#include <string.h>char str[100];int length = 0;void toStr(int num){ if(num == 0) return; else { for(int i = strlen(str) - 1;i >= 0;i--) {...原创 2019-08-25 21:19:34 · 2463 阅读 · 1 评论 -
用递归的方式计算机两个整数的最大公约数
#include <stdio.h>int Common(int a,int b){ int t; if(a < b) { Common(b,a); } else if(a % b == 0) return b; else Common(b,a%b);}void main(){ int a,b; scanf("%d%d",&a,...原创 2019-08-15 21:52:04 · 598 阅读 · 0 评论 -
求数字的乘积根
1620 = 1 * 6 * 2 = 12, 12 = 1 * 2 = 2,2为1620 的乘积跟#include <stdio.h>void main(){ int count[9] = {0}; int a; for(int i = 1;i < 10000;i++) { int plex = i; a = i; while(plex/10 !...原创 2019-08-15 21:28:33 · 1700 阅读 · 1 评论 -
数组顺序
对数组A中的N个整数从小到大编号,输出各个元素的编号,要求不能改变数组元素的顺序,且相同的整数要有相同的编号。#include <stdio.h>#include <math.h>#include <string.h> void number(int A[],int N){ int arr[2][100]; for(int i = 0;i &...原创 2019-08-11 21:15:14 · 314 阅读 · 0 评论 -
算数列
#include <stdio.h>void main(){ double sum = 0; double s = 2; double x = 1; for(int i = 1;i <= 20;i++) { sum += s/x; s = s + x; x = s - x; } printf("%f",sum);}原创 2019-08-23 20:47:48 · 135 阅读 · 0 评论 -
使用指针完成两个数值的交换
#include <stdio.h>void main(){ int a = 10; int b = 100; int *p = &a; int *q = &b; int t = *p; *p = *q; q = &t; printf("%d %d",*p,*q);}原创 2019-08-23 20:39:15 · 738 阅读 · 0 评论 -
文件操作
注意判断文件是否打开成功feoffgetsfgetcfprintffputctolowertoupper1.加上行号#include <stdio.h>#include <stdlib.h>void main(){ FILE *fp1,*fp2; fp1 = fopen("C:\\Users\\瑞\\Desktop\\fp1...原创 2019-08-23 20:29:44 · 113 阅读 · 0 评论 -
字符串第一次出现的位置
#include <stdio.h>#include <string.h>int substr(char str[],char c[]){ int lenS = strlen(str); int lenC = strlen(c); int flag = 1; for(int i = 0;i < lenS;i++) { flag = i+1; ...原创 2019-08-23 19:40:17 · 2281 阅读 · 0 评论 -
求分式
1.递归思想2.如何控制分数的检查将1-9这9个数字,分别填入到下面公式的括号中,满足数字不能重复,分母不能为1,并且要求分子分母没有除了1以外的公因数。#include <stdio.h>#define N 9int num[9] = {0};int visit[9] = {0};int gcd(int a,int b){ if(a < b) ...原创 2019-08-19 20:05:29 · 313 阅读 · 0 评论 -
计算两个正整数的最大公约数的函数(不用其余变量的方法)
#include <stdio.h>#include <math.h>#include <string.h>int MaxCommonFactor(int a,int b){ if(a <= 0 || b <= 0) return -1; while(a != b) { if(a > b) a = a - b;...原创 2019-08-09 21:19:27 · 1561 阅读 · 0 评论 -
判断素数的函数
#include <stdio.h>#include <math.h>#include <string.h>bool IsPrimeNumber(int n){ if(n <= 1) return false; for(int i = 2 ; i < sqrt(n) ; i++) { if(n % i == 0) ret...原创 2019-08-09 21:11:22 · 5071 阅读 · 3 评论 -
平方是回文数
注意sprintf(str,"%d",N)利用字符串指针编写一程序求所有不超过200的N,N的平方是具有对称性质的回文数#include <stdio.h>#include <string.h>bool check(char str[]){ int i,j; for(i = 0,j = strlen(str) - 1;i != j;i++,j--) ...原创 2019-08-13 21:38:43 · 586 阅读 · 0 评论 -
实现字符左移n个位置
注意s+1#include <stdio.h>#include <string.h123>void strshif(char s[],int shif){ char temp; int len = strlen(s); for(int i = 1;i <= shif;i++) { temp = s[0]; strncpy(s,s+1,le...原创 2019-08-25 21:29:09 · 382 阅读 · 0 评论 -
链表
用链表存储输入的数字,要求存储的顺序与输入的顺序相反1.记住分配空间啊!!!!#include <stdio.h>#include <stdlib.h>typedef struct LNode{ int data; LNode *next;}LNode;void main(){ LNode *L = NULL; LNode *p = NUL...原创 2019-08-21 19:45:03 · 119 阅读 · 0 评论 -
分组
1.注意先从后面开始比编写一个函数,把整数序列分成两个部分,使得左边部分不大于右边#include <stdio.h>#include <stdlib.h>void main(){ int n; scanf("%d",&n); int* arr = (int *)malloc(sizeof(int)*n); int i,j; for(i ...原创 2019-08-21 19:59:03 · 135 阅读 · 0 评论 -
黑白子交换
#include <stdio.h>int count = 0;void print(int *a); //输出黑白子的函数/void change(int *m, int *n); //交换黑白子的函数/void main(){ int i, flag; in...转载 2019-08-30 21:07:28 · 356 阅读 · 0 评论 -
Replace函数替换字符串
#include <stdio.h>#include <string.h>char* Replace(char *str,char *substr,char* newstr){ int i,j,k,m,n; for(i = 0;i < strlen(str);i++) { k = i; for(j = 0;j < strlen(subst...原创 2019-08-29 21:00:11 · 4657 阅读 · 0 评论 -
递归算排列组合
C(m,n)#include <stdio.h>long fun(int m,int n){ if(m == n || n == 0) return(1L); else { return(m*fun(m-1,n)/(m-n)); }}void main(){ int m,n; printf("Cm^n\n"); scanf("%d%d",&am...原创 2019-08-29 21:12:14 · 224 阅读 · 0 评论 -
报数问题
注意计数值的初始值25个人围成一个圈,从第一个人开始顺序报号,凡报号为3和3的倍数者退出圈子,找出最后留在圈子中的人的编号#include <stdio.h>int main(){ int i,k,m,n,num[50],*p; printf("\ninput number of person: n="); scanf("%d",&n); ...原创 2019-08-29 17:31:57 · 2891 阅读 · 0 评论 -
Josegh
设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有人都出圈为止。现要求按出圈次序,每10人一组,给出这n个人的顺序表。请编制函数Josegh()实现此功能。#include <stdio.h>#include <math.h>#include <s...原创 2019-08-29 17:12:47 · 392 阅读 · 0 评论 -
从程序执行效率来说,C语言采取的措施和原因
1.使用指针:对于指针的理解简单点可以认为类似于汇编中的寻址方式,正是指针的存在使C语言威力无穷。有些程序用其他语言也可以实现,但C能够更有效地实现;有些程序无法用其它语言实现,如直接访问硬件,但C却可以。正因为指针可以拥有类似于汇编的寻址方式,所以可以使程序更高效。2.使用宏函数:函数和宏函数的区别就在于,宏函数占用了大量的空间,而函数占用了时间。函数调用是要使用系统的栈来保存数据的,如果编译...原创 2019-08-22 20:56:01 · 2148 阅读 · 0 评论 -
用递归的方式找最大值和最小值
1.INT_MIN和INT_MAX在<limits.h>头文件中2.递归就是划分小问题3.注意函数的max和min要传引用类型,因为要改变他们的值#include <stdio.h>#include <limits.h>void MinMax(int arr[],int n,int &max,int &min){ if(n...原创 2019-08-22 20:53:20 · 3255 阅读 · 0 评论 -
字符串排字典序
1.注意使用函数strcmp <#include string.h>2.注意获取字符值的时候先存入二维数组,再存入指针数组#include <stdio.h>#include <string.h>void Sort(char* str[],int n){ char* temp; for(int i = 0;i < n;i++) {...原创 2019-08-22 20:31:25 · 191 阅读 · 0 评论 -
小括号匹配
#include <stdio.h>#include <string.h>bool Judge(char s[],int length){ char stack[30]; int top = -1; for(int i = 0;i < length;i++) { if(s[i] == '(') { stack[++top] = '(';...原创 2019-08-22 20:13:40 · 437 阅读 · 0 评论 -
删除链表中的最小值
1.用一个保存最小值,一个保存最小值的前驱#include <stdio.h>#include <stdlib.h>typedef struct LNode{ int data; struct LNode* next;}LNode,*LinkList;LinkList CreateList(){ LinkList L; L = (LinkLis...原创 2019-08-22 20:06:08 · 764 阅读 · 0 评论 -
两个递增有序链表合并成递减排序
1.注意临时指针还是用来保存指针值,不要用来指结点#include <stdio.h>#include <stdlib.h>typedef struct LNode{ int data; struct LNode* next;}LNode,*LinkList;LinkList CreateList(){ LinkList L; L = (Lin...原创 2019-08-21 21:00:41 · 882 阅读 · 0 评论 -
插数组
两个数组都是非递减,插完之后仍然是非递减#include <stdio.h>#include <stdlib.h>void main(){ int A[10] = {2,3,4,4,5,6,7,8,9,9}; int B[6] = {4,5,6,7,7,8}; int *C = (int *)malloc(sizeof(int)*16); int i ...原创 2019-08-21 20:14:29 · 105 阅读 · 0 评论 -
八皇后问题
注意主对角线和副对角线的判断#include <stdio.h>int pat[8][8] = {0};int count = 0;void findQueen(int row);void printQueen();bool check(int row,int column);void findQueen(int row){ if(row > 7) {...原创 2019-08-13 21:19:25 · 123 阅读 · 0 评论 -
加密
1.字符串怎么判断结束2.直接读取,省去中间步骤3.memset4.取余操作#include <stdio.h>#include <string.h>void password(int sum[]){ int temp; int s; for(int i = 0;i < 6;i++) { temp = sum[i]; wh...原创 2019-08-18 20:27:14 · 141 阅读 · 0 评论 -
梅森素数
#include <stdio.h>#include <math.h>bool check(int n){ if(n <= 0 || n== 1) return false; else { for(int i = 2;i <= sqrt(n);i++) { if(n % i == 0) return false; ...原创 2019-08-18 19:39:57 · 119 阅读 · 0 评论 -
连接字符串
strlen不算\0注意用‘\0’判断结束,不然有错误字符输出#include <stdio.h>#include <string.h>void main(){ char des[2000]; char src[2000]; scanf("%s%s",&des,&src); for(int i = strlen(des),j = 0...原创 2019-08-03 21:53:59 · 108 阅读 · 0 评论 -
复制字符数组
#include <stdio.h>#include <math.h>#include <string.h>void main(){ char s2[10] = "abcdf\0fg"; char s1[80]; for(int i = 0;s2[i] != '\0';i++) s1[i] = s2[i]; s1[i] = '\0'; ...原创 2019-08-03 21:47:50 · 1001 阅读 · 0 评论 -
删除字符串中的c
#include <stdio.h>#include <math.h>#include <string.h>void main(){ char str[80]; char ch; scanf("%c",&ch); int i = 0; while(ch != '\0' && ch != 'c') { str[i...原创 2019-08-03 21:44:03 · 234 阅读 · 0 评论 -
反序输入字符串
#include <stdio.h>#include <math.h>#include <string.h>void main(){ char str[80]; gets(str); for(int i = strlen(str)-1;i >= 0;--i) { printf("%c",str[i]); } printf("\n...原创 2019-08-03 21:39:32 · 375 阅读 · 0 评论 -
输出杨辉三角
#include <stdio.h>#include <math.h>void main(){ int a[6][6]; for(int i = 0;i < 6;i++) { a[i][0] = 1; a[i][i] = 1; } for(i = 1;i < 6;i++) { for(int j = 1;j < i;j...原创 2019-08-03 21:35:36 · 198 阅读 · 0 评论 -
计算时间
//从键盘输入从某日午夜零点到现在已经经历的时间(时间为秒),编一程序计算到现在为止已过了多少天,现在的时间是多少#include <stdio.h>void main(){ int seconds; scanf("%d",&seconds); int day = seconds/(24*3600); printf("day = %d\n",day); in...原创 2019-07-21 21:53:41 · 1210 阅读 · 0 评论 -
变换值不借助变量
//(*)编程从键盘输入两个整数分别给变量a和b,要求在不借助于其他变量的条件下,将变量a和b的值实现交换。#include <stdio.h>int main(){ int a,b; scanf("%d%d",&a,&b); a = a+b; b = a - b; a = a - b; printf("%d %d",a,b); return ...原创 2019-07-21 21:41:08 · 291 阅读 · 0 评论 -
求方程
//已知一元二次方程ax^2+bx+c=0,输入a、b、c,求出x;#include <stdio.h>#include <math.h>void main(){ float a,b,c; scanf("%f%f%f",&a,&b,&c); float m; float x1; float x2; m = b*b-4*a*c;...原创 2019-07-21 21:40:22 · 198 阅读 · 0 评论 -
输出十六进制数
//(*)编程从键盘输入任意一个十六进制负整数,以输入的形式输出。例如输入-FA98,输出-FA98#include <stdio.h>int main(){ short int a; scanf("%X",&a); printf("-%hX",-a); return 0; } //这个方法只有visual C++上可以 ...原创 2019-07-21 21:39:57 · 3313 阅读 · 0 评论