C语言程序设计 有加分

编写函数fun,其功能是:将ss所指字符串中所有下标为奇数位上的字母转换为大写(若该位置上不是字母,则不转换)。 例如 若输入“abc4EFg”,则应输出“aBc4EFg”。
#include<stdio.h>
#include<string.h>
void fun (char *ss)
***************found***************
{

}
************found****************

main( )
{ char tt[81];
void NONO( );
printf("\nplease enter an string within 80 character:\n");
gets(tt);
printf("\n\nAfter changing , the string\n\"%s\" ",tt);
fun(tt);

printf("\nbecomes\n\"%s\"\n",tt);
NONO( );
}

void NONO( )
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/

FILE *fp, *wf;
char tt[81];
int i;
fp=fopen("in.dat","r");
wf=fopen("out.dat","w");
for(i=0;i<10;i++)
{fscanf(fp,"%s",tt);
fun(tt);
fprintf(wf,"%s\n",tt);
}
fclose(fp);
fclose(wf);
}

答案: void fun(char *ss)
{
int i ;
for( i=0 ; ss[i] !='\0' ; i++) /*将ss所指的字符串中所有下标为奇数位置的字母转换成大写*/
if(i%2==1 && ss[i]>='a' && ss[i]<='z')
ss[i]=ss[i] - 32;
}

我自己做的和答案不大一样 :
void fun (char *ss)

{
while(ss!=0)
{for(;*(ss+1)<='z' && *(ss+1)>='a' ;)
{*ss=*ss-'a'+'A';ss+=2;}
}
}

然后在运行的时候 就停留在 main函数中 After changing , the string 与输出我原来已经输入过的字符串 那一句了, 按下什么键也退不出 运行的黑色窗口。。。。。。。

我的程序到底哪里出了问题了,请高手详细指点。
为什么会出现退不出的情况,是产生死循环了么?? 应怎样修改????????

void fun(char *ss)

{

int i;

char *p=ss;

for(i=0;*p!='\0';p++,i++)

if(i%2&&*p<='z'&&*p>='a')*p-=32;/*下标奇数位且为小写字母*/

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-03
你这一行写错了。
while(ss!=0)
中诶一行的意思是如果 ss 不等于 0 的话,就一直继续下去。
也就是说,你输入 0 的时候,程序正常运行。
如果输入 0 意外的文字或者数字的话,那就一直 while 下去了。

应该写成,
while(ss != '\0')

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网