1、C语言注意事项152020年4月19日文档仅供参考1.switch语句,其一般形式为:switch(表示式) case常量表示式1: 语句1;case常量表示式2: 语句2; case常量表示式n: 语句n;default: 语句n1;其中switch(表示式)后不应该带有;,同时case语句常量后应该是:。2.void fun(STREC *a) double ave=0.0; int i; for(i=0;iave=a-ave+a-si; /*求各门成绩的总和*/ a-ave/=N; /*求平均分*/3.有参函数定义,其一般形式为:类型标识符函数名(形式参数表列)/*double fun(
2、int i)*/声明部分 语句1.锁存器和触发器存储元件,用于开关电路。锁存器是由输入信号控制设备的状态。(2.如果一个锁存器有一个输入信号,使输出的装置1,它被称为一个集存。如果它有一个输入信号,迫使装置输出的0,它被称为一个复位锁存器。如果设备设置和重置的激励信号,它被称为一个置位复位锁存。触发器不同于一个锁存器,它有一个控制信号称为时钟. 3.基本触发器。基本触发器(简存)一般被称为闩锁器。该触发器电路交叉耦合和双大门或与非门的大门。它有两只inputs-s集,用于复位。该触发器是图4.1所示。它是采用交叉耦合和大门。(四1. (11)两只MOSFET的设计有匹配特性。因此,它们是相辅相
3、成的。关闭时,其电阻实际上是无限;当上,她们的通道电阻约为200。2.由于栅基本上是一个开放的电路,它没有电流,并将输出电压等于地面或电源电压,这取决于晶体管导电。(3. 当输入一个接地(逻辑0),n沟道MOS是公正的,因而没有通道增强本身。它是一个开放的电路,因此离开输出线断开从地面。同时,p沟道晶体管正向偏置,因此它有一个通道内提高自己。该频道有一个电阻约200,输出连接线的供电。这将输出到五世(逻辑1)。 if语句的条件表示式一般会考查三方面的内容:(1)条件判断,即与、与、与!的区别,需要仔细分析题干的意思,确定条件表示式的内容。(2)逻辑判断,即&(逻辑与)与|(逻辑或)的区别,需要
4、根据题干确定if条件中若干个条件表示式的并存关系。(3)(赋值号)与(等于号)的区别,注意在if条件中不会出现(赋值号)。4.冒泡排序算法,其基本思想是,将待排序的元素看作是竖着排列的气泡,较小的元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个气泡序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即轻的元素在下面,就交换它们的位置。显然,处理一遍之后,最轻的元素就浮到了最高位置;处理二遍之后,次轻的元素就浮到了次高位置。依次类推,完成排序。用代码实现数组sN的升序排列为:for(i0; iN; i)for(
5、ji1; jsj)tsi; sisjsjto;5. 对于m*n二维数组,如采用逐行查找最大元素的方法,代码实现为:int fun (int aM)int i,j,max=a00; for(i=0;i2;i+) for(j=0;jM;j+) if(maxaij) max= aij; return max;6.求1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数,并放入数组a中*void fun (int *a, int *n)int i,j=0; for(i=1;in)得余数 r,再用余数r去除原来的除数,得到新的余数,重复此过程直到余数为 0时停止,此时的除数就是m 和 n的
6、最大公约数。程序首先判断参数a和b的大小,如果ab则进行交换,这里是一个数学逻辑错误,应先将a的值赋给中间变量t,再将b的值赋给a,最后将t的值赋给b。当余数r为0时,除数b即为所求的最大公约数,因此函数应返回b即;int fun(int a,int b) Int r,t; if(a字符数组2,函数值大于0(正数);若字符数组1字符数组2,函数值等于0;若字符数组1=1e-6); return x1;函数fun的功能:将字符串中的前导*号全部移到字符串的尾部。本题解题思路:(1)定义一个指针并指向字符串的首地址;(2)利用循环语句找出字符串的前导*号的个数n;(3)利用循环语句把剩余的字符拷贝
7、到另一个字符串中;(4)在字符串的末尾接上n个*号。void fun( char *a )int i=0,n=0;char *p;p=a;while (*p=*) /*判断*p是否是*号,并统计*号的个数*/ n+;p+;while(*p) /*将前导*号后的字符传递给a*/ ai=*p;i+;p+;while(n!=0)ai=*;i+;n-; ai=0;函数fun的功能:除了字符串前导的*号之外,将串中其它*号全部删除。void fun( char *a ) int i=0; char *p=a; 定义一个临时指针p,初始指向原串首地址 while(*p&*p=*) 利用循环语句把字符串前导
8、*号拷贝到原串; ai=*p; i+; p+; while(*p) 继续移动指针,把串中和串尾的非*号字符拷贝到原串; if(*p!=*) ai=*p;i+; p+; ai=0; ;为修改后的字符串赋结束字符0。要求统计在tt所指字符串中a到z26个小写字母各自出现的次数,并依次放在pp所指数组中void fun(char *tt, int pp)int i; for(i=0;i=a&*tt=z) pp*tt-a+; 【下标】a为pp0,b为pp1.对于一个字符串要删除其尾部的*号,只需要在最后一个不是*号的字符后面加上结束符号0。void fun( char *a )while(*a!=0) a+; a-; /*指针a指向字符串的尾部*/while(*a=*)a-; /*指针a指向最后一个字母*/*(a+1)=0; /*在字符串最后加上结束标志符*/【解题思路】具体操作为:首先找到字符串的结尾,然后从最后一个字符开始往前逐个判断是否为*号,直到找到非*号字符为止,最后在该字符后面加上结束符号0。