主題: [資訊電機] [問題]新c++的問題(作業) [打印本頁]
發表人:
vacakadi 時間: 2004-9-18 01:10 AM 主題: [問題]新c++的問題(作業)
你是一個學生嗎?( Y or N )
打Y的話
你讀幾年級?
打上"數字"
你是"數字"年級的學生。
打N的話
你不是學生。
打任一個字,不是Y或N,
會出現
你輸入錯誤。
不知道這樣寫對不對,有人可以幫我看嗎?
#include <stdio.h>
int main(void)
{char st;
int age;
printf("你是一個學生嗎?(Y orN)");
scanf("%c", &st);
printf("你讀幾年級?");
scanf("%d", &age);
if (st=='Y' || st=='y')
{
printf("你是%d年級學生\n",age);
}
else
if (st=='N' || st=='n')
{
printf("你不是學生。\n");
}
else
if(st!='Y' || st!='y' || st!='N' || st!='n")
{
printf("你輸入錯誤。\n);
}
else
return 0;
}
這樣對嗎?
剛學程式,都不會寫。
可有人幫修改,感激不盡。
========================================================
上回的已經結束了,
不過這一次老師出的作業真是難耶,
上課也是聽不懂,(鴨子聽雷阿。)
真是糟糕。
懂得人可以敎我寫嗎?
範例一:
#include <stdio.h>
#include <conio.h>
int main(void)
{int i,j,k,l=0;
for(i=1;i<=15;i++)
{gotoxy 5,i); <------註:這個意思不懂
printf("|");
for(k=0;k<100000000;k++)
l*=2;}
{for (i=0;i<30;i++) <-------這各應該是"j"吧!我覺得老師寫錯了吧!
{gotoxy(5+i,15);
printf("==>");
for(k=0;k<100000000:k++)
l*=2}
gotoxy(80,1);
return 0;}
會跑出"|"再來變成"==>"
最後畫面
|
|
|
|
|
|
============>
範例二:
直接寫中間檔。
{int ch;
do{gotoxy(30,13);
printf("press Q to quit...\n");
ch= getch();}
while(ch!='Q' && ch!='q');
return 0;}
就是畫面出現" press Q to quit..."
按任何鍵都不會跳出,
要按"Q"或"q",才會跳出。
﹝作業要求,利用兩個寫法來做出"s"的作業。
畫面中會出現一個"s"的字,
當你按"W"鍵,他會往上跑,到達頂點後就會停住。
當你按"X"鍵,他再會往下跑,到達底後就會停住。
當你按"A"鍵,他會往左跑,到達左邊的邊邊 後就會停住。
當你按"D"鍵,他會往右跑,到達右邊的邊邊 後就會停住。
就是"CS"的控制一樣,
當你按到其他鍵也都不會跳出,只是不會跑,
可是當你按到"Q"鍵,他就會跳出。﹞
就就是作業題目。
我是有看沒有懂啦!也不會寫,誰能教導我阿。
[vacakadi 在 2004-9-28 10:05 PM 作了最後編輯]
發表人:
leon1206 時間: 2004-9-18 01:27 AM
你這樣寫的話 不管一開始打Y或是N
都會印出 你讀幾年級?
應該先判斷才是 我稍微改了一下你的程式 改的不好的話請見諒
#include
void main()
{
char st;
int age;
printf("你是一個學生嗎?(Y orN)");
scanf("%c", &st);
if (st=='Y' || st=='y')
{
printf("你讀幾年級?");
scanf("%d", &age);
printf("你是%d年級學生\n",age);
}
else
if (st=='N' || st=='n')
{
printf("你不是學生。\n");
}
else
{
printf("你輸入錯誤。\n);
}
}
發表人:
vacakadi 時間: 2004-9-18 03:02 AM
感謝你,這個我也有想過,
可是不知下面要如何寫,所以ㄧ直有錯誤,
所以想說用最原始想法,可是邏輯錯誤,感謝你的指教,
送你壹朵花。
我會變強的。
發表人:
Vic 時間: 2004-9-18 09:07 AM
程式小子們~ 大家一齊加油吧~ 雖然熊小已經有一段時間沒寫c++了~
發表人:
leon1206 時間: 2004-9-28 10:49 PM
須引用標頭檔 <conio.h> 的定義
格式 void gotoxy(int, int);
功能 移動游標到(x, y) ==> gotoxy(x, y);
******************************************************
我們必須要給函式 gotoxy 兩個整數引數,
而 gotoxy 沒有任何傳回值
gotoxy(20, 10);
執行上面函式會將游標移到螢幕座標(20, 10)處
******************************************************
(1, 1) 在螢幕最左上角
(80, 25) 在螢幕最右下角
******************************************************
相關函式:
clreol(); 自游標所在位置將該行清除到行尾
delline(); 清除游標所在該行, 下面幾行往上遞補
至於你的作業 我還是看不太懂題目的意思 所以還沒辦法幫你 我猜想是不是印出一個s 然後隨著你按的鍵不同 跑不同方向?
void main()
{
int x,y,i; //XY請自行定義一開始的座標
char input=A;
while(input!='q')
{
input=getch();
if(input=='w') //其他方向 相差不多 不過我還沒試過XY到底是指拿個軸 你可以在去試試
{ //還有 我記得座標應該是左上角是(0,0)如果定義不對 記得要修改
for(i=y;i>=0;i--)
{
clrscr();
gotoxy(x,i);
printf("s");
}
}
if(input=='a')
{}
if(input=='s')
{}
if(input=='d')
{}
}
發表人:
vacakadi 時間: 2004-9-29 02:14 AM
還是不行啦!
試了好多種,都出現錯誤檔。
┌──────┐
| |
| S |
| |
└──────┘
上面為dos模式,就是開啟就有"S"在中間,
而當你按著"W"鍵,"S"會往上跑,
而當你按著"A"鍵,"S"會往左跑,
而當你按著"X"鍵,"S"會往下跑,
而當你按著"D"鍵,"S"會往右跑,
而當你按下"q或Q"鍵時,他就會跳出dos模式。
提示:
開頭要加上#include <conio.h>
相關提示
int sx=13,sy=39;
gotoxy(sx,sy);
printf("s");
會應用到的 clrscr() ,這一個是清除動作。
[vacakadi 在 2004-9-30 03:44 AM 作了最後編輯]
[vacakadi 在 2004-9-30 03:45 AM 作了最後編輯]
發表人:
leon1206 時間: 2004-9-29 08:18 AM
引用:
vacakadi寫到:
因為開啟畫面要"S"出現在畫面中間阿,
這樣不是要先定義(x,y)的位置嗎?
XY當然是要先給他值啊 看你一開始要擺在哪 就給他多少了
至於一開始要印出S在中間的話 再while迴圈外 在多加
gotoxy(x,y);
printf("s");
引用:
vacakadi寫到:
[clreol(); 因為我們老師,說這是要到的元件,]
clrscr是整個螢幕清除 clreol 這個我沒用過 看起來像是清除一整行
程式這種東西 建議你自己多嘗試 多去寫 像函式這種東西 不知道是啥就丟進去給電腦跑
經過測試 就可以知道自己寫的對不對了 不用特別跑上來問這樣寫對不對
發表人:
tonykaotw 時間: 2004-11-23 03:09 AM
看了一下 你的程式不是用c++的寫法 你寫的事c語言喔
發表人:
柚祐 時間: 2004-12-30 11:29 AM
我還看的懂 ... 所以應該是C語言吧 ... ^^ ( 因為我只學過 C )
回主題 ... leon1206 版友 已經幫你改正了 ...
另外 .. 也可以考慮用 switch 敘述 ...
char st ;
printf( "你是一個學生嗎?(Y orN)" ) ; scanf("%c", &st) ;
switch( st )
{
case 'Y' : 敘述1 ; break;
case 'N' : 敘述2 ; break;
default : printf( "你輸入錯誤。\n" ); break;
}
用法大概是這樣 ...
發表人:
momo0407 時間: 2005-1-4 01:00 AM
按鍵的部分,可以用這種方式..
char ch;
int nfinish;
do
{
scanf(%c,&ch);
switch(ch)
{
case 'w':
case 'W':
DoUp();
break;
case 'x':
case 'X':
DoDown();
break;
case 'd':
case 'D':
DoRight();
break;
case 'a':
case 'A':
DoLeft();
break;
case 'q':
case 'Q':
bfinish = 1;
}
}
while(bfinish != 1);
其中 DoXX,就是對應的函數..
大概是這樣吧..加油..自己寫才會學到東東哦..
發表人:
vacakadi 時間: 2005-1-14 04:45 PM
這學期修完了,所以上面題目也做完了,
不過在學期快結束時才知道,我們學的是c語言,不是c++,
不過現在要換c++得學習,因為只學一學期,真的不夠阿。
發表人:
Vic 時間: 2005-1-14 10:38 PM
引用:
vacakadi寫到:
這學期修完了,所以上面題目也做完了,
不過在學期快結束時才知道,我們學的是c語言,不是c++,
不過現在要換c++得學習,因為只學一學期,真的不夠阿。
那就自學吧~ 程式如果按上課的進度來學~ 肯定是太慢~
如只做老師給的功課~ 也不見得對自己的加強能力有多大幫助~
發表人:
南無 時間: 2005-1-14 11:30 PM
要不要我們請版主大人,開個C.C++.JAVA.VB的特區讓我們將我們自己寫的程式PO出來讓大家一起探討跟研究,順便教換彼此的做法與心得以便增強我們撰寫程式的實力,必竟學校教的是很有限的
不與人研究和探討獨自閉門造車,實力的成長是有限的.
發表人:
柚祐 時間: 2005-1-14 11:42 PM
你們相信嗎 ... 我剛好正在學說 ... (汗)
自學總是很痛苦的 ... 老是沒有人可以問 ... 只有翻書感覺沒什麼進步 ...
( 書 我是翻完了啦 .. 可是沒有覺得我就會寫程式了 ... )
南無 兄 教教我吧 ...
也希望 熊大 指導我們該怎麼學習吧 ....
發表人:
Vic 時間: 2005-1-14 11:45 PM
熊寫程式很爛的~
c/c++忘了99%~
再說~ 這裡的版主是shrainy
不過寫程式真的多個人一同開發~ 要好很多~ 有人一齊學~ 也不錯~
發表人:
topedia 時間: 2005-1-15 08:19 PM
引用:
南無寫到:
要不要我們請版主大人,開個C.C++.JAVA.VB的特區讓我們將我們自己寫的程式PO出來讓大家一起探討跟研究,順便教換彼此的做法與心得以便增強我們撰寫程式的實力,必竟學校教的是很有限的
不與人研究和探討獨自閉門造車,實力的成長是有限的.
那就叫「電腦語言特區」吧!
這樣各種語言都可以用到
當然網頁/站設計語言也要包括進去囉....
發表人:
柚祐 時間: 2005-1-15 09:13 PM
電腦語言特區 ? ... 蠻新鮮的說法 ... ^^
一般較通俗的說法應該是 ... 程式語言 .. 吧 ...
歡迎光臨 TWed2k (http://twed2k.org/) |
Powered by Discuz! 4.1.0 |