佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

楼主: spannar90^_^

各位C++高手请进来。小弟有大大问题。

[复制链接]
 楼主| 发表于 6-11-2009 04:23 PM | 显示全部楼层
谢谢哟。这些题目是我从我的真正的stpm考试纸版本拿出来的。刚好有这样的问题,所以才需要你们帮忙。终于完全毕业了。明天要考muet,可是已经没有心情去考。还要继续读这科。
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 6-11-2009 04:42 PM | 显示全部楼层
flowchart。我放不到这里。这个我有少少乱
回复

使用道具 举报

 楼主| 发表于 6-11-2009 04:53 PM | 显示全部楼层
code the algorithm that you have produced in(b)to a program in C language

我试试看。有什么错请点点下
#include<stdio.h>
main()
{
    char I,B,K,other;
    printf("enter the code=");
   
然后就不知道怎样写了。
它是用char还是int?
它也是和pseudocode一样用法吗?

[ 本帖最后由 spannar90^_^ 于 6-11-2009 05:01 PM 编辑 ]
回复

使用道具 举报

发表于 6-11-2009 05:04 PM | 显示全部楼层
  1. char I,B,K,other;
复制代码
这不是好习惯哦,是大忌!把variable的名字设定成和data一样,你很容易把自己给弄昏头。

再说,题目告诉你,你要处理的是 1个character,2个integer,你没看明白吗?

其实如果完全明白了你的题目,你的pseudo code / process flow 应该是这样:
  1. start

  2. get code
  3. get integer1
  4. get integer2

  5. if(code == 'I')
  6. result = integer1 + integer2
  7. display result
  8. go to start

  9. else if(code == 'B')
  10. result = integer1 - integer2
  11. display result
  12. go to start

  13. else if(code == 'K')
  14. display "the end"
  15. go to stop

  16. else
  17. display "wrong code"
  18. go to start

  19. stop
复制代码

[ 本帖最后由 geekman 于 6-11-2009 05:14 PM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 6-11-2009 05:06 PM | 显示全部楼层
原帖由 geekman 于 6-11-2009 10:09 AM 发表
if(total_unit > 300)
{
    additional_unit = total_unit - 300;   
    next_unit = 100;
    first_unit = 200;
}
else if(total_unit > 200 && total_unit  

如果倒转没有改变意思??还是有一个已经是constant?
回复

使用道具 举报

 楼主| 发表于 6-11-2009 05:09 PM | 显示全部楼层
原帖由 geekman 于 6-11-2009 05:04 PM 发表
char I,B,K,other;这不是好习惯哦,是大忌!把variable的名字设定成和data一样,你很容易把自己给弄昏头。

再说,题目告诉你,你要处理的是 1个character,2个integer,你没看明白吗?

你说的没有错。我很容易冲昏头。本小弟最差的工夫就是这个。我看不明白在转换时要怎样换。

[ 本帖最后由 spannar90^_^ 于 6-11-2009 05:13 PM 编辑 ]
回复

使用道具 举报

Follow Us
 楼主| 发表于 6-11-2009 05:19 PM | 显示全部楼层
那个是?搞乱了TT。麻烦你可以说更明白的吗?看到好像pseudocode?英语我还没有掌握完。所以看到有时明白又不明白。program C?哦。你的意思是说把那些pseudocode写成像C语言吗?

[ 本帖最后由 spannar90^_^ 于 6-11-2009 05:30 PM 编辑 ]
回复

使用道具 举报

发表于 6-11-2009 05:28 PM | 显示全部楼层
原帖由 spannar90^_^ 于 6-11-2009 05:06 PM 发表

如果倒转没有改变意思??还是有一个已经是constant?


我说的倒转是指我先找出并不属于20sen和25sen的数量,也就是28sen的数量,如果总数量超过300单位,这额外的数量就不是0(Additional_unit),那你就可以不必烦恼20sen和25sen的单位计算,因为它们肯定是分别为200单位和100单位。如果额外单位是0或更少,那就是说你只有肯定200单位的20sen单位,以及100单位以内的25sen单位。再下去就表示你的单位少过200,那么所有单位都是20sen的单位了。

如果你是顺着来做的话,你会先比对你是否有超过200单位,是的话你会继续比较你是否更进一步的有超过300单位,然后再来计算额外单位的数量。表面看起来和倒退法没多大差别,那是因为这个题目很简单,其效率的差别看不出来,但是将来当你面对更加复杂的题目时,你会发觉,很多时候,用剔除法则能够减少沉余的运算。
回复

使用道具 举报


ADVERTISEMENT

发表于 6-11-2009 05:29 PM | 显示全部楼层
那个是?搞乱了TT。麻烦你可以说更明白的吗?看到好像pseudocode?英语我还没有掌握完。所以看到有时明白又不明白。program C?


那就把它当作普通的英语来理解,pseudo code 本来就是用接近人类习惯的语言来描述一个程式的运作流程和原理。
回复

使用道具 举报

 楼主| 发表于 6-11-2009 05:33 PM | 显示全部楼层

回复 89# geekman 的帖子

哦。你的意思是说把那些pseudocode写成像C语言吗?
哦原来是这样的。平常最好就是顺着写下去,比较容易看?
回复

使用道具 举报

 楼主| 发表于 6-11-2009 05:48 PM | 显示全部楼层
啊,有一个问题要问你,

#include<stdio.h>
main()
{ float y;
  y=(float)20/3;
printf("%f\n",y);
printf("%.2f\n',y);
printf("S.2f\n",y);
printf("%-S.2f\n",y);
return 0;
}
当我去用C++时。他有出output。但是分别在S那里。大S和小s会改output答案?
write the output which would be displayed by the above program.(therow and column position of the print out are important)

[ 本帖最后由 spannar90^_^ 于 6-11-2009 05:51 PM 编辑 ]
回复

使用道具 举报

发表于 6-11-2009 05:49 PM | 显示全部楼层
我再详细一点的解释:
start  -- 你的程式的开端,一般上就是你的第一行实际运算的代码,也就是说是你的
void main()
{
   //variable declaration
   char code;
   int integer1, integer2, result;

->这里
   //你的实际运算代码从这里开始
}

get code
读取你的第一个数据,一个char,其名字是code,至于你如何读取这数据?自己想想。你可以在<stdio.h>或者<conio.h>里面找到相关的function

get integer1
get integer2
同上

if(code == 'I')
比对你的code,如果它是 ‘I'。。。
result = integer1 + integer2
就把两个integer相加,答案存在result里面。
display result
把答案显示出来,同样的,相关的function可以在上面所说的header file里面找到。
go to start
你的程式并没有完结,而是必须重复上面的“读取code,integer1,integer2”,所以你可以选择两种方法 :用loop或者goto指令。至于什么是loop什么是goto,自己去看help file。

else if(code == 'B')
result = integer1 - integer2
display result
go to start

和上面差不多,只是把+换成-

else if(code == 'K')
display "the end"
go to stop
你的使用者选择了结束程式,根据你所选择的循环方法,你要嘛就break loop,要嘛就用goto跳出循环

else
display "wrong code"
go to start
显示了错误讯息后,再度循环。

stop
结束

[ 本帖最后由 geekman 于 6-11-2009 05:51 PM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 6-11-2009 05:54 PM | 显示全部楼层

回复 92# geekman 的帖子

哇。明白了。辛苦你了,arigato geeman san !
回复

使用道具 举报

发表于 6-11-2009 05:57 PM | 显示全部楼层
原帖由 spannar90^_^ 于 6-11-2009 05:48 PM 发表
啊,有一个问题要问你,

#include
main()
{ float y;
  y=(float)20/3;
printf("%f\n",y);
printf("%.2f\n',y);
printf("S.2f\n",y);
printf("%-S.2f\n",y);
return 0;
}
当我去用C++时。他有出output。 ...


C/C++是case-sensitive的语言,也就是说大写和小写是有分别的,这在于关键词(Keyword)的运用上更是必须小心注意!关键词就是被Compiler保留起来的特殊词句,例如if,else,while,for,const,char,int等等,弄错大小写的话就会把这些关键词变成毫无意义的一般标记。
回复

使用道具 举报

 楼主| 发表于 6-11-2009 06:01 PM | 显示全部楼层

回复 94# geekman 的帖子

哦,酱子呀?我写出两个output。
6.666667
6.67
%S。2f
%-S。2f

另外一个是
6.666667
6.67
回复

使用道具 举报

 楼主| 发表于 6-11-2009 06:21 PM | 显示全部楼层
试到了吗?第二个output出少少问题。出了过后才看到的。
回复

使用道具 举报


ADVERTISEMENT

发表于 6-11-2009 08:33 PM | 显示全部楼层

回复 91# spannar90^_^ 的帖子

#include <stdio.h>

int main()
{
   float y;
   y=(float)20/3;
  printf("%f\n",y);
   printf("%.2f\n',y);
   printf("S.2f\n",y);
   printf("%-S.2f\n",y);

  return 0;
}


main , 由于有 return 0, 因此必须是 int, 所以前面必须加入 int

printf 里面的 specifier(既 %f, %d, %s ), %s 是代表输出的是 string, 既 "abc", "how are you" 等。 因此, 这里你要输出的是 float, 既有小数点的号码。 必须使用 %f, 而非 %s.

还有一点是, %s 的 s 是小字母的 s, 不是大字母的 S,在 c/c++ 里, S 与 s 是两个不同的东西, 好比

int age 与
int Age

是两个不同的 variable. 在 specifier 里也是一样。


另外的事, %s 是输出string, 因此不可能有小数点, 所以 %s.2f 是不被允许的。


其实你可以参考这个网址, 里面有很详细的 printf 解说

http://www.cplusplus.com/reference/clibrary/cstdio/printf/
回复

使用道具 举报

发表于 6-11-2009 08:39 PM | 显示全部楼层
你最好确认你的课程里是 c 还是 c++。 因为两者虽然相似, 但不完全相同。

c 里, 一般输入输出是以 printf, scanf, fprintf, fwrite, gets, puts 等,

但在 c++ 里, 一般是 cout , cin, 等来执行输入输出。

虽然在 c++ 里, printf, scanf 是被允许的, 只要include 相应的 library 就行, 但是你的 lecturer 可能不会接受 printf 等的写法
回复

使用道具 举报

 楼主| 发表于 6-11-2009 08:54 PM | 显示全部楼层

回复 98# onlylonly 的帖子

酱子呀。让我看看。以平常来说,我老师给我们用C++。note里写是C而已
回复

使用道具 举报

 楼主| 发表于 6-11-2009 08:57 PM | 显示全部楼层

回复 97# onlylonly 的帖子

这个题目是program C。如果是program C,会改变什么?
回复

使用道具 举报

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

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 3-12-2025 08:38 PM , Processed in 0.134199 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表