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);
}// 이런건 짜집기만으로 끝!