Board logo

主題: [資訊電機] [問題]新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