321c语音解析.docx
《321c语音解析.docx》由会员分享,可在线阅读,更多相关《321c语音解析.docx(27页珍藏版)》请在冰豆网上搜索。
![321c语音解析.docx](https://file1.bdocx.com/fileroot1/2023-2/1/9cb71fab-131d-493f-a6a0-7615bc04f669/9cb71fab-131d-493f-a6a0-7615bc04f6691.gif)
321c语音解析
类型一:
与*号有关的操作
请编写函数fun,它的功能是:
将字符串中的前导*号全部删除,中间和尾部的*号不删除。
删除前导*号
char*p=a;
while(*p=='*')p++;
for(;*p!
='\0';p++,a++)*a=*p;*a='\0';
[N]t[i][j]t[j][i]
#defineFU(m,n)((m)/(n))
return(value);
请编写函数fun,它的功能是:
除了尾部的*号之外,将字符串中其他*号全部删除。
形参p已指向字符串中最后的一个字母。
除尾部*号,其余*删除
char*t=a;
for(;t<=p;t++)if(*t!
='*')*(a++)=*t;
for(;*t!
='\0';t++)*(a++)=*t;
*a='\0';
t[][N]i=0;iintfun(inta[],intm)
elseif(m>a[mid])
请编写函数fun,它的功能是:
除了字符串前导和尾部的*号之外,将串中其他*号全部删除。
只删除中间*号
inti=0;char*q=a;
while(qwhile(q
='*'){a[i]=*q;i++;}q++;}
while(*q){a[i]=*q;i++;q++;}
a[i]='\0';
sum=0t[i][i]1
doubler;
while(fabs(n-m)>0.001)
请编写函数fun,它的功能是:
删除字符串中所有的*号。
删除串中所有*号
inti,j=0;for(i=0;a[i]!
='\0';i++)
if(a[i]!
='*')a[j++]=a[i];
a[j]='\0';
1j++j
t=a;a=b;b=t;
return(b);
请编写函数fun,它的功能是:
将字符串尾部的*号全部删除,前面和中间的*号不删除。
删除串尾*号
while(*a!
='\0')a++;a--;
while(*a=='*')a--;*(a+1)='\0';
Ni-1
a2=k/10;
returni;
请编写函数fun,它的功能是:
除了字符串前导的*号之外,将串中其他*号全部删除。
除前导*外删除其他*
inti=0;char*p=a;
while(*p&&*p=='*'){a[i]=*p;i++;p++;}
while(*p)
{if(*p!
=’*’){a[i]=*p;i++;}p++;}
a[i]='\0';
Nkss[i]
intk=0;
while(*p||*q)
请编写函数fun,它的功能是:
只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。
删除前导和尾部*
inti,j=0;for(i=h;ia[j++]=a[i];a[j]=‘\0’;
Nsubstr0
fun(intx,inty,intz)
returnj;
请编写函数fun,它的功能是:
将字符串中的前导*号全部移到字符串的尾部。
串前*移至串尾
while(*p){*q=*p;p++;q++;}
ab.namescore[i]
s[j++]=s[i];
s[j]=’\0’;
请编写函数fun,它的功能是:
使字符串的前导*号不得多于n个
前导*不多于n个
inti=0,k=0;char*p,*t;p=t=a;
while(*t=='*'){k++;t++;}
if(k>n){while(*p)
{a[i]=*(p+k-n);i++;p++;}
a[i]='\0';}
[M]N‘\0’
t=1.0;
return(2*s);
请编写函数fun,它的功能是:
使字符串中尾部的*号不得多于n个
串尾部*号不多于n个
inti=0,k=0;char*p,*t;
p=t=a;while(*t)t++;t--;
while(*t==’*’){k++;t--;}
if(k>n)
{while(*p&&pa[i]='\0';}
a[i]%2a[j]j
intfun(intn)
if(n==1)
编写一个函数,从传入的num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址
(用****作为结束输入的标志)。
char*p=a[0];inti;for(i=1;iif(strlen(a[i])>strlen(p))
p=a[i];*max=p;
[N]ii+1
aa[i]=m%k;
printf("%d",aa[i-1]);
将一个数字字符串换成与其面值相同的长整形整数可调用strlen函数求字符串长度例如2345210,2345210
{inti,n;longt=0;
n=strlen(s);
for(i=0;i{t=t*10;t=t+(s[i]-‘0’);}
returnt;
}
0ti+t
b[i]=0;
b[a[i]-‘a’]++;
if(b[max]
类型二:
套用公式计算型
编写函数fun,函数的功能是:
根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。
s=1+1/(1+2)+1/(1+2+3)+.......+1/(1+2+3+4+......+n),
若n的值为11时,函数的值为1.833333。
inti,sum=1;floats=1;
for(i=2;i<=n;i++){sum=sum+i;s=s+1.0/sum;}returns;
'\0'0c
doublesum=0.0;
sum/=c;
编写函数fun,它的功能是:
利用以下所示的简单迭代方法求方程cos(x)-x=0的一个实根。
Xn+1=cos(Xn)
cos(x)-x=0的一个实根0.739085
{doublex0,x1;
x1=0.0;do
{x0=x1;x1=cos(x0);}while(fabs(x0-x1)>=1e-6);returnx1;}
i++mm
while((2<=high)&&(n<10))
yes=0;break;
请编写函数fun,它的功能是计算:
s=(ln
(1)+ln
(2)+1n(3)+…+ln(m))0.5s作为函数值返回。
若m的值为20,则fun函数值为6.506583。
{inti;doubles=0.0;
for(i=1;i<=m;i++)
s=s+log(i);
returnsqrt(s);
}
0j--j
doublef(doublex)
returns;
请编写函数fun,其功能是:
计算并输出下列多项式值:
Sn=1+1/1!
+1/2!
+1/3!
+1/4!
+…+1/n!
若主函数从键盘给n输入15,则输出为s=2.718282。
doublet,sn=1.0;inti,j;
for(i=1;i{t=1.0;for(j=1;j<=i;j++)t*=j;sn+=1.0/t;}
returnsn;
1-1t
for(i=1;i<=3;i++)
if((k>=0&&k<=6)&&(i!
=0&&j!
=0)||k==0)
请编写函数fun,其功能是:
计算并输出
S=1+(1+2^0.5)+(1+2^0.5+3^0.5)+……+
(1+2^0.5+3^0.5+……+n^0.5)
输入20后,则输出为s=534.188884。
inti;doubles=0.0,s1=0.0;
for(i=1;i<=n;i++)
{s1=s1+pow(i,0.5);s=s+s1;}returns;
aab
c=c+32;
c=c+5;
请编写函数fun,其功能是:
计算并输出下列多项式值:
Sn=(1-1/2)+(1/3-1/4)+...+(1/(2n-1)1/2n)
若输入8后,则输出为S=0.662872。
inti;doubles=0.0;for(i=1;i<=n;i++)
s=s+(1.0/(2*i-1)-1.0/(2*i));returns;
j=2ij
sum=j=0;
if(sum%4==2)
编写函数fun,它的功能是:
计算并输出下列级数和:
S=1/1*2+1/2*3+...+1/n(n+1)
n=10时,函数值为0.909091。
inti;doubles=0.0;
for(i=1;i<=n;i++)s=s+1.0/(i*(i+1));
returns;
*s1k[n]
doublefun(intk)
returns;
请编写函数fun,其功能是:
计算并输出下列多项式值:
s=1+1/(1*2)+1/(1*2*3)+..1/(1*2*3...*50)
输入50后,则输出为S=1.718282。
{doublesum=0,tmp=1;
inti;
for(i=1;i<=n;i++)
{tmp=tmp*i;
sum+=1.0/tmp;
}returnsum;}
n%10breakbreak
if(t==0)
*zero=count;
请编写函数fun,其功能是:
计算并输出当x<0.97时下列多项式的值,直到|Sn-S(n-1)|<0.000001为止。
Sn=1+0.5x+0.5(0.5-1)/2!
x
(2)+...+0.5(0.5-1)(0.5-2)
.....(0.5-n+1)/n!
x(n)
输入0.21后,则输出为s=1.100000。
doubles1=1.0,p=1.0,sum=0.0,s0,t=1.0;intn=1;
do{s0=s1;sum+=s0;t*=n;p*=(0.5-n+1)*x;
s1=p/t;n++;}while(fabs(s1-s0)>1e-6);
returnsum;
xnfabs(t)
for(i=1;i<=y;i++)
t=t%1000;
编写函数fun,它的功能是:
根据以下公式求P的值,结果由函数值带回。
m与n为两个正整数且要求m>n。
p=m!
/n!
(m-n)!
。
m=12,n=8,运行结果为495.000000。
{floatp,q=1.0;inti;
for(i=1;i<=m;i++)q*=i;
p=q;for(i=1,q=1.0;i<=n;i++)
q*=i;p/=q;for(i=1,q=1.0;i<=m-n;i++)
q*=i;p/=q;retrunp;}
*ss++n
{intj,c=0;floatxa=0.0;
if(x[j]>=xa)
请编写一个函数fun,它的功能是:
根据以下公式求π的值X/2=1+1/3+1×2/3×5+1×2×3/3×5×7+1×2×3
×4/3×5×7×9+...+1×2×3×...×n/3×5×7×(2n+1)
求π的值
{doubles=1.0;s1=1.0;
intn=1;
while(s1>=eps)
{s1=s1*n/(2*n+1);s=s+s1;n++;}return2*s;}
0n(t*t)
for(i=0;str[i];i++)
if(substr[k+1]=='\0')
请编写函数fun,它的功能是计算下列级数和,和值由函数值返回。
S=1+x+
+
+……+
当n=10,x=0.3时,函数值为1.349859
{inti;doubles=1.0,s1=1.0;
for(i=1;i<=n;i++){s1=s1*i;s=s+pow(x,i)/s1;}returns;}
ips[j]tp
doublefun(intn)
returnsum;
类型三:
调整一个数的个、十、百、千位
请编写函数fun,其功能是:
将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。
例如,当a=45,b=12,调用该函数后
c=4152。
*c=(a/10)*1000+(b/10)*100+(a%10)*10+b%10
STYPEFILEfp
for(i=0;it[2*sl]=0;
请编写函数fun,其功能是:
将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。
例如,当a=45,b=12,调用该函数后
c=1524。
倒过来
*c=(b/10)*1000+(a%10)*100+(b%10)*10+a/10;
(1)structstudent
(2)a.name(3)a.score[i]
if(p==n)return-1;
a[i]=a[i+1];
请编写函数fun,其功能是:
将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。
例如,当a=45,b=12,调用该函数后
c=2514。
倒过来
*c=(b%10)*1000+(a%10)*100+(b/10)*10+a/10;
fpfclose(fp)fname
for(i=j+1;ip=i;
请编写函数fun,其功能是:
将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和个位上。
例如,当a=45,b=12,调用该函数后
c=5142。
*c=(a%10)*1000+(b/10)*100+(a/10)*10+b%10;
*nnexthead
a=NULLif(*r==*p)
请编写函数fun,其功能是:
将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的个位和百位上。
例如,当a=45,b=12,调用该函数后
c=5241。
*c=(a%10)*1000+(b%10)*100+(a/10)*10+(b/10);
kN-1temp
voidfun(inta[][M],intm)
a[j][k]=(k+1)*(j+1);
请编写函数fun,其功能是:
将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上。
例如,当a=45,b=12,调用该函数后
c=2415。
倒过来
*c=(b%10)*1000+(a/10)*100+(b/10)*10+a%10;
structstudenta->score[i]a
char*fun(char(*sq)[M])
returnsp;
请编写函数fun,其功能是:
将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的千位和十位上。
例如,当a=45,b=12,调用该函数后
c=1425。
倒过来
*c=(b/10)*1000+(a/10)*100+(b%10)*10+a%10;
0xt++
inti,sl;
t[i]=s[sl-i-1];
87.请编写函数fun,其功能是:
将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的个位和百位上。
例如,当a=45,b=12,调用该函数后
c=4251。
倒过来
*c=(a/10)*1000+(b%10)*100+(a%10)*10+(b/10);
1si*10
intfun(intn,intxx[][M])
printf("%d",xx[i][j]);
类型四:
与下标或ASCII码有关
.请编写一个函数fun,它的功能是:
将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
下标奇数位置子母改大写
inti;
for(i=0;ss[i]!
='\0';i++)
if(i%2==1&&ss[i]>='a'&&ss[i]<='z')
ss[i]=ss[i]-32;
kNa[k][i];
for(i=strlen(t)-1;i;i--)
if(t[j]>t[j+1])
请编写—个函数voidfun(char*ss),其功能是:
将字符串ss中所有下标为偶数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
下标偶数位置子母改大写
char*p=ss;inti=0;while(*p){
if((i%2)&&(*p>='a'&&*p<='z'))*p-=32;
p++;i++;}
returnss;
NULLnhead,ch
for(i=0,t=0;p[i];i++)
c[t]='\0';
请编写函数fun,其功能是:
将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。
下标为偶数字符删除
inti,j=0,k=strlen(s);
for(i=1;it[j]='\0';
datanexthead
while(*r)
*a=*r;a++;r++;
编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII码降序排列。
除首尾外其余ASCII码降序
charch;inti,j;
for(i=1;i<6;i++)
for(j=i+1;j<6;j++)
{if(*(s+i)<(*(s+j))
{ch=*s(s+j);*(s+j)=*(s+i);*(s+i)=ch;}}
ss[i]n+j1
if(*p=='')
*(p-1)=toupper(*(p-1));
请编写函数fun,其功能是:
将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
ASCII码值为偶数删除
int i=0 ;
for(;*s!
='\0';s++)if(*s%2==1)t[i++]=*s;
t[i]='\0';
STUstd[i].numstd[i]
if(*r==*p){r++;p++;}
if(*r=='\0')
请编写函数fun,其功能是:
将s所指字符串中ASCII值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
ASCII值为奇数删除
inti,j=0,n;n=strlen(s);
for(i=0;it[j]='\0';
s[i]k0
while(*w)
if(*r==*p)
请编写函数fun,其功能是:
将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除
除下标偶数同时ASCII码值偶数之外其余全部删除
inti,j=0;
for(i=0;s[i]!
='\0';i++)
if(i%2==0&&s[i]%2==0)t[j++]=s[i];
t[j]='\0';
(1)“r”
(2)fs(3)ft
if(d%2==0)s/=10
请编写函数fun,其功能是:
将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除
除下标奇数同时ASCII码也为奇数外其余字符删除
inti,j=0,n;n=strlen(s);
for(i=0;iif(i%2!
=0&&s[i]%2!
=0){t[j]=s[i];j++;}
t[j]='\0';
0i++2.0*i
voidfun(char*s,char*t)
t[2*d]='\0';
请编写函数fun,其功能是:
将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s中剩余的字符形成的新串放在t所指的数组中。
将下标为偶数同时ASCII码为奇数删除
inti,j=0,n=strlen(s);
for(i=0;iif(i%2==0&&s[i]%2!
=0);else{t[j]=s[i];j++;}
t[j]='\0';
jkp;
while(iif(*a)
查找x在所指数组中下标的位置作为函数值返回,若x不存在,则返回-1,
{inti=0;while
(s[i]!
=x&&i(1)i%5
(2)\n(3)a[i]
returnt;t[i]=x[i];
x[i+1]=findmid(a,b,c)
类型五:
数组和矩阵操作
请编写函数fun,该函数的功能是:
移动一维数组中的内容;若数组中有n个整数,要求把下标从0到p(p小于等于n-1)的数组元素平移到数组的最后。
下标0-p移到数组最后
{intx,j,ch;
for(x=0;x<=p;x++)
{ch=w[0];for(j=1;j{w[j-1]=w[j]}
}}
p->nextqp->next
while(*s)或while(*s!
=’10’)
s++;
请编写函数fun,该函数的功能是:
删去一维数组中所有相同的数,使之只剩一个。
删除一维数组相同的数
inti,j=1;
for(i=1;iif(a[j-1]!
=a[i])a[j++]=a[i];
returnj;
FILE*fclose(fp)fp
t=calloc(m,sizeof(STU));
t[k]=b[j];
请编写一个函数fun,它的功能是:
找出一维整型数