给定程序MODI1.C中fun函数的功能是:将p所指字符串中每个单词的最后一个字母改成大写。(这里的“单词”是指由空格隔开的字符串)。 例如,若输入“I am a student to take the examination.”,则应输出“I a

admin2017-02-27  65

问题 给定程序MODI1.C中fun函数的功能是:将p所指字符串中每个单词的最后一个字母改成大写。(这里的“单词”是指由空格隔开的字符串)。
    例如,若输入“I am a student to take the examination.”,则应输出“I aM A studenT to takE thE examination.”。
    请修改程序中的错误之处,使它能得出正确的结果。
    注意:不要改动main函数,不得删行,也不得更改程序的结构!
#include
#include
#include
void fun(char *p)
{
  int k = 0;
       if (k)
             {
/*********found**********/
if(p==  ’  ’)
{
  k  = 0;
/**********found***********/
     *  (p)  =  toupper (* (p  —  1))
    else
    k =1;
}
main ()
{
   char  chrstr [64] ;
  int d ;
printf ( "\nPlease enter an English
sentence within 63 letters:  ") ;
  gets (chrstr) ;
  d=strlen (chrstr) ;
  chrstr [d]  = " ;
  chrstr [d+l]  =  0  ;
   printf ( "\n\nBefore
changing:\n %s"t chrstr);
  fun (chrstr) ;
  printf ("\nAfter changing:\n %s",chrstr) ;
}

选项

答案(1)i f(* p==’’) (2)* (p—1)=toupper(* (p—1));

解析 函数的功能是将每个单词的最后一个字母改成大写。
(1)第一个错误标识下的if语句应该是判断字符串中的字符是否是空格,根据“for(;*p;p++)”语句中for循环条件中p的定义应该为字符型指针变量,*p是取p所指存取单元的值,所以“if(p==’’)”应该改为“if(*p==’’)”。
(2)题干中要求是将每个单词的最后一个字母改成大写,所以它的位置应该是挨着空格的前一个字符,应该是指针p指向字符的前一个位置,“*p=toupper(*(p—l))”是将改动的值赋给了p所指的空格,所以应该改为“*(p—1)=toupper(*(p—1));”且语句未尾应有分号。
转载请注明原文地址:https://jikaoti.com/ti/H2kiFFFM
0

相关试题推荐
最新回复(0)