More actions
위키페이지 구조에 맞게 페이지이름바꾸기 하였습니다. - 임인택
소 개
05학번 ZeroPage 허아영의 C 코딩연습실 입니다. 아직까진 실력이 많이 부족하지만 연습 많이하다보면 늘겠죠? ^^ 틀린 부분이나, 더 좋은 방법의 코딩법을 아시면, 말씀해 주세요. 열씸히 하겠습니다!
zp숙제 => 숙제용이라고 표기
연 습
#1
5월 3일 숙제용 (devC++로)
/***********************************************************
한 변의 패턴수와 패턴모양을 입력받아 마름모를 출력하는******
프로그램 입니다. **20051095 허아영**************************
***********************************************************/
#include <stdio.h>
#include <stdlib.h>
int main()
{
int pattern_num;
int i, j;
int blank;
char pattern_shape;
printf("출력 할 마름모 변의 패턴수를 입력하십시오(정수>0) :");
scanf("%d", &pattern_num);
scanf("%c", &pattern_shape);
printf("출력 할 마름모 패턴 모양을 입력하십시오(문자) :");
scanf("%c", &pattern_shape);
for(i = 1; i <= pattern_num; i++)
{
for(blank = 0; blank < pattern_num - i; blank++)
printf(" ");
for(j = 0; j < 2*i-1; j++)
printf("%c", pattern_shape);
printf("n");
}
for(i = 1; i < pattern_num; i++)
{
for(blank = 0; blank < i; blank++)
printf(" ");
for(j = 0; j < 2*(pattern_num-i)-1; j++)
printf("%c", pattern_shape);
printf("n");
}
system("PAUSE");
return 0;
}
#2
5월 4일 (visualC++로)
두번째는 첫번째보다는 시간이 별로 안걸렸어요. 그만큼 조잡(?)한가요?ㅡㅡ
/*************************************************************
*패턴모양만 입력받아 한변에 패턴 5개가 되는 마름모를 출력하는*
*프로그램입니다. [컴퓨터공학부 20051095 허아영] *
*************************************************************/
#include <stdio.h>
#include <string.h>
void main()
{
int i, j, k;
char shape;
printf("패턴모양을 입력하십시오 :");
scanf("%c", &shape);
for(i = 0; i <= 4; i++)
{
for(j = 4; j >= i; j--)
printf(" ");
for(k = 0; k <= 2*i; k++)
printf("%c", shape);
printf("n");
}
for(i = 0; i <= 3; i++)
{
for(j = 0; j - 1 <= i; j++)
printf(" ");
for(k = 6; k >= 2*i; k--)
printf("%c", shape);
printf("n");
}
}
#3
5월 5일 (devC++) 직각 삼각형의 높이와 패턴모양을 입력받은 후 출력하는 프로그램입니다.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j;
int h = 0;
char shape;
printf("삼각형의 높이 패턴의 모양을 입력하십시오(예 : 5*) : ");
scanf("%d%c", &h, &shape);
for(i = 1; i <= h; i++)
{
for (j = 0; j < i; j++)
{
printf("%c", shape);
}
printf("n");
}
system("PAUSE");
return 0;
}
#4
5월 5일 (devC++) 두 숫자를 입력받은후 두 숫자 중에 큰 숫자를 출력하고, 두 숫자의 차를 구하는 프로그램입니다.
#include <stdio.h>
/*******************************************************************************
* 20051095 허아영 두 숫자를 입력받아 더 큰 숫자를 출력시키고, 큰 수와 작은수의 *
* 차를 구하는 프로그램입니다.
***************************************************************************** */
void main()
{
int a, b;
printf("두 수를 입력하십시오 :");
scanf("%d %d", &a, &b);
if(a > b)
{
printf("큰수는 %d입니다n", a);
printf("차 : %d - %d = %dn", a, b, a-b);
} else
{
printf("큰수는 %d입니다n", b);
printf("차 : %d - %d = %dn", b, a, b-a);
}
system("PAUSE");
}
↓↓↓ 정리차원에서 고쳐 보았습니다.
#include <stdio.h>
void main()
{
int a, b, Max, dif;
printf("두 수를 입력하십시오 :");
scanf("%d %d", &a, &b);
if(a > b)
{
Max = a;
dif = a-b;
} else
{
Max = b;
dif = b-a;
}
printf("큰 수는 %d 입니다.n", Max);
printf("두 수의 차이는 %d입니다n", dif);
system("PAUSE");
}
↓↓ 같은 수를 입력 받을 때를 생각을 못했어서, 다시 정리요 ㅎㅎ
#include <stdio.h>
void main()
{
int a, b, Max, dif;
printf("두 수를 입력하십시오 :");
scanf("%d %d", &a, &b);
if(a > b)
{
Max = a;
dif = a-b;
printf("큰 수는 %d 입니다.n", Max);
printf("두 수의 차이는 %d입니다n", dif);
}
else if(a == b)
{
printf("두 수가 같습니다.n");
}
else
{
Max = b;
dif = b-a;
printf("큰 수는 %d 입니다.n", Max);
printf("두 수의 차이는 %d입니다n", dif);
}
system("PAUSE");
}
#5
김승욱 교수님 홈페이지에 있는 실습자료인데 , 혼자 만들어보았습니다. 2번 문제는 너무 어려워서, 아직은 분석중이에요 -.- 문제1. 로또 복권의 6자리 수를 랜덤하게 생성하데, 사용자가 발생 횟수를 선택할 수 있도록 하시오. 예를 들면, 초기 화면에서 사용자가 5를 입력하면 랜덤 수 6개를 5번 출력 하는데 출력 양식이 다음과 같도록 프로그램을 완성하시오.
< LOTTO RANDOM NUMBER GENERATOR > Enter the game count : 5 ======================== GAME 1 : 21 18 31 2 4 30 GAME 2 : 20 41 38 2 26 32 GAME 3 : 15 16 25 31 36 37 GAME 4 : 34 32 23 27 11 6 GAME 5 : 38 15 36 15 21 24 ========================
- 화면에서 5개의 점수를 입력 받아 1차원 배열에 저장하고 입력 받은 수의 합과 평균, 최대값과 최소값까지 산출하여 그 결과를 아래와 같이 보여주시오.
Enter a number for score[0] : 80
Enter a number for score[1] : 50
Enter a number for score[2] : 99
Enter a number for score[3] : 74
Enter a number for score[4] : 88
[[ The contents of score array ]]
80 50 99 74 88
sum = 391, avg = 78.2
max = 99, min = 50
score[0] : 80, rank = 3
score[1] : 50, rank = 5
score[2] : 99, rank = 1
score[3] : 74, rank = 4
score[4] : 88, rank = 2
ㄷ ㅏ짜면 올리겠습니다 ! 정렬하는 여러방법중에 가장 쓸만 한것 (?) 이 뭘까요 aa
퀵 소트, 버블 소트 등 여러가지 방법이 있는데. 일단은 버블 소트가 구현하기 쉬울 꺼야. 그러나 혼자 어떻게 해야할지 고민해보는 것도 좋겠네 ㅎㅎ. -강희경 이 문제 내가 풀어봤는데 정렬 문제라고 보는 것보다는 순위를 매기는 문제라고 생각하면 더 쉽게 풀리겠네. 강희경/메모장을 참고해봐.
- 선배 감동이에요 ㅠㅠ 허아영
=== 세번째 C 과제 === 화면 출력제어에 대한 연습 • 2 ∼ 9 까지의 구구단을 한 화면에 출력하는 프로그램을 작성하시오. 포인터 처리에 대한 연습 • 포인터로 배열들의 요소를 지적하고 배열간의 자료교환을 하는 프로그램을 작성하시오. - 변수형과 포인터와의 관계, 포인터가 가리키는 대상의 크기 등을 보여주는 기능을 첨가하여 작성하시오.
=== 거듭제곱의 반대 ===
시작값을 1024로 할 때
#include <stdio.h>
int calcul(int num);
void print_result(int result);
void main()
{
int result, n = 1024;
while(n > 1)
{
result = calcul(n);
print_result(result);
n = result;
}
}
int calcul(int num)
{
num /= 2;
return num;
}
void print_result(int result)
{
printf("%d / 2 = %dn", result*2,result);
}
소스짠 후 느낀점
함수 이름을 막 짓던 습관을 버리기로했다. 함수를 기능 별로 만들려는 습관은 가지기로 했다.
팩토리얼(재귀함수 쓰지않고)
/*1에서 n까지의 곱을 구하는 프로그램입니다.
>>팩토리얼- 재귀함수<<를 쓰지않고 !! */
#include <stdio.h>
int fac(int n);
void main()
{
int num, result;
printf("n = ");
scanf("%d", &num);
result = fac(num);
printf("%d", result);
}
int fac(int n)
{
int fac_result = 1,i = 1;
while(i <= n)
{
fac_result *= i;
i++;
}
return fac_result;
}
소스 짠 후
아직도 프로그래밍하는데 세미콜론을 빠트린다던지, scanf 함수를 쓸 때 변수앞에 &을 붙지지 않을 때가 다반사다. 습관이 중요하다. ! ! 좋은습관을 만들자!!.
입력받은 한문자의 2진수 중 0의 갯수
/*한문자를 입력받아 문자의 비트중 0의 갯수*/
#include <stdio.h>
int countbit(char ch);
void main()
{
char ch;
printf("input 한개의 문자 ==>");
scanf("%c", &ch);
printf("n 0의 갯수 : %dn", countbit(ch));
}
int countbit(char ch)
{
int count = 0;
for(; ch != 0; ch>>=1)
{
if((~ch) & 1 )
{
count++;
}
}
return count;
}
단어의 갯수를 출력
장난으로 짜봤다. 예외처리 하지 않음.
#include <stdio.h>
void main()
{
int i = 0, count = 0;
char str[50];
printf("단어입력 : ");
gets(str);
while(str[i])
{
if(str[i] == ' ')
{
count++;
}
i++;
}
printf("단어의 수 : %d n", count+1);
}
영소문자, 대문자, 특수문자, 수치문자의 갯수
gets 하다가 scanf로 바꾼 ! ㅠ
#include <stdio.h>
void main()
{
int i = 0, countBig = 0, countSmall = 0, countSpe = 0, countNum = 0;
char str[100];
printf("영대문자, 영소문자, 수치문자, 특수문자의 수 알아내는 프로그램n");
printf("문장 입력 : ");
scanf("%s", str);
while(str[i] != NULL)
{
if((str[i] >= 48) && (str[i] <= 59))
{
countNum++;
}else if((str[i] >= 65) && (str[i] <= 90))
{
countBig++;
}else if((str[i] >= 97) && (str[i] <= 122))
{
countSmall++;
}else
{
countSpe++;
}
i++;
}
printf("소문자 : %d, 대문자 : %d, 수치문자 : %d, 특수문자 : %d", countSmall, countBig, countNum, countSpe);
}
Thread
- 오 아영이 열심히 하는데 - 상협
- 감사합니다^^; 다른애들에 비하면 열씸히 하는것도 아니죠 ^^
- ^^ 자식. 완전 열심히 해! 나도 같이 하자! - 보창
- 네 ^^
- ^^ 자식. 완전 열심히 해! 나도....음.. 난 골수까지 귀차니즘이 스며서..에잇.혼자 열심히 해서 장학금 타서 밥사주!! - 조현태