当前位置: 首页 > news >正文

C语言 题目

1.写一个函数算一个数的二进制(补码)表示中有几个1

#include<stdio.h>//统计二进制数中有几个1
//如13:1101
//需要考虑负数情况 如-1 结果应该是32// n  1101
//n-1 1100
//n   1100
//n-1 1011
//n   1000
//n-1 0111
//n   0000
//看n的变化
int funca(int c){int count=0;while(c){c=c&(c-1);//新n=n&n-1的结果;n&n-1其实是在相当于把二进制中最右边的1去掉,执行几次,就相当于有几个1count++;}return count;
}int func(unsigned int c){int count=0;while(c){if((c%2)==1)//算二进制数是否是1count++;c=c/2;}//去掉一位二进制数return count;
}
int fun(int c){int count=0;for(int i=0;i<32;i++){//int 有32个二进制if(((c>>i)&1)==1)count++;}return count;
}
int main()
{int a;scanf("%d",&a);printf("%d\n",funca(a));printf("%d\n",func(a));printf("%d\n",fun(a));return 0;
}

在这里插入图片描述
2.算两个整数的二进制位有几个位(bit)不同
//如1999 2299
//结果为7

#include<stdio.h>
int fun(int c){int count=0;while(c){c=c&(c-1);count++;}return count;
}int main()
{int a,b;scanf("%d%d",&a,&b);int c=a^b;//确认二进制数中有几个不同位数 相同为0 相异为1printf("%d\n",fun(c));return 0;
}

在这里插入图片描述
3.获取一个整数二进制中的奇数位 偶数位 分别输出

#include<stdio.h>
void func(int m)
{printf("奇数位:\n");for(int i=30;i>=0;i-=2){printf("%d",(m>>i)&1);}printf("\n偶数位:\n");for(int i=31;i>=1;i-=2){printf("%d",(m>>i)&1);}
}
int main()
{int a=0;scanf("%d",&a);func(a);return 0;
}

在这里插入图片描述

4.递归将字符串逆序存储

#include<stdio.h>int funcation(char brr[]){int i=0;char *end=NULL;for(i=0;brr[i]!='\0';)i++;end=&brr[i];//非库函数实现的strlenreturn (end-brr);
}//递归实现将字符串内容反向逆序
//012345
//abcdef
//先将a的位置放上f 后将f的位置放为\0 以便得到真正需要处理的字符串长度 在递归结束后将f的位置放a
//依次类推
void fun(char *temp ){char change=temp[0];int leng=funcation(temp);temp[0]=temp[leng-1];temp[leng-1]='\0';if(funcation(temp+1)>1)//只要长度超过1 就进入递归fun(temp+1);temp[leng-1]=change;
}
int main(){setbuf(stdout,NULL);//clion软件及时输出缓冲区内容char array[10]="abcdefg";fun( array);printf("%s",array);return 0;
}

在这里插入图片描述

5.递归实现计算一个数的每位之和

#include<stdio.h>//递归实现计算一个数的每位之和
int digsum(unsigned int a){if(a>9)return digsum(a/10)+a%10;elsereturn a; 
}
int main(){int number=0;//1729scanf("%d",&number);printf("%d",digsum(number));return 0;
}

在这里插入图片描述

6.递归实现N的k次方

#include<stdio.h>
//递归实现N的k次方
double fun(int c,int d){if(d<0)//负次方return (1.0/(fun(c,-d)));else if(d==1)return c;elsereturn fun(c,d-1)*c;
}
int main(){int a=0,b=0;scanf("%d%d",&a,&b);printf("%lf\n",fun(a,b));return 0;
}

在这里插入图片描述

http://www.lryc.cn/news/256783.html

相关文章:

  • CDN 内容分发网络
  • Android : Xui- RecyclerView+BannerLayout 轮播图简单应用
  • Java网络通信-第21章
  • Leetcode 345. Reverse Vowels of a String
  • [linux] 用命令行wget下载google drive的大文件
  • Docker Network(网络)——8
  • 网页设计--第6次课后作业
  • R语言学习
  • 基于Unity3D 低多边形地形模型纹理贴图
  • vue预览pdf,放大缩小拖动,dialog拖动,父页面滚动
  • 泽攸科技二维材料转移台的应用场景及优势
  • JavaScript——基本使用HelloWrold
  • 关于DNS服务器地址总是127.0.0.1且无法解析域名地址
  • 制作一个RISC-V的操作系统四-嵌入式开发介绍
  • Python爬虫-实现批量抓取王者荣耀皮肤图片并保存到本地
  • 04-详解Eureka注册中心的作用,具体配置,服务注册和服务发现
  • 数据分析基础之《matplotlib(3)—散点图》
  • Flask 动态路由、请求数据接收、视图函数返回值详解
  • Transformer 简介
  • LLVM学习笔记(64)
  • 深度学习TensorFlow2基础知识学习前半部分
  • Linux系统---简易伙伴系统
  • Redis使用Lua脚本
  • macos安装metal 加速版 pytorch
  • 【学习笔记】lyndon分解
  • 21、命令执行
  • Qexo博客后台管理部署
  • 最小生成树prim
  • 实用篇 | 一文学会人工智能中API的Flask编写(内含模板)
  • Si24R03—低功耗 SOC 芯片(集成RISC-V内核+2.4GHz无线收发器)