当前位置: 代码迷 >> C语言 >> 编程排错
  详细解决方案

编程排错

热度:125   发布时间:2006-03-02 19:14:00.0
编程排错

#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中所有下标为奇数上的字母转换为大写,若该位置上不是字母,而不转换。

搜索更多相关的解决方案: void  printf  fun  string  

----------------解决方案--------------------------------------------------------
#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指到字符串尾巴了,没重新指向字符串首


----------------解决方案--------------------------------------------------------
以下是引用飞扬白鸽在2006-3-2 19:14:00的发言:

#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 );
}


----------------解决方案--------------------------------------------------------
以下是引用voldemort在2006-3-2 20:44:00的发言:
#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楼
看书
----------------解决方案--------------------------------------------------------

以下是引用zhangjuan在2006-3-3 8:55:00的发言:

我还没有弄明白putch这是个什么函数?

Turbo C 的, 作用:在屏幕上的文本窗口中输出字符

偶的编译器就没这个~~

原型 int putch(int ch)

位置 <conio.h>

使用当前的颜色和显示属性,返回显示字符ch

参见 cprintf cputs getch putc putchar
----------------解决方案--------------------------------------------------------

  相关解决方案