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

目录

理论题

1. INF的文件类型显示的是安装信息(deviceI INFormation flie

2.显卡采用DVI以上的接口输出,淘汰了VGA接口

3.因特网中的IP地址

4.Windows操作系统的历史进程

 5.主存储器与DRAM/SRAM存储器

6.GB2312 和  GBK 和 GB18030

7.像素深度:使用多少位来表示1个像素

8.CPU

非理论题

1.enum 枚举结构体

2.链表

3.统计s2在s1中出现的次数

4.判断并把非负整数的十六进制转换成long型整数

5.在给定的字符串中数字字符前加东西


理论题

1. INF的文件类型显示的是安装信息(deviceI INFormation flie


2.显卡采用DVI以上的接口输出,淘汰了VGA接口

VGA接口为模拟信号输出接口,分辨率比较低,输出的画面模糊。


3.因特网中的IP地址

在IP地址的四段号码中用二进制表示lP地址的话IP地址范围
A类IP地址第一段号码为网络号码,剩下的三段号码为本地计算机的号码。由1字节的网络地址(最高位必须是“0”)和3字节主机地址组成0.0.0.0到127.255.255.255
B类IP地址在IP地址的四段号码中,前两段号码为网络号码。由2字节的网络地址(最高位必须是“10”)和2字节主机地址组成,128.0.0.0到191.255.255.255
C类IP地址前三段号码为网络号码,剩下的一段号码为本地计算机的号码。由3字节的网络地址(最高位必须是“110”)和1字节主机地址组成192.0.0.0到223.255.255.255
D类IP地址在历史上被叫做多播地址或组播地址。在以太网中,多播地址命名了—组应该在这个网络中应用接收到一个分组的站点。最高位必须是“1110”224.0.0.0到239.255.255.255

4.Windows操作系统的历史进程

Windows XP操作系统最大可以支持16GB内存和2个CPU。WindowsXP非常成功,目前还有许多用户在使用 

Windows 9x系列都是建立在MS-DOS基础上,它们属于16位/32位的混合操作系统

Windows 8既支持PC (x86-64架构),也支持平板电脑(x86架构或ARM架构)

Windows 10目标是为所有硬件提供一个统一的平台,是跨平台最多的操作系统

Windows 1.0—3.0是16位系统
1985Windows 1.0
1987 — 1990

Windows 2.0

1990Windows 3.0
Windows 9X

 是混合16/32位的Windows系统

1995Windows 95首次问世的标志性的开始按钮和IE浏览器
1998Windows 98

全新功能: “即插即用”、桌面快速启动栏和自动播放CD。

2000Windows Me

首个内置了Windows恢复功能的操作系统,

但因为安装繁琐等问题而饱受批评。

2001 — 2005Windows XP
2006-2008Windows Vista
2009

Windows 7

2012Windows 8用户界面过于复杂,且缺少“开始菜单
2015—今Windows 10

 5.主存储器与DRAM/SRAM存储器

服务器、PC、智能手机等的主存储器主要是由DRAM芯片组成的。

大多数情况下人们并不严格区分主存、内存和RAM等不同名称,而是根据使用场合理解其含义

随机存取存储器(RAM:random access memory)

RAM又称作“随机存储器”。是与CPU直接交换数据的内部存储器,也叫主存(内存)

RAM目前多采用MOS型半导体集成电路芯片制成,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。

根据保存数据的机理可分为DRAM和SRAM两种

SRAM(静态随机存储器)DRAM(动态随机存储器)
SRAM的电路较复杂,集成度低、功耗较大、制造成本高,但工作速度很快DRAM存储单元的结构简单,所用元件少,集成度高,功耗低。

6.GB2312 和  GBK 和 GB18030icon-default.png?t=L892https://blog.csdn.net/qq_59789606/article/details/119895020?spm=1001.2014.3001.5501


7.像素深度:使用多少位来表示1个像素

像素深度 = 数据量 ÷ 图像大小

1.5MB / (1024×768)=(1.5x1024×1024×8b)÷(1024×76816。

注:1MB=1024×1024B,1B=8b,这里的B表示字节,b表示比特位


8.CPU

性能执行程序的速度CPU芯片往往包含多个CPU内核,为提高CPU芯片性能
主频电子线路的工作频率( 1GHz-4GHz)
总线速度CPU与 内存 交换数据的速度而不是决定:CPU芯片内部传输和操作速度
字长CPU中通用寄存器/定点运算器的宽度Core i3/i5/i7是64位

非理论题

1.enum 枚举结构体

2.链表

  1. 首先定义一个结构体类型NODE,包含两个成员: value和next
  2. 主函数先定义NODE类型的数组a,对每个元素初始化
  3. 链表首结点的地址赋给head,接着调用show函数,将head传给show函数;
  4. 将后一个元素的地址存放到前一个元素的next成员,最后一个成员的next赋值为NULL,使得数组a中的元素按下标从小到大通过next链接,构成一个链表
  5. show函数的功能是将链表head通过两个循环,每次从头开始遍历各个结点找到最后一个未输出的结点输出,输出后再换行,直到所有的结点输出,即将head链表逆序输出;所以程序是将数组a按下标从大到小输出
#include <stdio.h>
typedef struct node
{
	int value; 		    	
	struct node *next;
}NODE;

void show (NODE *head)
{
	NODE *p1 = NULL, *p2 = NULL;
	if(head == NULL)				
	return;
	do
	{
		p1 = head;
		while(p1->next != p2)
		p1 = p1->next;
		printf("%d\n",p1->value);	
		p2 = p1;
	}
	while(p2 !=head);
}

int main()
{
	NODE a[] = {{1,&a[1]}, {3,&a[2]}, {2,&a[3]},{4,NULL}}, *head=&a[0];	
	show(head);	
	return 0;
}

3.统计s2在s1中出现的次数

#include<stdio.h>
#include<string.h>
#include<conio.h>

int str_count(char s1[],char s2[],int *count)
{
    int i=0,j=0,flag=0,len1,len2,pos=-1,ct=0;
    char tmp[100];
    len1=strlen(s1); 
    len2=strlen(s2);
    while(i<=len1-len2)
    {
        for(j=0;j<len2;j++) tmp[j]=s1[i+j];
        tmp[j]='\0';
        if(   【1】 strcmp(tmp,s2)== 0  )         
        {
            if (flag==0)
            {
                pos=i;
                flag=1;
            }
            ct++;
            i=i+j;
        }
        else    i++【2】   ;        
    }
    *count =   ct 【3】   ;         
    return pos;
}
int main()
{
    char s1[]="habcdefabcdghij",s2[]="abc";
    int count,first;
    first=str_count(s1,s2,   【4】&count   );     
    if(count) /*count!=0 的意思*/ 
	printf("\"%s\" appears %d times in \"%s\".\n first pos is %d.\n",	s2,count,s1,first);
    else printf("\"%s\" not be found in \"%s\"!",s2,s1);
    getch();
    return 0;
}

4.判断并把非负整数的十六进制转换成long型整数

#include <conio.h>
#include <stdio.h>
long htoi(char s【2】)       
{
   long value=0, i = 0;
   if(s[0]!='0') return -1;     
   if((s[1]!='x')&&(s[1]!='X')) return -1;
   for(i=0【4】;s[i]!='\0';i++)               
   {
      if(s[i]>='0'&& s[i]<='9')
         value = value*16 + 10 【3】+s[i]-'0';   
      else if (s[i]>='a'&&s[i]<='f')
         value = value *16 + 10+s[i]-'a';
      else if(s[i]>='A'&&s[i]<='F')
         value = value*16 + 10 +s[i]-'A';
      else
         return -1;
   }
   return value;
}
int main()
{
   long b;
   char s[20];
   gets(s[20]【1】);      //gets(要的是指针),且此函数是只能是字符指针 
   b = htoi(s);
   if(b!=-1) printf("%ld",b);
   else  printf("error");  
   getch();
   return 0;
}

【1】:(s)。下标越界,0-19之内。 没越界也错,(要的是字符指针,而不是字符元素)
【2】:char s[]。  调用函数需要的是s数组中的字符串,所以定义的应该是字符数组类型
【3】 :删掉+10 
【4】 : i = 2开始 

5.在给定的字符串中数字字符前加东西

#include <conio.h>
#include <stdio.h>

void yuan(char *p)
{
	char s[100] = {0};
	int i, j = 0, flag = 1;
	for (i = 0; p[i] != '\0'; i++)
	{
		if (flag == 1 && (p[i] >= '0' && p[i] <= '9'))
		{
			flag = 0;
			s[j++] = '-';
		}
		else if (flag == 0 && (p[i] < '0' || p[i] > '9'))
		{
			flag = 1;			
		}
		s[j++] = p[i];
	}
	for (i = 0; s[i] != '\0'; i++)
	{
		p[i] = s[i];
	}
	p[i] = '\0';
	return;
}

int main()
{
	FILE *fp;
	char p[50] = "AB1CD12EF123GH";

	fp = fopen("myf2.out", "w");
	fprintf(fp, "%s\n", p);
	printf("%s\n", p);

	yuan(p);

	fprintf(fp, "%s\n", p);
	printf("%s\n", p);


	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值