8. main()함수의 매개변수로 입력된 수 만큼의 "*"를 출력하는 프로그램.
#include <stdio.h> #include <stdlib.h> void print_char(char c, int n); int main(int argc, char *argv[]) { if(argc != 2){ printf("매개변수로 10진수 하나를 입력하세요 \n"); return 0; } for (int i = 0; argv[1][i] != '\0'; i++) { if (argv[1][i] < '0' || argv[1][i] > '9') { printf("매개변수로 10진수 하나를 입력하세요 \n"); return 0; } } // 매개변수 유효성 검사. int n = atoi(argv[1]); for (int i = 0; i < n; i++) { print_char(' ', n - i); print_char('*', 2 * i - 1); printf("\n"); } //윗부분 for (int i = 0; i < n - 1; i++) { print_char(' ', i); print_char('*', 2 * n - 2 * i - 1); printf("\n"); } // 아래부분 } void print_char(char c, int n) { for (int i = 0; i < n; i++) { printf(" %c", c); } }
9. main()함수의 매개변수로 sin, cos, all 중 하나를 입력받아서 그에 따른 삼각함수 그래프를 출력하는 프로그램
#include <stdio.h> #include <math.h> // sin(), cos() 사용 #include <string.h> //strcpy_s() 사용 const double PI = 3.141593; const double radian = PI / 180.0; int main(int argc, char* argv[]) { char p[50]; int ts = -1, tc = -1; int sin_ok = 0, cos_ok = 0; if (argc != 2) { printf("매개변수 한개를 입력해주세요. \n"); return 0; } if (argv[1][0] == 's' && argv[1][1] == 'i' && argv[1][2] == 'n') { sin_ok = 1; }else if (argv[1][0] == 'c' && argv[1][1] == 'o' && argv[1][2] == 's') { cos_ok = 1; }else if (argv[1][0] == 'a' && argv[1][1] == 'l' && argv[1][2] == 'l') { sin_ok = 1; cos_ok = 1; } printf("\t-1 0 1\n"); printf("\t | \n"); char si[] = " | "; for (int n = 0; n <= 360; n += 15) { strcpy_s(p,si); if(sin_ok == 1) { ts = (int)(20 + 20 * sin(n * radian)); p[ts] = '*'; } if (cos_ok == 1) { tc = (int)(20 + 20 * cos(n * radian)); p[tc] = 'o'; } if(ts == tc) { p[ts] = '+'; } printf("%5d\t %s\n", n, p); } }
10. main()함수의 매개변수로 10진수 3개를 입력받은 뒤, 헤론의 공식을 이용하여 삼각형의 넓이를 계산하는 프로그램
#include <stdio.h> #include <math.h> // sin(), cos(), pow() 사용 #include <string.h> //strcpy_s() 사용 #include <stdlib.h> //atoi() 사용 double tri_area_heron(double a, double b, double c); const double PI = 3.141593; const double radian = PI / 180.0; int main(int argc, char* argv[]) { double a, b, c; double area; if (argc != 4) { printf("삼각형의 3변을 10진수 3개로 입력해주세요. \n"); return 0; } a = atof(argv[1]); b = atof(argv[2]); c = atof(argv[3]); area = tri_area_heron(a, b, c); if (area != 0) { printf("변의 길이가 %.2f, %.2f, %.2f인 삼각형의 넓이는 %.2f입니다. \n", a, b, c, area); } return 0; } double tri_area_heron(double a, double b, double c) { //제일 긴 변을 확인 double max = (a>b) ? (a > c ? a : c) : (b > c ? b : c); //헤론의 공식에서 기본적으로 쓰이는 s를 구함. double s = (a + b + c) / 2; // a>b>c일때 a < b+c 일때만 삼각형이 성립됨 if (max == a && a >= b + c || max == b && b >= a + c || max == c && c >= a + b) { printf("삼각형이 성립되지 않습니다. \n"); return 0; } //pow는 제곱을 구하는 함수인데 1/2 제곱은 루트와 같음. return pow(s*(s - a)*(s - b)*(s - c), 1 / 2.0); }
11. main의 매개변수로 정수를 받아들여 소수인지를 판단하는 프로그램을 작성하라.
#include <stdio.h> #include <stdlib.h> //atoi() 사용 int main(int argc, char* argv[]) { int x; if (argc != 2) { printf("매개변수로 10진수를 입력하세요 \n"); return 0; } for (int i = 0; argv[1][i] != '\0'; i++) { if (argv[1][i] < '0' || argv[1][i] > '9') { printf("매개변수로 10진수를 입력하세요 \n"); return 0; } } //여기까지 매개변수 유효성 검사. x = atoi(argv[1]); //문자변수를 정수형으로 변환 for (int i = 2; i <= x; i++) { if (x % i == 0) { if (x == i) { printf("%d는 소수입니다. \n", x); return 0; } else { break; } } } printf("%d는 소수가 아닙니다. \n", x); }
// 이런건 짜집기만으로 끝!