c语言小题目
weixin_54930707
这个作者很懒,什么都没留下…
展开
-
模拟实现memcpy和memmove
总体思路就是先用void* 接收数据,然后将其强转为char* 然后根据要复制的数据的大小(字节)一一进行赋值 #include <stdio.h> #include <assert.h> void* my_memcpy(void* dest,void* src,size_t num) { char* ret=(char*)dest; assert(dest != NULL); assert(src != NULL); while(num--) { *(char*)原创 2021-05-11 14:38:21 · 71 阅读 · 0 评论 -
递归方式实现打印一个整数的每一位
//7.递归方式实现打印一个整数的每一位 #include <stdio.h> //递归函数实现 void muti(int n) { //递归终止条件n==0 if(n!=0) { //在打印个位之前要先打印上一位 muti(n/10); //打印个位。 printf("%d ",n%10); } } int main() { int n=0; scanf("%d",&n); muti(n); return 0; } ...原创 2021-04-30 17:06:21 · 29 阅读 · 1 评论 -
递归和非递归分别实现求n的阶乘
//递归和非递归分别实现求n的阶乘 //非递归实现 //#include <stdio.h> // //int main() //{ // int i=0; // int sum=1; // int n=0; // scanf("%d",&n); // if(n==0) // printf("-1\n"); // else if(n>0) // { // for(i=n;i>=1;i--) // { // sum*=i; // } // printf("n!=%原创 2021-04-30 16:54:55 · 318 阅读 · 1 评论 -
递归和非递归分别实现strlen
//递归和非递归分别实现strlen //非递归实现 //#include <stdio.h> //int slen(char* arr) //{ // int i=0; // int count=0; // while(arr[i]) // { // count++; // i++; // } // return i; //} //int main() //{ // char arr[]="abcdefg"; // printf("%d\n",slen(arr)); // return 0原创 2021-04-30 16:41:23 · 53 阅读 · 1 评论 -
编写一个函数 reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中的字符串操作函数。
//编写一个函数 reverse_string(char * string)(递归实现) //实现:将参数字符串中的字符反向排列。 //要求:不能使用C函数库中的字符串操作函数。 #include <stdio.h> void reverse_string(char * string,int sz) { char tmp; int left=0; int right=sz-2; while(left<right) { //实现数组元素之间的交换 tmp=string[le原创 2021-04-30 16:30:46 · 77 阅读 · 1 评论 -
写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和, 例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19
// 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和, //例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19 #include <stdio.h> int DigitSum(int n) { //可直接返回各个位上数字之和 return n/1000+n%1000/100+n%100/10+n%10; } int main() { int n=0; scanf("%d",&n); printf("%d",Digit原创 2021-04-30 16:18:34 · 150 阅读 · 1 评论 -
编写一个函数实现n^k,使用递归实现
#include <stdio.h> //实现求n^k int muti(int n, int k) { if(k==1) return n; else if(k>1) { return n*muti(n,k-1); } else return -1; } int main() { int n=0; int k=0; //输入数值 scanf("%d,%d",&n,&k); //打印数值 printf("%d",muti(n,k));原创 2021-04-30 16:09:24 · 36 阅读 · 1 评论 -
递归和非递归分别实现求第n个斐波那契数。
//递归和非递归求斐波那契数列 //1 非递归方法 #include <stdio.h> //1 1 2 3 5 8 13 21 34 int main() { int i=0; int n=0; long int f1=1; long int f2=1; long int f3; printf("give number\n"); scanf("%d",&n); for(i=1;i<=n-2;i++) { //此处一次运算代表计算一次下一项 f3=f1+f原创 2021-04-30 16:00:43 · 31 阅读 · 1 评论 -
实现一个函数,判断一个数是不是素数。
//5.实现一个函数,判断一个数是不是素数。 #include <stdio.h> void sushu(int x) { int i=0; for(i=2;i<x;i++) { if(x%i==0) break; } if(i==x) printf("素数"); else printf("不是素数"); } int main() { int n=0; scanf("%d",&n); sushu(n); return 0; } ...原创 2021-04-26 21:40:29 · 251 阅读 · 0 评论 -
创建一个数组, //实现函数init()初始化数组、 //实现reverse()函数完成数组元素的逆置。 //要求:自己设计函数的参数,返回值。
//创建一个数组, //实现函数init()初始化数组、 //实现reverse()函数完成数组元素的逆置。 //要求:自己设计函数的参数,返回值。 #include <stdio.h> void init(int arr[],int x) { int i=0; for(i=0;i<x;i++) arr[i]=0; for(i=0;i<x;i++) printf("%2d ",arr[i]); } void reverse(int arr[],int x) { in原创 2021-04-26 21:35:33 · 65 阅读 · 0 评论 -
实现一个函数判断year是不是润年。
//3.实现一个函数判断year是不是润年。 #include <stdio.h> //声明并定义函数 //函数返回值为1是时闰年,返回值为0不是闰年 int is_leap_year(int x) { if((x%4==0 && x%100!=0) || x%400==0) return 1; else return 0; } int main() { int n=0; scanf("%d",&n); if(is_leap_year(n)) pri原创 2021-04-26 21:18:28 · 113 阅读 · 0 评论 -
使用函数实现两个数的交换。
//使用函数实现两个数的交换。 #include <stdio.h> void swap(int x,int y) { int tmp; tmp=x; x=y; y=tmp; printf("a=%d b=%d",x,y); } int main() { int a=4; int b=5; printf("a=%d b=%d\n",a,b); swap(a,b); return 0; }原创 2021-04-26 21:12:34 · 96 阅读 · 0 评论 -
实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定, 输入9,输出9*9口诀表,输入12,输出12*12的乘法口诀表。
//1.实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定, //输入9,输出9*9口诀表,输入12,输出12*12的乘法口诀表。 #include <stdio.h> //函数声明和定义 void multiplication(int n) { int i=0; int j=0; //循环嵌套打印 for(i=1;i<=n;i++) { for(j=1;j<=i;j++) { printf("%2d*%2d=%3d",j,i,i*j); //d前原创 2021-04-26 21:08:52 · 150 阅读 · 0 评论 -
编写一个程序,可以一直接收键盘字符, 如果是小写字符就输出对应的大写字符, 如果接收的是大写字符,就输出对应的小写字符, 如果是数字不输出。
//4.编写一个程序,可以一直接收键盘字符, //如果是小写字符就输出对应的大写字符, //如果接收的是大写字符,就输出对应的小写字符, //如果是数字不输出。 // #include <stdio.h> int main() { int a=0; while(1) { scanf("%c",&a); if(a>='a' && a<='z') printf("%c\n",a-32); else if(a>='A' &&原创 2021-04-26 20:57:14 · 90 阅读 · 0 评论 -
编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输入,最多输入三次。三次均错,则提示退出程序。
//3.编写代码模拟三次密码输入的场景。 // 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, // 可以重新输入,最多输入三次。三次均错,则提示退出程序。 #include <string.h> #include <stdio.h> int main() { //声明储存输入的值的变量 char inpt[20]={0}; int i=0; for(i=0;i<3;i++) { printf("请输入密码\n"); scanf("%s",i原创 2021-04-26 20:42:36 · 102 阅读 · 0 评论 -
写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找)
//2.写代码可以在整型有序数组中查找想要的数字, //找到了返回下标,找不到返回-1.(折半查找) #include <stdio.h> #define N 9 int main() { //初始化下标值,如果没有新的下标则说明没找到 int sign=0; //声明并初始化要找的数值 int n=0; //声明一个有序数组 int arr[N]={1,2,3,4,5,6,7,8,9}; //初始化对半查找所需要的变量 int left=0; int right=8; i原创 2021-04-26 20:19:23 · 106 阅读 · 0 评论 -
猜字数游戏
//猜字数游戏 #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int a=0; int num=0; //创建一个随机数 srand((unsigned)time(NULL)); //使随机数的值在0到29之间 num=rand()%30; printf("%d",num); //进行猜数字游戏 do{ printf("输入一个数\n"); scan.原创 2021-04-25 21:26:20 · 79 阅读 · 0 评论 -
求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字, 例如:2+22+222+2222+22222
#include <stdio.h> #include <math.h> //运用递归来求通项的数值 int an(int a,int i) { if(i==1) { return a; } else { return a*pow(10.0,i-1)+an(a,i-1); } } int main() { int sum=0; int i=0; //从键盘键入数值a int a=0; scanf("%d",&a); //建立函数循环求通项原创 2021-04-24 16:31:24 · 118 阅读 · 0 评论 -
求出0~999之间的所有“水仙花数”并输出。 “水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。
//2.求出0~999之间的所有“水仙花数”并输出。 //“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1^3+5^3+3^3,则153是一个“水仙花数”。 #include <stdio.h> int main() { int i=0; int hu=0; int te=0; int on=0; for(i=1;i<999;i++) { //求出百位 十位 和个位 hu=i/100; te=i%100/10; on=i%10;原创 2021-04-24 16:05:24 · 72 阅读 · 0 评论 -
在屏幕上输出一个菱形
这里主要是找到什么时候打印空格,什么时候打印符号 我们可以给每个位置标上一个坐标,然后找出打印空格要满足的条件 例如第一行第二个位置是(1,2) 就可以很快打印出来了 #include <stdio.h> int main() { int j=0; //打印最多的一行是多少 int max=13; //计算中间一行上面的三角有多少行 同下面的三角 int n=(max-1)/2; int i=0; //打印上三角 for(i=1;i<=n;i++) { for(j原创 2021-04-24 15:50:23 · 43 阅读 · 0 评论 -
编写程序数一下 1到 100 的所有整数中出现多少个数字9。
#include <stdio.h> int main() { //创建计数器 int count=0; //对1到99遍历找十位和个位的9 int i=0; for(i=1;i<=100;i++) { //检查个位是否有9 if(i%10==9) count++; //检查十位是否有9 if(i/10==9) count++; } printf("count=%d",count); return 0; } ...原创 2021-04-24 14:53:45 · 97 阅读 · 0 评论 -
计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。
#include <stdio.h> int main() { //循环的分母最后为100 int n=100; //声明和为双精度的和 double sum=0; //改变1/i的正负 int flag=1; //对1/i遍历求和 int i=0; for(i=1;i<=n;i++) { sum+=(flag*1.0/i); flag*=-1; } printf("sum=%lf",sum); return 0; } ...原创 2021-04-24 14:44:46 · 45 阅读 · 0 评论 -
将数组A中的内容和数组B中的内容进行交换。(数组长度一致)
//1. 将数组A中的内容和数组B中的内容进行交换。(数组一样大) #include <stdio.h> int main() { int i=0; int tmp=0; int arr1[5]={1,2,3,4,5};//自己建立声明两个数组 int arr2[5]={7,8,9,6,3}; //按行打印两个数组的值 for(i=0;i<5;i++) { printf("arr1[%d]=%d ",i,arr1[i]); } printf("\n"); fo原创 2021-04-24 14:33:48 · 105 阅读 · 0 评论 -
求两个数的最大公约数
#include <stdio.h> //求两个数的最大公约数 int main() { int a=0; int b=0; int c=0; //从键盘输入两个数字 scanf("%d%d",&a,&b); //让两个数中a处于较大的数字 if(a<b) { //如果a<b则交换两个数字的值 a=a^b; b=a^b; a=a^b; //此方法在本专栏交换两个数的值有说明 } c=a%b; while(c!=0) {原创 2021-04-18 21:11:11 · 29 阅读 · 0 评论 -
将三个数按从大到小输出
#include <stdio.h> //将三个数按从大到小输出 int main() { int max=0; int a=1,b=2,c=3; //假设a为最大值 max=a; if(max<b) max=b; if(max<c) max=c; printf("max=%d\n",max); return 0; }原创 2021-04-18 20:56:08 · 35 阅读 · 0 评论 -
求10 个整数中最大值
#include <stdio.h> //求10 个整数中最大值。 int main() { int i=0; //用数组存放十个整数 int arr[10]={1,2,3,4,5,6,7,8,9,0}; //假设最大值为数组的第一个 int max=arr[0]; //逐个比较得出最大值 for(i=1;i<10;i++) { if(max<arr[i]) max=arr[i]; } printf("max=%d",max); return 0;原创 2021-04-18 20:52:23 · 76 阅读 · 0 评论 -
交换两个数的值 创建临时变量or不创建临时变量
创建临时变量 #include <stdio.h> //给定两个整形变量的值,将两个值的内容进行交换 //1.创建临时变量 int main() { int tmp=0; int a=5; int b=10; tmp=a;//创建临时变量,储存a的值,方便赋值给b a=b; b=tmp; printf("a=%d b=%d\n",a,b); return 0; } 不创建临时变量 ```c #include <stdio.h> //2.不创建临时变量 int m原创 2021-04-18 20:45:33 · 62 阅读 · 0 评论 -
判断1000到200之间的闰年
判断1000到200之间的闰年 #include <stdio.h> //判断1000到200之间的闰年 int main() { int i=0; for(i=1000;i<=2000;i++) { if((i%4==0 && i%100!=0) || i%400==0) printf("%d\n",i); } return 0; }原创 2021-04-18 20:15:59 · 52 阅读 · 0 评论 -
输出乘法口诀表
输出乘法口诀表 #include <stdio.h> //输出乘法口诀表 int main() { int i=0; int j=0; for(i=1;i<=9;i++) { for(j=1;j<=i;j++) { printf("%d*%d=%2d ",i,j,i*j);//%2d使其为个位也占2个数字的空间,防止出现对不齐的现象 } printf("\n"); } return 0; } ...原创 2021-04-18 20:14:47 · 62 阅读 · 0 评论 -
打印100到200之间的素数
打印100到200之间的素数 #include <stdio.h> //打印100到200之间的素数 int main() { int i=0; int j=0; for(i=100;i<=200;i++)//遍历100到200之间的数 { for(j=2;j<i;j++) { if(i%j==0)//如果有不是1和本身可以整除这个数的话,这个数则不是素数,不需要继续判断 { break; } else if(j==i-1)//原创 2021-04-18 20:11:53 · 46 阅读 · 0 评论