728x90
1.scanf에서 수정하기
scanf는 공백과 엔터가 나오면 입력을 더이상 받지않기때문에
공백을 포함한 문자열을 받을때 다른방법을 사용하거나 몇가지 작업을 해야한다
scanf("%[^\n]s",&name[i]);
^\n의 의미는 엔터를 만날때까지 읽으라는 뜻이다
이것을 사용하면 scanf에서 공백을 인식할수있다
2.gets함수를 사용하기
cpp확장자에서는 gets함수를 사용할수없으므로
사용하려면 확장자를 c로 바꿔야한다
gets(name[i]);//gets 함수는 공백까지 포함하여 받을수있다 대신 확장자가 .cpp가아닌 .c이여야만한다
printf("%s\n", name[i]);
2차원배열과 배열끼리의 연산으로
학생들의 성적의 평균과 합을 구하고 출력하는 예제입니다
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
#pragma warning(disable:4996)//scanf 함수 사용을 위해
#define MAN 2//몇명의 데이터를 받을것인지 정한다
int main() {
int i;
int sum[MAN+ 1]; int ave[MAN + 1]; int kor[MAN + 1];//배열생성 학생별로 배열을 생성한것이아닌
int eng[MAN+ 1]; int math[MAN + 1]; int his[MAN + 1];//과목별로 배열을 생성하였다
int sci[MAN+ 1];
char name[MAN + 1][10];//[행][열]2차원배열이다
for (i = 1; i <= MAN; i++) {//명수만큼 반복할것이다
printf("%d번째 이름입력: \n", i);
printf("문자열을 입력하세요: ");
scanf("%[^\n]s",&name[i]);//scanf 함수는 공백을 받을수없는데 이렇게 사용하면 가능하다
//gets(name[i]);//gets 함수는 공백까지 포함하여 받을수있다 대신 확장자가 .cpp가아닌 .c이여야만한다
printf("%s\n", name[i]);//이름을 받고 출력한다
printf("국 영 수 역 과 입력\n");
scanf("\n%d\t%d\t%d\t%d\t%d%*c", &kor[i], &eng[i], &math[i], &his[i], &sci[i]);
printf("\n이름:%s \t 국%d\t영%d\t수%d\t역%d\t과%d\n\n\n", name[i], kor[i], eng[i], math[i], his[i], sci[i]);
}
printf("순번\t이름\t국어\t영어\t수학\t국사\t과학\t총점\t평균\n");
printf("=======================================================================\n");
for (i = 1; i <= MAN; i++) {//명수만큼 출력할것이다
sum[i] = kor[i] + eng[i] + math[i] + his[i] + sci[i];//합
ave[i] = (( kor[i] + eng[i] + math[i] + his[i] + sci[i])/5);//평균
printf("순번%d\t%s\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n",i, name[i], kor[i], eng[i], math[i], his[i], sci[i],sum[i],ave[i]);
}
printf("=======================================================================\n");
}
728x90
'개발 > C++기본문법' 카테고리의 다른 글
C언어에서 성적처리후 파일 입출력하기 (0) | 2023.05.10 |
---|---|
C언어에서 .txt파일을 읽고 배열에 저장한후 출력하는 예제 (0) | 2023.04.20 |
1~45까지의 난수를 [6]배열에 저장 후 크기대로 정렬하고 중복은 제거 (0) | 2023.04.18 |
scanf와 printf의 예제 (0) | 2023.04.17 |
구조체와 레코드 (struct) (0) | 2023.04.10 |