广东工业大学 Anyviewce C语言 习题十

广东工业大学 Anyviewce C语言 第十章

仅供参考

广东工业大学 Anyviewce C语言 习题七.

广东工业大学 Anyviewce C语言 习题八.

广东工业大学 Anyviewce C语言 习题九.

广东工业大学 Anyviewce C语言 习题十.

广东工业大学 Anyviewce C语言 习题十一.

/*

【习题10.011】数组s的前n个元素存放给定的字符序列,数组t的前n个元素存放s的逆序列。

注意:数组的下标从0开始。
*/

void func(char s[], char t[], int n) 
{
    int i;
    for(i=0;i<n;i++)
    {
        t[n-i-1]=s[i];
    }
}

/*

【习题10.012】s是给定字符串的起始地址,t是求得s的逆串的起始地址

*/

void func(char *s, char *t) 
{
    int i,n;
    for(n=0;s[n]!='\0';n++)
        ;
    for(i=0;i<n;i++)
    {
        t[n-i-1]=s[i];
    }
}

/*

【习题10.015】s1为字符串的起始地址,s2为新字符串的起始地址,n为字符串的长度。

要求:s1串不能发生改变,s2串存放新的字符串。
*/

void func(char *s1, char *s2, int n)
{    
    int  i,j;
    char t;
    strcpy(s2,s1);
    for (i=1;i<n-1;i++)
    {
        for (j=2;j<n-i;j++)
        {
            if (s2[j]>s2[j-1])
            {
                t=s2[j];
                s2[j]=s2[j-1];
                s2[j-1]=t;
            }
        }
    } 

}

【习题10.011】

别问我为什么是空的…我也想知道他为什么是空的

void func(char *s1, char *s2)
{

}

/**********

【习题10.018】 以字符串s第m(>=0)个字符开始的所有字符,按升序的次序构成字符串t。

**********/

void substr(char *s, int m, char *t)
/* s为字符串的起始地址,
   m>=0,
   t为新字符串的起始地址,
   注意:字符串尾字符之后跟随着一个结束符‘\0’,
         即ASCII码为0的字符,结束符不属于字符串。
   要求:s串不能发生改变,
         t串存放新的字符串。
*/
{
    int i,j,n,term;
    n=strlen(s);    
    for(i=m,j=0;i<n;i++,j++)
        t[j]=s[i];
    n=j+1;//t串的字符长度
    for(i=0;i<n;i++)
        for(j=0;j<n-i-1;j++)
            if(t[j]>t[j+1])
            {
                term=t[j+1];
                t[j+1]=t[j];
                t[j]=term;
            }
        
}

/***

【习题10.020】返回字符在串s中首次出现的位置指针

***/

char *match(char *s, char c)    
{
    int i;
    for(i=0;*(s+i)!='\0';i++)
        if(*(s+i)==c)
            return (s+i);
 
}

/*

【习题10.033】year是年,yearday是天数,若year和yearday合理,则pmonth和pday是计算得出的月和日,函数返回1,否则,函数返回0。

*/

int month_day(int year, int yearday, int *pmonth, int *pday) 
{
        int k,leap;
        int a[2][13]={
            {0,31,28,31,30,31,30,31,31,30,31,30,31},
            {0,31,29,31,30,31,30,31,31,30,31,30,31},
        };//定义数组存放闰年和非闰年每个月的天数
        
        leap=(year%4==0&&year%100!=0)||year%400==0;   //闰年判别条件
       if((leap==1||leap==0&&yearday<366)&&yearday>0)
       {
           for(k=1;yearday>a[leap][k];k++)
                yearday-=a[leap][k];
            
            *pmonth=k;
            *pday=yearday;        
            
            return 1;     
       }
       else
            return 0;
}

/*

【习题10.044】s是一个数字字符串的地址,函数返回值为由s含有的数字字符转换得到的数(包含正负数情况)

*/

long func(char *s) 
{
    int i,flag=0;
    long n;
    int len=strlen(s);
    
    for(i=0,n=0;i<len;i++)
    {
        if(s[0]=='-')        
            flag=1;        
        
        if(s[i]>='0'&&s[i]<='9')
            n=n*10+s[i]-'0';
    }
    
    if(flag==1)
        n=-n;
    return n;
}

/*

【习题10.105】返回s中n(>0)个整数的最大值。

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

int findmax(int s[], int n)    
{
    int i,t=s[0];
    for(i=0;i<n;i++)
        if(*(s+i)>t)
            t=*(s+i);
            
    return t;        
    
}

/*

【习题10.124】数组s含n(>=3)个整数,返回在s中相邻三个数的和中的最小值。

*/

int min3adj(int s[], int n)    
{   
    int i,sum=*s+*(s+1)+*(s+2),min=sum;
    if(n==3)
        return sum;//若数组只有三个元素,输出
    for(i=1;i<n-1;i++)
    {
        sum=s[i-1]+s[i]+s[i+1];//对相邻三个元素求和
        if(min>sum)   
            min=sum;
    }
    return min;

}
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值