目录
1.KB MB GB TB PB EB ZB 不看芒果台陪儿子
理论题
1.KB MB GB TB PB EB ZB 不看芒果台陪儿子
1KB=2^10B , 故每个都为 2^n-1*(10)次方B
2.MPEG格式及其压缩标准
数字有线电视和卫星电视所传输的数字视频采用MPEG-42标准。
MPEG的五个压缩标准
MPEG-1:制定于1992年,为1.5Mbps以下数据传输率的数字存储媒体运动图像及其伴音编码而设计的国际标准。
应用在VCD制作
MPEG-2:制定于1994年,为高级工业标准的图像质星以及更高的传翰率。
应用在DVD/SVCD的制作(压缩)和高要求视频编辑、处理
MPEG-4:制定于2018年,为了播放流式媒体的高质量视频
利用很窄的带度,通过重建技术,压缩和传输数据,以求使用最少的数揭获得最佳的图像质量。
MPEG-4能够保存接近于DVD画质的小体积视频文件。还包含了以前MPEG压缩标准所不具备的比特率的可俳缩性、动画精灵、交互性甚至版权保护等特殊功能。
应用在数字有线电视和卫星电视所传输的数字视频
MPEG-7:(多媒体内容描述接口)并不是一种压缩编码方法,.生成一种用来描述多煤体内容的标佳,这个标佳将对信息含义的解释提供一定的自由度,可以被传送给设备和电脑程序,或者被设备或电脑程序查取。建立MPEG-7标准的出发点是依靠众多的参数对图像与声音实现分类,并对它们的数据库实现查询,就象我们今天查询文本数据库那样。
应用在数字图书馆,例如图像编目、音乐词典;
多媒体查询服务,如电话号码簿;
广播媒体选择,如广播与电视频道选取;
多媒体编辑,如个性化的电子新闻服务、媒体创作。
MPEG-21(多媒体框架 或 数字视听框架)为多煤体传输和使用定义一个标准化的、可互操作的和高度自动化的开放框架,考虑到DRM(DigitalRights Management,数字版权管理)的要求、对象化的多媒体接入以及使用不同的网络和终抬进行传输等问题,还会在一种互操作的模式下为用户提供更丰富的信息。
3.主板
- PC机主板(母版)的尺寸已经标准化。不存在不同厂家尺寸不同
- CPU是通过卡槽安装在主板上,容易更换,而不是直接固定在主板上的。
- 主板上还安装了存储器的芯片(ROM芯片、CMOS芯片)。
- 主板上安装的电池是用于断电后给CMOS供电的,而不是给在断电后临时给机器供电,来保证关机之前的工作
4. 3颗同步轨道卫星实现全球通信
5. 互联网服务历史进程
1971 | 电子邮件 |
1973 | 文件传输协议(FTP) |
1991 | 万维网(WWW) |
1995 | IP电话 |
6.GB2312和GBK和GB18030
GB2312:1981年,汉字超6000,图形字符超600
- 所有字符在计算机内部都采用2个字节(16个二进位)来表示,每个字节的最高位均规定为1
- 适用于汉字处理、汉字通信等系统之间的信息交换,通行于中国大陆。新加坡等地也采用此编码。支持中国大陆几乎所有的中文系统和国际化的软件。
- 收录的常用汉字分
- 一级常用汉字,按汉语拼音排列
- 二级常用汉字,按偏旁部首排列
- 收录的图形符号包括拉丁字母、俄文字母、日文平(片)假名字母、希腊字母、汉语拼音字母等
GBK:1995年,汉字扩充超2w。
GBK标准
1.使用了双字节编码方案
2.支持国际标准lSO/IEC10646-1和国家标准GB13000-1中的全部中日韩汉字,并包含了BIG5编码中的所有汉字
GB18030:2000年和2005年发布(不是实施),包含GB2312、GBK中的所有字符
GB18030标准
- 为了保护我国已有的大量中文信息资源
- GB18030被我国强制贯彻执行,市场上销售的产品必须符合
- GB18030采用不等长的编码方法,有单字节编码、双字节编码和四字节编码,而不是仅仅为四字节编码
- GB18030有两个版本,GB18030-2000和GB18030-2005
非理论题
1.数组中元素是连续存储的
int a[10] = {1,2,3,4,5}
Q:当表达式是:&a[5]-&a[0]时的值是?
A:第六个元素地址相对于第一个元素地址的偏移量是5
2.定义时参数是整型数组,声明时,数组会退化成同类型的指针
3.typedef关键字的功能有
- 为现有类型定义别名;
- 构造数据类型定义(定义复合类型名,如结构体、数组、函数指针…)
- 将匿名(没名字)的结构体类型struct{char me[10];int age;}定义为STUD类型是
Typedef struct {char name[10];int age;} STUD;
- 将结构体类型struct student{char name[10];int age;} 定义为STUD类型是
Typedef struct student {char name[10];int age;} STUD;
- 将联合体类型union{char name[10];int age;} 定义为STUD类型是
Typedef union{char name[10];int age;} STUD;
4.sqrt函数是返回值类型是double
sqrt函数是求解一个非负实数的平方根
5.函数的几点细节论述
- 没有main函数,其他函数不能单独运行
- 函数不能嵌套定义(在一个函数内部不能定义另一个函数)
- 不是所有函数都可以被其他所有函数调用。Static声明的函数只能被本编译单元的其他函数调用,不能被外部调用
- 每个函数都应该被完整地包含在某个源文件中
实操题
1.自定义一个选择排序算法
#include <stdio.h>
#define N 9
void sort(int *a, int n)
{
int i,j,max,t;
for(i = 0; i<n-1; i++)
{
max=i;
for(j = i + 1;j < n;j++)
if(a[j] > a[max])
max=j;
if(max!=i)
{
t = a [max];
a[max] = a[i];
a[ i ] = t;
}
}
}
int main()
{
int a[N]={1,4,5,3,2,1,9,7,8},i,j=1;
sort(a, N);
for(i = 0; i < N; i++)
{
printf("%d",a[i]);
if(!(j%3))
printf("\n");
j++;
}
return 0;
}
sort函数对数组a中的n个元素按照从大到小的顺序排列,总共进行n-1轮选择
每轮选择时,都将i下标后续的所有元素中取出最大值元素下标max
然后与当前下标i的元素进行交换,达到排序的目的;
main函数中将数组a和元素个数N传入sort函数,完成从大到小的排序,接着通过for循环,每3个一行输出排序后的数,数组a排序后为:987,543,211
2.补充代码题:无穷级数的表达
#include<stdio.h>
#include<conio.h>
#include<math.h>
double f(double x)
{
int n=1,sign=-1;
double term= 【1】 ,sum=term;
while( 【2】 >1e-6) //就是1*10^-6
{
term=term*sign*x*x/ 【3】 ;
sum=sum+term;
n++;
}
sum=3.14159/2-cos(x)/x* 【4】 ;
return sum;
}
int main()
{
double x=1;
printf("f(%f)=%f\n",x,f(x));
getch();
return 0;
}
【1】:表示的是term的初值。代码中n从1开始,但题中n从0开始,所以n=0算做term的初值,手算是1.0
【2】:表示的是通项的绝对值。浮点数的绝对值用fabs函数 所以是fabs(term)
【3】:为了得到n=n时的通项,第二个term其实是n=n-1的时候的通项,所以缺什么补什么。所以也就是(2*n-1)*(2*n)
【4】: 【3】那一整行都只是在求一个值的大小,再通过sum累加term求和,所以无穷级数那部分就全部做到了。所以填sum
3.改错题:约瑟夫环问题(链表)
#include <stdio.h>
#include <conio.h>
int main()
{
int s,m,n=10,i,pre,k,count=0;
struct child
{
char name[10];
int nextp;
}link[10]={"li",1,"ting",2,"dan",3,"hua",4,"wei",5,"lin",6,"ding",7,"qiang",8,"long",9,"mei",0};
printf("s=");
scanf("%d",&s);
printf("m=");
scanf("%d",&m);
k=s-1; //开始报数
if(k==0) pre=9;
else pre=k-1;
for(count = 0;count < n;count++)
{
i=1;
while(i<m) //报数的操作
{
pre=k;
k=link[k].nextp;
i++;
}
printf("%s ", link[k].name);
link[pre].nextp=link[k].nextp;
k=link[k].nextp;
}
getch();
return 0;
}
4.写个小代码
1.编写函数 long find_m(int n)
(1)m是n的整数倍;
(2)m的十进制表示中仅由0和1组成。函数返回找到的m值
2.编写main函数
函数功能是声明变量n和m,输入一个整数到n中(n<100)用n作实参调用函数find_m,将n及找到的整数m输出到屏幕
#include<stdio.h>
#include<conio.h>
long find_m(int n)
{
long m,m1;
int k = 2;
while(1)
{
m = m1 = k*n;
while(m1 > 0)
{
if(m1%10 == 0|| m1%10 == 1)
{
m1/=10;
}
else
{
break;
}
}
if(m1 == 0)
{
break;
}
else
{
k++;
}
}
return m;
}
int main()
{
FILE *fp;
int n; long m;
fp = fopen ("myf2.out","w");
printf("please inpput a num:");
scanf("%d", &n);
m = find_m(n);
printf("\nn=%d\tm=%ld\n",n,m);
fprintf(fp, "\nn=%d\tm=%ld\n",n,m);
fclose(fp);
getch();
return 0;
}