广工Anyview试题答案第八章

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
void func(int x, int y, int *sum)
{
*sum=x+y;
}
/**********
【习题】编写函数,返回指针参数x和y所指向的
变量的值之和。
**********/
int func(int *x, int *y)
{
return *x+*y;
}
/**********
【习题】编写函数,比较指针参数x和y分别
*pday-=date[i];}
else if(*pmonth==1)*pday=yearday;
else *pday=yearday-31;return 1;}
return 0;
}
/**********
【习题】请编写一个函数func,通过略去非数字字符,将字符串
s转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。
{
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)
{
for(int i=0;*(s1+i)!='\0';i++)
*(s2+i)=*(s1+i);
int n=i;
if(n<4)break;
else
{
char t=*(s2+1);int k=1;int j,h;
for(i=1;i<=n-2;i++)
{
for(j=i;j<=n-2;j++)
if(t<=*(s2+j))
否则返回0。例如,若该串为"I am a student.",
c='t',则函数返回值为9。注意:字符串结束符是
'\0',不允许调用字符串库函数。
**********/
int func(char *s, char c)
{
for(int i=0;*(s+i)!='\0';i++)
if(*(s+i)==c)
**********/
long func(char *s)
/* s是一个数字字符串的地址,
函数返回值为由s含有的数字字符转换得到的数(包含正负数情况)
*/
{
{
int i=0;
long t=0;
bool meet_negative=false;
bool meet_number=false;
while(s[i])
return i+1;
}
/**********
【习题】编写函数,在指针参数s所指向的字
符串中统计并返回由c指定的字符的个数。例如,若
该串为"I am a student.",c='t',则函数返回值
为2。注意:字符串结束符是'\0',不允许调用字符
串库函数。
**********/
int func(char *s, char c)
/* s为字符串的起始地址,
m>=0,
t为新字符串的起始地址,
注意:字符串尾字符之后跟随着一个结束符‘\0’,
即ASCII码为0的字符,结束符不属于字符串。
要求:s串不能发生改变,
t串存放新的字符串。
*/
{
int f=0;
for(int i=m;s[i]!='\0';i++)
t[f++]=s[i];t[f]='\0';
else *pday=yearday-31;return 1;}
else
if(year%4!=0&&yearday>0&&yearday<366)
{*pmonth=yearday/29+1; date[1]=28;
if(*pmonth>2)
{*pday=yearday;
for(int i=0;i<*pmonth-1;i++)
/**********
【习题】请编写函数func(char s[], char t[], int n),
由数组s中长度为n的字符序列构造其逆序列,并存储在数组t中。
例如,由给定字符序列s="are"求得逆序列t="era";由s="time"
求得t="emit"。
**********/
void func(char s[], char t[], int n)
由s="time"求得t="emit"。
**********/
void func(char *s, char *t)
/* s是给定字符串的起始地址,
t是求得s的逆串的起始地址
*/
{
int n=0;
for(int i=0;*(s+i)!='\0';i++)
n++;
for(i=0;i<n;i++)
t[i]=s[nwenku.baidu.comi-1];
计入长度。不允许调用库函数strlen()。
**********/
int func(char *s)
{
for(int i=0;*(s+i)!='\0';i++){}
return i;
}
/**********
【习题】编写函数,在指针参数s所指向的字
符串中顺序查找由c指定的字符。一旦找到,则返回
该字符在串中的序号(串的首个字符的序号为1),
if(t<=*(s2+j))
{t=*(s2+j);h=j;}
*(s2+h)=s2[k++];s2[k-1]=t;t=s2[k];
}
}
}
/**********
【习题】对字符串s1,除首、尾字符外,将其余字符
按ASCII码降序排列,组合成一个新的字符串s2。
**********/
void func(char *s1, char *s2)
{t=*(s2+j);h=j;}
*(s2+h)=s2[k++];s2[k-1]=t;t=s2[k];
}
}
}
/**********
【习题】以字符串s第m(>=0)个字符开始的所有字符,
按升序的次序构成字符串t。
**********/
void substr(char *s, int m, char *t)
if(year%4==0&&yearday>0&&yearday<367)
{*pmonth=yearday/31+1;
if(*pmonth>2)
{*pday=yearday;
for(int i=0;i<*pmonth-1;i++)
*pday-=date[i];}
else if(*pmonth==1)*pday=yearday;
要求:s1串不能发生改变,
s2串存放新的字符串。
*/
{
for(int i=0;i<n;i++)
*(s2+i)=*(s1+i);
if(n<4)break;
else
{
char t=*(s2+1);int k=1;int j,h;
for(i=1;i<=n-2;i++)
{
for(j=i;j<=n-2;j++)
}
}
/**********
【习题】在字符串s中查找字符c,如果找到,返回字符c
首次出现在字符串s中的位置指针;否则,返回空指针NULL。
**********/
char *match(char *s, char c)
/*返回字符在串s中首次出现的位置指针*/
{
for(int i=0;s[i]!='\0';i++)
}
/**********
【习题】对长度为n的字符串s1,除首、尾字符外,将
其余字符按ASCII码降序排列,组合成一个新的字符串s2。
**********/
void func(char *s1, char *s2, int n)
/* s1为字符串的起始地址,
s2为新字符串的起始地址,
n为字符串的长度。
/*返回s中n(>0)个整数的最大值。
注意:要求在函数中采用指针(而不是下标)来处理数组元素。
*/
{
int t=*s;
for(int i=0;i<n;i++)
if(*(s+i)>t)t=*(s+i);
return t;
}
/**********
【习题】请编写一个函数min3adj(int s[], int n),数组s中
return -t;
return t;
}
}
/**********
【习题】请编写一个函数findmax(int []s, int n),返回数组s中
n(>0)个整数中的最大值。注意:要求在函数中采用指针(而不是下标)来
处理数组元素。
**********/
int findmax(int s[], int n)
有n(>0)个整数,返回在s中相邻三个数的和中的最小值。
**********/
int min3adj(int s[], int n)
/*数组s含n(>=3)个整数,
返回在s中相邻三个数的和中的最小值。
*/
{
int t=*(s+n-1)+*(s+n-2)+*(s+n-3);
for(int i=n-1;i>1;i--)
/*数组s的前n个元素存放给定的字符序列,
数组t的前n个元素存放s的逆序列。
注意:数组的下标从0开始。
*/
{
for(int i=0;i<n;i++)
t[i]=s[n-i-1];
}
/**********
【习题】请编写函数func(char*s, char *t),由字符
串s构造其逆串t。例如,由给定串s="are"求得逆串t="era";
编写函数,在从元素*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。
**********/
int func(int n, int *a, int x)
if(*(s+i)==c)
return s+i;
return NULL;
}
/**********
【习题】编写函数,计算年份year中第yearday天相应的月
和日。例如,调用函数month_day(2000,61,&m,&d)之后,m=3,
d=1,即2000年的第61天是3月1日。
**********/
if(m==0||m==1||m==2){break;}
else
{
char c=t[0]; int k=0;
for(i=0;t[i]!='\0';i++)
{
for(int j=i;t[j]!='\0';j++)
if(c>=t[j])c=t[j];
t[j]=t[k];t[k++]=c;c=t[k];
}
int month_day(int year, int yearday, int *pmonth, int *pday)
/* year是年,
yearday是天数,
若year和yearday合理,
则*pmonth和*pday是计算得出的月和日,函数返回1;
否则,函数返回0。
*/
{
int date[12]={31,29,31,30,31,30,31,31,30,31,30,31};
{
for(int i=0;i<n;i++)
if(*(a+i)==x)
return i+1;
return 0;
}
/**********
【习题】假设指针a指向某数组中的一个元素。
编写函数,对从元素*a开始的n个元素,统计并返回
值为x的元素个数(若不存在这样的元素,则返回0)。
**********/
int func(int n, int *a, int x)
if(t>*(s+i)+*(s+i-1)+*(s+i-2))
t=*(s+i)+*(s+i-1)+*(s+i-2);
return t;
}
/**********
【习题】编写函数,通过指针参数sum将x和y的
和赋给相应实际参数。例如,若x=134、y=378,则sum
的实参变量被赋值512。
**********/
void func(char *s, char *t)
指向的变量,若前者的值较大,则交换两者的值,
并返回1;否则无须交换,返回0。
**********/
int func(int *x, int *y)
{
if(*x>*y)
{int t=*x;*x=*y;*y=t;return 1;}
return 0;
}
/**********
【习题】假设指针a指向某数组中的一个元素。
{
int t=0;
for(int i=0;i<n;i++)
if(*(a+i)==x)t++;
if(t==0)return 0;
return t;
}
/**********
【习题】编写函数,返回指针参数s所指向的字
符串的长度。例如,若该串为"I am a student.",
则函数返回值是15。注意:字符串结束符是'\0',不
{
int t=0;
for(int i=0;*(s+i)!='\0';i++)
if(*(s+i)==c)
t++;
return t;
}
/**********
【习题】编写函数,复制指针参数s指向的字
符串到由指针参数t已经指向的存储区域。注意:
字符串结束符是'\0',不允许调用字符串库函数。
**********/
相关文档
最新文档