|
|

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

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

楼主 |
发表于 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
|
显示全部楼层
这不是好习惯哦,是大忌!把variable的名字设定成和data一样,你很容易把自己给弄昏头。
再说,题目告诉你,你要处理的是 1个character,2个integer,你没看明白吗?
其实如果完全明白了你的题目,你的pseudo code / process flow 应该是这样:- start
- get code
- get integer1
- get integer2
- if(code == 'I')
- result = integer1 + integer2
- display result
- go to start
- else if(code == 'B')
- result = integer1 - integer2
- display result
- go to start
- else if(code == 'K')
- display "the end"
- go to stop
- else
- display "wrong code"
- go to start
- 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 编辑 ] |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 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单位,然后再来计算额外单位的数量。表面看起来和倒退法没多大差别,那是因为这个题目很简单,其效率的差别看不出来,但是将来当你面对更加复杂的题目时,你会发觉,很多时候,用剔除法则能够减少沉余的运算。 |
|
|
|
|
|
|
|
|
|
|
发表于 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出少少问题。出了过后才看到的。 |
|
|
|
|
|
|
|
|
|
|
发表于 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,会改变什么? |
|
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|