المپدیا

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

ابزار کاربر

ابزار سایت


سوالات المپیاد:دوره ی تابستان:دوره ی ۱۸:برنامه نویسی:سوال ۱۲

حروف بزرگ یا کوچک‎!

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

#include <cstdio>
 
int main() {
  char s[20] = "abA Bbb AAa";
  for (char *p = s; *(p++); ) 
    printf("%c", *p);
  return 0;
}

ب) برنامه‌ی زیر برای تغییر بزرگی و کوچکی ‎(case)‎ حروف ‎a‎ یا b (به ‎A‎ یا B و بالعکس) نوشته شده است.

  1. آیا این برنامه به درستی کامپایل می‌شود؟
  2. این برنامه چه‌خروجی‌ای دارد؟
  3. اشکالات این برنامه را مرحله به مرحله توضیح داده و به‌ساده‌ترین روش رفع کنید.
#include <cstdio>
void changeCase(char s) {
  switch(s) {
  case 'a':  case 'b': 
    s += 'A' - 'a';
  case 'A':  case 'B':
    s += 'a' - 'A';
  default:
    s = '!';
  }
}
 
int main() {
  char s[20] = "abA Bbb AAa";
  for (char *p = s; *(p++); ) {
    changeCase(*p);
    printf("%c", *p);
  }
  return 0;
}

ابزار صفحه