المپدیا

دانش‌نامه‌ی المپیاد کامپیوتر ایران

ابزار کاربر

ابزار سایت


سوالات المپیاد:دوره ی تابستان:دوره ی ۲۰:برنامه نویسی:سوال ۳

ساخت و ساز کد

تکه کد زیر را در نظر بگیرید:

#include <iostream>
using namespace std;
 
int main() {
  char c, s[10];
  int a[10];
  int x, y;
  int *p, *q; 	
  long long m;
  int n = 10;
 
  for (int i=0; i<n; i++)
    a[i] = i;
 
   /* code here! */
 
   return 0;
}

قرار است هر کدام از شبه‌کدهای زیر را در قسمت مشخص شده ‎(/* code here! */)‎ قرار داده و در صورت امکان به جواب برسیم.

در هر مورد خروجی را به همراه توضیح مختصری از روال اجرای برنامه و علت رسیدن به آن جواب، بنویسید. اگر هم برنامه خطای کامپایل یا زمان اجرا دارد، توضیح دهید. توضیح شما (در هر دو حالت اجرا و خطا) نصف نمره را دارد‎. ‎

  • کد شماره یک:
  x = (~0)/2;
  y = (~0u)/2;
  cout << x << endl;
  cout << y << endl;
  x = -1u;
  y = -1u/2;
  cout << x << endl;
  cout << y << endl;
  • کد شماره دو:
x = 13;
for (int i=0; i<255; i++)
  x ^= i;
cout << x << endl;
  • کد شماره سه:
  for (c = 0; c < 128; c++)
    a[c%10] = a[(c%10+1)%10];
 
  cout << a[7] + a[3] << endl;
  • کد شماره چهار:
  p = &y;
  y++;
  *p = 8;
  q = &x;
  x++;
  x = y;
  cout << *q << endl;
  • کد شماره پنج:
  x = 3;
  y = a[x + 3] + 3;
  p = &y;
  q = &x;
  y++;
  x++;
  for (x=0; x + y <n; x++);
    n -= a[x];
  cout << n << endl;
  • کد شماره شش:
  for (int i=0; i<n; i++)
    a[i] != !i;
  cout << a[1 | 2 | 4] << endl;
  • کد شماره هفت:
int d = 0;
for (int i=-2; i<=2; i++)
  for (int j=-2; j<=2; j++)
    for (char k=-2; k<=2; k++)
      if (i == j == k)
        d++;
cout << d << endl;
  • کد شماره هشت:
  x = 9;
  do {
    y = 0;
    do {
      y = y + 1 + (x-y)/2;
      a[y]++; 
    } while (y < x);
    x--; 
  } while (x);
  c = a[0] + a[1] + a[2] + a[4] + a[8]; 
  cout << (int)c << endl;

ابزار صفحه