c语言程序改错题
答案:4 悬赏:20 手机版
解决时间 2021-05-03 09:24
- 提问者网友:沦陷
- 2021-05-02 11:36
gc394.c中函数str1的功能是输入一个英文句子(字符串),将其中每个单词的最后一个字母改写成大写,然后输出此句子。(这里的"单词"是指由空格隔开的字符串)。例如:若输入:"this is a book ",则应输出:"thiS iS A booK "请改正函数str1中的两个错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
--------------------------------------------------------------------
#include "stdio.h"
#include "ctype.h"
#include "conio.h"
void str1(char *p)
{ int k=0;
for(;*p;p++)
if(k)
{
if(*p==' ')
{ k=0;
*(p-1)=toupper(*(p-1));
}
}
else k=1;
}
void main()
{ char str[100];
int d;
clrscr();
printf("\n please input a string:");
gets(str);
str1(str);
printf("\nafter changing:\n %s",str);
}
最佳答案
- 五星知识达人网友:北方的南先生
- 2021-05-02 12:47
#include "stdio.h"
#include "ctype.h"
#include "conio.h"
void str1(char *p)
{ int k=0;
for(;*(p-1);p++)//必须多判断一位,以保证最后一位能成功变成大写,所以溢出条件用P-1判断
if(k)
{
if(*p==' '||!*p)//判断是否到了最后一位,最后的符号位空字符'\0'
{ k=0;
*(p-1)=toupper(*(p-1));
}
}
else k=1;
}
void main()
{ char str[100];
int d;
//clrscr(); //我是用VC运行的,这句不支持,这个指令只用于TC,这里不是错误,只是编译器问题。
printf("\n please input a string:");
gets(str);
str1(str);
printf("\nafter changing:\n %s",str);
}
全部回答
- 1楼网友:人類模型
- 2021-05-02 14:27
void str1(char *p)
{ int k=0;
for(;*(p-1);p++)
if(k)
{
if(*p==' '|| !*p)
{ k=0;
*(p-1)=toupper(*(p-1));
}
}
else k=1;
}
- 2楼网友:未来江山和你
- 2021-05-02 13:58
#include "stdio.h"
#include "ctype.h"
#include "conio.h"
void str1(char *p)
{ int k=0;
for(;*p;p++)
if(k)
{
if(*p==' '||*p=='#')
{ k=0;
*(p-1)=toupper(*(p-1));
}
}
else k=1;
}
void main()
{ char str[100];
printf("\n please input a string and input # to end:");//输入#结束输入字符串
gets(str);
str1(str);
printf("\nafter changing:\n %s",str);
}
改了下,看看符合你的要求不
void str1(char *p)
{ int k=0;
for(;*p+1;p++)
if(k)
{
if(*p==' '|| !*p)
{ k=0;
*(p-1)=toupper(*(p-1));
}
}
else k=1;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯