c++ 문제 질문

틀린부분을 수정해 올바른게 고치라는 문제입니다.

#include<stdio.h>
#define B booboo
#define X 10
main()
{
	int age;
	char name;
	
	printf("Please enter your first name.");
	scnaf("%s", name);
	printf("All right, %c what's your age? \n', name");
	scanf("%f", &age);
	xp = age + X;
	printf("That's a %s! you bust be at least %d. \n", B, xp);
	}

라는 코드에서 잘못된것을 고치라는 문제인데 이것을

#include<stdio.h>
#define B "booboo"
#define X "10"
main()
{
	int ag[20];
	char name[20];
	
	printf("Please enter your first name.");
	scnaf("%s", name);
	printf("All right, %s what's your age? \n', name");
	scanf("%f", &age);
	xp = age + X;
	printf("That's a %s! you bust be at least %d. \n", B, xp);
}

라고 최대한 고쳐 봤는데 다른것들은 잘 모르곘습니다. 도와주실수 있나요??

아래 코드 기준으로 잘못된 점 말씀드리면,

  1. 이름 출력시 printf의 사용이 잘못됨(따옴표 짝 잘 볼것)
  2. 나이 입력시 scanf의 사용이 잘못됨(int[ 20 ]%f로 입력받는중)
  3. 선언되지 않은 변수 xp 사용중
  4. age + X는 자료형이 맞지 않음

정도가 있겠네요.

일단 이건 C++이 아니라 C네요.

아래 코드 기준으로 잘못된 점

  1. int main() 이어야 함
  2. int ag[20]이 아니라 int age
  3. scanf 쓰지 말것. buffer overflow에 취약함. fgets를 쓸 것
  4. age < 0인 경우에 대한 잘못된 입력에 대한 에러 처리가 없음
  5. scanf에서 age를 받는 포맷이 틀렸음
  6. xp의 타입이 지정되지 않았음
  7. #define X에서 X는 문자열 리터럴임. "10"이 아니라 10으로 고쳐줘야 함
  8. 두번째 printf의 괄호가 맞지 않음
2 Likes

네 감사합니다 ^^

네 알려주셔서 감사합니다!

안녕하세요.

이런 문제를 보실때는 항상 자료형에 주의하세요.
그러면 답이 쉽게 보일겁니다. ㅎㅎㅎ