第6题 (10.0分)        题号:63        难度:难        第8章

/*-------------------------------------------------------

【程序填空】

---------------------------------------------------------

题目:给定程序中,函数fun的功能是:求出形参ss所指字符串数组中最长字符串的长度,

      其余字符串左边用字符*补齐,使其与最长的字符串等长。字符串数组中共有M个字

      符串,且串长小于N。

-------------------------------------------------------*/

#include    <stdio.h>

#include    <string.h>

#define    M    5

#define    N    20

void fun(char  (*ss)[N])

{

        int  i, j, k=0, n, m, len;

        for(i=0; i<M; i++)

        {  

                len=strlen(ss[i]);

                if(i==0) n=len;

                if(len>n)

                {

/***********SPACE***********/

                        n=len; 【?】=i;

                }

        }

        for(i=0; i<M; i++)

                if (i!=k)

                {

                        m=n;

                        len=strlen(ss[i]);

/***********SPACE***********/

                        for(j=【?】; j>=0; j--)

                                ss[i][m--]=ss[i][j];

                        for(j=0; j<n-len; j++)

/***********SPACE***********/

                                【?】='*';

                }

}

main()

{  

        char  ss[M][N]={"shanghai","guangzhou","beijing","tianjing","cchongqing"};

        int  i;

        printf("\nThe original strings are :\n");

        for(i=0; i<M; i++)  printf("%s\n",ss[i]);

                printf("\n");

        fun(ss);

        printf("\nThe result:\n");

        for(i=0; i<M; i++)

                printf("%s\n",ss[i]);

}

第7题 (10.0分)        题号:33        难度:难        第8章

/*-------------------------------------------------------

【程序填空】

---------------------------------------------------------

题目:下列给定程序中,函数fun的功能是:在形参s所指字符串中的每个数字字符之后插

      入一个*号。

例如:形参s所指的字符串为"def35adh3kjsdf7",执行后结果为"def3*5*adh3*kjsdf7*"

-------------------------------------------------------*/

#include     <stdio.h>

void fun(char  *s)

{  

        int  i, j, n;

        for(i=0; s[i]!='\0'; i++)

/***********SPACE***********/

                if(s[i]>='0' 【?】 s[i]<='9')

                {  

                        n=0;

/***********SPACE***********/

                        while(s[i+1+n]!= 【?】)

                                n++;

                        for(j=i+n+1; j>i; j--)

/***********SPACE***********/

                                s[j+1]= 【?】;

                                s[j+1]='*';

                                i=i+1;

                }

}

main()

{  

        char  s[80]="def35adh3kjsdf7";

        printf("\nThe original string is :  %s\n",s);

        fun(s);

        printf("\nThe result is :  %s\n",s);

}

第8题 (10.0分)        题号:89        难度:难        第8章

/*-------------------------------------------------------

【程序填空】

---------------------------------------------------------

题目:给定程序中,函数fun的功能是:把形参s所指字符串中最右边的n个字符复制到形

      参t所指字符数组中,形成一个新串。若s所指字符串的长度小于n,则将整个字符

      串复制到形参t所指字符数组中。

例如:形参s所指的字符串为:abcdefgh,n的值为5,程序执行后t所指字符数组中的字符

      串应为:defgh。

-------------------------------------------------------*/

#include  <stdio.h>

#include  <string.h>

#define   N   80

void fun(char  *s, int  n, char  *t)

{

        int len,i,j=0;

        len=strlen(s);

        if(n>=len)

/***********SPACE***********/

                strcpy(【?】);

        else

        {

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

/***********SPACE***********/

                        t[j++]= 【?】 ;

/***********SPACE***********/

                t[j]= 【?】 ;

        }

}

main()

{

        char  s[N],t[N];  

        int  n;

        printf("Enter a string:  ");

        gets(s);

        printf( "Enter n:");

        scanf("%d",&n);

        fun(s,n,t);

        printf("The string t :  ");  

        puts(t);

}

第9题 (10.0分)        题号:83        难度:难        第8章

/*-------------------------------------------------------

【程序填空】

---------------------------------------------------------

题目:给定程序中,函数fun的功能是:判定形参a所指的N×N(规定N为奇数)的矩阵是否

      是"幻方",若是,函数返回值为1;若不是,函数返回值为0。

  

     "幻方"的判定条件是:矩阵每行、每列、主对角线及反对角线上元素之和都相等。

例如:以下3×3的矩阵就是一个"幻方":

                                     4  9  2

                                     3  5  7

                                     8  1  6

-------------------------------------------------------*/

#include  <stdio.h>

#define   N   3

int fun(int  (*a)[N])

{

        int  i,j,m1,m2,row,colum;

        m1=m2=0;

        for(i=0; i<N; i++)

        {

                j=N-i-1;

                m1+=a[i][i];

                m2+=a[i][j];  

        }

        if(m1!=m2)

                return  0;

        for(i=0; i<N; i++)

        {

/***********SPACE***********/

                row=colum= 【?】;

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

                {

                        row+=a[i][j];  

                        colum+=a[j][i];  

                }

/***********SPACE***********/

                if( (row!=colum) 【?】(row!=m1) )

                        return 0;

        }

/***********SPACE***********/

        return  【?】;

}

main()

{

        int  x[N][N],i,j;

        printf("Enter number for array:\n");

        for(i=0; i<N; i++)

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

                        scanf("%d",&x[i][j]);

                printf("Array:\n");

        for(i=0; i<N; i++)

        {

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

                        printf("%3d",x[i][j]);

                printf("\n");

        }

        if(fun(x))

                printf("The Array is a magic square.\n");

        else

                printf("The Array isn't a magic square.\n");

}

第10题 (10.0分)        题号:85        难度:难        第8章

/*-------------------------------------------------------

【程序填空】

---------------------------------------------------------

题目:给定程序中,函数fun的功能是:将形参s所指字符串中的所有数字字符顺序

      前移,其他字符顺序后移,处理后新字符串的首地址作为函数值返回。

例如,s所指字符串为:asd123fgh543df,处理后新字符串为:123543asdfghdf。

-------------------------------------------------------*/

#include  <stdio.h>

#include  <string.h>

#include  <stdlib.h>

#include  <ctype.h>

char *fun(char  *s)

{

        int  i, j, k, n;  

        char  *p, *t;

        n=strlen(s)+1;

        t=(char*)malloc(n*sizeof(char));

        p=(char*)malloc(n*sizeof(char));

        j=0; k=0;

        for(i=0; i<n; i++)

        {

                if(isdigit(s[i]))

                {

/***********SPACE***********/

                        p[【?】]=s[i];

                        j++;

                }

                else

                {

                        t[k]=s[i];

                        k++;

                }

        }

/***********SPACE***********/

        for(i=0; i<【?】; i++)

                p[j+i]= t[i];

        p[j+k]=0;

/***********SPACE***********/

        return 【?】;

}

main()

{

        char  s[80];

        printf("Please input: ");  

        scanf("%s",s);

        printf("\nThe result is: %s\n",fun(s));

}

01-04 08:54