pta上的题目
写的程序是
#include<stdio.h>
int main(void){
int flag=0,count=0;
char ch;
ch=getchar();
while(ch!='\n'){
if(ch==' '){
flag=1;
}else if(ch<='z'&&ch>='a'&&(flag==1||count==0)){
ch=ch-32;
flag=0;
count++;
}
printf("%c",ch);
if(ch!=' '){
count++;
}
ch=getchar();
}
return 0;
}
if(ch==' '){
改成
if(!(ch<='z'&&ch>='a' || ch<='Z'&&ch>='A')){
因为单词间可能是用标点分隔,不是空格分隔
你题目的解答代码如下:
#include<stdio.h>
int main(void){
int flag=0,count=0;
char ch;
ch=getchar();
while(ch!='\n'){
if(!(ch<='z'&&ch>='a' || ch<='Z'&&ch>='A')){
flag=1;
}else if(ch<='z'&&ch>='a'&&(flag==1||count==0)){
ch=ch-32;
flag=0;
}
count++;
printf("%c",ch);
ch=getchar();
}
return 0;
}
如有帮助,望采纳!谢谢!
elseif改为if,flag=0放在循环语句的第一条语句,后面的可以删除。
# include<stdio.h>
int main()
{
int isSpace = 1;
char ch;
ch=getchar();
while(ch!='\n')
{
if(isSpace && ch>=97 && ch<=122)
putchar(ch-32);
else
{
if(ch == 32)
isSpace = 1;
else
isSpace = 0;
putchar(ch);
}
ch=getchar();
}
return 0;
}
我用结构体写了一个,希望对你有帮助。
#include<stdio.h>
#include<stdlib.h>
#include <conio.h>
typedef struct Link
{
char c;
struct Link * next;
}link;
link * initLink()
{
link *head=NULL,*p=NULL,*temp=NULL;
char c;
head=(link *)malloc(sizeof(link));
head->c=' ';
head->next=NULL;
p=head;
printf("请输入一段英文,并以回车结束。\n");
c=getche();
while(c!='\r')
{
temp=(link *)malloc(sizeof(link));
temp->c=c;
temp->next=NULL;
p->next=temp;
p=temp;
c=getche();
}
return head;
}
void showLink(link *head)
{
link *p=head->next;
while(p)
{
printf("%c",p->c);
p=p->next;
}
printf("\n");
}
link * change(link *head)
{
link *p1=head,*p2=head->next,*p=head;
while(p2)
{
if((p2->c!=' ')&&(p1->c==' '))
p2->c=(p2->c-32);
p1=p2;
p2=p2->next;
}
return p;
}
void main()
{
link *head=initLink();
head=change(head);
showLink(head);
}