高手帮忙看看
#include<stdio.h>void main()
{
int i;
char a[200],*p;
p=a;
gets(p);
for(i=0;a[i]!='.';i++)
{ if(a[i]==' ')
a[i+1]=a[i+1]+'32';
}
puts(p);
}
我这程序错在哪里,将字符的第一个字母变成大写并将其全部输出
----------------解决方案--------------------------------------------------------
#include "stdio.h"
main()
{int i;
char a[200],* p;
printf("输入字符:\n");
scanf("%s",a);
p=a;
if(a[0]>='a'&&a[0]<='z')
a[0]=a[0]-32;
printf("%s",a);
}
[[it] 本帖最后由 yyow3193 于 2008-6-18 13:05 编辑 [/it]]
----------------解决方案--------------------------------------------------------
#include<stdio.h>
void main()
{
int i;
char a[200],*p;
p=a;
gets(p);
for(i=0;a[i]!='.';i++)
{ if(a[i]==' ')
a[i+1]=a[i+1]-32;//改过
}
puts(p);
}
这个不能改变第一个字母吧,在额外加一个判断第一个字母的条件吧,在ASC码表中,小写字母在大写的后面,要减而不是加,而且减的是32而不是'32','32'的ASC码值不是32,所以会引起错误。
----------------解决方案--------------------------------------------------------
#include<stdio.h>
void main()
{
char a[200],*p;
p=a;
gets(p);
if(a[0]>='a'&&a[0]<='z')
a[0]=a[0]-32;
puts(p);
}
_____________________________________
所有字母转换为大写
#include<stdio.h>
#include<string.h>
void main()
{
int i;
char a[200];
gets(a);
strupr(a);
puts(a);
}
[[it] 本帖最后由 crabeam 于 2008-6-18 13:39 编辑 [/it]]
----------------解决方案--------------------------------------------------------