成语视频软件:C语言排错。小程序

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/30 06:36:57
将字符串ss中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)

#include <stdio.h>

void fun(char *ss)
{
int n =0 , i ;
while ( *ss )
{
n++ ;
ss++ ;
}
for ( i = 0 ; i < n ; i+=2 )
if ( ss[i] >= 'a' && ss[i] <= 'z' )
ss[i] = ss[i] -32 ;
}

void main( void )
{
char tt[51];
printf("\nPlease enter an character string within 50 characters:\n" );
gets( tt );
printf("\n\nAfter changing, the string\n %s", tt );
fun(tt) ;
printf( "\nbecomes\n %s", tt );
}

我觉得这样比较麻烦..
可以换个思路的.
比如不要用指针,在这题中不用批针更好.
while ( *ss )
{
n++ ;
ss++ ;
}

上面那个语句我明到底有什么用.你的指针变量ss进行自加运算但后面又不用.

不如你参考一下我的吧.
mian()
{
int i,n;
char s[51];
printf("\nPlease input you want:");
gets(s);
n=strlen(s);
for(i=0;i<n;i+=2)
{
if(s[i]>='a'&&s[i]<='z')s[i]=s[i]-32;
}
printf("\nAfter change is:");
for(i=0;i<n;i++)
{
printf("%c",s[i]);
}
}

这个算法比较简单..参考一下吧..

fun函数修改部分:
......
int n =0 , i=0 ;
while ( ss[i]!='\0' ){
i++ ;
}
n=i;
for ( i = 1 ; i < n ; i+=2 )
......
搞定,编译成功!

#include <stdio.h>
#include <string.h>

void fun(char *ss)
{
int i ;
for ( i = 1 ; i < strlen(ss) ; i+=2 )
if ( ss[i] >= 'a' && ss[i] <= 'z' )
ss[i] = ss[i] -32 ;
}

void main( void )
{
char tt[51];
printf("\nPlease enter an character string within 50 characters:\n" );
gets( tt );
printf("\n\nAfter changing, the string\n%s", tt );
fun(tt) ;
printf( "\nbecomes\n%s", tt );
}