指针大礼包4

发布时间:2024年01月04日

第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));

}

文章来源:https://blog.csdn.net/2301_78235522/article/details/135316546
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。