שפת C/תנאים ולולאות/תרגילים

דרגת קושי: ☆ ☆ ★ ★

כתבו תוכנית שמדפיסה את כל המספרים האי-זוגיים מ-1 עד 20, השתמשו בלולאת while.


פתרון
#include<stdio.h>
int main()
{
 int i=1;
 while(i<=20)
 {
  printf("%d ",i);
  i+=2;
 }
 return 0;
}


דרגת קושי: ☆ ☆ ☆ ★

כתבו את אותה תוכנית מתרגיל 1, אבל הפעם עם לולאת for.


פתרון
#include<stdio.h>
int main()
{
 int i;
 for(i=1;i<=20;i+=2)
 {
  printf("%d ",i);
 }
 return 0;
}


דרגת קושי: ☆ ☆ ★ ★

שנו את התוכנית הקודמת, כך שהיא תבקש קודם מהמשתמש לבחור מספר שלם חיובי N, ותדפיס את כל המספרים האי-זוגיים מ-1 עד N.


פתרון
#include<stdio.h>
int main()
{
 int i,num;
 printf("Please enter 1 number");
 scanf("%d",&num);
 for(i=1;i<=num;i+=2)
 {
  printf("%d ",i);
 }
 return 0;
}


דרגת קושי: ☆ ☆ ★ ★

הוסיפו לתוכנית הקודמת שאלה למשתמש האם להדפיס מספרים זוגיים או אי-זוגיים. אם המשתמש יקיש 1, התוכנית תדפיס אי-זוגיים, ואם הוא יקיש 2 היא תדפיס זוגיים. (אם הוא יקיש משהו אחר, התוכנית תדפיס הודעת שגיאה מתאימה ותסתיים).


פתרון
#include<stdio.h>
int main()
{
 int i,num,kind;
 printf("Please enter 1 number");
 scanf("%d",&num);
 printf("what kind of numbers would you like?");
 scanf("%d",&kind);
 if (kind!=1 && kind!=2)
 {
  printf("You entered wrong input");
  kind=num+1;
 }
 for(i=kind;i<=num;i+=2)
 {
  printf("%d ",i);
 }
 return 0;
}


דרגת קושי: ☆ ★ ★ ★

כתבו תוכנית שמבקשת מהמשתמש לחשוב על מספר שלם בין 1 ל-1000, ומנחשת מהו המספר. המשתמש יקליד 1 אם המספר שלו קטן יותר, 2 אם הניחוש נכון ו-3 אם המספר גדול יותר (ובחירה אחרת תיתן הודעת שגיאה וסיום). התוכנית תמשיך לנחש (בלולאה) עד שתגיע לתשובה. הניחוש הראשון שלה יהיה 500. אם המספר של המשתמש גדול יותר הניחוש הבא יהיה 750, ואם קטן יותר אז 250, וכך הלאה (צורת ניחוש שכזו מכונה "חיפוש בינארי"). כשימצא המספר הנכון תודפס הודעת סיום המשחק, והתוכנית תסתיים.


פתרון
#include <stdio.h>
int main()
{
 int Guess = 500, Difference = 250, UserResponse;
 printf ("Think of a number in the range 1-1000...\n");
 printf ("The program will attempt to guess the number.\n");
 printf ("Please click 1 if the number is smaller than the program's");
 printf ("guess, 2 if the guess was correct, or 3 if the number");
 printf ("is greater.\n\n");

 while (UserResponse != 2)
 {
  printf ("Is the number %d? ", Guess);
  scanf ("%d", &UserResponse);
  switch (UserResponse)
  {
  case 1:
   Guess -= Difference;
   Difference /= 2;
   if (Difference == 0)
    Difference = 1;
   break;
  case 3:
   Guess += Difference;
   Difference /= 2;
   if (Difference == 0)
    Difference = 1;
   break;
  case 2:
   printf ("The program guessed your number!\n");
   break;
  default:
   printf ("Error in input.\n");
   UserResponse = 2;
  }
 }
 return 0;
}