타분반 과제

문제1

#include <string.h>

typedef struct student {
	int num;
	char name[100];
	float score;
}Student;

Student maxscore(Student s[100], int cnt);

int main(void) {
	Student s[100];
	int numlist[100] = {0};
	int cnt = 0;
	int tempnum = 0;
	int compare = 0;
	Student max_s;
	printf("---- 학생 정보 입력 (종료:0) ----\n");
	while (1) {
		printf("번호 : ");
		scanf("%d", &tempnum);
		if (tempnum == 0) break;
		if (cnt != 0) {
			compare = 0;
			for (int k = 0; k < cnt; k++) {
				if (numlist[k] == tempnum) compare = 1;
			}
			if (compare) {
				printf("동일한 데이터 존재!\n");
				continue;
			}
		}
		numlist[cnt] = tempnum;
		s[cnt].num = tempnum;
		printf("이름 : ");
		scanf("%s", s[cnt].name);
		printf("학점 : ");
		scanf("%f", &s[cnt].score);
		cnt++;
		printf("\n");
	}
	printf("\n---- 전체 학생 정보 ----\n");
	for (int i = 0; i < cnt; i++) {
		printf("번호 : %d, 이름 : %s, 학점 : %.1f\n", s[i].num, s[i].name, s[i].score);
	}
	max_s = maxscore(s, cnt);
	printf("---- 최고 학생 정보 ---- \n");
	printf("번호 : %d, 이름 : %s, 학점 : %.1f\n", max_s.num, max_s.name, max_s.score);

}
Student maxscore(Student s[100], int cnt) {
	Student max = s[0];
	if (cnt > 1) {
		for (int i = 1; i < cnt; i++) {
			if (s[i].score > max.score) {
				max = s[i];
			}
		}
	}
	return max;
}

call by reference

#define _CRT_SECURE_NO_WARNINGS    // scanf 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>
#include <ctype.h>
#include <string.h>

typedef struct student {
	int num;
	char name[100];
	float score;
}Student;

Student maxscore(Student *s, int cnt);

int main(void) {
	Student s[100];
	int numlist[100] = {0};
	int cnt = 0;
	int tempnum = 0;
	int compare = 0;
	Student max_s;
	printf("---- 학생 정보 입력 (종료:0) ----\n");
	while (1) {
		printf("번호 : ");
		scanf("%d", &tempnum);
		if (tempnum == 0) break;
		if (cnt != 0) {
			compare = 0;
			for (int k = 0; k < cnt; k++) {
				if (numlist[k] == tempnum) compare = 1;
			}
			if (compare) {
				printf("동일한 데이터 존재!\n");
				continue;
			}
		}
		numlist[cnt] = tempnum;
		s[cnt].num = tempnum;
		printf("이름 : ");
		scanf("%s", s[cnt].name);
		printf("학점 : ");
		scanf("%f", &s[cnt].score);
		cnt++;
		printf("\n");
	}
	printf("\n---- 전체 학생 정보 ----\n");
	for (int i = 0; i < cnt; i++) {
		printf("번호 : %d, 이름 : %s, 학점 : %.1f\n", s[i].num, s[i].name, s[i].score);
	}
	max_s = maxscore(s, cnt);
	printf("---- 최고 학생 정보 ---- \n");
	printf("번호 : %d, 이름 : %s, 학점 : %.1f\n", max_s.num, max_s.name, max_s.score);

}
Student maxscore(Student *s, int cnt) {
	Student max = *s;
	if (cnt > 1) {
		for (int i = 1; i < cnt; i++) {
			s++;
			if ((*s).score > max.score) {
				max = *s;
			}
		}
	}
	return max;
}

문제2

#define _CRT_SECURE_NO_WARNINGS    // scanf 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>
#include <ctype.h>
#include <string.h>

int compare(char* s1, char* s2);

int main() {
	char s1[11];
	char s2[11];
	int result=0;
	printf("두 문자열 입력 : ");
	scanf("%s %s", s1, s2);
	result = compare(s1, s2);
	if (result) printf("%s and %s : equal", s1, s2);
	else printf("%s and %s : not equal", s1, s2);
	return 0;
}

int compare(char* s1, char* s2) {
	while (1) {
		if (*s1 != *s2) return 0;
		else if ((*s1 == 0) && (*s2 == 0))break;
		s1++;
		s2++;
	}
	return 1;
}

문제 3

#define _CRT_SECURE_NO_WARNINGS    // scanf 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>


void prn_even(int num) {
	if (num <= 1) return;
	if (num % 2) {
		printf("%d\n", num - 1);
		prn_even((num - 1)/2);
	}
	else {
		printf("%d\n", num);
		prn_even(num/2);
	}
}

int main(void) {
	int i;
	printf("입력: ");
	scanf("%d", &i);
	prn_even(i);
	return 0;
}

문제 4

#define _CRT_SECURE_NO_WARNINGS    // scanf 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>
#include <string.h>

int main() {
	char text[100];
	printf("텍스트를 입력하세요\n");
	gets_s(text, 100);
	for (char al = 'a'; al <= 'z'; al++) {
		int cnt = 0;
		char* ptr = strchr(text, al);
		while (ptr != NULL) {
			cnt++;
			ptr = strchr(ptr + 1, al);
		}
		printf("%c: %d\n", al, cnt);
	}
	return 0;
}

좋은 웹페이지 즐겨찾기