#include <conio.h>
#include <stdio.h>
void fun(char *ss)
{
int n =0 , i ;
while ( *ss )
{
n++ ;
ss++ ;
}
for ( i = 1 ; i < n ; i+=2 )
if ( ss[i] >= 'a' && ss[i] <= 'z' )
ss[i] = ss[i] -32 ;
}
void main( void )
{
char tt[51];
clrscr();
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 );
}
将字符串ss中所有下标为奇数上的字母转换为大写,若该位置上不是字母,而不转换。
----------------解决方案--------------------------------------------------------
#define change(c) (97<=c&&c<=122)?c-32:c
int main(void){
char s[]="I love you = 520",*p=s;
while(putch((p-s)%2?change(*p):*p))p++;
return 0;
}
----------------解决方案--------------------------------------------------------
楼上的很强,也很精
----------------解决方案--------------------------------------------------------
2楼的不错~我针对楼主的问题说下好了
void fun(char *ss)
{
int n =0 , i ;
while ( *ss )
{
n++ ;
ss++ ;
}
for ( i = 1 ; i < n ; i+=2 )
if ( ss[i] >= 'a' && ss[i] <= 'z' )
ss[i] = ss[i] -32 ;
}
ss指到字符串尾巴了,没重新指向字符串首
----------------解决方案--------------------------------------------------------
#include <conio.h>
#include <stdio.h>
void fun(char *ss)
{
int n =0 , i ;
char *p;
p=ss;
while ( *ss )
{
n++ ;
ss++ ;
}
ss=p;
for ( i = 1 ; i < n ; i+=2 )
if ( ss[i] >= 'a' && ss[i] <= 'z' )
ss[i] = ss[i] -32 ;
}
----------------解决方案--------------------------------------------------------
要不你就直接用库函数求串长度就好了
----------------解决方案--------------------------------------------------------
来拜二楼的!
另外,改改楼主的:
#include <conio.h>
#include <stdio.h>
#include <string.h>
void fun(char *ss)
{
int n , i ;
n=strlen(ss);
for ( i = 1 ; i < n ; i+=2 )
if ( ss[i] >= 'a' && ss[i] <= 'z' )
ss[i] = ss[i] -32 ;
}
void main( void )
{
char tt[51];
clrscr();
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 );
}
----------------解决方案--------------------------------------------------------
#define change(c) (97<=c&&c<=122)?c-32:c
int main(void){
char s[]="I love you = 520",*p=s;
while(putch((p-s)%2?change(*p):*p))p++;
return 0;
}
我还没有弄明白putch这是个什么函数?
----------------解决方案--------------------------------------------------------
回8楼
看书
----------------解决方案--------------------------------------------------------
我还没有弄明白putch这是个什么函数?
Turbo C 的, 作用:在屏幕上的文本窗口中输出字符
偶的编译器就没这个~~
原型 int putch(int ch)
位置 <conio.h>
使用当前的颜色和显示属性,返回显示字符ch
参见 cprintf cputs getch putc putchar
----------------解决方案--------------------------------------------------------