المپدیا

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

ابزار کاربر

ابزار سایت


سوالات المپیاد:دوره ی تابستان:دوره ی ۲۴:برنامه نویسی:سوال ۶

سوال ۶

خروجی کد‌های زیر را مشخص کنید و در موارد B و E توضیح مختصری دهید. در صورتی که به درستی اجرا نمی‌شوند یا خروجی‌شان یکتا نیست با ذکر دلیل بگویید.

A.c
#include <iostream>
int main() {
  int a = 10;
  int b = 20;
  int x;
  x = (a, b);
  std::cout << x;
}
B.c
#include<iostream>
typedef long long ll;
int main()
{
  const ll MN = 1LL << 31;
  int result = 0;
  for (ll i = 1; i <= MN; i++)
    for (ll j = 1; j <= i; j++)
      if (!(i % j || (j & (j - 1))))
        result += j;
  cout << result;
}
C.c
#include <iostream>
int main() {
  int i=1;
  do {
    std::cout << i;
    i++;
    if(i < 3) continue;
  } while(false);
}
D.c
#include <iostream>
int f(int &a, int &b) {
  a = 3;
  b = 4;
  return a + b;
}
int main() {
  int a = 1;
  int b = 2;
  int c = f(a, a);
  std::cout << a << b << c;
}
E.c
#include <iostream>
struct foo {
  int data;
  foo() {}
  foo(const foo& other) {
    this->data = 0;
  }
  foo& operator= (foo& other) {
    this->data=other.data++;
    return *this;
  }
};
int main()
{
  foo a, c;
  a.data = 2;
  foo b = a;
  c = a = b;
  std::cout << a.data << " " << b.data << " " << c.data;
}

ابزار صفحه