指针大礼包5

发布时间:2024年01月05日

三、程序改错 ??共10题 (共计100分)

第1题 (10.0分) ???????题号:72 ???????难度:中 ???????第8章

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

【程序改错】

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

题目:下列给定程序中,函数fun实现的功能是:统计一个无符号整数中各位数字值

??????为0的个数,通过形参传回主函数,并把该整数中各位上最大的数字值作为函

??????数值返回。

例如:若输入无符号整数30800,则数字值为0的位的个数为3,各位上数字值最大的是8。

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

#include <stdio.h>

int fun(unsigned n,int *zero)

{

????????int count=0,max=0,t;

????????do

????????{

????????????????t=n%10;

/***********FOUND***********/

????????????????if(t=0)

????????????????????????count++;

????????????????if(max<t)

????????????????????????max=t;

????????????????n=n/10;

????????}

????????while(n);

/***********FOUND***********/

????????zero=count;

????????return max;

}

main()

{

????????unsigned n;

????????int zero,max;

????????printf("\nInput n(unsigned): ");

????????scanf("%d",&n);

????????max=fun(n,&zero);

????????printf("\nThe result: max=%d\n zero=%d\n",max,zero);

}

第2题 (10.0分) ???????题号:79 ???????难度:中 ???????第8章

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

【程序改错】

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

题目:下列给定程序的功能是:读入一个英文文本行,将其中每个单词的第一个字母改

???????成大写,然后输出此文本行(这里"单词"是指由空格隔开的字符串)。

例如:若输入"I am a student to take the examination",则

???????应输出"I Am A Student To Take The Examination"。

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

#include ?<stdlib.h>

#include ?<string.h>

#include ?<conio.h>

#include ?<ctype.h>

#include ?<stdio.h>

#include ?<string.h>

/***********FOUND***********/

void upfst(char p)

{

????????int k=0;

????????for ( ;*p;p++)

????????????????if (k)

????????????????{

????????????????????????if (*p==' ') ?

????????????????????????k=0;

????????????????}

????????????????else

????????????????{

????????????????????????if (*p!=' ') ?

????????????????????????{

????????????????????????????????k=1;

????????????????????????????????*p=toupper(*p);

????????????????????????}

????????????????}

}

void main()

{

????????char ?chrstr[81];

????????system("CLS"); ???

????????printf("\nPlease enter an English text line: ");

????????gets(chrstr);

????????printf("\nBofore changing:\n ?%s",chrstr);

????????upfst(chrstr);

????????printf("\nAfter changing:\n ?%s\n",chrstr);

}

第3题 (10.0分) ???????题号:53 ???????难度:中 ???????第8章

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

【程序改错】

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

题目:下列给定程序中函数fun的功能是:求出s所指字符串中最后一次出现的t所指

??????字符串的地址,并通过函数值返回,在主函数中输出从此地址开始的字符串;

??????若未找到,则函数值为NULL。

例如:当字符串中的内容为"abcdabfabcdx",t中内容为"ab"时,输出结果应是"abcdx"。

??????当字符串中的内容为"abcdabfabcdx",t中内容为"abd"时,则程序输出未找

??????到信息"not be found!"。

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

#include ?<stdio.h>

#include ?<string.h>

char * fun (char ?*s, ?char *t )

{

????????char ??*p , *r, *a;

/***********FOUND***********/

????????a == Null;

????????while ( *s )

????????{ ??

????????????????p = s;

????????????????r = t;

????????????????while ( *r )

????????????????/***********FOUND***********/

????????????????????????if ( r == p )

????????????????????????{

????????????????????????????????r++; ?

????????????????????????????????p++;

????????????????????????}

????????????????????????else ?break;

????????????????if ( *r == '\0' )

????????????????????????a = s;

????????????????s++;

????????}

????????return ?a ;

}

main()

{

????????char ??s[100], t[100], *p;

????????printf("\nPlease enter string S :");

????????scanf("%s", s );

????????printf("\nPlease enter substring t :");

????????scanf("%s", t );

????????p = fun( s, t );

????????if ( p )

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

????????else ?????

????????????????printf("\nNot found !\n" );

}

第4题 (10.0分) ???????题号:24 ???????难度:中 ???????第8章

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

【程序改错】

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

题目:下列给定程序中函数fun的功能是:从N个字符串中找出最长的串,并将其地址作

??????为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。

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

#include <stdio.h>

#include <string.h>

#define ???N ??5

#define ???M ??81

/***********FOUND***********/

fun(char ?(*sq)[M])

{ ?

????????int ?i; ????char ?*sp;

????????sp=sq[0];

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

????????????????if(strlen( sp)<strlen(sq[i]))

????????????????????????sp=sq[i] ;

/***********FOUND***********/

????????return ?sq;

}

main()

{ ?

????????char ??str[N][M], *longest; ???int ??i;

????????printf("Enter %d lines :\n",N);

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

????????????????gets(str[i]);

????????printf("\nThe %d string ?:\n",N);

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

????????????????puts(str[i]);

????????longest=fun(str);

????????printf("\nThe longest string :\n");

????????puts(longest);

}

第5题 (10.0分) ???????题号:55 ???????难度:中 ???????第8章

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

【程序改错】

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

题目:下列给定程序中函数fun的功能是:从p所指字符串中找出ASCII码值最大的

???????字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。

例如:调用fun函数之前给字符串输入"ABCDeFGH",调用后字符串中的内容应为"eABCDFGH"。

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

#include <stdio.h>

void fun( char *p )

{ ??

????????char ??max,*q; ??int ??i=0;

????????max=p[i];

????????while( p[i]!=0 )

????????{ ??

????????????????if( max<p[i] )

????????????????{ ?

????????????????????????max=p[i];

????????????????/***********FOUND***********/

????????????????????????q=p+i

????????????????}

????????????????i++;

????????}

/***********FOUND***********/

????????while(q<p )

????????{ ?

????????????????*q=*(q-1);

????????????????q--;

????????}

????????p[0]=max;

}

main()

{ ?

????????char ??str[80];

????????printf("Enter a string: ?");

????????gets(str);

????????printf("\nThe original string: ?????");

????????puts(str);

????????fun(str);

????????printf("\nThe string after moving: ?");

????????puts(str); printf("\n\n");

}

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