江苏省C语言二级备考(1/20)

目录

理论题

1.UTF

 2.ADSL

3.多路复用技术

 4.区分TCP/IP模型和OSI模型

5. 硬盘

 6.图像的参数或属性

非理论题

1.二维数组的初始化

2.static 

3.比较几个和字符串相关的函数

4.通过问题理解代码:声明一个指针数组 

5.通过问题写全代码

实操题

1.求最大公约数

2.实操题:将十进制x转换成m进制 

3.任意一个正整数都可以找到至少一串连续奇数它们的和等于该正整数的立方

4.简化稀疏矩阵

5.是4位数的降序数和素数


理论题

1.UTF

(Unicode Transformation Format )把Unicode转做某种格式

UTF-8用1-6个字节编码Unicode字符,以支持多国文字


 2.ADSL

用户通过电话线使用ADSL技术接入互联网时,ADSL频分多路复用

在PSTN使用双绞线上划分出三个频段

0-4kHz                                      用来传送传统的语音信号;

20-50kHz                                  用来传送计算机上载的数据信息;

150-50OkHz或140-110OkHz  用来传送从服务器上下载的数据信息。


3.多路复用技术

让多路信号同时共用一条传输线进行传输。为了能有效地提高数据链路的利用率、降低通信成本

  1. 频分多路复用的基本原理是在一条通信线路上设置多个信道,每路信道的信号以不同的载波频率进行调制,各路信道的载波频率互不重叠,这样一条通信线路就可以同时传输多路信号。
  2. 时分多路复用是以信道传输时间作为分害割对象,通过多个信道分配互不重叠的时间片的方法来实现,多用于数字信号的传输。分为同步时分多路复用和统计时分多路复用
  3. 波分多路复用是光的频分多路复用,是在光学系统中利用衍射光栅来实现多路不同频率光波信号的合成与分解。
  4. 码分多路复用也是一种共享信道的方法,每个用户可在后—时间使用同样的频带进行通信,但使用的是基于码型的分割信道的方法,即每个用户分配一个地址码,各个码型互不重叠,通信各方之间不会相互干扰,且抗干扰能力强

 4.区分TCP/IP模型和OSI模型

  1. TCP/IP模型最早是由Kahn定义的,该模型分为4个层次:网络访问层、互联网层、传输层和应用层
  2. OSl模型是由国际标准化组织(ISO)提出的,它将计算机网络体系结构划分为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层7层。

5. 硬盘

过去硬盘与主机的接口用的并行ATA,现在用串行ATA(即SATA)

        原因:SATA的传输线比ATA的细得多,有利于机壳内的空气流通。

硬盘按数据接口不同,大致分为ATA (IDE)、SATA、SCSI以及SAS

  1. ATA:Advanced TechnologyAttachment,是用传统的40-pin并口数据线连接主板与硬盘的,外部接口速度最大为133MB/s,因为并口线的抗干扰性太差,且排线占空间,不利计算机散热,逐渐被SATA所取代
  2. SATA:Serial ATA,也就是使用串口的ATA接口,因抗干扰性强,且对数据线的长度要求比ATA低很多,支持热插拔等功能,已越来越为人所接受。
    1. SATA-Il更达300MB/s,SATA的前景很广阔。
    2. SATA-l的外部接口速度为150MB/s,
  3. SCSI:全称为Small Computer Systemlnterface(小型机系统接口),历经多世代的发展,从早期的SCSI-lI,到Ultra320SCSI以及Fiber-Channel(光纤通道),接头类型也有多种。SCSI硬盘广为工作站级个人计算机以及服务器所使用,因此会先导入较为先进的技术,如可达15000rpm的高转速,且数据传输时占用CPU计算资源较低,但是单价也比同样容量的ATA及SATA硬盘昂贵。
  4. SAS:(Serial Attached sCSI)是新─代的SCSI技术,和SATA硬盘相同,都是采取序列式技术以获得更高的传输速度,可达到3Gb/s。

 6.图像的参数或属性

        真彩色图像的像素深度为  24

像素深度:每个像素用多少个二进位来表示。

颜色空间类型(颜色模型):RGB模型、CMYK模型、HSB模型……

        超高清(4K)是800万像素:3840*2160

图像大小(图像分辨率)用水平分辨率×垂直分辨率表示

        黑白图像和灰度图像均有一个位平面

        彩色图像有3个或更多的位平面

位平面数目:像素的颜色分量的数目。

非理论题

1.二维数组的初始化

int a [3][3] = {0};
 就是初始化数组a,让a[i][j] == 0

2.static 

static  int c = 1;  
意思是:在第一次调用的时候会初始化,
	    后续调用c的时候是保留上一次调用结束的值

3.比较几个和字符串相关的函数

  1. strlen函数接收char*类型的参数,
    1. 步骤:返回字符串长度,
    2. 实操步骤:strlen(s1)是返回s1的长度,是9
  2. strcpy函数接收两个char *类型的参数,
    1. 步骤:将后一个参数指向的字符串拷贝到前一个参数指向的存储空间,
    2. 条件:使用时必须保证前一个参数有足够的存储空间存放
    3. 实操步骤:strcpy(s1,s2)将s2指向的字符串”2018”拷贝到s1,新串”2018”长度为5,
  3. strcmp函数接收两个char *类型的参数,
    1. 步骤:比较两个字符串的字典序大小,
    2. 实操步骤:strcmp(&s1[0],&s2[0])
  4. strcat函数接收两个char*类型的参数,
    1. 步骤:将后一个参数指向的字符串拷贝到前一个参数的后面,拼接成一个新串,
    2. 条件:使用时必须保证前一个参数有足够的存储空间存放两个字符串
    3. 实操步骤:strcat(s1,s2)将s2指向的字符串”2018”拷贝到s1后面,新串”world cup2018”长度是14

4.通过问题理解代码:声明一个指针数组 

int a [4],j;
for(j = 0;j < 4;j++)
{
	p[j]=a+j;
} 
Q:p应该声明为啥?
A:a是数组名,所以a+j 是 p[j] 的地址,所以元素类型就是 int *
  那么数组类型也就是int *,p是数组名.声明:int *p[4];

5.通过问题写全代码

double a = 1.23456;
int i ;
Q:把a通过四舍五入再保留两位小数=1.23000
A;i= a *100 +0.5
   a=i/100 
   
先double a *100 +0.5 =123.956整个值都给i,又因为i是整型
 	所以i=123 ,赋给double 的a=123.000
 	最后/100 就等于1.2300 0 

实操题

1.求最大公约数

#include<stdio.h>
int f(int a, int b)
{
if(a==b)
return a;
else
if(a>b)
return f(a-b, b);
else
return f(a, b-a);
}
int main() 
{
	printf("%d\n%d", f(3, 5), f(9, 6));
	return 0;
}	

2.实操题:将十进制x转换成m进制 

#include<stdio.h>
void change (int x, int m)
{
char ch[]={"0123456789ABCDEF"},b[80];
int i=0,r;
while(x)
{
	r=x%m;
	x/=m;;
	b[i++]=ch[r];
}
	for(--i;i>=0;i--)
	printf("%c",b[i]);
}
int main()
{
	change(10,2);printf("\n");
	change(20,8);printf("\n");
	change(30,16);
	return 0;
 } 

3.任意一个正整数都可以找到至少一串连续奇数它们的和等于该正整数的立方

以下程序用 [ 2 ,20 ] 之间的所有整数验证定理:对于任意一个正整数都可以找到至少一串连续奇数它们的和等于该正整数的立方。
例如:2*2*2=8=3+5,3*3*3=27=7+9+11,4*4*4=64=1+3+5+7+9+11+13+15。

 

#include<stdio.h>
#include<conio.h>
int main()
{  long n,i,k,j,p,sum;
   for(     (1)      )   
   {  k=n*n*n;
      for(i=1;i<k/2;     (2)      )   
      {   for(j=i,sum=0;     (3)       ;j+=2)     
	           sum+=j;
        if(sum==k)
        {   printf("\n%ld*%ld*%ld=%ld=",n,n,n,sum);
	         for(p=i;p <      (4)       ;p+=2) printf("%ld+",p);    
	         printf("%ld",p);
             break;
       }
     }
     if(i>=k/2)printf(" \n error! "); 
  }
  getch();
  return 0;
}

(1)n=2,n<=20,n++
(2)i += 2
(3)sum<k       
(4)p<j-2


4.简化稀疏矩阵

#include <stdio.h>
#include <conio.h>
int change(int a[5][6],int b[][3]);
int main()
{
    int a[5][6]={{3,0,0,0,4},{0,2},{0},{0,0,1},{3}};
    int b[30][],i,j,k; 
    k=change(a[5][6],b[30][]);
    for(i=0;i<k;i++)
    {
        for (j=0;j<3;j++)
            printf ("%4d",b[i][j]);
        printf ("\n");
    }
    getch();
    return 0;
}
int change(int a[5][6],int b[][3])  
{
    int i,j,k=0;
    for (i=0;i<5;i++)
        for (j=0;j<6;j++)
            if(!a[i][j]) 
            {
                 b[k][0]=i;   b[k][1]=j;
                 b[k][2]=a[i][j];
                 k++;
            }
    return ;   
}

程序在定义二维数组非初始化时,必须指定维数,在初始化的时候,可以省略一维大小,必须指定二维大小;

change接收的是两个in类型的二维数组,而不是int类型的整数,

change函数使用嵌套的for循环,判断当前元素a[i][j]的值是否为0

change函数返回的是数组a中非0值的个数

综上:【1】int b[30][3]        【2】k= change(a,b)

        【3】if(a [ i ] [ j ] != 0)【4】 return k


5.是4位数的降序数和素数

找出a,b区间内所有满足以下条件的整数:

(1)该数是素数

(2)该数的十进制表示是4位数并且是降序数(即从高位到低位的各位数字依次减小或不增加的整数)。
        例如,4211既是素数又是4位降序数,因此4211是满足上述条件的整数。

1.编写函数 int decend(long n1, long n2,long x[ ])。函数功能:找出[n1,n2]区间内满足上述条件的所有整数并依次存放到x指向的一维数组中,函数返回满足条件的整数个数。
2.编写main函数。函数功能:声明变量a、b及一维数组c,键盘输入a、b的值,
调用 decend函数找出[a,b]区间内所有满足上述条件的整数并保存到c数组,输出c数组中的结果数据

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值