广工Anyview试题答案第八章.docx

上传人:b****6 文档编号:12110656 上传时间:2023-06-04 格式:DOCX 页数:19 大小:18.97KB
下载 相关 举报
广工Anyview试题答案第八章.docx_第1页
第1页 / 共19页
广工Anyview试题答案第八章.docx_第2页
第2页 / 共19页
广工Anyview试题答案第八章.docx_第3页
第3页 / 共19页
广工Anyview试题答案第八章.docx_第4页
第4页 / 共19页
广工Anyview试题答案第八章.docx_第5页
第5页 / 共19页
广工Anyview试题答案第八章.docx_第6页
第6页 / 共19页
广工Anyview试题答案第八章.docx_第7页
第7页 / 共19页
广工Anyview试题答案第八章.docx_第8页
第8页 / 共19页
广工Anyview试题答案第八章.docx_第9页
第9页 / 共19页
广工Anyview试题答案第八章.docx_第10页
第10页 / 共19页
广工Anyview试题答案第八章.docx_第11页
第11页 / 共19页
广工Anyview试题答案第八章.docx_第12页
第12页 / 共19页
广工Anyview试题答案第八章.docx_第13页
第13页 / 共19页
广工Anyview试题答案第八章.docx_第14页
第14页 / 共19页
广工Anyview试题答案第八章.docx_第15页
第15页 / 共19页
广工Anyview试题答案第八章.docx_第16页
第16页 / 共19页
广工Anyview试题答案第八章.docx_第17页
第17页 / 共19页
广工Anyview试题答案第八章.docx_第18页
第18页 / 共19页
广工Anyview试题答案第八章.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

广工Anyview试题答案第八章.docx

《广工Anyview试题答案第八章.docx》由会员分享,可在线阅读,更多相关《广工Anyview试题答案第八章.docx(19页珍藏版)》请在冰点文库上搜索。

广工Anyview试题答案第八章.docx

广工Anyview试题答案第八章

/**********

【习题】请编写函数func(chars[],chart[],intn),

由数组s中长度为n的字符序列构造其逆序列,并存储在数组t中。

例如,由给定字符序列?

慜敲求得逆序列?

敜慲;由?

瑜浩履

求得?

敜業屴。

**********/

voidfunc(chars[],chart[],intn)

/*数组s的前n个元素存放给定的字符序列,

数组t的前n个元素存放s的逆序列。

注意:

数组的下标从0开始。

*/

{

for(inti=0;i

t[i]=s[n-i-1];

}

/**********

【习题】请编写函数func(char*s,char*t),由字符

串s构造其逆串t。

例如,由给定串?

慜敲求得逆串?

敜慲;

由?

瑜浩履求得?

敜業屴。

**********/

voidfunc(char*s,char*t)

/*s是给定字符串的起始地址,

t是求得s的逆串的起始地址

*/

{

intn=0;

for(inti=0;*(s+i)!

='\0';i++)

n++;

for(i=0;i

t[i]=s[n-i-1];

}

/**********

【习题】对长度为n的字符串s1,除首、尾字符外,将

其余字符按ASCII码降序排列,组合成一个新的字符串s2。

**********/

voidfunc(char*s1,char*s2,intn)

/*s1为字符串的起始地址,

s2为新字符串的起始地址,

n为字符串的长度。

要求:

s1串不能发生改变,

s2串存放新的字符串。

*/

{

for(inti=0;i

*(s2+i)=*(s1+i);

if(n<4)break;

else

{

chart=*(s2+1);intk=1;intj,h;

for(i=1;i<=n-2;i++)

{

for(j=i;j<=n-2;j++)

if(t<=*(s2+j))

{t=*(s2+j);h=j;}

*(s2+h)=s2[k++];s2[k-1]=t;t=s2[k];

}

}

}

/**********

【习题】对字符串s1,除首、尾字符外,将其余字符

按ASCII码降序排列,组合成一个新的字符串s2。

**********/

voidfunc(char*s1,char*s2)

{

for(inti=0;*(s1+i)!

='\0';i++)

*(s2+i)=*(s1+i);

intn=i;

if(n<4)break;

else

{

chart=*(s2+1);intk=1;intj,h;

for(i=1;i<=n-2;i++)

{

for(j=i;j<=n-2;j++)

if(t<=*(s2+j))

{t=*(s2+j);h=j;}

*(s2+h)=s2[k++];s2[k-1]=t;t=s2[k];

}

}

}

/**********

【习题】以字符串s第m(>=0)个字符开始的所有字符,

按升序的次序构成字符串t。

**********/

voidsubstr(char*s,intm,char*t)

/*s为字符串的起始地址,

m>=0,

为新字符串的起始地址,t

注意:

字符串尾字符之后跟随着一个结束符‘\0',

即ASCII码为0的字符,结束符不属于字符串。

要求:

s串不能发生改变,

t串存放新的字符串。

*/

{

intf=0;

for(inti=m;s[i]!

='\0';i++)

t[f++]=s[i];t[f]='\0';

if(m==0||m==1||m==2){break;}

else

{

charc=t[0];intk=0;

for(i=0;t[i]!

='\0';i++)

{

for(intj=i;t[j]!

='\0';j++)

if(c>=t[j])c=t[j];

t[j]=t[k];t[k++]=c;c=t[k];

}

}

}

/**********

【习题】在字符串s中查找字符c,如果找到,返回字符c

首次出现在字符串s中的位置指针;否则,返回空指针NULL。

**********/

char*match(char*s,charc)

/*返回字符在串s中首次出现的位置指针*/

{

for(inti=0;s[i]!

='\0';i++)

if(*(s+i)==c)

returns+i;

returnNULL;

}

/**********

【习题】编写函数,计算年份year中第yearday天相应的月

和日。

例如,调用函数month_day(2000,61,&m,&d)之后,m=3,

d=1,即2000年的第61天是3月1日。

**********/

intmonth_day(intyear,intyearday,int*pmonth,int*pday)

/*year是年,

yearday是天数,

若year和yearday合理,

则*pmonth和*pday是计算得出的月和日,函数返回1;

0否则,函数返回

*/

{

intdate[12]={31,29,31,30,31,30,31,31,30,31,30,31};

if(year%4==0&&yearday>0&&yearday<367)

{*pmonth=yearday/31+1;

if(*pmonth>2)

{*pday=yearday;

for(inti=0;i<*pmonth-1;i++)

*pday-=date[i];}

elseif(*pmonth==1)*pday=yearday;

else*pday=yearday-31;return1;}

else

if(year%4!

=0&&yearday>0&&yearday<366)

{*pmonth=yearday/29+1;date[1]=28;

if(*pmonth>2)

{*pday=yearday;

for(inti=0;i<*pmonth-1;i++)

*pday-=date[i];}

elseif(*pmonth==1)*pday=yearday;

else*pday=yearday-31;return1;}

return0;

}

/**********

【习题】请编写一个函数func,通过略去非数字字符,将字符串

s转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。

**********/

longfunc(char*s)

/*s是一个数字字符串的地址,

函数返回值为由s含有的数字字符转换得到的数(包含正负数情况)

*/

{

{

inti=0;

longt=0;

boolmeet_negative=false;

boolmeet_number=false;

while(s[i])

{

if(47<(int)s[i]&&(int)s[i]<58)

{

meet_number=true;

t*=10;

t+=((int)s[i]-48);

}

if(s[i]=='-'&&meet_number==false)

meet_negative=true;

i++;

}

if(meet_negative==true)

return-t;

returnt;

}

}

/**********

【习题】请编写一个函数findmax(int[]s,intn),返回数组s中

n(>0)个整数中的最大值。

注意:

要求在函数中采用指针(而不是下标)来

处理数组元素。

**********/

intfindmax(ints[],intn)

/*返回s中n(>0)个整数的最大值。

注意:

要求在函数中采用指针(而不是下标)来处理数组元素。

*/

{

intt=*s;

for(inti=0;i

if(*(s+i)>t)t=*(s+i);

returnt;

}

/**********

【习题】请编写一个函数min3adj(ints[],intn),数组s中

有n(>0)个整数,返回在s中相邻三个数的和中的最小值。

**********/

intmin3adj(ints[],intn)

/*数组s含n(>=3)个整数,

返回在s中相邻三个数的和中的最小值。

*/

{

intt=*(s+n-1)+*(s+n-2)+*(s+n-3);

for(inti=n-1;i>1;i--)

if(t>*(s+i)+*(s+i-1)+*(s+i-2))

t=*(s+i)+*(s+i-1)+*(s+i-2);

returnt;

}

/**********

【习题】编写函数,通过指针参数sum将x和y的

和赋给相应实际参数。

例如,若x=134、y=378,则sum

的实参变量被赋值512。

**********/

voidfunc(intx,inty,int*sum)

{

*sum=x+y;

}

/**********

【习题】编写函数,返回指针参数x和y所指向的

变量的值之和。

**********/

intfunc(int*x,int*y)

{

return*x+*y;

}

/**********

【习题】编写函数,比较指针参数x和y分别

指向的变量,若前者的值较大,则交换两者的值,

并返回1;否则无须交换,返回0。

**********/

intfunc(int*x,int*y)

{

if(*x>*y)

{intt=*x;*x=*y;*y=t;return1;}

return0;

}

/**********

【习题】假设指针a指向某数组中的一个元素。

编写函数,在从元素*a开始的n个元素范围内,向后

查找给定值x,一旦找到值等于x的元素,则返回该元

素的序号;若找不到,则返回0。

例如,假定a指向的

10个元素依次为5,6,3,0,-4,8,9,-6,8,-7,若x=5,

则返回1;若x=8,则返回6;若y=4,则返回0。

**********/

intfunc(intn,int*a,intx)

{

for(inti=0;i

if(*(a+i)==x)

returni+1;

return0;

}

/**********

【习题】假设指针a指向某数组中的一个元素。

编写函数,对从元素*a开始的n个元素,统计并返回

值为x的元素个数(若不存在这样的元素,则返回0)。

**********/

intfunc(intn,int*a,intx).

{

intt=0;

for(inti=0;i

if(*(a+i)==x)t++;

if(t==0)return0;

returnt;

}

/**********

【习题】编写函数,返回指针参数s所指向的字

符串的长度。

例如,若该串为?

愠?

?

瑳摵湥?

则函数返回值是15。

注意:

字符串结束符是'\0',不

计入长度。

不允许调用库函数strlen()。

**********/

intfunc(char*s)

{

for(inti=0;*(s+i)!

='\0';i++){}

returni;

}

/**********

【习题】编写函数,在指针参数s所指向的字

符串中顺序查找由c指定的字符。

一旦找到,则返回

该字符在串中的序号(串的首个字符的序号为1),

否则返回0。

例如,若该串为?

愠?

?

瑳摵湥?

c='t',则函数返回值为9。

注意:

字符串结束符是

'\0',不允许调用字符串库函数。

**********/

intfunc(char*s,charc)

{

for(inti=0;*(s+i)!

='\0';i++)

if(*(s+i)==c)

returni+1;

}

/**********

【习题】编写函数,在指针参数s所指向的字

符串中统计并返回由c指定的字符的个数。

例如,若

该串为?

愠?

?

瑳摵湥?

,c='t',则函数返回值

为2。

注意:

字符串结束符是'\0',不允许调用字符

串库函数。

**********/

intfunc(char*s,charc)

{

intt=0;

for(inti=0;*(s+i)!

='\0';i++)

if(*(s+i)==c)

t++;

returnt;

}

/**********

【习题】编写函数,复制指针参数s指向的字

符串到由指针参数t已经指向的存储区域。

注意:

字符串结束符是'\0',不允许调用字符串库函数。

**********/

voidfunc(char*s,char*t)

{

for(inti=0;*(s+i)!

='\0';i++)

*(t+i)=*(s+i);*(t+i)='\0';

}

/**********

【习题】编写函数,由指针参数s指向的字

符串头n个字符构造一个字符串,并存储到到由指

针参数t已经指向的存储区域。

例如,若s指向的

字符串为?

愠?

?

瑳摵湥?

,n=4,则t指向的

串为?

愠屭。

注意:

字符串结束符是'\0',不允

许调用字符串库函数。

**********/

voidfunc(char*s,intn,char*t)

{

for(inti=0;i

*(t+i)=*(s+i);*(t+i)='\0';

}

/**********

【习题】编写函数,由指针参数s指向的字

符串后n个字符构造一个字符串,并存储到到由指

针参数t已经指向的存储区域。

例如,若s指向的

字符串为?

愠?

?

瑳摵湥?

,n=8,则t指向的

串为獜畴敤瑮尮。

注意:

字符串结束符是'\0',

不允许调用字符串库函数。

**********/

voidfunc(char*s,intn,char*t)

{

for(inti=0;*(s+i)!

='\0';i++){}

intk=0;

for(intj=i-n;*(s+j)!

='\0';j++)

*(t+(k++))=*(s+j);*(t+k)='\0';

}

/**********

【习题】编写函数,由指针参数s指向的字

个字符构造一个字符串,n个字符开始的i符串中第

并存储到到由指针参数t已经指向的存储区域。

如,若s指向的串为?

愠?

?

瑳摵湥?

,i=8,

n=7,则t指向的串为獜畴敤瑮。

注意:

字符串

结束符是'\0',不允许调用字符串库函数。

**********/

voidfunc(char*s,inti,intn,char*t)

{

intk=0;

for(intj=i-1;k

*(t+(k++))=*(s+j);*(t+k)='\0';

}

/**********

【习题】编写函数,通过将s字符串中所有小写

字母转换成大写字母,构造一个字符串并存储在t已经

指向的存储区域,但原来的s串不改变。

例如,若s字

符串为Iamastudent.,则构造的t串为IAMA

STUDENT.”。

**********/

voidfunc(char*s,char*t)

{

for(inti=0;*(s+i)!

='\0';i++)

{

if('a'<=*(s+i)&&*(s+i)<='z')

*(t+i)=(char)(*(s+i)-32);

else*(t+i)=*(s+i);

}

*(t+i)='\0';

}

/**********

【习题】编写函数,通过将s字符串中所有大写

字母转换成小写字母,构造一个字符串并存储在t已经

指向的存储区域,但原来的s串不改变。

例如,若s字

符串为IAmaStudent.,则构造的t串为iama

student.”。

**********/

voidfunc(char*s,char*t)

{

for(inti=0;*(s+i)!

='\0';i++)

{

if('A'<=*(s+i)&&*(s+i)<='Z')

*(t+i)=(char)(*(s+i)+32);

else*(t+i)=*(s+i);

}

*(t+i)='\0';

}

/**********

【习题】编写函数,在字符串s中顺序查找字

符串t,若找到,则返回其出现的位置,否则返回0。

例如,设?

?

愠?

?

瑳摵湥?

,若?

獜畴,则返

回值是8;若?

慜屮,则返回值是0。

注意:

字符串

结束符是'\0',不允许调用字符串库函数。

**********/

intfunc(char*s,char*t)

{

intk=0;

for(inti=0;*(s+i)!

='\0';i++)

if(*(s+i)==*(t+k))

if(*(s+i+1)==*(t+k+1))

returni+1;

return0;

}

/**********

【习题】假设字符串中每个连续字母序列称为

“单词”。

编写函数,在字符串s中顺序获取每个单

词,依次存入w指示的二维数组,并返回单词个数。

例如,若有?

?

愠?

?

瑳摵湥屴,则w={I,am,

a,student}。

注意:

字符串结束符是'\0',不

允许调用字符串库函数。

**********/

intfunc(char*s,char(*w)[10])

{

intt=0,h=0,k=0;

for(inti=0;*(s+i)!

='\0';i++)

if(('A'<=*(s+i)&&*(s+i)<='Z')||('a'<=*(s+i)&&*(s+i)<='z'))

k++;

if(k==0)return0;

for(i=0;*(s+i)!

='\0';i++)

{

if(('A'<=*(s+i)&&*(s+i)<='Z')||('a'<=*(s+i)&&*(s+i)<='z'))

w[t][h++]=*(s+i);

else

{

w[t][h]='\0';;

if(w[t][0]=='\0')

{h=0;continue;}

else

{t++;h=0;}

}

}

returnt;

}/**********指示的二维数【习题】编写函数,查找并返回p组中的元素最大值。

例如,二维数组的元素值依次为,则,0,4,20}}。

函数返回值为78**********/intfunc(int(*p)[4],intn)*//*求二维数组中的最大值{intt=p[0][0];for(inti=0;i

if(t

t=p[i][j];

returnt;

}/**********【习题】编写函数,依次对p指示的二维数组的每一行元素值求和,并存入数组sum中。

例如,若二维数组的元素值依次为,0,4,20}},。

则sum[0..2]={155,156,15}**********/voidfunc(int(*p)[4],intn,int*sum)*//*求二维数组中各行元素值的和

{

intj;for(inti=0;i

例如,每一列元素值求平均值,并存入数组avg若二维数组的元素值依次为,0,4,20}},

则avg[0..2]={,,}。

**********/

voidfunc(int(*p)[4],intn,float*avg)

/*求二维数组中各列元素值的平均值*/

{

inti=0,j,t=0;

for(j=0;j<3;j++)

{

for(i=0,*(avg+j)=0;i

*(avg+j)+=(float)p[i][j];

*(avg+j)/=;

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2