سوالات امتحان میان ترم فرزانگان 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(); }