
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 · 119 阅读 · 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 · 61 阅读 · 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 · 366 阅读 · 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 · 104 阅读 · 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 · 118 阅读 · 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 · 213 阅读 · 1 评论 -
编写一个函数实现n^k,使用递归实现
#include <stdio.h>//实现求n^kint 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 · 65 阅读 · 1 评论 -
递归和非递归分别实现求第n个斐波那契数。
//递归和非递归求斐波那契数列//1 非递归方法#include <stdio.h>//1 1 2 3 5 8 13 21 34int 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 · 56 阅读 · 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 · 286 阅读 · 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 · 95 阅读 · 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 · 167 阅读 · 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 · 149 阅读 · 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 · 191 阅读 · 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 · 116 阅读 · 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 · 139 阅读 · 0 评论 -
写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找)
//2.写代码可以在整型有序数组中查找想要的数字,//找到了返回下标,找不到返回-1.(折半查找)#include <stdio.h>#define N 9int 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 · 149 阅读 · 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 · 141 阅读 · 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 · 151 阅读 · 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 · 115 阅读 · 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 · 78 阅读 · 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 · 127 阅读 · 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 · 67 阅读 · 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 · 162 阅读 · 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 · 60 阅读 · 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 · 60 阅读 · 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 · 104 阅读 · 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 · 98 阅读 · 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 · 81 阅读 · 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 · 90 阅读 · 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 · 86 阅读 · 0 评论