4561|11

7815

帖子

57

TA的资源

裸片初长成(中级)

楼主
 

俺的C习题(5)——这个很简单,圈哥看你能挑出什么? [复制链接]

如题
  1. /*practise 8.2*/
    /*这个程序很简单,就是把输入的整数转换成字符型输出*/
    #include<stdio.h>

    char *itoa(int n,char str[]) //鬼知道我当时怎么会起了这么一个名字...
    {
    int negative = 0;
    int i = 0;
    char buffer = 0;

    /*处理负数*/
    if(n < 0)
    {
    n = -n;
    negative = 1; //那一年,哥真的是不懂MCU,以至于动不动就int...
    }

    do
    {
    str[i++] = '0'+n%10; //从一开始就用这种方法,这本书真是好书,都是它教的...
    n /= 10;
    }while(n > 0);

    /*负数增加一个符号*/
    /*转换之后的数组时反序存放的*/
    if(negative)
    str[i++] = '-';

    /*结尾*/
    str[i] = '\0';

    /*话说,这个方法其实不很好,但是可以不多用一个缓存*/
    /*我现在怎么就一直没想起来当时自己这么玩过?*/
    /*说它不好,是因为不好处理,比如个数为奇数*/
    /*我还记得,下面这短短的两句话,在概念不清的时候,很容易闹出把中间值弄丢的事情,但要怎么丢,现在我还真给忘了*/
    for(int j = 0;j < i / 2;j++)
    {
    buffer = str[j];
    str[j] = str[i - j - 1];
    str[i - j - 1] = buffer;
    }


    return str;
    }

    int main(void)
    {
    char str[12];
    int k = 0;

    printf("Enter a integer you want to transform.\n");
    scanf(" %d",&k);

    /*话外音,从题目来看,它再次啰嗦输出了......*/
    printf("You input a integer: %d,\nit's %s\n",k,itoa(k,str));

    return 0;
    }



复制代码

此帖出自编程基础论坛

最新回复

原题要求是什么啊?  详情 回复 发表于 2012-1-7 19:41
点赞 关注
个人签名

强者为尊,弱者,死无葬身之地

 

回复
举报

44

帖子

0

TA的资源

一粒金砂(高级)

沙发
 

呵呵,赞一个,的确是写得不错,可是还是有点疑问:


printf(\"Enter a integer you want to transform.\n\");

 

为啥"之前总有个反斜杆符\呢?

 

只要是这种地方,之前的习题一,二,三,四,貌似都有,

当时是放过了,现在只好提出来了:是排板或编译器的原因吗?

可是这个明显不符合C的语法,编译的时候也应该是通不过的呀

此帖出自编程基础论坛
 
个人签名能力越大,责任越大;知道越多,未知更多
 
 

回复

44

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
昨天回完这个贴子,已经12点,关于"之前那个莫名其妙的/,没予给更多的分析,只是简更的猜测是"排板或编译器的原因吗?"
就去洗洗睡了.
早上起来,又重新考虑了这个问题,觉得应该是这么一回事:
这里似图情景再现一下哈:
辛昕有一次在写程序时,需要输出类似这样一句话 这是一个".
于是他敲下如一下段代码:
printf("这是一个".\n"); //代码1
结果,他发现编译出错,很正常,编译器把第二个(字符串里的)的"当成与第一个"匹配的字符串结束的那个"了
当然,这难不倒辛昕同学,他把字符串的的"之前加了个转义符\,成为如下代码

printf("这是一个\".\n");//代码2

这时,得到了想要的结果,问题OK了,可是他又发现在程序里还有类似代码1那些的代码行.
怎么办呢?一句句的修改,真够烦的.当然,这也难不倒辛昕同学,这是他又发现IDE(或者用的某个专业的编辑器)里不是有全部替换功能吗?
于是,他将程序里所有的"替换成了\",
这时,杯具了,不仅字符串里的"变成的\",前后那两个"也变成了\",出来这样的结果

printf(\"这是一个\".\n\");//代码3

当然,辛昕修改以后,会重新编译程序,当然,编译会出错,很快辛昕同学发现问题出在那了,他很懊悔(这时,我不知道他会用什么方法),修改了错误,最终问题解决了
可是辛昕在替换当前文件里的"成\"时,误用了某种选项,将他的所有的C源程序(应该都是放在某个文件夹里)里,的"都替换成了\",然后辛昕干别的去了.
写到这里,我突然意识到,辛昕同学目前的性格不适合去干某项维护服务器的工作(比如银行啥的),不然的话,你懂的哈.

以上内容,纯属虚构,切勿对号入座哈.

可是,到现在,我还有疑惑,辛昕同学在贴习题一时,我就发现这个问题("前总有个/,很刺激眼球,我当时就是不说,现在拿来救急了),辛昕自己怎么还是没注意呢?
好了,辛昕同学出了这么多题,我也来出个题:
编写一个函数,将 代码3 转成 代码2
也就是

字符串 printf(\"这是一个\".\n\");

转换成字符串 printf("这是一个\".\n");

写这样的一个函数很有现实意义,辛昕同学可以这个基础上写个程序.将以前修改坏了的那些源程序,一次全都改好.
此帖出自编程基础论坛
 
个人签名能力越大,责任越大;知道越多,未知更多
 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

4
 

回复 板凳 能圈就圈 的帖子

圈哥,我来告诉你真相吧,你不要吐血就成,其实事情很简单......

这是俺们坛子这个发帖的那个编辑器 的 那个代码引用功能的问题。

为啥俺这么说,第一次,我是上传一个,我就删除一个,结果发现有问题想重新复制回来修改,结果就一堆的 反斜杆........
编译的时候N个错误,可是那些 反斜杠颜色又不太友好,我虽然年轻,但是也不能这么糟蹋自己的时间,干脆心一横,,在115上下载回我原来的备份......
此帖出自编程基础论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

5
 
写到这里,我突然意识到,辛昕同学目前的性格不适合去干某项维护服务器的工作(比如银行啥的),不然的话,你懂的哈.


虽然圈哥模拟的事情俺没做过,但理论上来说,我是有可能这么干的。

是的是的,圈哥说的极是,我的性格不适合干这种需要耐心和周全的事情。
俺喜欢开疆拓土,不喜欢守国护家......
 人格缺陷吧这也是.....
此帖出自编程基础论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

6
 

回复 板凳 能圈就圈 的帖子

3Q!
此帖出自编程基础论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

7
 
当然,辛昕修改以后,会重新编译程序,当然,编译会出错,很快辛昕同学发现问题出在那了,他很懊悔(这时,我不知道他会用什么方法),修改了错误,最终问题解决了


这时我会这么干,怎么来怎么回。 正确的是 printf("\"。。。。\"\n"); 结果一改误改成 printf(\"\"。。。。\"\n"); 鉴于一种考虑,从我自己的角度出发,输出中带双引号的情形还是比较少,所以我会选择 把 \" 替换成 ” 这样子,相对来说会把问题往稍好的情形恢复。 然后再修改那些需要输出双引号的地方。 至于注释,还好还好,它是双斜杆..... 好吧,我承认这个问题很恐怖。 由此,我选择两条路: 1 找回先前的备份; 2 一个错一个错地揪....... 因为在圈哥回的第四贴以前,我不知道该咋办......
此帖出自编程基础论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

8
 

回复 板凳 能圈就圈 的帖子

圈哥,关于你出的这个题目,俺只有一个疑问:

是要把它放在一个这样的程序中进行么?

1 读文件——我写过的源程序
2 按字符型读,然后遍历查找出现这些话的地方(这事还真是个技术活,我得知道我那些地方要输出双引号.....要是要啥智能点的方法,还真的想想.....)
3 找到以后,调用该函数。

是这样子么?
此帖出自编程基础论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

44

帖子

0

TA的资源

一粒金砂(高级)

9
 
圈哥,我来告诉你真相吧,你不要吐血就成,其实事情很简单...... [/quote]

吐血是没有,因为还是没搞明白咋出来的那一堆反斜杆

[quote]因为在圈哥回的第四贴以前,我不知道该咋办......  


这个地方也没搞明白,和回第四个贴子有啥关系?

来谈最后那个问题,既然是要编程序处理,当然是操作简单最为重要

辛昕的思路是对的,我来稍细化一下,在C里有个库函数(名字我记不清了,辛昕可以自己查一下),
能遍历指定文件夹的所有文件,这样可以将所有要处理的源程序拷到一个文件夹
2,3步可以合并,找到符合条件的行和修改放在一起.
这样流程图大体是这样

while(有需要处理的文件)
{
  打开该文件;
  while(读入一行)
  {
   调那个函数(判断并修改);
  }
  该文件处理完毕,存盘并关闭该文件;
}
当前文件夹的所有文件已处理完毕,提示并退出;
此帖出自编程基础论坛
 
个人签名能力越大,责任越大;知道越多,未知更多
 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

10
 

回复 9楼 能圈就圈 的帖子

回错了,,,,
就是你说的那个函数的方法。。。。。。
此帖出自编程基础论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

384

帖子

2

TA的资源

纯净的硅(初级)

11
 
原题要求是什么啊?
此帖出自编程基础论坛
 
 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

12
 

回复 11楼 upc_arm 的帖子

详见注释第二句
此帖出自编程基础论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表