免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 小钱1982
打印 上一主题 下一主题

菜鸟求救:关于一道三级上级题的困惑! [复制链接]

论坛徽章:
0
11 [报告]
发表于 2003-09-11 18:43 |只看该作者

菜鸟求救:关于一道三级上级题的困惑!

又遇到问题,向你请教了。
第一
编制函数calvalue()
(1)求出文件中的正整数的个数totnum
(2)求出这些数中各位数字之和是偶数的数的个数totcnt.
很简单,不过有一个地方我不解(程序只列了一部分,希望不影响理解)
  1.   for(i=0;i<totnum;i++)
  2.                  j=num[0]-48+num[1]-48+num[2]-48+num[3]-48;
  3.            /这里应该是求四位数的各数字之和,可是为什么要减去48?/
  4.                  if(j%2==0)
  5.                  /这里是偶数的情况,如果是基数,为什么可以直接用if(j%2)?/
  6.                       {totcnt++;
  7.                         he+=xx[i];}
复制代码

第二
编制函数DELWORD()分别删除一篇英语文章中的各行的空格,标点,以及10个不分大小的单词。余下的单词倒置后仍然按行顺序存入数组XX中。
答案

  1.         DELWORD()
  2.          {int i,j,k,tag;
  3.                char word[21],*p;
  4.                char  str[80];
  5.                 for(i=0;i<maxline;i++)
  6.                  {memset(str,0,80);
  7.                    p=xx[i];
  8.                    j=0;
  9.                    k=0;
  10.                    memset(word,0,21);
  11.                    while(*P)
  12.                        {if(isalpha(*p))
  13.                           {word[j++]=*p++;
  14.                              if(*p)continue;}
  15.                          tag=1;
  16.                          for(k=0;k<10&&k++)
  17.                          if(strcmp(word,WORD[K])==0;
  18.                          if(tag)strcat(str,strrev(word));                     
  19.                          j=0;
  20.                           memset(word,0,21);
  21.                           while(*p&&(!isalpha(*p)))p++;
  22.                          }
  23.                   strcpy(xx[i],str);
  24.                }
  25.           }      
复制代码

这里的for循环中(k<10&&tag)tag的作用是什么?
if中的tag是否=1?为什么要省略?是空不空的意思?那不是与指针有关?

论坛徽章:
0
12 [报告]
发表于 2003-09-12 08:31 |只看该作者

菜鸟求救:关于一道三级上级题的困惑!

for(i=0;i<totnum;i++)
                 j=num[0]-48+num[1]-48+num[2]-48+num[3]-48;
           /这里应该是求四位数的各数字之和,可是为什么要减去48?/

           /*--------------------------------------------------/
           照题目意思,我推测这个四位的整数应该是以char型存贮的
           所以num存的是数字的ASCII值,比如如果num[0]=9,那么
           其ASCII值为57,所以减去48才能得到真正的数字值。
           ---------------------------------------------------*/

                 if(j%2==0)
                 /这里是偶数的情况,如果是基数,为什么可以直接用if(j%2)?/

                 /*-------------------------------------------------------
                 如果是奇数的话,j%2要么为0,要么不为0,而if语句只有在其逻
                 辑判定条件为真时才执行下面的语句,所以如果为奇数,可以直接
                 执行下面的语句。如果为偶数,只有j%2==0这条语句为真时才执行
                 下面语句。
                 -------------------------------------------------------*/

                      {totcnt++;
                        he+=xx;}

论坛徽章:
0
13 [报告]
发表于 2003-09-12 08:47 |只看该作者

菜鸟求救:关于一道三级上级题的困惑!


你的代码贴的不完整,我猜测这里的WORD应该是前面定义的类似char * WORD[10];
的语句,里面存放的是要删除的那十个单词,如果是这样,那么这里的tag代表当前
p扫描到单词尾,又一个单词产生。if(tag)和if(tag==1)是一样的,只是为了代码更
简练。

论坛徽章:
0
14 [报告]
发表于 2003-09-12 09:52 |只看该作者

菜鸟求救:关于一道三级上级题的困惑!

现在的学生啊

论坛徽章:
0
15 [报告]
发表于 2003-09-12 11:10 |只看该作者

菜鸟求救:关于一道三级上级题的困惑!

谢谢呀,我知道我的做法急功近利了。一个人的编程能力是和平时的努力是分不开的,因为我校开的是VB,所以C我只学了一点皮毛。以后我会努力的,尽量不帖这些让大家不耻的问题。这里辱了大家的眼,不好意思呀!
最后再一次谢谢小雨加雪。

论坛徽章:
0
16 [报告]
发表于 2003-09-12 15:41 |只看该作者

菜鸟求救:关于一道三级上级题的困惑!

hoho
精彩问答
鼓掌。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP