上一次的学习博客写的和流水账差不多,有点生硬的和背目录一样,所以既然学习的目的是程序,那么这个月的学习博客就用程序来说点东西吧。这个月看了一些C和JAVA的视频,开始看别人写的程序,能看的懂但是自己去写的话前后逻辑还有方法类的使用不是很清楚。好吧,先去膜拜大神,一步一步来吧。
先来说一个C的程序。这个程序是把一个十进制的数字转成二进制的编码,十进制当中是逢十进一,二进制逢二进一,无论是什么样的语言写的任何程序,在计算机里面的记录方法均为二进制。
#include<iostream> using namespace std; int main() { int T; cin >> T; while(T--) { unsigned int n; char bas[30]; cin >> n; unsigned int k = 0; if(n == 0) cout<<0; else { while(n) { if(n & 1) bas[k++] = '1'; else bas[k++] = '0'; n >>= 1; } } for(int i=k-1;i >= 0;i--) { cout << bas[i]; } cout << endl; } }
#include<iostream>
这个是C的标准I/O头文件,标准库定义了
4 个 IO 对象。处理输入时使用命名为 cin(读作 see-in)的 istream 类型对象。这个对象也称为标准输入。处理输出时使用命名为 cout(读作
see-out)的 ostream 类型对象,这个对象也称为标准输出。
程序里面有输入输出的内容所以这个是必不可少的 using namespace std;
namespace是指标识符的各种可见范围。命名空间用关键字namespace 来定义。命名空间是C++的一种机制,用来把单个标识符下的大量有逻辑联系的程序实体组合到一起。此标识符作为此组群的名字。
即让std内定义的所有标示符都是有效,相当于一个全局变量。
int char
这些标示符是用来声明变量的类型,int整数,char符号。在这个程序当中声明了T为int类型,把bas为char字符变量。
if else
标准的if语句,即如果,不然。用来建立条件入口。
while
用x表示十进制的x,假定x变成2进制后的数为三位abc,其中a为最高位,b为次高位,c为最低位。
则有 x = a*2^2 + b*2^1 + c*2^0= 4a+2b+c
所以
x%2 = c,
x/2 = a*2 + b
令x=x/2,则x=a*2+b
x%2 = b,
x/2 = a
令x=x/2,则x=a
x%2 = a
x/2 = 0
故每一步的余数为:
c, b, a
把它们颠倒,就得到a,b,c
原理只有一条,可以证明/看出每次除以2的余数正好是2进制的每一个数。(……看了好半天……)
这个是一个非常短的程序,一个很实用的小工具,它可以作为一个方法放到一个class当中,也可以把这个当做父类做继承。
现在来说一个JAVA程序。
import javax.swing.JOptionPane; // program uses JOptionPane public class Converter { public static void main(String args[]) { String firstNumber; double number1 = 0; double number2 = 0; boolean loop = true; while (loop) { firstNumber = JOptionPane.showInputDialog("请输入华氏温度"); try { number1 = Double.parseDouble(firstNumber); loop = false; } catch (NumberFormatException e) { // (2)当用户输入错误数据时候,提示用户输入错误,并要求用户重新输入内容。 JOptionPane.showMessageDialog(null, "输入错误,请重新输入华氏温度.", "输入", JOptionPane.PLAIN_MESSAGE); } } // 摄氏度=(5/9)*(华氏度-32) , 即 摄氏度=(华氏度-32)÷1.8 // secondNumber = JOptionPane.showInputDialog("输入被乘数"); number2 = (number1 - 32) / 1.8; JOptionPane.showMessageDialog(null, number1 + "华氏度 = " + number2 + "摄氏度", "结果", JOptionPane.PLAIN_MESSAGE); } // end method main } // end class Addition
这是一个将华氏度转化成为一个摄氏度的程序
//后面是注释,程序不读这些内容
当然这个程序的算法也是基于华氏度和摄氏度的转化算法
摄氏度=(5/9)*(华氏度-32)
程度考虑到用户输入错误的情况。
感觉C和JAVA有种不一样的使用方法,JAVA喜欢调用很多已有的东西,C喜欢设定一些规则。
-------------------------------------------------------------------------------
因为主要是去学JAVA的,所以现在主要看别人写的JAVA代码,先去明白基本的规则,目前还是很菜,在敲别人的代码的同时去想别人为什么这么写,这样的设计有什么好处,或者这些代码能不能够作为其他程序的一个方法。TUT。