Oracle(27일차)
'Web Develop Note > Oracle' 카테고리의 다른 글
Oracle(Test_1) - SELECT query문 종합문제 (0) | 2009.06.22 |
---|---|
Oracle(3일차) - WHERE(비교연산자, 논리연산자, null검색) (0) | 2009.06.22 |
Oracle(2일차) - SELECT(select 문법, 특정컬럼조회, 정렬, null의 의미) (0) | 2009.06.19 |
Oracle(Test_1) - SELECT query문 종합문제 (0) | 2009.06.22 |
---|---|
Oracle(3일차) - WHERE(비교연산자, 논리연산자, null검색) (0) | 2009.06.22 |
Oracle(2일차) - SELECT(select 문법, 특정컬럼조회, 정렬, null의 의미) (0) | 2009.06.19 |
1. 부서 번호가 10번인 부서의 사람 중 사원번호, 이름, 급여를 출력해라.
select empno, ename, sal
from emp
where deptno=10;
2. 사원번호가 7369인 사람 중 이름, 입사일, 부서번호를 출력해라.
select ename, hiredate, deptno
from emp
where empno=7369;
3. 이름이 ALLEN인 사람의 모든 정보를 출력하여라.
select *
from emp
where ename='ALLEN';
4. 입사일이 87/04/19인 사원의 이름, 부서번호, 급여를 출력해라.
select ename, deptno, sal
from emp
where hiredate='87/04/19';
5. 직업이 MANAGER가 아닌 사람의 모든 정보를 출력해라.
select *
from emp
where job!='MANAGER';
6. 입사일이 81/04/02 이후에 입사한 사원의 정보를 출력해라.
select *
from emp
where hiredate>'81/04/02';
7. 급여가 800이상인 사람의 이름, 급여, 부서번호를 출력해라.
select empno, sal, deptno
from emp
where sal>=800;
8. 부서번호가 20번 이상인 사원의 모든 정보를 출력해라.
select *
from emp
where deptno>=20;
9. 입사일이 81/12/09보다 먼저 입사한 사람들의 모든 정보를 출력해라.
select *
from emp
where hiredate<'81/12/09';
10. 사원번호가 7698보다 작거나 같은 사람들의 입사번호와 이름을 출력해라.
select empno, ename
from emp
where empno<=7698;
11. 입사일이 81/04/02보다 늦고 82/12/09보다 빠른 사원의 이름, 급여, 부서번호를 출력해라.
select ename, sal, deptno
from emp
where hiredate between '81/04/20' and '82/12/09';
12. 급여가 1600보다 크고 3000보다 작은 사람의 이름, 직업, 급여를 출력해라.
select ename, job, sal
from emp
where sal>1600 and sal<3000;
13. 사원번호가 7654와 7782사이 이외의 사원의 모든 정보를 출력해라.
select *
from emp
where empno not between 7654 and 7782;
14. 입사일이 81년 이외에 입사한 사원의 모든 정보를 출력해라.
select *
from emp
where hiredate not between '81/1/1' and '81/12/31';
15. 직업이 MANAGER와 SALESMAN인 사원의 모든 정보를 출력해라.
select ename, empno
from emp
where job in('MANAGER', 'SALESMAN');
16. 부서번호가 20, 30번을 제외한 모든 사원의 이름, 사원번호를 출력해라.
select ename, empno
from emp
where deptno not in(20, 30);
17. 이름이 S로 시작하는 사원의 사원번호, 이름, 입사일, 부서번호를 출력해라.
select empno, ename, hiredate, deptno
from emp
where ename like 'S%';
18. 입사일이 81년도인 사원의 모든 정보를 출력해라.
select *
from emp
where hiredate between '81/1/1' and '81/12/31';
19. 이름 중 S자가 들어가 있는 사람만 모든 정보를 출력해라.
select *
from emp
where ename like '%S%';
20. 이름이 S자로 시작하고 마지막 글자가 T인 사람의 모든 정보를 출력해라.(이때, 이름의 전체 글자수는 5자리이다.)
select *
from emp
where ename like 'S___T';
21. 첫 번째 문자는 관계없고 두 번째 문자가 A인 사원의 모든 정보를 출력해라.
select *
from emp
where ename like '_A%';
22. 커미션이 NULL인 사람의 정보를 출력해라.
select *
from emp
where comm is null;
23. 부서가 30번 부서이고 급여가 500이상인 사람의 이름, 부서, 급여를 출력하라.
select ename, deptno, sal
from emp
where deptno=30 and sal>=500;
24. 이름의 첫 글자가 K로 시작하거나 부서번호가 30인 사람의 사원번호, 이름, 부서번호를 출력하라.
select empno, ename, deptno
from emp
where ename like 'K%' and deptno=30;
25. 급여가 1500이상이고 부서번호가 30번인 사원중 직업이 MANAGER인 사원의 모든 정보를 출력하여라.
select *
from emp
where sal>=1500 and deptno=30 and job='MANAGER';
Oracle(27일차) (0) | 2009.07.24 |
---|---|
Oracle(3일차) - WHERE(비교연산자, 논리연산자, null검색) (0) | 2009.06.22 |
Oracle(2일차) - SELECT(select 문법, 특정컬럼조회, 정렬, null의 의미) (0) | 2009.06.19 |
* 비교연산자
a=b : a는 b와 같다.
a<>b : a와 b는 같지 않다.
a>b : a는 b보다 크다(초과)
a>=b : a는 b보다 크거나 같다(이상)
a<b : a는 b보다 작다(미만)
a<=b : a는 b보다 작거나 같다(이하)
- 예제
1. 급여가 1500이상 2850이하 사원출력
select ename, sal
from emp
where sal>=1500 and sal<=2850
order by sal asc;
혹은
select ename, sal
from emp
where sal between 1500 and 2850
order by sal asc;
*논리연산자
or, and, not
*in(값, 값, ...)
not in(값, 값, ...)
예제
1. 사원명, 부서번호조회 부서번호가 10 또는 20 조회
select ename, deptno
from emp
where deptno=10 or deptno=20 -> 같은 의미로 where deptno in(10, 20)
-> 부정의의미 where deptno not in(10, 20)
order by deptno asc;
2. 10과 30사이
select ename,deptno
from emp
where deptno not between 10 and 20
order by deptno asc;
*연결연산자 : ||
*함수명(~, ~, ~) parameter, argument, 인수, 인자
concat(표현식, 표현식) 인수가 2개밖에 들어갈수 있다.
현재날짜와 시간조회
*2009/06/22 09:41:30 이런형태로 출력하려면...
to_char(날짜, '날짜시간Format') 중요함...
to_char(sysdate, 'yyyy/mm/dd hh:mi:ss')
select sysdate, to_char(sysdate, 'bc yyyy/mon/dd day hh24:mi:ss am')
from dual;
* alter session set nls_date_format='날짜시간format'
*조건
select ~
from 테이블명
[where 조건]
[order by 정렬기준 정렬방법];
- 데이터타입 : 문자. 날짜 '~'
예제
- allen의 사원번호, 급여, 입사일조회
select empno, sal, hiredate
from emp
where ename='ALLEN';
*소문자를 대문자로 변환하는 함수
upper(~)
예제
select empno, sal, hiredate
from emp
where ename=upper('allen');
*lower(~)
대문자를 소문자로 출력시키는 함수
*앞글자만 대문자로...
initcap(~)
select empno, sal, lower(ename), initcap(ename), hiredate
from emp
where ename=upper('allen');
81/09/28에 입사한 사원명, 입사일, 급여, 커미션 조회
select ename, hiredate, sal, comm
from emp
where hiredate='81/09/28';
- 예제
1. xx번 부서는 ~~~ => 출력 concat함수 + ~ 사용
select concat(deptno, concat('번 부서 : ', dname))
from dept;
OR
select deptno||concat('번 부서 : ', dname)
from dept;
2. 커미션이 확정된 사원의 사원번호, 사원명, 급여, 커미션 조회
select empno, ename, sal, comm
from emp
where comm is not null;
3. 2번 결과내 급여가 1500이상인 사원번호, 사원명, 급여, 커미션 조회
select empno, ename, sal, comm
from emp
where comm is not null and sal>=1500;
4. 3번의 결과를 급여 오름차순 조회
select empno, ename, sal, comm
from emp
where comm is not null and sal>=1500;
order by sal asc;
5. 10번 또는 20번 부서에 근무하는 사원들의
부서번호, 사원명, 급여, 커미션, bonus를 bonus 오름차순, 동일보너스 내 사원명 오름차순
bonus=기본커미션+300 커미션이 null이면 50을 기본 커미션으로 한다.
select deptno, ename, sal, nvl(comm, 50), nvl(comm, 50)+300 as bonus
from emp
where deptno in(10, 20)
order by bonus asc, ename asc;
Oracle(27일차) (0) | 2009.07.24 |
---|---|
Oracle(Test_1) - SELECT query문 종합문제 (0) | 2009.06.22 |
Oracle(2일차) - SELECT(select 문법, 특정컬럼조회, 정렬, null의 의미) (0) | 2009.06.19 |
* select 문법
select {* | 컬럼명}
from table명
order by 정렬기준 정렬방법, [정렬기준 정렬방법];
* 특정컬럼조회
- dept(부서테이블)
DEPTNO : 부서번호 (기본키 = primary key)
DNAME : 부서명
LOC : 지역
- emp(사원)
EMPNO : 사원번호 (기본키 = primary key)
ENAME : 사원명
JOB : 업무
MGR : 상사
HIREDATE: 입사일
SAL : 급여
COMM : 커미션
DEPTNO : 부서번호 (외래키 = foreign key)
- salgrade(급여등급)
GRADE : 호봉
LOSAL : 최저임금
HISAL : 최고임금
- 예제
1. dept 테이블에서 부서번호와 부서명 조회
select deptno, dname
from dept;
2. 사원테이블에서 사원번호, 사원명, 업무, 업무입사일 조회
select empno, ename, job, hiredate
from emp;
3. 사원테이블에서 사원번호, 사원명, 급여, 커미션, 부서번호 조회
select empno, ename, sal, comm, deptno
from emp;
* 정렬
오름차순(asc) : 숫자 작음 -> 큼 , 문자 a->z A->Z ㄱ->ㅎ날짜 예전->최근
내림차순(desc) : 숫자 큼 -> 작음, 문자 z->a Z->A ㅎ->ㄱ 날짜 최근->예전
*distinct : 중복되는 컬럼을 한번씩만 보여줌
- 예제
1. 부서테이블에서 부서명 내림차순 조회
select distinct *
from dept
order by dname desc;
2. 동일부서내 급여를 많이 받는 사원부터 조회
select *
from emp
order by sal desc;
3. 동일부서내에 급여를 많이 받는 사원부터 출력하되 급여가 동일하다면 이름 오름차순
select *
from emp
order by sal desc, ename asc;
* 별칭
- 칼럼명 [as] 칼럼alias
- 칼럼명 "칼럼alias" : "~~"에는 소문자, 대소문자, 공백, 한글
* null의 의미
0(zero)도 아니고, 빈공간도 아니다.
미확정(해당사항 없음), 알수 없는(unknown) 값을 의미한다.
어떤 값인지 알 수 없지만 어떤 값이 존재하고 있다.
? 혹은 ∞의 의미이므로 연산, 할당, 비교가 불가능하다.
*산술연산
+, -, *, /
* dual 테이블
산술연산이나 가상컬럼 등의 값을 한번만 출력하고 싶을 때 많이 사용하는 테이블
- 예제
오늘 날짜를 한번만 출력
select sysdate
from dual;
Oracle(27일차) (0) | 2009.07.24 |
---|---|
Oracle(Test_1) - SELECT query문 종합문제 (0) | 2009.06.22 |
Oracle(3일차) - WHERE(비교연산자, 논리연산자, null검색) (0) | 2009.06.22 |
/* v1.0 성적표
학생이 몇명인지 물어본다.
국어,영어,수학 점수 입력한다.
평균 계산해서 입출력한다.
#include <iostream.h>
class Student
{
private:
int *kor;
int *eng;
int *math;
int *ave;
public:
void stu_input(int num) //학생 성적 입력
{
kor=new int[num];
eng=new int[num];
math=new int[num];
for(int i=0;i<num;i++)
{
cout<<i+1<<"번의 국어 점수를 입력하세요.";
cin>>kor[i];
cout<<i+1<<"번의 영어 점수를 입력하세요.";
cin>>eng[i];
cout<<i+1<<"번의 수학 점수를 입력하세요.";
cin>>math[i];
cout<<"-----------------------------\n";
}
}
void stu_ave(int num) //학생 평균
{
ave=new int[num];
for(int i=0;i<num;i++)
{
ave[i]=(kor[i]+eng[i]+math[i])/3;
cout<<i+1<<"번의 학생의 평균은 "<<ave[i]<<"점입니다.\n";
cout<<"----------------------------------\n";
}
}
};
void main()
{
Student stu;
int num;
cout<<"학생이 몇명입니까?";
cin>>num;
stu.stu_input(num);
stu.stu_ave(num);
}*/
/* 성적표 v1.5
추가사항
메뉴 : 1.성적추가 2.성적출력 3.종료
성적출력하면 반평균 추가한다.*/
/*
#include <iostream.h>
class Student
{
private:
int *kor;
int *eng;
int *math;
int *student_ave;
int class_ave;
public:
void stu_input(int num) //학생 성적 입력
{
kor=new int[num];
eng=new int[num];
math=new int[num];
for(int i=0;i<num;i++)
{
cout<<i+1<<"번의 국어 점수를 입력하세요.";
cin>>kor[i];
cout<<i+1<<"번의 영어 점수를 입력하세요.";
cin>>eng[i];
cout<<i+1<<"번의 수학 점수를 입력하세요.";
cin>>math[i];
cout<<"-----------------------------\n";
}
}
void stu_output(int num) //학생 개인 성적과 평균 출력
{
student_ave=new int[num];
for(int i=0;i<num;i++)
{
student_ave[i]=(kor[i]+eng[i]+math[i])/3;
cout<<i+1<<"번 학생\n";
cout<<"국어 영어 수학 평균\n";
cout<<" "<<kor[i]<<" "<<eng[i]<<" "<<math[i]<<" "<<student_ave[i]<<endl;
cout<<"----------------------------------\n";
}
}
void Class_ave(int num) //반 평균 출력
{
class_ave=0;
for(int i=0;i<num;i++)
{
class_ave+=student_ave[i];
}
class_ave=class_ave/num;
cout<<"반평균은 "<<class_ave<<"점입니다.\n";
cout<<"종료합니다.\n";
}
};
void main()
{
Student stu;
int num=0;
int menu;
for(;;)
{
cout<<"메뉴를 선택하세요.\n";
cout<<"1.성적 입력 2. 성적출력 3.종료 \n";
cin>>menu;
if(menu==1)
{
cout<<"학생이 몇명입니까?";
cin>>num;
stu.stu_input(num);
}
else if(menu==2)
{
if(num==0)
{
cout<<"입력된 값이 없습니다.\n";
}
else
{
stu.stu_output(num);
}
}
else if(menu==3)
{
if(num==0)
{
cout<<"입력된 값이 없습니다.\n";
}
else
{
stu.Class_ave(num);
}
break;
}
else
{
cout<<"다시 입력하세요.\n";
}
}
}*/
/*성적표 v2.0
메뉴추가 1.성적입력 2.성적출력 3.로드 4.저장 5.종료*/
// 파일의 저장과 로드
// File *fopen(*filename,*mode); 파일을 연다.
// mode에서 wt는 쓰기, rt는 읽기
// fprintf 파일을 출력하는 함수
// fclose 해체
#include <iostream.h>
#include <string.h>
class Student
{
private:
int *kor;
int *eng;
int *math;
int *student_ave;
int class_ave;
public:
void stu_input(int num) //학생 성적 입력
{
kor=new int[num];
eng=new int[num];
math=new int[num];
for(int i=0;i<num;i++)
{
cout<<i+1<<"번의 국어 점수를 입력하세요.";
cin>>kor[i];
cout<<i+1<<"번의 영어 점수를 입력하세요.";
cin>>eng[i];
cout<<i+1<<"번의 수학 점수를 입력하세요.";
cin>>math[i];
cout<<"-----------------------------\n";
}
}
void stu_output(int num) //학생 개인 성적과 평균 출력
{
student_ave=new int[num];
for(int i=0;i<num;i++)
{
student_ave[i]=(kor[i]+eng[i]+math[i])/3;
cout<<i+1<<"번 학생\n";
cout<<"국어 영어 수학 평균\n";
cout<<" "<<kor[i]<<" "<<eng[i]<<" "<<math[i]<<" "<<student_ave[i]<<endl;
cout<<"----------------------------------\n";
}
}
void stu_load()
{
FILE *f=fopen("text.txt","rt");
fgets(,f);
fclose(f);
}
void stu_save()
{
FILE *f=fopen("text.txt","wt");
fputs(,f);
fclose(f);
}
void Class_ave(int num) //반 평균 출력
{
class_ave=0;
for(int i=0;i<num;i++)
{
class_ave+=student_ave[i];
}
class_ave=class_ave/num;
cout<<"반평균은 "<<class_ave<<"점입니다.\n";
cout<<"종료합니다.\n";
}
};
void main()
{
Student stu;
int num=0;
int menu;
for(;;)
{
cout<<"메뉴를 선택하세요.\n";
cout<<"1.성적 입력 2. 성적출력 3.로드 4.저장 5.종료\n";
cin>>menu;
if(menu==1) //성적입력
{
cout<<"학생이 몇명입니까?";
cin>>num;
stu.stu_input(num);
}
else if(menu==2) //성적출력
{
if(num==0)
{
cout<<"입력된 값이 없습니다.\n";
}
else
{
stu.stu_output(num);
}
}
else if(menu==3) //로드
{
if(num==0)
{
cout<<"입력된 값이 없습니다.\n";
}
else
{
stu.stu_load(num);
}
}
else if(menu==4) //저장
{
if(num==0)
{
cout<<"입력된 값이 없습니다.\n";
}
else
{
stu.stu_save(num);
}
}
else if(menu==5) //종료
{
if(num==0)
{
cout<<"입력된 값이 없습니다.\n";
}
else
{
stu.Class_ave(num);
}
break;
}
else //잘못 입력했을때
{
cout<<"다시 입력하세요.\n";
}
}
}
ee.h
//class로 계산기를 만들기
#include <iostream.h>
class Cal
{
private:
int add_sum; //더하기
int sub_sum; //빼기
int mul_sum; //곱하기
int divi_sum; //나누기
int result; //연산결과
public:
void init()
{
add_sum=0;
sub_sum=0;
mul_sum=0;
divi_sum=0;
}
void add(int a,int b)
{
result=a+b;
cout<<a<<"+"<<b<<"="<<result<<endl;
add_sum++;
}
void sub(int a,int b)
{
result=a-b;
cout<<a<<"-"<<b<<"="<<result<<endl;
sub_sum++;
}
void mul(int a,int b)
{
result=a*b;
cout<<a<<"*"<<b<<"="<<result<<endl;
mul_sum++;
}
void divi(int a,int b)
{
result=a/b;
cout<<a<<"/"<<b<<"="<<result<<endl;
divi_sum++;
}
void exit()
{
cout<<"총 덧셈 연산은 "<<add_sum<<"번 했습니다.\n";
cout<<"총 뺄셈 연산은 "<<sub_sum<<"번 했습니다.\n";
cout<<"총 곱셈 연산은 "<<mul_sum<<"번 했습니다.\n";
cout<<"총 나눗셈 연산은 "<<divi_sum<<"번 했습니다.\n";
cout<<"종료합니다.\n";
}
};
void main()
{
int num1, num2;
Cal cal;
cal.init();
for(;;)
{
cout<<"어떤 연산을 할 것인지 선택하세요.\n";
cout<<"1:+, 2:-, 3:*, 4:/, 5:exit \n";
int cho;
cin>>cho;
if(cho==1)
{
cout<<"두개의 숫자를 입력하세요.\n";
cin>>num1>>num2;
cal.add(num1,num2);
}
else if(cho==2)
{
cout<<"두개의 숫자를 입력하세요.\n";
cin>>num1>>num2;
cal.sub(num1,num2);
}
else if(cho==3)
{
cout<<"두개의 숫자를 입력하세요.\n";
cin>>num1>>num2;
cal.mul(num1,num2);
}
else if(cho==4)
{
cout<<"두개의 숫자를 입력하세요.\n";
cin>>num1>>num2;
cal.divi(num1,num2);
}
else if(cho==5)
{
cal.exit();
break;
}
else
{
cout<<"잘못입력하셨습니다.\n";
}
}
}
//class로 계산기를 만들기
#include <iostream.h>
class Cal
{
private:
int add_sum; //더하기
int sub_sum; //빼기
int mul_sum; //곱하기
int divi_sum; //나누기
int result; //연산결과
public:
void init()
{
add_sum=0;
sub_sum=0;
mul_sum=0;
divi_sum=0;
}
void add(int a,int b)
{
result=a+b;
cout<<a<<"+"<<b<<"="<<result<<endl;
add_sum++;
}
void sub(int a,int b)
{
result=a-b;
cout<<a<<"-"<<b<<"="<<result<<endl;
sub_sum++;
}
void mul(int a,int b)
{
result=a*b;
cout<<a<<"*"<<b<<"="<<result<<endl;
mul_sum++;
}
void divi(int a,int b)
{
result=a/b;
cout<<a<<"/"<<b<<"="<<result<<endl;
divi_sum++;
}
void exit()
{
cout<<"총 덧셈 연산은 "<<add_sum<<"번 했습니다.\n";
cout<<"총 뺄셈 연산은 "<<sub_sum<<"번 했습니다.\n";
cout<<"총 곱셈 연산은 "<<mul_sum<<"번 했습니다.\n";
cout<<"총 나눗셈 연산은 "<<divi_sum<<"번 했습니다.\n";
cout<<"종료합니다.\n";
}
};
void main()
{
int num1, num2;
Cal cal;
cal.init();
for(;;)
{
cout<<"어떤 연산을 할 것인지 선택하세요.\n";
cout<<"1:+, 2:-, 3:*, 4:/, 5:exit \n";
int cho;
cin>>cho;
if(cho==1)
{
cout<<"두개의 숫자를 입력하세요.\n";
cin>>num1>>num2;
cal.add(num1,num2);
}
else if(cho==2)
{
cout<<"두개의 숫자를 입력하세요.\n";
cin>>num1>>num2;
cal.sub(num1,num2);
}
else if(cho==3)
{
cout<<"두개의 숫자를 입력하세요.\n";
cin>>num1>>num2;
cal.mul(num1,num2);
}
else if(cho==4)
{
cout<<"두개의 숫자를 입력하세요.\n";
cin>>num1>>num2;
cal.divi(num1,num2);
}
else if(cho==5)
{
cal.exit();
break;
}
else
{
cout<<"잘못입력하셨습니다.\n";
}
}
}
*/
//생성자 소멸자
/*
#include <iostream.h>
class A
{
int a;
public:
A(int a)
{
a=a;
cout<<"생성자 호출"<<a<<endl;
}
~A()
{
cout<<"소멸자 호출"<<a<<endl;
}
};
void main()
{
{
A a(1);
{
A b(2);
{
A c(3);
}
}
}
}
*/
/*
#include <iostream.h>
class Date
{
private:
int year;
int month;
int day;
int sum;
public:
Date()
{
}
int result(int year[2],int month[2],int day[2])
{
year=year[1]-year[0];
month=month[1]-month[0];
day=day[1]-day[0];
sum=year*365+month*30+day;
return sum;
}
};
void main()
{
Date date;
int year[2], month[2], day[2];
cout<<"만난날을 몇년, 몇월, 몇일 순서대로 입력하세요.\n";
cin>>year[0]>>month[0]>>day[0];
cout<<"오늘 날짜를 입력하세요.\n";
cin>>year[1]>>month[1]>>day[1];
cout<<"총 만난날은 "<<date.result(int year[2],int month[2],int day[2])<<"일입니다.\n";
}
*/
/*
//ID와 비밀번호 클래스로, 동적할당
//사용자는
#include <iostream.h>
class user
{
private:
char *ID;
char *p;
public:
void (char *c)
{
int
}
};
//몇명인지 물어본다.
void main()
{
int num;
cout<<"몇명을 입력합니까?";
cin>>num;
user *a=new int[num];
for(int i=0;i<num;i++)
{
cout<<"ID를 입력하세요.";
cin>>;
cout<<;
cin>>;
}
//동적할당으로 입력해서 클래스에서 동적할당
//입출력
}
*/
#include <iostream.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
class U
{
private:
char *i;
char *p;
void input(char *ID,char *pass)
{
int a=strlen(ID);
int b=strlen(pass);
i=new char[a+1];
p=new char[b+1];
strcpy(i,ID);
}
void output(char *ID,char *pass)
{
}
~U()
{
delete[] i;
delete[] p;
}
};
void main()
{
int num;
U *p=new U[num];
char ID[128];
char pass[128];
for(int i=0;i<num;i++)
{
cin>>ID;
cin>>pass;
p[i].input(ID,pass);
}
for(int j=0;j<num;j++)
{
p[j].output(ID,pass);
}
delete[] p;
}
//문자열을 입력받아 문자를 거꾸로 바꿔서 출력하기.
/*
#include <iostream.h>
#include <stdio.h>
#include <string.h>
char* change(char *src)
{
int len=strlen(src);
char *Temp=new char[len+1];
for(int i=0;i<len;i++)
{
Temp[i]=src[len-1-i];
}
Temp[len]=NULL;
return Temp;
}
void main()
{
char ori[128];
gets(ori);
char *ch=change(ori);
cout<<"원래 문자열 : "<<ori<<endl;
cout<<"바뀐 문자열 : "<<ch<<endl;
delete ch;
}
*/
//클래스
//구조체는 함수를 못담지만 클래스는 함수를 담을수 있다.
/*
#include <iostream.h>
class Man
{
public:
char name[128];
int age;
int tall;
};
void main()
{
Man *a;
int num;
cout<<"사람 수가 몇 명입니까?";
cin>>num;
a=new int[num];
for(int i=0;i<num;i++)
{
cout<<i+1<<"번째 사람의 이름을 입력하세요. ";
cin>>a.name;
cout<<"나이를 입력하세요. ";
cin>>a.age;
cout<<"키를 입력하세요. ";
cin>>a.tall;
}
for(int j=0;j<num;j++)
{
cout<<"이름 : "<<a.name<<", 나이 : "<<a.age<<"살, 키 : "<<a.tall<<"cm\n";
}
}
*/
#include <iostream.h>
class Man
{
private:
char name[128];
int tall;
int age;
public:
void Input()
{
cout<<"이름 입력\n";
cin>>name;
cout<<"키 입력\n";
cin>>tall;
cout<<"나이 입력\n";
cin>>age;
}
void Output(char *s,int a,int b)
{
cout<<s<<endl;
cout<<a<<endl;
cout<<b<<endl;
}
};
void main()
{
int num;
cout<<"학생수 입력\n";
Man a[num];
for(int i=0;i<num;i++)
{
a[i].Input();
}
for(int )
a.Output("이름",180,19);
}
//숙제
/*
class student
{
private:
//성적은 private
int kor;
int eng;
void Input()
{
}
void Output()//클래스 내에 해야됨.
{
//번호순대로 총점과 평균을 출력한다.
};
void main
{
//학생이 몇명?
//동적할당한다.
//번호별로 점수 입력
};
#include <iostream.h>
void main()
{
int a,b;
int sum;
cout<<"숫자 2개를 입력하세요.\n";
cin>>a>>b;
if (a<b)
{
for(sum=0,a+=1;a<b;a++)
{
sum+=a;
}
}
else if (a>b)
{
for(sum=0,b+=1;a>b;b++)
{
sum+=b;
}
}
else
{
sum=0;
}
cout<<"두 값 사이의 합은 "<<sum<<"입니다.\n";
}
*/
/*
#include <iostream.h>
void main()
{
int num;
cout<<"몇단을 출력할까요?\n";
cin>>num;
for(int i=1;i<=9;i++)
{
cout<<num<<" * "<<i<<" = "<<num*i<<"\n";
}
}
*/
//동적할당은 c++로
//int *p=(int *)malloc(4);
//int *p=new int;
//free(p);
//delete p;
//int *p=(int *)malloc(4*sizeof(int));
//int *p=new int[4];
#include <iostream.h>
void change(int *p,int num)
{
num--;
int *Temp=new int[num];
for(int i=0;i<=num;i++)
{
Temp[i]=p[num-i];
}
for(int j=0;j<=num;j++)
{
p[j]=Temp[j];
}
}
void main()
{
cout<<"생성할 숫자의 갯수는?";
int num;
cin>>num;
int *p=new int[num];
for(int i=0;i<num;i++)
{
p[i]=i+1;
}
change(p,num);
for(int j=0;j<num;j++)
{
cout<<p[j]<<"\n";
}
delete p;
}
//숙제:3개의 반을 물어본다.
#include <stdio.h>
#include <stdlib.h>
#define Class 3
struct std
{
int kor;
int eng;
};
void input(std *s,int num[Class])
{
int i,j;
for(i=0;i<Class;i++)
{
for(j=0;j<num[i];j++)
{
printf("%d번의 학생의 국어점수를 입력하세요.",i+1);
scanf("%d",&s[i].kor);
printf("%d번의 학생의 영어점수를 입력하세요.",i+1);
scanf("%d",&s[i].eng);
printf("--------------------------------------\n");
}
}
}
//%d반의 총 국어 평균, 영어 평균 제일 잘한반 %d반 출력하기
void output(std *s,int num[Class])
{
int i;
for(i=0;i<num;i++)
{
printf("%d번 국어점수:%d점, 영어점수:%d점\n",i+1,s[i].kor,s[i].eng);
printf("-----------------------------------------\n");
}
}
void main()
{
int num[Class];
int i;
std *s;
for(i=0;i<Class;i++)
{
printf("%d반의 학생이 몇명입니까?",i+1);
scanf("%d",&num[Class]);
}
printf("--------------------\n");
s=(std *)malloc(num[Class]*sizeof(std));
input(s,num[Class]);
output(s,num[Class]);
free(s);
}
// 파일의 저장과 로드
// File *fopen(*filename,*mode); 파일을 연다.
// mode에서 wt는 쓰기, rt는 읽기
// fprintf 파일을 출력하는 함수
// fclose 해체
/*
#include <stdio.h>
void main()
{
// int a=20;
int b;
FILE *f=fopen("test.txt","rt");
fscanf(f,"%d",&b);
printf("%d\n",b);
// FILE *f=fopen("test.txt","wt");
// fprintf(f,"%d",a);
fclose(f);
}
*/
/*
#include <stdio.h>
#include <string.h>
void main()
{
char sen1[128];
char sen2[128];
printf("문장을 입력하세요.\n");
gets(sen1);
FILE *f1=fopen("test.txt","wt");
fputs(sen1,f1);
fclose(f1);
FILE *f2=fopen("test.txt","rt");
printf("문장을 출력합니다.\n");
fgets(sen2,sizeof(sen1),f2);
puts(sen2);
fclose(f2);
}
*/
//구구단
/*
#include <stdio.h>
void main()
{
int i,j;
FILE *f=fopen("99.txt","wt");
for(i=2;i<=9;i++)
{
for(j=1;j<=9;j++)
{
printf("%d * %d = %d \n",i,j,i*j);
}
}
for(i=2;i<=9;i++)
{
for(j=1;j<=9;j++)
{
fprintf(f,"%d * %d = %d \n",i,j,i*j);
}
}
fclose(f);
}
*/
#include <stdio.h>
void main()
{
int i,j,k;
char a,b;
k=i*j;
FILE *f=fopen("99.txt","rt");
for(i=2;i<=9;i++)
{
for(j=1;j<=9;j++)
{
fscanf(f,"%d %c %d %c %d",&i,&a,&j,&b,&k);
printf("%d %c %d %c %d \n",i,a,j,b,k);
}
}
fclose(f);
}
C언어 - 10일차 (0) | 2009.05.19 |
---|---|
C언어 - 8일차 (0) | 2009.05.19 |
C언어 - 7일차 (0) | 2009.05.19 |
#include <stdio.h>
struct A
{
char name[128];
int kor;
int eng;
};
void main()
{
int i;
A P[5];
for(i=0;i<5;i++)
{
printf("%d번의 학생 이름을 입력하세요.",i+1);
scanf("%s",&P[i].name);
printf("국어 점수를 입력하세요.");
scanf("%d",&P[i].kor);
printf("영어 점수를 입력하세요.");
scanf("%d",&P[i].eng);
}
for(i=0;i<5;i++)
{
printf("%s의 국어 점수 : %d, 영어 점수 : %d \n",P[i].name,P[i].kor,P[i].eng);
}
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
//동적할당
/*
void main()
{
int num;
int i;
int *age;
printf("가족의 수를 몇입니까?");
scanf("%d",&num);
age=(int *)malloc(num*sizeof(int));
for(i=0;i<num;i++)
{
printf("나이를 입력하세요.");
scanf("%d",&age[i]);
}
for(i=0;i<num;i++)
{
printf("%d번째 식구의 나이는 %d살입니다.\n",i+1,age[i]);
}
free(age);
}*/
/*
#define cn 2
void main()
{
int *Class[cn];
int num[cn]; //학생수
int i,j;
for(i=0;i<cn;i++)
{
printf("%d반의 학생의 수 :",i+1);
scanf("%d",&num[i]);
Class[i]=(int *)malloc(num[i]*sizeof(int));
}
for(i=0;i<cn;i++)
{
for(j=0;j<num[i];j++)
{
printf("%d반의 %d번 학생의 키:",i+1,j+1);
scanf("%d",&Class[i][j]);
printf("%d \n",Class[i][j]);
}
}
}*/
/*
int i,j;//반,번
int *l[2];//키
int num[2];//학생수
for(i=0;i<2;i++)
{
printf("%d반의 학생수는?",i+1);
scanf("%d",&num[i]);
}
l[2]=(int *)malloc(num[2]*sizeof(int));
for(i=0;i<2;i++)
{
for(j=0;j<num[i];j++)
{
printf("%d반 %d번의 키를 입력하세요.",i+1,j+1);
scanf("%d",&l[i][j]);
}
}
for(i=0;i<2;i++)
{
for(j=0;j<num[i];j++)
{
printf("%d반 %d번의 키는 %dcm입니다.\n",i+1,j+1,l[i][j]);
}
}
free(l);
}*/
//숙제 : 완벽한 성적표 만들기 3학년까지 있음 1학년 1반 1번의 키를 입력 그리고 출력
#define grade 3
void main()
{
int
}
/*
#include <stdio.h>
struct std
{
char name[128];
int kor;
int eng;
};
void main()
{
int i;
std s[5];
for(i=0;i<5;i++)
{
printf("%d번의 학생 이름을 입력하세요.",i+1);
scanf("%s",&s[i].name);
printf("국어 점수를 입력하세요.");
scanf("%d",&s[i].kor);
printf("영어 점수를 입력하세요.");
scanf("%d",&s[i].eng);
}
for(i=0;i<5;i++)
{
printf("%s의 국어 점수 : %d, 영어 점수 : %d \n",s[i].name,s[i].kor,s[i].eng);
}
}
*/
#include <stdio.h>
#include <stdlib.h>
struct std
{
char name[128];
int kor;
int eng;
};
void input(std *s,int num)
{
int i;
for(i=0;i<num;i++)
{
printf("%d번의 학생의 이름을 입력하세요.",i+1);
scanf("%s",&s[i].name);
printf("%d번의 학생의 국어점수를 입력하세요.",i+1);
scanf("%d",&s[i].kor);
printf("%d번의 학생의 영어점수를 입력하세요.",i+1);
scanf("%d",&s[i].eng);
printf("--------------------------------------\n");
}
}
void output(std *s,int num)
{
int i;
for(i=0;i<num;i++)
{
printf("%d번 %s의 국어점수:%d점, 영어점수:%d점\n",i+1,s[i].name,s[i].kor,s[i].eng);
printf("-----------------------------------------\n");
}
}
void main()
{
// int i;
int num;
std *s;
printf("학생이 몇명입니까?");
scanf("%d",&num);
printf("--------------------\n");
s=(std *)malloc(num*sizeof(std));
input(s,num);
output(s,num);
/* for(i=0;i<num;i++)
{
printf("%d번의 학생의 이름을 입력하세요.",i+1);
scanf("%s",&s[i].name);
printf("%d번의 학생의 국어점수를 입력하세요.",i+1);
scanf("%d",&s[i].kor);
printf("%d번의 학생의 영어점수를 입력하세요.",i+1);
scanf("%d",&s[i].eng);
printf("--------------------------------------\n");
}
*/
/* for(i=0;i<num;i++)
{
printf("%d번 %s의 국어점수:%d점, 영어점수:%d점\n",i+1,s[i].name,s[i].kor,s[i].eng);
printf("-----------------------------------------\n");
}
*/
free(s);
}
//숙제:몇반 물어보고 위와 같이 풀것...
void main()
{
int a[3]={1,2,3};
int *p=a;
int i;
// printf("%d\n",&a[0]);
// printf("%d\n",&a);
// printf("%d\n",&a[1]);
for(i=0;i<3;i++)
{
// printf("%d\n",*p++);
printf("%d\n",p[i]);
}
}
*/
/*
void change(int *p)
{
int temp=p[0];
p[0]=p[1];
p[1]=temp;
}
void main()
{
int a[3]={1,2,3};
change(a);
printf("%d %d \n",a[0],a[1]);
}
*/
//블랙잭
//야구게임 10번안에
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void main()
{
int serv[3];
int clnt[3];
int strike;
int ball;
int i,j;
int count;
srand(time(NULL));
//컴퓨터가 3개의 숫자 입력
for(i=0;i<3;i++)
{
serv[i]=rand()%9+1;
}
//컴퓨터의 3개의 숫자 중복 판단
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(serv[i]==serv[j] && i!=j)
{
srand(time(NULL));
serv[i]=rand()%9+1;
i--;
}
}
}
//컴퓨터가 입력한 3개의 숫자 최종값 출력
for(i=0;i<3;i++)
{
printf("%d\n",serv[i]);
}
for(count=0;count<10;count++)
{
strike=0;
ball=0;
//내가 입력
for(i=0;i<3;i++)
{
printf("%d번째 기회입니다.\n",count+1);
printf("1~9중에서 %d번째 숫자 입력하세요.\n",i+1);
scanf("%d",&clnt[i]);
}
//내가 입력한 값 1~9까지의 숫자만 허용하고, 중복된 숫자 제외하기(수정중)
/* for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(clnt[i]==clnt[j] && i!=j && clnt[i]>=1 && clnt[i]<=9)
{
continue;
}
else
{
printf("다시 입력하세요.\n");
scanf("%d",clnt[i]);
i--;
}
}
}
*/
//스트라이크와 볼 판단
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(serv[i]==clnt[j])
{
if(i==j)
{
strike++;
}
else
{
ball++;
}
}
}
}
//판단출력
if(strike==0 && ball==0)
{
printf("아웃입니다.\n");
}
else if(strike==3)
{
printf("삼진입니다.내가 이겼습니다.\n");
break;
}
else
{
printf("%d스트라이크 %d볼 입니다.\n",strike,ball);
}
}
//10번의 기회에도 못 맞춘 상황
if(count==10)
{
printf("내가 졌습니다.\n");
}
}
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
//로또
void main()
{
int com[6];
int me[6];
int count=0;
int i,j;
srand(time(NULL));
for(i=0;i<6;i++)
{
com[i]=rand()%45+1;
}
for(i=0;i<6;i++)
{
printf("%d ",com[i]);
}
for(i=0;i<6;i++)
{
printf("\n1~45까지 6개의 숫자를 입력하세요.");
scanf("%d",&me[i]);
}
for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
{
if(com[i]==me[j])
{
count++;
}
}
}
if(count<=2)
{
printf("꽝입니다.");
}
if(count==3)
{
printf("4등 당첨입니다.");
}
if(count==4)
{
printf("3등 당첨입니다.");
}
if(count==5)
{
printf("2등 당첨입니다.");
}
if(count==6)
{
printf("1등 당첨입니다.");
}
}
/*
void main()
{
int a=10;
int *p=&a;
printf("%d\n",&a);
printf("%d\n",p);
*p++;
printf("%d\n",p);
}
*/
/*
void change(int *a,int *b)
{
int temp=*a;
*a=*b;
*b=temp;
}
void main()
{
int a=10;
int b=20;
change(&a,&b);
printf("%d %d \n",a,b);
}
*/
//학생3명 국어,영어,수학 점수 입력 성적순 평균값 출력
/*
void main()
{
int stu[3][3];
int sum[3]={0,0,0};
int ave[3];
int max, mid, min;
int i,j;
for(i=0;i<3;i++)
{
printf("학생 %d의 성적 입력하세요\n",i+1);
for(j=0;j<3;j++)
{
if(j==0)
{
printf("국어 점수를 입력하세요.");
}
else if(j==1)
{
printf("영어 점수를 입력하세요.");
}
else
{
printf("수학 점수를 입력하세요.");
}
scanf("%d",&stu[i][j]);
sum[i]+=stu[i][j];
}
ave[i]=sum[i]/3;
}
////////////////////
for(i=0;i<3;i++)
{
if(ave[i]>min)
{
max=ave[i];
mid=ave[i];
min=ave[i];
}
}
//////////////////////
printf("최고 높은 평균 점수는 %f점 입니다.\n",(float)max);
printf("두번째 높은 평균 점수는 %f점 입니다.\n",(float)mid);
printf("세번째 높은 평균 점수는 %f점 입니다.\n",(float)min);
}
*/
/*
void main()
{
char a[]="love";
/* int i;
for(i=0;i<3;i++)
{*/
// printf("%s\n",a);
// }
//}
/*
문자열 입력받을땐 gets(name);
문자열 출력할땐 puts(name);
*/
/*
void main()
{
char name[128];
char tel[128];
gets(name);
gets(tel);
puts(name);
puts(tel);
}
*/
/*
#include <string.h>
strcpy(a,b); b를 a에 복사하는 함수(전에 있는 내용을 지운다.)
char name[128];
strcpy(neme,"홍길동"); 출력 : 홍길동
strcat(a,b); 추가하는 함수
strcat(name,"심청이"); 출력 : 홍길동 심청이
strcmp(a,b); 비교하는 함수(같은지 다른지)
char name[]="홍길동"
char name2[]="심청이"
strcmp(name,name2); 같으면 1 다르면 0
strlen(name); 문자열의 길이를 반환해주는 함수
char name[]="홍길동"
int a=strlen(name); 출력 6
*/
//난수를 만들어주는 함수
//int a=rand();
//숙제 :
//가위바위보게임
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void main()
{
int com, me;
int com_money=100;
int me_money=100;
for(;;)
{
srand(time(NULL));
com=rand()%3+1;
printf("내 돈의 금액 : %d \n",me_money);
printf("컴퓨터의 돈의 금액 : %d \n",com_money);
printf("1.가위 2.바위 3.보 4.종료\n");
scanf("%d",&me);
if(me==1)
{
if(com==2)
{
printf("컴퓨터:%d 나:%d \n",com,me);
printf("이겼습니다.^^\n");
com_money-=20;
me_money+=20;
if(com_money==0)
{
printf("승리했습니다.^^\n");
break;
}
}
else if(com==1)
{
printf("컴퓨터:%d 나:%d \n",com,me);
printf("비겼습니다.\n");
}
else
{
printf("컴퓨터:%d 나:%d \n",com,me);
printf("졌습니다.ㅠㅠ\n");
me_money-=20;
com_money+=20;
if(me_money==0)
{
printf("패배했습니다.ㅠㅠ\n");
break;
}
}
}
else if(me==2)
{
if(com==3)
{
printf("컴퓨터:%d 나:%d \n",com,me);
printf("이겼습니다.^^\n");
com_money-=20;
me_money+=20;
if(com_money==0)
{
printf("승리했습니다.^^\n");
break;
}
}
else if(com==2)
{
printf("컴퓨터:%d 나:%d \n",com,me);
printf("비겼습니다.\n");
}
else
{
printf("컴퓨터:%d 나:%d \n",com,me);
printf("졌습니다.ㅠㅠ\n");
me_money-=20;
com_money+=20;
if(me_money==0)
{
printf("패배했습니다.ㅠㅠ\n");
break;
}
}
}
else if (me==3)
{
if(com==1)
{
printf("컴퓨터:%d 나:%d \n",com,me);
printf("이겼습니다.^^\n");
com_money-=20;
me_money+=20;
if(com_money==0)
{
printf("승리했습니다.^^\n");
break;
}
}
else if(com==3)
{
printf("컴퓨터:%d 나:%d \n",com,me);
printf("비겼습니다.\n");
}
else
{
printf("컴퓨터:%d 나:%d \n",com,me);
printf("졌습니다.ㅠㅠ\n");
me_money-=20;
com_money+=20;
if(me_money==0)
{
printf("패배했습니다.ㅠㅠ\n");
break;
}
}
}
else if (me==4)
{
printf("종료합니다.\n");
break;
}
else
{
printf("다시입력하세요.\n");
continue;
}
}
}
// 이중 for문
//역직각삼각형
#include <stdio.h>
void main()
{
int i, j;
for(i=0; i<5; i++)
{
for(j=0; j<5; j++)
{
if(i>j)
{
printf(" ");
}
else
{
printf("*");
}
}
printf("\n");
}
}
출력결과
*****
****
***
**
*
=====================================================================
//직각삼각형
#include <stdio.h>
void main()
{
int i, j;
for(i=0; i<5; i++)
{
for(j=0; j<5; j++)
{
if(i>=j)
{
printf("*");
}
}
printf("\n");
}
}
#include <stdio.h>
void main()
{
int i, j;
for(i=0; i<5; i++)
{
for(j=0; j<=i; j++)
{
printf("*");
}
printf("\n");
}
}
출력결과
*
**
***
****
*****
==========================================================
//구구단출력 2~9단
#include <stdio.h>
void main()
{
int i, j;
for(i=2; i<9; i++)
{
for(j=1; j<9; j++)
{
printf("%d*%d=%d ", i, j, i*j);
}
printf("\n");
}
}
출력결과
2*1=2 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16
3*1=3 3*2=6 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24
4*1=4 4*2=8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
=================================================================================================================================
//1~100중에서 3의 배수 출력하되, 9의 배수 출력하지 않음
#include <stdio.h>
void main()
{
int a;
for(a=1; a<100; a++)
{
if(a%9==0)
{
continue;
}
if(a%3==0)
{
printf("%d ", a);
}
}
}
3 6 12 15 21 24 30 33 39 42 48 51 57 60 66 69 75 78 84 87 93 96
/*
#include <stdio.h>
void main()
{
int i;
for(i=1; i<=100; i++)
{
printf("%d\n", i);
}
printf("%d\n", i);
}
*/
/*
#include <stdio.h>
void main()
{
int i;
for(i=5; i<=100; i+5)
{
printf("%d\n", i);
}
}
*/
/*
#include <stdio.h>
void main()
{
int n, i;
int total=0;
printf("수를 하나 입력하세요\n");
scanf("%d", &n);
for(i=1; i<=n; i++)
{
total+=i;
}
printf("%d\n", total);
}
*/
/*
#include <stdio.h>
void main()
{
int i, j;
for(i=0; i<=5; i++)
{
printf("*", i);
for(j=0; j<5; j++)
{
printf("*", j);
}
printf("\n");
}
}
*/
/*
#include <stdio.h>
void main()
{
int a,b;
for(a=0; a<5; a++)
{
for(b=0; b<a; b++)
{
printf("*");
}
printf("\n");
}
}
*/