程序是为了解决问题和完成人们给予的任务而存在的,它主要由算法和数据构成。算法是程序解决问题的方法和步骤,而数据就是算法处理的对象。这两这对于我们学习c都具有重要的作用,就好比我们学习英语时的单词和语法之间的联系。
数制是一种计数的规则。在人们使用最多的进位计数制中,表示数的符号在不同的位置上时所代表的数的值是不同的。常用的主要有:十进制,二进制,八进制以及十六进制。这些进制的概念大多是高中接触过的,我这里再简单的说下:几进制就是满几进一位,例如,二进制就是满二进一,八进制就是满八进一,以此类推。至于数制之间的转换高中有学,我这里就不说了。
数制在c语言中的具体应用
%o以八进制数形式输出整数,
%x以十六进制数形式输出整数,
%u以十进制数输出unsigned型数据(无符号数)。
举个例题`
例:定义整型变量a,并输入一个整数到a,请编写程序分别按十进制,八进制和十六进制输出a的值。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a;/*定义a为整形变量*/
scanf("%d",&a);/*/*输入a的值*/
printf("%u 0%o 0x%x",a,a,a);/*分别以十进制,八进制,十六进制输出a*/
return 0;
}
输出为
5 05 0x5
这里在%o和%x分别有加0和0x,因为在c语言中通常八进制用0做前缀,十六进制用0x作前缀,但是计算机在转换数制的时候通常不会加上它们的前缀而直接显示数字,这时你想要区分它们的时候一般就要手动的加上前缀。
数据就好比英语中的单词。在英语中英语单词有各种各样的类型,它们各自拥有着不同的功能和用法,在整个语句中各自起着不同的作用。数据也如同单词一样,拥有不同的类型,在程序的运算中存在不同的作用。对于不同的数据,我们对它的处理方式和要求都是不同的。不同的数据在表现形式,取值范围,占用的内存以及可以参与的运算种类都是不同的。
常用基本数据类型主要有以下几点:
- 整型
整型中主要包括:基本整形(int,占用4个字节),长整形(long,占用8个字节),短整型(short,占用2个字节)和无符号整型(unsigned,占用4个字节) - 实型
实型包括单精度实型(float,占用4个字节)和双精度实型(double,占用8个字节) - 字符型
就是它本身(char,占用1个字节)
小科普:
一个英文字母(不分大小写)占一个字节的空间。一个二进制数字序列,在计算机中作 >为一个数字单元,一般为8位二进制数。换算为十进制 ,最小值-128,最大值127。
1KB=1024B;1MB=1024KB=1024×1024B;
1B(byte,字节)= 8 bit;
1KB(Kilobyte,千字节)=1024B= 10^3 B;
1MB(Megabyte,兆字节,百万字节,简称“兆”)=1024KB= 10^6 B;
1GB(Gigabyte,吉字节,十亿字节,又称“千兆”)=1024MB= 10^9 B
在使用字符的时候,千万千万要注意不要超出字符的取值范围!!!
例如int类型的变量占用4个字节,也就是它允许的范围在-2147483648到21474364之间,但如果在它之后再加1
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int a,b;
a=2147483647;
b=a+1;
printf("%d,%d",a,b);
return 0;
}
输出结果为:2147483647,-2147483648
此时程序由于超过的能赋值的最大范围,程序自动从最大数值加到了最小。这种运算在数学中显然是不正确的,但是运行时却不会报错。所以大家赋值时千万要注意这一点!
简单介绍完了这些,我们来点例题吧
- 例1
编写程序定义char型变量ch1和ch2值并输入,依次按字符、十进制、八进制和十六进制整数的形式, 输出它们的值,要求每个变量各占一行
输入格式:
输入两个字符并各占一行。
输出格式:
分别以字符、十进制、八进制、十六进制整数输出
#include <stdio.h>
#include <stdlib.h>
int main()
{
char ch1,ch2;/*定义ch1和ch2是字符常量*/
scanf("%c \n%c",&ch1,&ch2);/*字符常量的输入必须是字符类型的*/
printf("%c,%d,%o,%x\n",ch1,ch1,ch1,ch1);/*打印输出,字符转换为数字参照ASCLL码字符表*/
printf("%c,%d,%o,%x",ch2,ch2,ch2,ch2);
return 0;
}
输出为
a,97,141,61
b,98,142,62
- 例2
计算两个数的和
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a=24000,b=12345;//定义两个变量a,b并赋值
int c; //定义变量c用于计算a+b的和
c=a+b;
printf("a+b = %d",c);//输出结果
return 0;
}
输出为
a+b=36345
由于本人水平有限,错误之处还请批评指正。