U E D R , A S I H C RSS

새싹교실/2012/AClass/2회차

곽길문


복습과제

1.0과 1000 사의 정수를 입력받아 모든 자릿수를 더하여 출력하는 프로그램을 짜 주세요.


#include<stdio.h>

int main()
{

int num =0;
int sum =0;
printf("0과 1000사의 정수를 입력 :\n");
scanf("%d", &num);

do
{
sum += num %10;
num/=10;

}while(!(num == 0));
printf("각 자리수들의 합 : %d \n",sum);

return 0;
}


2.소문자를 대문자로 바꾸는 프로그램을 작성해 주세요.

#include <stdio.h>


int main()
{
char replace;

printf("소문자 : ");
scanf("%c",&replace);

if( 97 <= replace && replace <= 129){

printf("대문자는 :%c\n", replace-32);
}else if( 65 <=replace && replace <= 90){

printf("대문자는 :%c\n", replace+32);
}
return 0;

}


3.다음 모양을 출력하는 프로그램을 작성해 주세요.

한자리 숫자다가 2자리 숫자면서 깨지는 것은 예외처리해주셔도 되고 하지 않으셔도 됩니다.

방법은 if(10>x) printf(" ");입니다.

1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
16 17 18 19 20 21

#include<stdio.h>

int main()
{
int i,j;
int num=1;



for(i=0;i<5;i++){

for(j=0;j<=i;j++){

printf("%d",num);
printf(" ");
num+=1;
}
printf("\n");
}


return 0;



}
4.다음 모양을 출력하는 프로그램을 작성해 주세요.

1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
16 17 18 19 20 21

#include<stdio.h>// 자리 못 맞추겠음..

int main(void)
{
int a;
int b;
int num = 1;
for(a=1;a<6;a++){

for(b=6;b>a;b--){
printf(" ");
}
for(b=1;b<=a;b++){
printf("%d",num);
num+=1;

}
printf("\n");
}


}
5.위 두 프로그램을 일반화 시켜 입력받은 숫자만큼 출력해주는 프로그램을 작성해주세요.(위 프로그램은 21을 입력)
//1.3.6.10 수열 규칙을 찾아서 행을 만들어 주려고 한다… 코딩 생각 하는데 시간 세시간 초과.. 그래서 6을 입력하면 행 6 되는 삼각형 만듬..


#include<stdio.h>

int main()
{
int i,j;
int num=1;
int a;

int k=0;

printf("정수 입력:");
scanf("%d",&a);

//규칙

for(i=0;i

for(j=0;j<=i;j++){

printf("%d",num);
printf(" ");
num+=1;

}
printf("\n");
}

return 0;

}

6.위 프로그램처럼 숫자를 순서대로 출력하는 프로그램을 피라미드 형태로 작성해 주세요.

// 숫자로 못하겠어서 별로 만들어 봤어요.

#include<stdio.h>

int main()
{

int i;
int star;
int blank;
int scan;

printf("행수 입력:");
scanf("%d",&scan);


for(i=1;i<=scan;i++)
{
for(blank=scan; blank>i;blank--)
printf(" ");
for(star=1;star<=2*i-1;star++)
printf("*");
printf("\n");

}


}
7.위 프로그램처럼 숫자를 순서대로 출력하는 프로그램을 다아몬드 형태로 작성해 주세요.

// *로 해봤어요..

#include<stdio.h>
int diamond(int a);
int main()
{
int i;
printf("행수 입력-홀수: ");
scanf("%d",&i);
diamond(i);
return 0;


}
int diamond(int a)
{
int i,j;
for(i=0;i<=a/2;i++){
for(j=a/2;j>i;j--){
printf(" ");
}
for(j=0;j<=i;j++){
printf("*");
}
for(j=0;j
printf("*");
}
printf("\n");

}
for(i=0;i
for(j=0;j<=i;j++){
printf(" ");

}
for(j=a/2;j>i;j--){
printf("*");
}
for(j=a/2;j>i+1;j--){
printf("*");

}
printf("\n");
}
return i,j;
}
8.아래 프로그램을 참고하여 60점 하는 F, 61~70점 D, 71~80 C, 81~90 B, 90~ A인 프로그램을 작성해주세요.

#include <stdio.h>
int main(){
int num;

printf("성적 입력 : ");
scanf("%d", &num);

switch(num/10){
case 10 :
case 9 :
printf("A\n");
break;
case 8 :
printf("B\n");
break;
case 7 :
printf("C\n");
break;
case 6:
printf("D\n");
break;
default :
printf("F\n");
break;
}

}
9.101부터200까지의 모든 정수를 더해서 반환하는 '함수'를 작성해주세요.(main문에는 sum=Sum(); printf("%d",sum); 있도록해주세요)
#include<stdio.h>

int Sum(int x);
int main()
{
int su;
int sum;
sum=Sum(su);

printf("101부터 200까지의 합: %d\n",sum);

return 0;
}

int Sum(int x)
{
int sum=0;

for(x=100;x<201;x++)
sum+=x;

return x,sum;

}

10.재귀함수를 용해 n!을 출력하는 프로그램을 작성해 주세요.


#include<stdio.h>


int factorial(int x);
int main()
{
int n;

printf("수 입력:");
scanf("%d",&n);


factorial(n);
printf("%d! = %d\n",n,factorial(n));


return 0;
}
int factorial(int x){

if(x==1)
return 1;

else return
x*factorial(x-1);



}

11.n!을 출력하는 프로그램을 for문으로 작성해주세요.
#include<stdio.h>

int main()

{

int j;
int a;
int factorial=1;

printf("factorial,input number:");
scanf("%d",&a);

if(a==1)
return 1;

for(j=1;j<=a;j++){
factorial *=j;

}
printf("%d\n",factorial);

return 0;


}

12.재귀함수를 용해 1부터10까지를 더하는 프로그램을 작성해 주세요.
#include<stdio.h>


int self(int x);
int main(){

int result;
int a;

result =self(a);// 재귀 함수

printf("%d\n",result);
return 0;
}
int self(int x){

int sum=0;
for(x=1;x<11;x++){
sum=x+sum;
}

return x,sum;
}
13.배열에 {7,4,2,9,3,1,2}가 들어있습니다. 배열에서 3 있는지 없는지를 찾아서 출력해주는 프로그램을 작성해주세요.

#include<stdio.h>

int main()
{

int a7= {7,4,2,9,3,1,2};
int i=0;


for(i=0;i<7;i++){
if(ai==3)
printf("3 있습니다.");

}
return 0;
}
14.배열에 {7,4,2,9,3,1,2}가 들어있습니다. 배열에서 1 몇번째에 있는지를 찾아서 출력해주는 프로그램을 작성해주세요. (단, 7은 첫번째입니다)

#include<stdio.h>

int main()
{

int a7= {7,4,2,9,3,1,2};
int i=0;
int count=0;

for(i=0;i<7;i++){
count+=1;
if(ai==1){

printf("1 %d번째에 있습니다.", count);
}
}

}
15.배열에 {7,4,2,9,3,1,2}가 들어있습니다. 배열에서 2가 있는지 없는지를 검사하고, 있다면 어디에 있는지 전부 출력해주는 프로그램을 작성해주세요.
// 몇번째 있는지는 if문 두 번돌아서 3번째 7번째 뜨는데.. 한번에 출력하는 거는 잘 못하겠어요…
#include<stdio.h>

int main()
{

int a7= {7,4,2,9,3,1,2};
int i=0;
int count=0;

for(i=0;i<7;i++){
count+=1;
if(ai==2){

printf("2가 %d번째에 있습니다.\n", count);
}
}

}

16.배열에 {7,4,2,9,3,1,2}가 들어있습니다. 배열을 정렬(오름차순으로)하고, 출력하는 프로그램을 작성해주세요.

#include<stdio.h>


void sort(int a[], int n);
void main()
{
int list7={7,4,2,9,3,1,2};
int n=sizeof(list)/sizeof(int);
int i;
sort(list,n);

for(i=0;i<7;i++)
printf("%d\n",listi);

}

void sort(int a[], int n)
{

int i,j,temp;
for(i=0;i
for(j=i+1;j
if(ai>aj){
temp=ai;
ai=aj;
aj=temp;
}

}

}

}




•예습과제

1.2차원 배열 무엇인지 쓰고, 어떻게 선언하는지도 작성한 뒤, 용한 간단한 프로그램을 작성해주세요.

-동일한 데터형의 많은 변수를 처리하기 위한 단수 변수를 사용하면 변수름을 각각 다른 름으로 사용해야하기 때문에 많은 불편 따른다. 러한 불편함을 덜기 위하여 같은 데터형인 일련의 기억장소를 표현한 변수를 '배열변수'라 한다. 즉 배열을 용하면 여러개의 변수를 간단히 표현할 수가 있다. 2차원 배열은 '데터형,배열명,그리고 '을 나타내어 표현한다. 1차원 배열은 배열 요소의 크기와 데터형 동일한 기억장소를 1개의 차원으로 선언하였다고 말하면 2차원 배열은 2차원으로 선언(행과열)한 것다.

#include<stdio.h>

int main()
{
static int x23; //2행 3열의 2차원 배열선언
int j,k,sum;

x00 = 1;
x01 = 2;
x02 = 3;
x10 = 4;
x11 = 5;
x12 = 6;


sum=0;
for(j=0;j<2;j++) //행
for(k=0;k<3;k++) // 열
sum=sum+xjk;
printf("2차원 배열의 합=%d\n",sum);

}

2.srand()함수가 무엇인지 찾아쓰고, time()을 용해 랜덤으로 숫자를 하나 출력하는 프로그램을 작성해주세요.

- 난수(random number)를 생성할때 stdlib.h헤더파일을 코드에 포함시키고 srand()를 사용한다.rand()함수는 매번 그 값 같은 반면에 매실행때마다 난수를 다르게 생성하기 위해서 srand()를 사용한다.
srand역시 stdlib.h에 포함되어 있다. srand는 시드값을 주어 사용하는 것고 그 시드값으로부터 특정한 법칙으로 난수를 생성하는 것다.따라서 매번 다른 난수를 얻으려면 시드값을 계속 바꾸어주어야 한다.
러한 코드개선을 위해서 time()함수를 사용해야 한다. 함수를 사용하기 위해 time.h 헤더 파일을 코드에 포함시켜야 한다. 또한 time함수는 1970년 1월 1일 후 경과된 시간을 초 단위로 반환하는 함수 다.

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main()
{
int a=0;
printf("rand()함수를 사용,1개의 random number 나타내기 \n");

srand(time(NULL)); //시드값 = 시간

printf("%d\n",rand());

return 0;

}

3.포인터가 무엇인지 쓰고, 포인터를 선언하는 방법을 쓰세요.
-포인터는 기억장소에 있는 어떤 변수의 주소를 말한다. 즉, 다른 기억장소 위치의 주소를 갖고 있는 변수다.포인터는 두개의 단일 연산자인 &와 *로서 정의한다. &연산자는 일반적인 변수 름으로 사용되고 그 변수의 주소를 의미한다. 즉 &a는 a의 주소를 의미한다. *p는 p안에 있는 주소 위치의 내용을 의미한다. &는 주소 연산자고 , *는 간접 연산자로 포인터선언을 의미한다. 일반적인 포인터 선언형식: 데터형 *포인터변수명; 다.

4.배열과 포인터의 공통점과 차점을 찾아보고, 써보도록 하세요.

-공통적인 부분은 배열 첨자에 의해서 행해지는 조작은 포인터로서 모두 표현할 수 있다는 것다.
예를 들어
선언문 ---> int a3, int *ptr =a;
배열과 선어문 ---> a0 == *ptr
a1 == *(ptr+1)
a2 == *(ptr+2)

위와 같은 표현 가능하다.(포인터명에 *을 사용하는 것은 지시하는 곳에 저장된 값을 나타내는 것다.)

점으로는 포인터는 변수인데 비해 배열은 상수고 포인터는 언제든지 다른 대상을 가리킬수 있지만 배열은 선언될 때 그 위치가 미 고정되어 다른 대상을 가리킬 수 없다.또한 포인터는 동적으로 결정할수 있지만 배열 가리키는 배열의 크기는 선언할 때부터 정적으로 결정되어있다. 배열로 []연산자를 용해 그 값을 읽는 것과 포인터 간접 참조 연산으로 그 값을 읽는 것의 속도 차가 있다.

도상희


복습과제
1. 0과 1000 사의 정수를 입력받아 모든 자릿수를 더하여 출력하는 프로그램을 짜 주세요.
/10, %10 등을 용해서 해 보세요.
#include <stdio.h>
int main(){

int num;
int temp1, temp2, temp3;
int sum=0;

printf("0-1000사의 수 입력: ");
scanf("%d", &num);

if(num>=0 && num<=1000)
{
temp1=num/1000;
temp2=num%1000;
sum=temp1;
temp1=temp2/100;
temp3=temp2%100;
sum+=temp1;
temp1=temp3/10;
temp2=temp3%10;
sum+=temp1;
sum+=temp2;
printf("%d\n",sum);
}else printf("0-1000사의 숫자 아님\n");

return 0;
}//01.c


2. 소문자를 대문자로 바꾸는 프로그램을 작성해 주세요.
#include <stdio.h>
int main(){

char al1,al2 ;
printf("입력: ");
scanf("%c",&al1);

if(al1>='a' && al1<='z') //소문자일 경우
al2=al1-32; //아스키코드에서 32빼서 소문자로 변환
else if(al1>'A' && al1<='Z') //대문자일 경우
al2=al1+32; //아스키코드에서 32를 더해서 대문자로 변환

printf("%c\n",al2);

return 0;
}//인터넷 참조했음! 02.c







3. 다음 모양을 출력하는 프로그램을 작성해 주세요.
한자리 숫자다가 2자리 숫자면서 깨지는 것은 예외처리해주셔도 되고 하지 않으셔도 됩니다.
방법은 if(10>x) printf(" ");입니다.
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
16 17 18 19 20 21

#include <stdio.h>
int main(){

int i, j;
int num=1;

for(i=1 ; i<=6 ; i++){
for(j=1 ; j
printf("%3d",num);
num+=1;
}
printf("\n");
}

return 0;
}//03.c


4. 다음 모양을 출력하는 프로그램을 작성해 주세요.
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
16 17 18 19 20 21

#include <stdio.h>
int main(){

int i, j, k;
int num=1;

for(i=1 ; i<=6 ; i++){
for(j=5 ; j>=i ; j--){
printf(" ");
}
for(k=1 ; k
printf("%3d",num);
num+=1;
}
printf("\n");
}

return 0;
}//04.c
5. 위 두 프로그램을 일반화 시켜 입력받은 숫자만큼 출력해주는 프로그램을 작성해주세요.(위 프로그램은 21을 입력)
#include <stdio.h>
int main(){

int i, j, n;
int num=1;

scanf("%d",&n);

for(i=1 ; ; i++){
for(j=1 ; j
if(n==num){
printf("%3d",num);
printf("\n");
return 0;
}
printf("%3d",num);
num+=1;
}
printf("\n");
}

return 0;
}//05.c


6. 위 프로그램처럼 숫자를 순서대로 출력하는 프로그램을 피라미드 형태로 작성해 주세요.
#include <stdio.h>
int main(){

int i, j, k, n;
int num=1;
scanf("%d",&n);

for(i=0;i
for(j=1 ; j
printf(" ");
}
for(k=0 ; k<2*i+1 ; k++){
printf("%3d",num);
num++;
}
printf("\n");
}

return 0;
}


7. 위 프로그램처럼 숫자를 순서대로 출력하는 프로그램을 다아몬드 형태로 작성해 주세요.




8.아래 프로그램을 참고하여 60점 하는 F, 61~70점 D, 71~80 C, 81~90 B, 90~ A인 프로그램을 작성해주세요.
#include <stdio.h>
int main(){
int num;
printf("성적 입력 : ");
scanf("%d", &num);

switch((num-1)/10){
case 9 :
printf("A\n");
break;
case 8 :
printf("B\n");
break;
case 7 :
printf("C\n");
break;
case 6 :
printf("D\n");
break;
default :
printf("F\n");
break;
}
}//08.c 인터넷참조!



9. 101부터 200까지의 모든 정수를 더해서 반환하는 '함수'를 작성해주세요.
(main문에는 sum=Sum(); printf("%d",sum); 있도록해주세요)
#include <stdio.h>
int Sum(void);
int main(){
int sum;
sum = Sum();
printf("%d\n",sum);
return 0;
}
int Sum(void){
int x=101;
int sum=0;
for(x=101 ; x<=200 ; x++)
sum+=x;

return sum;
}//09.c









10. 재귀함수를 용해 n!을 출력하는 프로그램을 작성해 주세요.
#include <stdio.h>

int fac(int);
int main(){
int num;
printf("숫자 입력 : ");
scanf("%d", &num);

printf("%d! = %d\n",num, fac(num));
return 0;
}

int fac(int x){
if(x==1)
return 1;
else
return x*fac(x-1);
}//10.c



11. n!을 출력하는 프로그램을 for문으로 작성해주세요.
#include <stdio.h>
int main(){

int i, num;
int fac=1;
printf("숫자 입력 : ");
scanf("%d", &num);

for(i=1 ; i<=num ; i++){
fac *= i;
}
printf("%d! = %d\n",num, fac);

return 0;
}//11.c



12. 재귀함수를 용해 1부터10까지를 더하는 프로그램을 작성해 주세요.
#include <stdio.h>
int sum(int);
int main(){

printf("1부터 10까지 합 : %d\n", sum(10));
return 0;
}

int sum(int x){

if(x>0) return (x+sum(x-1));
else return 0;

}
13. 배열에 {7,4,2,9,3,1,2}가 들어있습니다. 배열에서 3 있는지 없는지를 찾아서 출력해주는 프로그램을 작성해주세요.
#include <stdio.h>
int main(){

int arr[] = {7,4,2,9,3,1,2};
int i;
int k=0;
for(i=0 ; i<7 ; i++){
if(arri==3) k++;
}
if(k!=0)
printf("3 존재\n");
else
printf("3 없음\n");

return 0;
}//13.c


14. 배열에 {7,4,2,9,3,1,2}가 들어있습니다. 배열에서 1 몇번째에 있는지를 찾아서 출력해주는 프로그램을 작성해주세요. (단, 7은 첫번째입니다)
#include <stdio.h>
int main(){
int arr[]={7,4,2,9,3,1,2};
int i;
for(i=0 ; i<7 ; i++){
if(arri==1)
printf("%d 번째\n",i+1);
}
return 0;
}//14.c

15. 배열에 {7,4,2,9,3,1,2}가 들어있습니다. 배열에서 2가 있는지 없는지를 검사하고, 있다면 어디에 있는지 전부 출력해주는 프로그램을 작성해주세요.
#include <stdio.h>
int main(){
int i;
int c=0;
int arr[]={7,4,2,9,3,1,2};

for(i=0 ; i<7 ; i++){
if(arri==2) c++;
}
if(c!=0){
printf("2 있음\n");
for(i=0 ; i<7 ; i++){
if(arri==2) printf("%d번째 존재\n",i+1);
}
}else printf("2 없음\n");
return 0;
}//15.c



16. 배열에 {7,4,2,9,3,1,2}가 들어있습니다. 배열을 정렬(오름차순으로)하고, 출력하는 프로그램을 작성해주세요.
#include <stdio.h>
int main(){

int arr[]={7,4,2,9,3,1,2};
int temp;
int i,j;

for(i=0 ; i<7 ;i++) printf("%d ",arri);
printf("\n");

for(i=0 ; i<6 ; i++){
for(j=i+1 ; j<7 ; j++){
if(arri>=arrj){
temp=arri;
arri=arrj;
arrj=temp;
}
}
}

for(i=0 ; i<7 ;i++) printf("%d ",arri);
printf("\n");

return 0;
}//16.c



예습과제
1. 2차원 배열 무엇인지 쓰고, 어떻게 선언하는지도 작성한 뒤, 용한 간단한 프로그램을 작성해주세요.
int arrij;
가 i인 int형 배열을 j개 모아 놓은 배열.
첫번째 인덱스 값(i) 의미하는 바는 세로줄(열)의 길고, 두번째 인덱스 값(j) 의미하는 바는 가로줄(행)의 길.

#include <stdio.h>
int main(){
int arr33 = {
{1,2,3},
{4,5,6},
{7,8,9},
};
int i,j;
for(i=0 ; i<3 ; i++){
for(j=0 ; j<3 ; j++){
printf("%d ",arrij);
}
printf("\n");
}
return 0;
}
2. srand()함수가 무엇인지 찾아쓰고, time()을 용해 랜덤으로 숫자를 하나 출력하는 프로그램을 작성해주세요.
seed값을 입력받아 난수를 생성하는 함수.
rand()%a+b : a부터 b까지 수 랜덤 출력
#include <stdio.h>
#include <stdlib.h> //rand함수 사용
#include <time.h> //time함수 사용

int main(){

srand(time(NULL));
printf("%d\n",rand()%100+1); //1-100중 하나 출력

return 0;
}//1_02.c


3. 포인터가 무엇인지 쓰고, 포인터를 선언하는 방법을 쓰세요.
포인터란 메모리의 주소 값을 저장하기 위한 변수. 타입에 상관없 크기는 4바트(컴퓨터 주소 체계가 4바트로 표현된다는 것을 의미)

int *a; //int형 변수의 주소 값을 지닐 수 있는 int형 포인터.
char *b; // char형 변수의 주소 값을 지닐 수 있는 char형 포인터.
double *c; // double형 변수의 주소 값을 지닐 수 있는 double형 포인터.


4. 배열과 포인터의 공통점과 차점을 찾아보고, 써보도록 하세요.
배열 arr가 선언되어 있고, 포인터 p 배열의 시작주소를 가리키고 있다면!

<배열과 포인터의 공통점>
- arr와 p은 주소를 나타냄
- arri와 *(p+i)는 같음
- arri와 pi는 같음
- *arr 혹은 *p 가능함
- *(arr+i) 혹은 *(p+i)가 가능
<배열과 포인터의 차점>
- 배열명은 상수고 포인터는 변수
- 배열명에 주소를 대입할 수 없다.
- 배열명에 증감연산자(array++, array--)를 쓸 수 없다

한송

복습과제
1. 0과 1000 사의 정수를 입력받아 모든 자릿수를 더하여 출력하는 프로그램을 짜 주세요.(/10, %10 등을 용해서 해 보세요.)
#include <stdio.h>

int main()
{
int num,a,b,c,d;

printf("숫자를 입력하세요 : ”);
scanf("%d",&num);

if(99
{
a=num/100;
b=num%100;
c=b/10;
d=b%10;
printf("%d의 자리수의 합은 %d입니다.\n",num,a+c+d);
}

else if(num<100)
{
a=num/10;
b=num%10;
printf("%d의 자리수의 합은 %d입니다.\n",num,a+b);
}

}

2. 소문자를 대문자로 바꾸는 프로그램을 작성해 주세요.
#include<stdio.h>
#include<string.h>


int main()
{
char in50,out50;
int i,len;
int diff='a'-'A';

printf("문자 입력 : ");
gets(in);

len = strlen(in);
for(i=0;i
{
if(('A'<=ini) && (ini<='Z'))
outi = in i + diff;
else if (('a'<=ini) && (ini<='z'))
outi = ini-diff;
else
outi = ini;
}
outi = '\0';

printf("변환된 문자 : %s \n", out);
}
////책에서 참고
3. 다음 모양을 출력하는 프로그램을 작성해 주세요.
o 한자리 숫자다가 2자리 숫자면서 깨지는 것은 예외처리해주셔도 되고 하지 않으셔도 됩니다.
o 방법은 if(10>x) printf(" ");입니다.
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
16 17 18 19 20 21

4. 다음 모양을 출력하는 프로그램을 작성해 주세요.
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
16 17 18 19 20 21

5. 위 두 프로그램을 일반화 시켜 입력받은 숫자만큼 출력해주는 프로그램을 작성해주세요.(위 프로그램은 21을 입력)

6. 위 프로그램처럼 숫자를 순서대로 출력하는 프로그램을 피라미드 형태로 작성해 주세요.

7. 위 프로그램처럼 숫자를 순서대로 출력하는 프로그램을 다아몬드 형태로 작성해 주세요.

8. 아래 프로그램을 참고하여 60점 하는 F, 61~70점 D, 71~80 C, 81~90 B, 90~ A인 프로그램을 작성해주세요.
#include <stdio.h>
int main()
{
int num;
char grade;

printf("성ù¨¬적u 입O력¤A : ");
scanf("%d", &num);

switch(num/10){
case 10 :
printf("A\n");
break;
case 9 :
printf("A\n");
break;
case 8 :
printf("B\n");
break;
case 7 :
printf("C\n");
break;
case 6 :
printf("D\n");
break;
default :
printf("F\n");
break;
}

}

9. 101부터200까지의 모든 정수를 더해서 반환하는 '함수'를 작성해주세요.(main문에는 sum=Sum(); printf("%d",sum); 있도록해주세요)

#include <stdio.h>

int Sum(int n);

int main()
{
int sum;
sum=Sum(200);
printf("101~200까¾i지o의C 합O은¨¬ %d\n",Sum);
return 0;
}
int Sum(int n)
{
if(n==101)
return 0;
else
return n+Sum(n-1);
}


10. 재귀함수를 용해 n!을 출력하는 프로그램을 작성해 주세요.
#include <stdio.h>

int fact(int n);

int main()
{
int n;

printf("숫자를 입력하세요 : ");
scanf("%d",&n);
printf("fact(%d) = %1d입니다. \n",n,fact(n));

}

int fact(int n)
{
if(n==0)
return 1;
else
return n*fact(n-1);
}

11. n!을 출력하는 프로그램을 for문으로 작성해주세요.
#include <stdio.h>


int main()
{
int n,i;
int fact=1;

printf("숫자를 입력하세요 : ");
scanf("%d",&n);

for(i=1;i<=n;i++)
{
fact =i*fact;

}
printf("%d! = %d\n",n,fact);


return 0;
}



12. 재귀함수를 용해 1부터10까지를 더하는 프로그램을 작성해 주세요.
.#include <stdio.h>

int hap(int n);

int main()
{
printf("1~10까지의 합은 %d\n",hap(10));
return 0;
}
int hap(int n)
{
if(n==0)
return 0;
else
return n+hap(n-1);
}

13. 배열에 {7,4,2,9,3,1,2}가 들어있습니다. 배열에서 3 있는지 없는지를 찾아서 출력해주는 프로그램을 작성해주세요.

#include<stdio.h>


int main()
{
int arr[] = {7,4,2,9,3,1,2};
int i;

for(i=0;i<=7;i++ )
{


}
printf("3 있습니다.");
}

//////For문 안에 어떻게 해야할지 잘 모르겠어요


14. 배열에 {7,4,2,9,3,1,2}가 들어있습니다. 배열에서 1 몇번째에 있는지를 찾아서 출력해주는 프로그램을 작성해주세요. (단, 7은 첫번째입니다)



15. 배열에 {7,4,2,9,3,1,2}가 들어있습니다. 배열에서 2가 있는지 없는지를 검사하고, 있다면 어디에 있는지 전부 출력해주는 프로그램을 작성해주세요.


16. 배열에 {7,4,2,9,3,1,2}가 들어있습니다. 배열을 정렬(오름차순으로)하고, 출력하는 프로그램을 작성해주세요.


• 예습과제
1. 2차원 배열 무엇인지 쓰고, 어떻게 선언하는지도 작성한 뒤, 용한 간단한 프로그램을 작성해주세요.
배열의 첨자가 두 개인 배열
원소 자료형 배열열크기1열크기2;
#include<stdio.h>

int main()
{
int arr33;
int i,j;
int k=1;

for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
arrij=k;
k++;
}
}

printf("arr00부¬I터I arr33까지 출력\n");

for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%2d",arrij);
}
printf("\n");
}

}


2. srand()함수가 무엇인지 찾아쓰고, time()을 용해 랜덤으로 숫자를 하나 출력하는 프로그램을 작성해주세요.
Void srand(unsigned int SEED);
Rand가 생성하는 초기 난수를 변경함. SEED는 초기 난수를 변경하는데 사용되지만 SEED자체가 초기난수가 되는 것은 아님
헤더파일 : <stdlib.h>

3. 포인터가 무엇인지 쓰고, 포인터를 선언하는 방법을 쓰세요.
포인터 – 메모리에 부여된 주소 주소‘값’을 나타낼 때는 포인터 상수라 하고, 주소를 저장할 수 있는 ‘변수’를 나타내는 포인터 변수라 한다.
자료형*포인터 변수;
4. 배열과 포인터의 공통점과 차점을 찾아보고, 써보도록 하세요.
***공통점
배열과 포인터 둘다 메모리 주소값을 나타낸다.
*** 차
1)포인터는 변수인데 비해 배열은 상수다.
2)포인터가 가르키는 배열의 크키는 동적으로 결정할 수 있지만 배열의 크기는 선언할 때 정적으로 결정된다.
3)배열은 그 자체가 크기 때문에 함수의 인수로 전달할 수 없지만 포인터는 대상체가 무엇든간에 4바트와 크기밖에 차지하지 않으므로 함수로 전달할 수 있다.
4)배열로 요소를 읽는 것과 포인터로 대상체를 읽는 동작의 속도 차가 있다.

완전히 못푼문제
:3,4,5,6,7,14,15,16

황혜림

예습과제
1. 2차원 배열 무엇인지 쓰고, 어떻게 선언하는지도 작성한 뒤, 용한 간단한 프로그램을 작성해주세요.
- 배열의 첨자가 두 개인 배열다.
int a23; // 2행 3열의 2차원 배열
2. srand()함수가 무엇인지 찾아쓰고, time()을 용해 랜덤으로 숫자를 하나 출력하는 프로그램을 작성해주세요.
-srand함수는 여러 개의 난수표 중 하나를 선택하는 것고, rand 함수는 선택된 난수표로부터 값을 꺼내오는 것다. srand함수에는 인자가 하나 들어가는데, 그것을 seed값라고 한다.
3. 포인터가 무엇인지 쓰고, 포인터를 선언하는 방법을 쓰세요.
- 포인터는 가리키는 변수의 시작주소(메모리의 위치)를 기호화 한 것
int a;
int *pa; // a의 포인터변수
pa=&a; // 포인터 변수의 초기화
4. 배열과 포인터의 공통점과 차점을 찾아보고, 써보도록 하세요.
공통점 : 배열름만 쓰면 주소를 가리킨다.
점 : 포인터는 언제든지 다른 대상을 가리킬 수 있지만 배열은 값 고정되어 있다.


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:29:45
Processing time 0.1064 sec