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

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי

הדפסת מספרים אי זוגיים בתחום מקלט[עריכה]

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


פתרון
#include <stdio.h>

int main()
{
  int i,num;
  
  printf("Please enter a number");
  scanf("%d",&num);

  for(i=1;i<=num;i+=2)
    printf("%d ",i);

  return 0;
}


הדפסת מספרים זוגיים-או אי זוגיים על ידי החלטה מקלט[עריכה]

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


פתרון
#include <stdio.h>

int main()
{
  int i, num, kind;

  printf("Please enter a 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");

    return -1;
  }
  
  for(i=kind;i<=num;i+=2)
    printf("%d ",i);

  return 0;
}


קירוב סינוס על ידי טור טיילור[עריכה]

טור טיילור של הוא:

כתוב תוכנית המקבלת מעלה, ומחשבת את ערך הסינוס שלה (ברדיאנים) על ידי חיבור 10 האיברים הראשונים של הטור.


פתרון
#include <stdio.h>


int main()
{
  float angle;
  unsigned int i;  
  float sinus = 0;
  
  int sign = 1;
  unsigned long int factorial = 1;
  float power;

  printf("Please enter angle: ");
  scanf("%f", &angle);
  
  power = angle;
  
  for(i = 0; i < 10; ++i)
  {
    sinus += sign * power / factorial;
        
    sign = -sign;
    factorial *= (2 * i + 2) * (2 * i + 3);
    power *= angle * angle;
  }
  
  printf("sin(%f) ~= %f\n", angle, sinus);
}


ניחוש מספר על ידי חיפוש בינארי[עריכה]

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


פתרון
#include <stdio.h>
int main()
{
  int guess = 500, diff = 250;

  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 guess, ");
  printf ("2 if the guess was correct, ");
  printf("or 3 if the number is greater.\n\n");

  do
  {
    char response;
    
    printf ("Is the number %d? ", guess);
    scanf ("%d", &response);

    switch (response)
    {
    case 1:
      guess -= diff;
      break;
    case 3:
      guess += diff;
      break;
    case 2:
      printf ("The program guessed your number!\n");
      break;
    default:
      printf ("Error in input!\n");
      return -1;
    }

    diff /= 2;
    if(diff == 0)
      diff = 1;
  }
  while (response != 2);
  
  return 0;
}