[ภาษาซี] โจทย์เรื่อง if และเฉลย
posted on 18 May 2009 20:08 by mistertun in CProgrammingเฉลยของเก่าก่อน
เฉลยโจทย์ข้อที่ 4 สมัครสมาชิก
#include [stdio.h] // change [ , ] to < , >
int main()
{
char name[50]; // เก็บชื่อ เป็นข้อความจึงต้องประกาศเป็น string (char แบบหลายช่อง)
char sex; // เก็บเพศ (m/f) เป็นอักษรตัวเดียว ประกศ char ธรรมดาพอ
int age; // เก็บอายุ จริงๆแล้วใช้ char ก็ได้ เพราะ char ก็เก็บเลขได้ แต่นิยม int
printf("What's your name : "); // คำถาม
gets(name) // รับค่าชื่อ+สกุล ซึ่งมีช่องว่างคั่นอยู่ จึงต้องใช้ gets
printf("How old are you : ");
scanf("%d",&age); // รับค่าอายุ เป็นตัวเลข
printf("Male/Female (m/f) : ");
scanf("%c",&sex); // รับค่าเพศ เป็นอักษรตัวเดียว
if(age>=18 && sex=='m') { /*ภาษาซีไม่ค่อยแคร์เรื่องเว้นวรรค เราจึงเว้นวรรคก่อน && ได้เพื่อความง่ายในการอ่าน ตรงนี้่เราจะเช็คว่า ageมากกว่าเท่ากับ18 และเพศเป็น m (ผมลืมบอกวิธีการเปรียบเทียบตัวแปร char กับตัวอักษรตอนที่บอกโจทย์ แต่เขียนเพิ่มในเอนทรี่ถัดมาแล้วครับ เอาเป็นว่าใครทำไม่ได้เพราะติดตรงนี้ ถือว่าให้ผ่านละกัน)*/
printf("Hi Mr.%s. your age is %d so you can emter to my website.",name,age); /* แสดงข้อความต้อนรับ */
}
else {
printf("Sorry, you can't enter this website"); //ถ้าเงื่อนไขเป็นเท็จ ก็บอกว่าเข้าไม่ได้
}
scanf(" ");
return 0;
}
พอจะทำได้กันมั้ยครับ
ต่อไปเป็นข้อที่ 5
โจทยข้อที่ 5 ร้านเหลัาไฮเทค
ร้านเหล้าแห่งหนึ่งย่าน exteen town ถูกสร้างขึ้นอย่างไฮเทค คนที่จะเข้า ต้องเข้าทางประตูหน้า ส่วนคนจะออก ให้ออกจากวาร์ปที่ตั้งอยู่ภายในร้าน โดยประตูหน้าจะถูกล็อคอยู่ตลอดเวลา คนที่จะเข้าต้องกรอกชื่อ นามสกุล อายุและเพศ คนที่อายุต่ำกว่า 18 ปี จะห้ามเข้าร้านเด็ดขาด ถ้าตั้งแต่ 18 ปีขึ้นไป จะเข้าร้านได้ เพียงแต่ว่าจะมีกฎเพิ่มคือ ถ้าเป็นผู้หญิง ประตูไฮเทคจะนำเธอไปยังโซนของผู้หญิงที่มีไวน์รสเลิศและบรรยากาศที่ตกแต่งอย่างหรูหราโรแมนติก แต่ถ้าเป็นผู้ชาย ประตูไฮเทคจะนำเขาไปยังโซนสุภาพบุรุษที่เต็มไปด้วยเหล้าชั้นดีดีกรีถึงใจ บรรยากาศตกแต่งแบบตะวันตกยุด 70 และดนตรีสไตล์ country ที่ฟังแล้วให้บรรยากาศที่ยากจะลืมเลือน
งานของคุณ คือเขียนโปรแกรมให้กับประตูไฮเทคเพื่อสอบถามข้อมูลและตรวจสอบเงื่อนไข ส่วนกลไกการส่งแขกไปยังโซนต่างๆจะเป็นหน้าที่ของวิศวกรท่านอื่น
โปรแกรมจะต้องรับค่า 1.ชื่อ นามสกุล 2.อายุ 3.เพศ
หากเป็นเด็กอายุต่ำกว่า 18 ปี ให้บอกว่า
baby. go home now and tell your parent that you are good child
แต่ถ้าเป็นคนอายุ 18 ปีขึ้นไป ก็ให้เช็คต่อไปว่า
ถ้าเป็นผู้ชาย บอกว่า Hi Mr.ชื่อเขา welcome to exteen bar. enjoy with our spirits
ถเาเป็นผู้หญิง บอกว่า Hello Mrs.ชื่อเธอ welcome to exteen bar. enyou with our wine
***โจทย์ข้อนี้ให้คุณเขียน 2 ครั้ง
คร้ังแรกให้ลองเขียนแบบเช็คเงื่อนไข 2 ชั้น คือแบบ
if(..) {
if(...) {..}
}
else {...}
หรือไม่ก็
if(...) {...}
else {
if(...) {...}
}
ครั้งที่สอง ขเียนแบบชั้นเดียวตามปกติ แต่ให้ใช้ทั้ง if , else if , else
รูปแบบการถามข้อมูลให้เหมือนกับโจทย์ข้อที่ 4


ไม่น่า ...ไม่น่า...
#1 By ChotxE on 2009-05-18 20:52