سوالات امتحان میان ترم فرزانگان 6 به همراه پاسخ
برای مطالعه بر روی ادامه مطلب کلیک کنید
1- برنامه ی زیر چه کاری انجام میدهد؟ جدول اجرای این برنامه را به ازای n=8 بکشید.
main()
{
int n, mult = 1;
cin >> n;
while(n > 0)
{
if(n % 3 == 0)
{
mult = mult * n;
}
n = n - 1;
}
cout << mult;
getch();
}
این برنامه حاصلضرب اعداد مضرب سه و کوچکتر از n را نشان میدهد.
2- در قطعه کدهای زیر دسورات داخل حلقه چند بار اجرا می شوند؟
الف)
int a, b = 2;
cin >> a;
while(a > 0 || b > 1)
{
a = a / b;
b++;
}
int x = 5, y = 1;
while(x >= 0)
{
x = 2 * x - 10;
cout << 2 * x + y;
y = y + 1;
}
جواب:
الف) حلقه تا بینهایت تکرار میشود. چرا که متغیر b تا ابد بزرگتر از یک خواهد ماند.
ب) این حلقه تنها دو بار تکرار خواهد شد( چرا؟)
3- شکل خروجی زیر به ازای برنامه n=3 چیست؟
main()
{
int n, x = 50, y = 50, x1 = 150, y1 = 70;
initwindow(400, 500);
cin >> n;
while(n > 0)
{
rectangle(x, y, x1, y1);
x = x + 10;
y = y1;
x1 = x1 - 10;
y1 = y1 + 10;
n = n - 1;
}
getch();
}
جواب:
4- برنامه ای بنویسید که مقدار x را از کاربر بگیرد و با توجه به معادله ی زیر y را بدست آورد: ( توجه داشته باشید که به ازای ورودی صفر، خروجی کلمه ی zero است
main()
{
cout << "Please enter a number: " << endl;
float x;
float y;
cin >> x;
if(x < 0)
{
y = 2 * x * x + 1 / (x - 2) + 5;
cout << "y is: " << y << endl;
}
else if(x == 0)
{
cout << "Zero" << endl;
}
else
{
float z = sqrt(x) + 5;
float t = pow(x, 3) + pow(x, 2);
y = z / t;
cout << "y is: " << y << endl;
}
getch();
}
5- برنامه ای بنویسید که یکک را از ورودی بگیرد و اعلام کند که آیا عدد کامل هست یا نه؟
( عدد کامل عددی است که مجموع مقسوم علیه های آن 2 برابر خودش شود. مثلا عدد 6 کامل است زیرا 1+2+3+6=12)
main()
{
cout << "Please enter a number: " << endl;
int num, i = 1, sum = 0;
cin >> num;
while(i <= num)
{
if(num % i == 0)
{
sum = sum + i;
}
i++;
}
if(sum == 2 * num)
cout << "adad kamel ast" << endl;
else
cout << "adad kamel nist" << endl;
getch();
}
6- شرکتی میخواهد عملیات انتقال داده را از طریق خطوط تلفن انجام دهد. تمام داده ها به صورت اعداد 4 رقمی منتقل می شوند. برنامه ای بنویسید که یک عدد صحیح را از ورودی گرفته و آن را به صورت زیر به رمز در آورد:
به جای هر رقم، حاصل جمع آن رقم را با 7 قرار دهد( دقت کنید که ممکن است حاصل این جمع 2 رقمی شود. در این صورت رقم یکان راجایگزین کنید. ) آنگاه جای رقم اول و سوم و جای رقم دوم و چهارم را عوض کند و عدد رمز شده را در خروجی نمایش دهد. ( دقت کنید نمیتوانید عدد را رقم به رقم چاپ کنید. بلکه باید عدد به صورت یک عدد واحد چاپ شود)
مثال:
ورودی نمونه: 1456
خروجی نمونه: 2381
main()
{
int num, newnum, a, b, c, d;
cout << "Please enter your data" << endl;
cin >> num;
a = (num % 10 + 7) % 10; //رقم اول رو میگیریم با استفاده از مد و با 7 جمع میکنیم و برای گرفتن رقم اول حاصل این جمع باز هم مد 10 میگیریم
num = num / 10; //رقم اولو از عدد حذف میکنیم. کارمون باهاش تموم شد
b = (num % 10 + 7) % 10; //رقم دوم رو میگیریم با استفاده از مد و با 7 جمع میکنیم و برای گرفتن رقم دوم حاصل این جمع باز هم مد 10 میگیریم
num = num / 10; //رقم دومو حذف میکنیم. کارمون باهاش تموم شد
c = (num % 10 + 7) % 10; //رقم سوم رو میگیریم با استفاده از مد و با 7 جمع میکنیم و برای گرفتن رقم سوم حاصل این جمع باز هم مد 10 میگیریم
num = num / 10; //رقم سومو حذف میکنیم. کارمون باهاش تموم شد
d = (num % 10 + 7) % 10; //رقم چهارم رو میگیریم با استفاده از مد و با 7 جمع میکنیم و برای گرفتن رقم چهارم حاصل این جمع باز هم مد 10 میگیریم
num = num / 10; //رقم چهارمو حذف میکنیم. کارمون باهاش تموم شد
newnum=b*1000+a*100+d*10+c; //حالا با ارقام جدیدی که تولید کردم عدد رو اونجوری که گفته شده و با همون ترتیبی که صورت سوال فته میسازیم
cout << newnum;
getch();
}
روش دوم با حلقه ی while
main()
{
cout << "please enter a number: " << endl;
int num, newnum, prenum = 0, b;
cin >> num;
int p = 1;
while(num > 0)
{
b = ((num % 10) + 7) % 10;
prenum = prenum + (b * p);
p *= 10;
num /= 10;
}
newnum = (prenum % 100) * 100;
newnum = newnum + (prenum / 100);
cout << "your new number is: " << newnum << endl;
getch();
}
یاسمن