سوال ۴
تکه کد زیر را در نظر بگیرید:
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
int main() {
char c, s[10];
int x, *p;
long long m;
/* code here! */
return 0;
}
قرار است هر کدام از شبهکد های زیر را در قسمت مشخص شده (/ * code here! * /
) قرار داده و تا جای ممکن به جواب برسیم. بهطور دقیقتر، برای هر یک از کدهایی زیر
در صورتی که کد کامپایل نمیشود، محل و علّت خطای کامپایل (Compilation Error) را مشخّص کرده و معلوم کنید که چگونه باید این خطا را رفع کرد.
سپس (بعد از رفع خطای کامپایل در صورت موجود) اگر برنامه در هنگام اجرا دچار خطای زمان اجرا (Runtime Error) میشود، محل و علّت آن خطا را مشخّص کرده و مشخّص کنید که چگونه میتوان از این خطا اجتناب کرد.
در غیر این صورت اگر برنامه بهدرستی کامپایل میشود اما به هر دلیلی (اعم از پایان نپذیرفتن بهخاطر افتادن در حلقهی نامتناهی، فرمت اشتباه خروجی و غیره خواستهی برنامهنویس را برآورده نمیکند، این مورد را به همراه محل و علّت دقیق و نحوهی رفع مشکل بنویسید.
سپس (بعد از رفع اشکال اجرایی) اگر برنامه ناکارآمد است (برای مثال، پیچیدگی زمانی آن به سادگی قابل کاهش است)، با ذکر نحوهی بهبود کد به این مهم اشاره کنید.
نهایتاً مقدار متغیرها در هر خط از اجرای برنامه و خروجی برنامه را نیز تا حد امکان با ذکر دلیل بنویسید.
کد شماره یک
c = 1000 / float(10) - 35;
cout << c << endl;
کد شماره دو
x = (1 << 32) - 1;
cout << x << endl;
کد شماره سه
strcpy(s, "hello0\n");
s[1] = 'A' / 1LL + 0X00;
p = (int *)(s + 1);
if (*p == 'A')
cout << c << endl;
کد شماره چهار
char c2 = -1; c2++;
if (c2 == 0)
cout << "Yes!" << endl;
کد شماره پنج
strcpy(s, "welcome");
x = s[strlen(s)];
x++; x++;
p = &x;
if (x & (*p == 2))
cout << "Bah Bah!" << endl;
کد شماره شش
x = 0;
strcpy(s,"1234567890");
for (c = s[8]; c != 0; c++)
x += c;
cout << x << endl;
for (c = s[8]; c != '0'; c++)
x += c;
cout << x << endl;
کد شماره هفت
int &q = x;
x = 5;
*p = q;
x++;
x = *(&q);
cout << x << " " << p << " " << &q << endl;
کد شماره هشت
x = 1;
do {
c = -2;
for ( ; ; x++,c++)
if (x == 10)
break;
else
continue;
} while (c < -1);
cout << "akheysh! " << x << endl;