资源描述
1.switch语句,其通常形式为:
switch(表示式){
case常量表示式1: 语句1;
case常量表示式2: 语句2;
……
case常量表示式n: 语句n;
default: 语句n+1;
}
其中switch(表示式)后不应该带有";",同时case语句常量后应该是":"。
2.void fun(STREC *a)
{
double ave=0.0;
int i;
for(i=0;i<N;i++)
a->ave=a->ave+a->s[i];
/*求各门成绩总和*/
a->ave/=N;
/*求平均分*/
}
3.有参函数定义,其通常形式为:
类型标识符 函数名(形式参数表列)/*double fun(int i)*/
{申明部分
语句
}
1.锁存器和触发器存放元件,用于开关电路。锁存器是由输入信号控制设备状态。(
2.假如一个锁存器有一个输入信号,使输出装置1,它被称为一个集存。假如它有一个输入信号,迫使装置输出0,它被称为一个复位锁存器。假如设备设置和重置激励信号,它被称为一个置位复位锁存。触发器不一样于一个锁存器,它有一个控制信号称为时钟.
3.基础触发器。基础触发器(简存)通常被称为闩锁器。该触发器电路交叉耦合和双大门或和非门大门。它有两只inputs-s集,用于复位。该触发器是图4.1所表示。它是采取交叉耦合和大门。(
四
1. (11)两只MOSFET设计有匹配特征。所以,它们是相辅相成。关闭时,其电阻实际上是无限;当上,她们通道电阻约为200。
2.因为栅基础上是一个开放电路,它没有电流,并将输出电压等于地面或电源电压,这取决于晶体管导电。(
3. 当输入一个接地(逻辑0),n沟道MOS是公正,所以没有通道增强本身。它是一个开放电路,所以离开输出线断开从地面。同时,p沟道晶体管正向偏置,所以它有一个通道内提升自己。该频道有一个电阻约200,输出连接线+供电。这将输出到+五世(逻辑1)。
if语句条件表示式通常会考查三方面内容:
(1) 条件判定,即>和>=、<和<=、==和!=区分,需要仔细分析题干意思,确定条件表示式内容。
(2) 逻辑判定,即&&(逻辑和)和||(逻辑或)区分,需要依据题干确定if条件中若干个条件表示式并存关系。
(3) =(赋值号)和==(等于号)区分,注意在if条件中不会出现=(赋值号)。
4.冒泡排序算法,其基础思想是,将待排序元素看作是竖着排列"气泡",较小元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个"气泡"序列处理若干遍。所谓一遍处理,就是自底向上检验一遍这个序列,并时刻注意两个相邻元素次序是否正确。假如发觉两个相邻元素次序不对,即"轻"元素在下面,就交换它们位置。显然,处理一遍以后,"最轻"元素就浮到了最高位置;处理二遍以后,"次轻"元素就浮到了次高位置。依次类推,完成排序。
用代码实现数组s[N]升序排列为:
for(i=0; i<N; i++)
for(j=i+1; j<N; j++)
if(s[i]>s[j])
{t=s[i]; s[i]=s[j]
s[j]=to;}
5. 对于m*n二维数组,如采取逐行查找最大元素方法,代码实现为:
int fun (int a[][M])
{
int i,j,max=a[0][0];
for(i=0;i<2;i++)
for(j=0;j<M;j++)
if(max<a[i][j])
max= a[i][j];
return max;
}
6.求1到1000之内能被7或11整除、但不能同时被7和11整除全部整数,并放入数组a中*
void fun (int *a, int *n)
{
int i,j=0;
for(i=1;i<=1000;i++) /*求1到1000之内能被7或11整除、但不能同时被7和11整除全部整数,并放入数组a中*/
if((i%7==0||i%11==0)&&i%77!=0)
a[j++]=i;
*n=j;
}
7.求最大条约数算法通常采取辗转相除法。辗转相除法算法为:首先将 m除以 n(m>n)得余数 r,再用余数r去除原来除数,得到新余数,反复此过程直到余数为 0时停止,此时除数就是m 和 n最大条约数。
程序首先判定参数a和b大小,假如a<b则进行交换,这里是一个数学逻辑错误,应先将a值赋给中间变量t,再将b值赋给a,最终将t值赋给b。当余数r为0时,除数b即为所求最大条约数,所以函数应返回b
即;int fun(int a,int b)
{
Int r,t;
if(a<b)
{t=a;a=b;b=t;}
r=a%b;
while (r!=0)
{a=b;b=r;r=a%b;}
return b /*最大条约数*/
8.假如知道某数n各个位,能够得到该数值n,如n个位为a、十位为b、百位为c,那么n=c*100+b*10+a。假如知道数值n,能够采取求余和除法操作来表示其各个位,如n%10(取个位)、n/10(取十位),
比如:while (n)
{t=n%10;
If(t%2==0)
x=10*x+t;
n=n/10;
}
return x;
9. void fun(char p1[], char p2[])
{
int i,j;
for(i=0;p1[i]!='\0';i++) ; 求出第1个字符串长度立即i指到第1个字符串末尾
for(j=0;p2[j]!='\0';j++)
p1[i++]=p2[j]; 立即i指到第1个字符串末尾
p1[i]='\0';
}
10."0"和"1"是字符串中数字字符,为了进行数字运算,必需要将数字字符转换为数字,用数字字符减去字符'0'(零)ASCII码,就得到对应数字。
int fun( char *p )
{ int n;
n= *P-'0';
p++;
while( *p!=0 )
{
n=n*8+*P-'0';将八进制转化成十进制
p++;
}
return n;
}
12.strcpy(字符数组1,字符数组2)
把字符数组2所指字符串内容复制到字符数组1所指存放空间中。函数返回字符数组1值,即目标串首地址
为确保复制正当性,字符数组1必需指向一个足够容纳字符数组2存放空间
strcat(字符数组1,字符数组2)
该函数将字符数组2所指字符串内容连接到字符数组1所指字符串后面,并自动覆盖字符数组1串末尾′\0′,该函数返回字符数组1地址值
字符数组1所指定字符串应有足够空间容纳两串合并后内容
strlen(字符数组)
此函数计算出以字符数组为起始地址字符串长度,并作为函数值返回
这一长度不包含串尾结束标志′\0′
strcmp(字符数组1,字符数组2)
该函数用来比较字符数组1和字符数组2所指字符串大小。若字符数组1>字符数组2,函数值大于0(正数);若字符数组1=字符数组2,函数值等于0;若字符数组1<字符数组2,函数值小于0(负数)
依据字符ASCII码值依此对字符数组1和字符数组2所指字符串对应位置上字符两两进行比较,当出现第一对不一样字符时,即由这两个字符决定所在串大小、
13.打开文件操作,fopen函数用来打开一个文件,其通常形式为 "文件指针名=fopen(文件名,使用文件方法);";文件结束检测函数feof函数;写字符函数fputc,功效是把一个字符写入指定文件中,函数调用形式为"fputc(字符量,文件指针);"其中,待写入字符量能够是字符常量或变量,被写入文件能够用写、读写、追加方法打开。文件一旦使用完成,需使用关闭文件函数fclose将文件关闭,以避免文件数据丢失等错误。
14.迭代法求方程实根;do…while循环语句,其形式为:
do{
语句
}while(表示式);
do…while循环和while循环不一样在于,它先实施循环中语句,然后再判定表示式是否为真, 假如为真则继续循环;假如为假, 则终止循环。所以, do…while循环最少要实施一次循环语句。
double x0,x1;
x1=0.0;
do
{
x0=x1;
x1=cos(x0);
}while(fabs(x0-x1)>=1e-6); return x1;
函数fun功效:将字符串中前导*号全部移到字符串尾部。本题解题思绪:(1)定义一个指针并指向字符串首地址;(2)利用循环语句找出字符串前导*号个数n;(3)利用循环语句把剩下字符拷贝到另一个字符串中;(4)在字符串末尾接上n个*号。
void fun( char *a )
{
int i=0,n=0;
char *p;
p=a;
while (*p=='*') /*判定*p是否是*号,并统计*号个数*/
{
n++;p++;
}
while(*p) /*将前导*号后字符传输给a*/
{
a[i]=*p;i++;p++;
}
while(n!=0)
{
a[i]='*';i++;n--;}
a[i]='\0';}
函数fun功效:除了字符串前导*号之外,将串中其它*号全部删除。
void fun( char *a )
{
int i=0;
char *p=a; 定义一个临时指针p,初始指向原串首地址
while(*p&&*p=='*') 利用循环语句把字符串前导*号拷贝到原串;
{
a[i]=*p;
i++;
p++;
}
while(*p) 继续移动指针,把串中和串尾非*号字符拷贝到原串;
{
if(*p!='*')
{a[i]=*p;i++;}
p++;
}
a[i]='\0'; ;为修改后字符串赋结束字符'\0'。
}
要求统计在tt所指字符串中'a'到'z'26个小写字母各自出现次数,并依次放在pp所指数组中void fun(char *tt, int pp[])
{
int i;
for(i=0;i<26;i++)
pp[i]=0; /*初始化pp数组各元素为0*/
for(;*tt!='\0';tt++)
if(*tt>='a'&&*tt<='z')
pp[*tt-'a']++; 【下标】a为pp[0],b为pp[1]....
}
对于一个字符串要删除其尾部*号,只需要在最终一个不是*号字符后面加上结束符号′\0′。
void fun( char *a )
{
while(*a!='\0')
a++;
a--; /*指针a指向字符串尾部*/
while(*a=='*')
a--; /*指针a指向最终一个字母*/
*(a+1)='\0'; /*在字符串最终加上结束标志符*/
}
【解题思绪】
具体操作为:首先找到字符串结尾,然后从最终一个字符开始往前逐一判定是否为*号,直到找到非*号字符为止,最终在该字符后面加上结束符号'\0'。
展开阅读全文