热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C语言练习——3

C语言练习——3一、操作符练习1.1交换两个变量(不创建临时变量)1.2打印整数二进制的奇数位和偶数位1.3[二进制中1的个数](https:www.n


C语言练习——3


  • 一、 操作符练习
    • 1.1交换两个变量(不创建临时变量)
    • 1.2 打印整数二进制的奇数位和偶数位
    • 1.3[二进制中1的个数](https://www.nowcoder.com/questionTerminal/8ee967e43c2c4ec193b040ea7fbb10b8)
    • 1.4[两个整数二进制位不同个数](https://www.nowcoder.com/questionTerminal/9c3b8a8d9f1c4ae3b709d04625586225)
    • 1.5[小乐乐走台阶](https://www.nowcoder.com/practice/ebf04de0e02c486099d78b7c3aaec255?tpId=107&&tqId=33398&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking)

  • 二、算术转换练习
    • 2.1[矩阵计算](https://www.nowcoder.com/practice/0c83231923c541d2aa15861571831ee5?tpId=107&&tqId=33371&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking)
    • 2.2[小乐乐与进制转换](https://www.nowcoder.com/practice/242eafef2a704c0ca130d563b7b3ee2d?tpId=107&&tqId=33392&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking)
    • 2.3[矩阵转置](https://www.nowcoder.com/practice/351b3d03e410496ab5a407b7ca3fd841?tpId=107&&tqId=33388&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking)




一、 操作符练习

1.1交换两个变量(不创建临时变量)

方法一:
利用算数的方法,先将a+b的值赋给a,然后利用a的新值减去原来的b,便得到了交换后的b的值,同理可得到交换后a的值,但是这种方法由于int的范围不能够处理较大的数。

#include
int main()
{
int a = 3;
int b = 5;
printf("交换前:%d %d\n", a, b);
a = a + b;
b = a - b;
a = a - b;
printf("交换后:%d %d\n", a, b);
return 0;
}

方法二:
利用^操作符,对a和b进行相应的操作,便可以不创建临时变量,便进行两个值的交换。

#include
int main()
{
int a = 3;
int b = 5;
printf("交换前:a = %d b = %d\n", a, b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("交换后:a = %d b = %d\n", a, b);
}

1.2 打印整数二进制的奇数位和偶数位

题目要求:获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列

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

1.3二进制中1的个数

在这里插入图片描述
方法一:

int NumberOf1(int n)
{
int i = 0;
int count = 0;
for (i &#61; 0; i < 32; i&#43;&#43;)
{
if (((n >> i) & 1 &#61;&#61; 1))
{
count&#43;&#43;;
}
}
return count;
}
#include
int main()
{
int n &#61; 0;
scanf("%d", &n);
int ret &#61; NumberOf1(n);
printf("%d", ret);
return 0;
}

方法二&#xff1a;

int NumberOf1(int n)
{
int count &#61; 0;
while (n)
{
n &#61; n & (n - 1);
count&#43;&#43;;
}
return count;
}
#include
int main()
{
int n &#61; 0;
scanf("%d", &n);
int ret &#61; NumberOf1(n);
printf("%d", ret);
return 0;
}

1.4两个整数二进制位不同个数

int different(int m, int n)
{
int i &#61; 0;
int count &#61; 0;
for (i &#61; 0; i < 32; i&#43;&#43;)
{
if (((m >> i) & 1) !&#61; ((n >> i) & 1))
{
count&#43;&#43;;
}
}
return count;
}
int main()
{
int n &#61; 0;
int m &#61; 0;
scanf("%d %d", &m, &n);
int ret &#61; different(m, n);
printf("%d", ret);
return 0;
}

1.5小乐乐走台阶

题目描述&#xff1a;小乐乐上课需要走n阶台阶&#xff0c;因为他腿比较长&#xff0c;所以每次可以选择走一阶或者走两阶&#xff0c;那么他一共有多少种走法&#xff1f;
输入描述&#xff1a;
输入包含一个整数n (1 ≤ n ≤ 30)
输出描述&#xff1a;
输出一个整数&#xff0c;即小乐乐可以走的方法数。

#include
int get(int n)
{
if (n <&#61; 2)
return n;
else
return get(n - 1) &#43; get(n - 2);
}
int main()
{
int n &#61; 0;
scanf("%d", &n);
int ret &#61; get(n);
printf("%d", ret);
return 0;
}

二、算术转换练习

2.1矩阵计算

描述
输入NxM矩阵&#xff0c;矩阵元素均为整数&#xff0c;计算其中大于零的元素之和。
输入描述&#xff1a;
第一行为N M(N: 矩阵行数&#xff1b;M: 矩阵列数,且M,N<&#61;10)&#xff0c;接下来的N行为矩阵各行。
输出描述&#xff1a;
一行&#xff0c;其中大于零的元素之和。

#include
int main()
{
int m &#61; 0;
int n &#61; 0;
scanf("%d %d", &m, &n);
int i &#61; 0;
int j &#61; 0;
int tmp &#61; 0;
int sum &#61; 0;
for (i &#61; 0; i < m; i&#43;&#43;)
{
for (j &#61; 0; j < n; j&#43;&#43;)
{
scanf("%d", &tmp);
if (tmp > 0)
{
sum &#61; sum &#43; tmp;
}
}
}
printf("%d\n",sum);
return 0;
}

2.2小乐乐与进制转换

描述
小乐乐在课上学习了二进制八进制与十六进制后&#xff0c;对进制转换产生了浓厚的兴趣。因为他的幸运数字是6&#xff0c;所以他想知道一个数表示为六进制后的结果。请你帮助他解决这个问题。

输入描述&#xff1a;
输入一个正整数n (1 ≤ n ≤ 109)

输出描述&#xff1a;
输出一行&#xff0c;为正整数n表示为六进制的结果

#include
void Print(int n)
{
if(n>5)
{
Print(n/6);
}
printf("%d",n%6);
}
int main()
{
int n&#61;0;
scanf("%d",&n);
Print(n);
return 0;
}

2.3矩阵转置

描述
KiKi有一个矩阵&#xff0c;他想知道转置后的矩阵&#xff08;将矩阵的行列互换得到的新矩阵称为转置矩阵&#xff09;&#xff0c;请编程帮他解答。

输入描述&#xff1a;
第一行包含两个整数n和m&#xff0c;表示一个矩阵包含n行m列&#xff0c;用空格分隔。 (1≤n≤10,1≤m≤10)

从2到n&#43;1行&#xff0c;每行输入m个整数&#xff08;范围-231~231-1&#xff09;&#xff0c;用空格分隔&#xff0c;共输入n*m个数&#xff0c;表示第一个矩阵中的元素。

输出描述&#xff1a;
输出m行n列&#xff0c;为矩阵转置后的结果。每个数后面有一个空格。

#include
int main()
{
int n &#61; 0;//代表行
int m &#61; 0;//代表列
scanf("%d %d", &n, &m);
int i &#61; 0;
int j &#61; 0;
int tmp[10][10] &#61; {0};
//输入
for (i &#61; 0; i < n; i&#43;&#43;)
{
for (j &#61; 0; j < m; j&#43;&#43;)
{
scanf("%d", &tmp[i][j]);
}
}
//输出
for (i &#61; 0; i < m; i&#43;&#43;)
{
for (j &#61; 0; j < n; j&#43;&#43;)
{
printf("%d ", tmp[j][i]);
}
printf("\n");
}
return 0;
}






推荐阅读
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文为Codeforces 1294A题目的解析,主要讨论了Collecting Coins整除+不整除问题。文章详细介绍了题目的背景和要求,并给出了解题思路和代码实现。同时提供了在线测评地址和相关参考链接。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • Commit1ced2a7433ea8937a1b260ea65d708f32ca7c95eintroduceda+Clonetraitboundtom ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • c语言\n不换行,c语言printf不换行
    本文目录一览:1、C语言不换行输入2、c语言的 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • 添加环境光使正方体显示更真实
    本文介绍了如何给正方体添加环境光以使其显示更真实。通过在代码中加入环境光的计算,可以让物体的背光部分不再完全黑色,从而增加物体的真实感。代码中使用了顶点属性、光照颜色、光照方向、环境光等参数来计算物体的漫反射,并将计算结果与顶点颜色相乘得到最终的颜色。通过调整环境光的参数,可以达到不同的光照效果。 ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
author-avatar
跟我搞对象吧
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有