课本上的一道练习题,大家来讨论一下

kulv0405 2003-09-18 08:32:14
填写下面的空位:
下面是一函数,其功能是将字符串按起相反方向输出,如“1234”输出“4321”

void print(*string)
{
char *str=______; //填写空位,下面的一样
if(*str=_____)return;
while(*str) ++str;
cout<<*(--str)<<endl;
*str="/n";
print(____);
}
这个*str怎么给*string联系啊 后面的 那个print是干什么的啊
谁能填一填 ?
...全文
81 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
njtu 2003-09-23
  • 打赏
  • 举报
回复
//回头看了一下,原来的还是有问题,应该这样
void print(char *string)
{
char *str = string; //用临时变量,保存string不变
if(*str == '\n') return; //如果是'\n'就结束
while(*str == '\n') ++str; //移到末尾
cout<<*(--str)<<endl;//输出最后一个字符
*str='/n'; //设最后一个是'\n'
print(str); //递归调用
}

//这样应该就能工作了,但是这个算法不太好

//看看这个

void print(char *string)
{
assert(string);
char *tmp = string;
while(*tmp) tmp++;
tmp--;
while(tmp >= string)
cout<<*tmp--;
cout<<endl;
}
applecjn 2003-09-20
  • 打赏
  • 举报
回复
奇怪
flc 2003-09-20
  • 打赏
  • 举报
回复
学习
lyr311 2003-09-20
  • 打赏
  • 举报
回复
没有问题啊,我要把字符串的第一个字符换成2,不行吗?TC下可是一点问题没有啊
vsfan 2003-09-20
  • 打赏
  • 举报
回复
*str='2'?
有问题吧
lyr311 2003-09-20
  • 打赏
  • 举报
回复
千古怪事啊!大家快来解答啊!这个题的填空在VC6.0上怎么运行都会出错,我翻来覆去的检查,发现VC6.0下运行这段小程序都不行哦:
#include <iostream.h>
main()
{
char *str="12345";
*str='2';
cout<<str<<endl;
return 0;
}
在TC2.0上修改输入语句后一点问题都没有,各位大侠给出的程序我不能在VC6.0上运行的症结就是在这里啊:*str='\0';
是不是VC6.0不允许这样操作单个字符啊!!!盼答!!!!!!
我今天花血本买了一套Visual Studio2003.net,7张盘,我准备在VC2003上试一下!
TianGuangZao 2003-09-20
  • 打赏
  • 举报
回复
void print(*string)
{
char *str=______; //填写空位,下面的一样
if(*str=_____)return;
while(*str) ++str;
cout<<*(--str)<<endl;
*str="/n";
print(____);
}

做为打印函数是不应该修改原字符串的内容的,也不应该给它修改的权限。
所以我认为在传递参数时:
void print(*string)
应该改成
void print(const *string)

还有 *str="/n"; 本身就是错的。
applecjn 2003-09-20
  • 打赏
  • 举报
回复
问题很简单,但题目太多错误了,我重新写了一个,你去试试看吧!
#include<iostream>
using namespace std;

void print(char* string){
char *str=string;
if(*str=='\0')return;
while(*str) ++str;
cout<<*(--str)<<endl;
*str='\0';
print(string);
}

void main()
{
char string[]="1234";
print(string);
}
TianGuangZao 2003-09-20
  • 打赏
  • 举报
回复
修改字符串常量是未定义行为。
不同编译器对它的处理不同,所以什么情况都可能发生。
好的习惯就是不该去修改它。
或 const char *str = '12345';
sharkhuang 2003-09-20
  • 打赏
  • 举报
回复
递规!一看就是考试用的题目
lyr311 2003-09-20
  • 打赏
  • 举报
回复
有人说是在C++下
char *str="12345";
等价于
const char *str="12345";
因此*str='2',会出现指针错误;
这样的话,C++中是不是操作字符串的功能就比C差啦!!!
Robinhoodgood 2003-09-20
  • 打赏
  • 举报
回复
编译器不同,处理方法也不同
tc 下允许
char *str="12345";
*str='2';
vc 下不行
kevinGQ 2003-09-20
  • 打赏
  • 举报
回复
楼上的好象不懂啊.这其实很好懂的啊.
eastwind 2003-09-19
  • 打赏
  • 举报
回复
递归啊,呵呵
cullstar 2003-09-19
  • 打赏
  • 举报
回复
#include <iostream.h>
#include <conio.h>
void print(char *);

void main()
{
char *string;
cout <<"请输入要转换的字符串(请勿输入中文):";
cin >>string;

print(string);
getch();
}
void print(char *string)
{
char *str=string;
if(*str=='\0')return;
while(*str) ++str;
cout<<*(--str);
*str='\0';
print(string);
}
cullstar 2003-09-19
  • 打赏
  • 举报
回复
#include <iostream.h>
#include <conio.h>
void print(char *);

void main()
{
char *string;
cout <<"请输入要转换的字符串(请勿输入中文):";
cin >>string;

print(string);
getch();
}
void print(char *string)
{
char *str=string;
if(*str=='\0')return;
while(*str) ++str;
cout<<*(--str);
*str='\0';
print(string);
}
deathsky 2003-09-19
  • 打赏
  • 举报
回复
哦,我忘记了去掉这三句了:
#include <stdio.h>
cout<<endl<<"按任意键返回"<<endl;
getchar();
在vc++上会自己带个返回提示,不用这几句了!
deathsky 2003-09-19
  • 打赏
  • 举报
回复
要加头文件和函数声明,看下面的在vc++上能不能执行:
#include <iostream.h>
#include <stdio.h>
void print(char *);

void main()
{
char string[10]="1234";
print(string);
cout<<endl<<"按任意键返回"<<endl;
getchar();
}



void print(char *string)
{
char *str=string; //填写空位,下面的一样
if(*str=='\0')return;
while(*str) ++str;
cout<<*(--str);
*str='\0';
print(string);
}
lyr311 2003-09-19
  • 打赏
  • 举报
回复
上面的兄台,你的程序在VC6.0中通不过,咋回事啊?我看着好像是对的啊
Ilovecoding 2003-09-18
  • 打赏
  • 举报
回复
*str='/n';
如果都是char* 類型的,此句能執行嗎?

這樣改通過了,大家指教
void main()
{
char string[10]="1234";
print(string);
}



void print(char *string)
{
char *str=string; //填写空位,下面的一样
if(*str=='\0')return;
while(*str) ++str;
cout<<*(--str)<<endl;
*str='\0';
print(string);
}

加载更多回复(9)

69,374

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧