سؤالات نمونه برای آزمون سی++ برای مصاحبه مهارت مقدماتی شغلی و همچنین دروس برنامه‌نویسی مقدماتی و پیشرفته رشته‌های کامپیوتر و ریاضی و سایر رشته‌های مهندسی قابل استفاده اند.

  • برنامه‌ها را می‌توانید از طریق کامپایلر آنلاین، اجرا کنید.
  • به دلیل شباهت گرامر زبان سی با زبان سی++ اغلب برنامه‌هایی که در اینجا می‌بینید، در زبان سی هم اجرا می‌شوند.
  • توابع cin و cout فقط در زبان سی++ برای ورود متغیرها و چاپ مقادیر ثابت و متغیر قابل استفاده اند و در زبان سی تعریف نشده‌اند، در زبان سی به جای توابع cin و cout از  scanf و printf  استفاده می‌کنیم.

 

سؤال) خروجی این کد سی++ چیست؟


int c=3; char d='A';
std::printf("c is %d d is %c", c,d);

۱) c is A and d is 3
۲) c is 3 and d is A
۳) c is d and d is c
۴) c is cand d is d

سؤال) در اجرای این کد چه چیزی چاپ می‌شود؟


vector<int> v(22);
bool b = (v[6]);
printf("%d",!b);

۱) FALSE
۲) ۰
۳) ۱
۴) این کد، خطا دارد.

سؤال) نشانگر نوع داده auto در این خط از کد چه می‌کند؟ (از نسخه یازده C++ به بعد)

auto x = 40000.22;
  1. مشخص می کند که نوع داده‌ی متغیر x از مقداردهی اولیه، استنباط می شود، در این حالت double خواهد بود.
  2. مشخص می‌کند نوع داده‌ی متغیر x خودکار است، یعنی می‌توان انواع مختلف داده را در کل برنامه به آن اختصاص داد.
  3. مشخص می کند که x متغیری با مدت زمان ذخیره‌سازی خودکار است.
  4. مشخص می‌کند که در صورت نیاز به فضای بیشترِ حافظه، برای جلوگیری از از دست رفتنِ داده‌ها به دلیل سرریز، حافظه بیشتری برای x اختصاص خواهد یافت.

سؤال) کدام یک از گزینه‌های زیر، برای تعریف نوع داده‌ای که مختصات x و y را به صورت عدد صحیح دارد و به صورت زیر بتوانید برای تعریف متغیری به نام center استفاده کنید، غلط است؟

coord center;
center.x = 10;
center.y=-2;

پاسخ‌ها)

typedef struct coord {
int x;
int y;
}coord;

 

struct coord {
int x;
int y;
};

 

typedef struct coord {
int x;
int y;
};

 

typedef struct {
int x;
int y;
} coord;

 

سؤال) چطور در کد C++ می‌توانیم تابع نوشته شده به زبان C را فراخوانی کنیم؟

۱) با استفاده از فراخوانی تابع نوشته شده در داخل کد C++
۲) با فرمان extern “c”
۳) از طریق ایمپورت سورس کد C
۴) هیچ راهکاری برای فراخوانی کد C در C++ وجود ندارد

سؤال) خروجی قطعه کد زیر چیست؟

int8_t a=200;
uint8_t b=100;
if (a>b)
 std::cout << "greater";
else
 std::cout << "less or equal"

۱) greater
۲) خروجی ندارد چون مقایسه بین دو نوع داده مختلف int8_t و uint8_t منجر به خطای زمان اجرا می‌شود.
۳) less or equal
۴) خروجی ندارد چون خطای کامپایلر خواهد بود.

سؤال) برای تابع get_length که طول یک رشته‌ی پایان‌یافته با کاراکتر null را برمی‌گرداند، کدام پیاده‌سازی درست است؟

پاسخ‌ها)

int get_length (char *str) {
int count =0;
while (str++)
  count++;
return count;
}

 

int get_length (char *str) {
int count =0;
while ((*str)++)
  count++;
return count;
}

 

int get_length (char *str) {
int count =0;
while (str!=NULL){
  count++;
  str++;
}
return count;
}

 

int get_length (char *str) {
int count =0;
while (str[count++]));
return count-1;
}

سؤال) خروجی برنامه زیر چیست؟


#include <cstdio>
using namespace std;
int main()
{
  char c=255;
  if(c>10) 
    printf("c = %i, which is greater than 10",c);
  else
    printf("c = %i, which is less than 10", c);
  return(0);
}

۱) c=-1, which is greater than 10
۲) c=-1, which is less than 10
۳) c=255, which is greater than 10
۴) c=255, which is less than 10

سؤال) برنامه زیر چه کار می‌کند؟

#include <iostream>
#include <fstream>;
using namespace std;
int main()
{
  ifstream file1("text1.txt", ios::binary);
  ofstream file2("text2.txt", ios::binary);
  file2 << filel.rdbuf();
  return(0);
}

۱) محتوای فایل text1.txt را به فایل text2.txt ضمیمه می‌کند.
۲) نام فایل text1.txt را به text2.txt تغییر می‌دهد
۳) یک پوشه به نام text2.txt درست می‌کند و فایل text1.txt را به آنجا منتقل می‌کند
۴) محتوای text1.txt را به نام فایل جدید text2.txt کپی می‌کند

سؤال) کدام عبارت با s->x معادل است؟


*s.x
s.x
s.*x
(*s).x

سؤال) این که در زبان سی++ پارامترهای تابع را به جای شیء عادی، به صورت رفرنس ثابت معرفی کنیم، چه فایده‌ای دارد؟

float average (const myArray& a)

۱) در زبان سی++ اشیاء را نمی‌توان مانند متغیر عادی، به صورت آرگومان تابع استفاده کرد، چون لازم است تابع سازنده‌ی شیء فراخوانی شود. بنابراین تنها راه فرستادن نمونه‌ی یک کلاس به داخل تابع، استفاده از رفرنس ثابت است.
۲) قید ثابت پیش از نام کلاس، جلوی تغییر مقدار متغیر آرگومان را می‌گیرد و برنامه‌نویس مطمئن خواهد بود که شیء اصلی داخل فراخواننده، ثابت خواهند ماند.
۳) مزیت خاصی ندارد چون یک شیء و رفرنس به آن در هر دو حالت، وضعیت یکسانی خواهند داشت.
۴) آرگومان به صورت رفرنس داخل تابع فرستاده می‌شود، بنابراین تابع، یک کپی از شیء دریافت می‌کند که می‌تواند بدون دستکاری متغیر اصلی (در فراخواننده) آن را تغییر دهد.

لینک‌های مرتبط