标题:编程排错
只看楼主
飞扬白鸽
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2005-12-31
 问题点数:0 回复次数:11 
编程排错

#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 
2006-03-02 19:14
voldemort
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2006-3-1
得分:0 
#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;
}

黑魔法
2006-03-02 20:44
cordier
Rank: 2
等 级:论坛游民
威 望:1
帖 子:449
专家分:14
注 册:2006-2-9
得分:0 

楼上的很强,也很精


2006-03-02 22:06
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
得分: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-03-02 22:15
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
得分:0 
以下是引用飞扬白鸽在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 ;
}



叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-03-02 22:17
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
得分:0 

要不你就直接用库函数求串长度就好了


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-03-02 22:29
leonmorose
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-3-2
得分:0 

来拜二楼的!
另外,改改楼主的:
#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 );
}

2006-03-02 22:40
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
得分:0 
以下是引用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这是个什么函数?


2006-03-03 08:55
feixing
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2006-2-11
得分:0 
回8楼
看书

学海无涯,为求成功
2006-03-04 08:57
iyuohz
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2006-2-22
得分:0 
以下是引用zhangjuan在2006-3-3 8:55:00的发言:

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

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

偶的编译器就没这个~~

原型 int putch(int ch)

位置 <conio.h>

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

参见 cprintf cputs getch putc putchar


2006-03-04 09:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-48080-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.051739 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved