전공/C
과제 5 - Control Flow 2 (6 ~ 9)
yha97
2021. 6. 21. 15:47

일반적으로 많이 나오는 구구단 출력 프로그램이다.
#include <stdio.h>
int main(){
int n=0;
int i=0;
printf("Enter number to print table: ");
scanf("%d", &n); // inputs number
for(i=1; i<11; i++) // repeats 10 times
printf("%d * %d = %d\n", n, i, n*i); // print result with calculating
return 0;
}
원하는 단을 입력받고 for문을 통해 출력하면 간단히 해결 가능하다.
n * 1부터 시작되기 때문에 i는 1부터 시작되고, n * 10 에 끝나기 때문에 11까지 증가해야 한다는 점은 주의해야 한다.

수를 입력받고 그 수의 자릿수를 출력하는 프로그램이다.
while문을 통해 간단히 해결 가능하다.
#include <stdio.h>
int main(){
int n=0;
int result = 0;
printf("Ente any number: ");
scanf("%d", &n); // inputs number
do{
n = n / 10; // division of 10
result++; // after divising, ascending result
} while(n > 0); // repeats until remain value of n is larger than 0
printf("Total digits: %d", result); // print result
return 0;
}

0이 나올때까지 수를 입력받고 0이 나온 시점에서의 모든 수의 합을 구하는 프로그램이다.
while문과 if문을 혼용할 수도 있고 while문만을 가지고 해결 가능하다.
더 확실히 하기 위해 나는 if~break를 활용하여 문제를 풀었다.
#include <stdio.h>
int main(){
double n = 0;
double sum = 0;
do{
printf("Enter a number: ");
scanf("%lf", &n); // inputs number with double type
sum += n; // sum inputted number
if(n == 0){
printf("Sum = %.2f", sum); // print result if last inputted number is 0
break; // then break
}
} while(true); // repeat when break is called
return 0;
}

과제 1에 나온 문제와 동일한 문제이다.
수를 입력받고 for문을 통해 삼각형과 역삼각형을 출력하는 문제다.
#include <stdio.h>
int main(){
int n=0;
int i, j=0;
printf("Enter number of columns:");
scanf("%d", &n); // inputs number
for(i=1; i<(n); i++){ // upper trianble (ascending)
for(j=0; j<i; j++){
printf("*"); // print each line
}
printf("\n"); // goes next line after printing each line
}
for(i=n; i>0; i--){ // lower triangle (descending)
for(j=i; j>0; j--){
printf("*");// print each line
}
printf("\n"); // goes next line after printing each line
}
return 0;
}
역삼각형의 시작점을 잘 설정하는 것이 이 문제의 관건인 듯 하다.
헷갈리면 최대로 나오는 줄이 두줄이 되는 경우가 있기 때문이다.