C
C 5일차 정리
6VPJ7-H3CXH-HBTPT-X4T74-3YVY7 <-2010 익스프레스 시리얼키
★★알트+F8 드레그하고 하면 자동으로 줄맞춰짐
★printf("%3d ",i); //3칸을 확보후 %d 값을 표현
int main(int argc, char* argv[])
{
/* 1~1000까지의 합을 구하라
단 3의 배수는 제외하고 3의 배수이면서 5의 배수는 제외하지 않는 조건으로 구하라.
*/
int i, sum=0;
for(i=0; i<=1000;i++){
if(i%3 != 0 && i%5 == 0)
sum = sum +i;
}
printf("%d",sum);
}
int main(int argc, char* argv[])
{
/* 1부터 시작하여 홀수의 합을 구하면서 그 합이 10000을 넘지 않는 마지막 수를 구하는 프로그래밍을 작성하여라.
*/
int i, sum=0;
for(i=0; sum + i <10000; i++){
if(i%2 == 1)
sum = sum +i;
}
printf("%d",i);
}
int main(int argc, char* argv[])
{
/* 1+2*2+2*3+ ...+2*(n-1)+n을 계산하는 프로그램을 for문으로 만들어라
2*1+2*2+2*3+ ...+2*(n-1)+n -1
2(1+2+....(n-1))+n-1 등차수열의법칙 첫번째값 마지막의 값 더해서 /2
(n-1)(n+1)
*/
int i, sum=0;
for(i=1; i<=n-1; i++){
sum = sum+ 2*i;
}
printf("%d",sum + n -1);
}
#############################################################################
int i=0;
for(;i<0;){
i++;
}
while(i<10){ //와일문과 for문이 거의 동일
i++
}
27번이나 16진수로 1X1B임.
//define이란 ESC라는 문자가 0x1b라는 값을 가지도록 만드는 것
##########################
#include "stdafx.h"
#include <stdio.h> //printf(), scanf()
#include <conio.h> //getch()
#define ESC 0x1b
int main(int argc, char* argv[]){
char ch;
while((ch=getch()) != ESC){
if(ch>='a' &&ch<='z') // a <= ch <= z
ch=ch-32; //a = 97 -> 97-32 = A
putch(ch); // 한글자를 출력할때
printf("\n");
}
}
###########
#include "stdafx.h"
#include <stdio.h> //printf(), scanf()
#include <conio.h> //getch() 표준이 아니라 자주쓰이지는 않음
int main(int argc, char* argv[]){
char ch;
ch=getch();//한글자만 입력받고 끝난다. scanf와 다름
printf("%c\n", ch);
}
##--->Getch()
//getch는 값을 안 보여주고 한글자 입력시 종료, b
//getche는 값을 보여주고 한글자 입력 bb
//getchar는 여러 값들을 넣어도 첫번째 글자만 들어감(enter로 확인), 실수로 여러값을 넣을 시 예방해줌.(수정가능)
###----->a~z 소문자값을 대문자로 바꾸고 ESC키를 입력할 때 종료(1)
#include "stdafx.h"
#include <stdio.h> //printf(), scanf()
#include <conio.h> //getch() 표준이 아니라 자주쓰이지는 않음
int main(int argc, char* argv[]){
char ch;
ch=getchar();
printf("%c\n", ch);
}
###----->a~z 소문자값을 대문자로 바꾸고 ESC키를 입력할 때 종료(2)
#include "stdafx.h"
#include <stdio.h> //printf(), scanf()
#include <conio.h> //getch() 표준이 아니라 자주쓰이지는 않음
#define ESC 0x1b
int main(int argc, char* argv[]){
char ch;
while(1){
ch=getch();
if(ch == ESC)
break;
if(ch>='a'&&ch<='z')
ch=ch-32;
putch(ch);
printf("\n");
}
}
while은 1이나 조건식을 넣는다.
###-> 입력값만큼 더함.
#include "stdafx.h"
#include <stdio.h> //printf(), scanf()
#include <conio.h> //getch() 표준이 아니라 자주쓰이지는 않음
//■i,■sum
#define ESC 0x1b
int main(int argc, char* argv[]){
int i, sum=0;
while(1){
printf("수입력(1~100)");
scanf("%d",&i);
if(i>=1 && i<=100)
break;
printf("잘못입력, 다시");
}
for(int j=1;j<=i;j++)
sum+=j;
printf("%d",sum);
}
수입력(1~100)200
잘못입력, 다시수입력(1~100)100
5050Press any key to continue
Quiz
#1. 1~10 사이의 숫자만 입력받아 1부터 입력받은 수까지 합을 구하시오
int main(int argc, char* argv[]){
int i, sum=0;
while(1){
printf("수입력(1~10)");
scanf("%d",&i);
if(i>=1 && i<=10)
break;
printf("잘못입력, 다시");
}
for(int j=1;j<=i;j++)
sum+=j;
printf("%d",sum);
}
#2. 10~20 사이의 숫자만 입력받아 1부터 입력받은 수까지 합을 구하시오
int main(int argc, char* argv[]){
int i, sum=0;
while(1){
printf("수입력(1~10)");
scanf("%d",&i);
if(i>=10 && i<=20)
break;
printf("잘못입력, 다시");
}
for(int j=1;j<=i;j++)
sum+=j;
printf("%d",sum);
}
##--->숫자 나누기
#include "stdafx.h"
#include <stdio.h> //printf(), scanf()
#include <conio.h> //getch() 표준이 아니라 자주쓰이지는 않음
#define TRUE 1//실수인지 문자인지 알 수 없으므로 TRUE로 정의해서 사용.
int main(int argc, char* argv[]){
int i, temp;
printf("수입력");
scanf("%d",&i);
while(TRUE){
temp=i%10;
i=i/10;
printf("%d",temp);
if(i==0) break;
}
printf("\n");
}
수입력123456
654321
Press any key to continue
break =>for, while switch case문 나감.
##--->Do While문
do // 최소한 한번은 실행될 경우
{
종속문장;
}while(조건식);
---->1~10까지의 합 구하기 do ~ while문
#include "stdafx.h"
#include <stdio.h> //printf(), scanf()
int main(int argc, char* argv[]){
int su =0, sum = 0;
do{
su++;
sum +=su;
}while(su<10);
printf("sum = %d\n",sum);
}
sum = 55
Press any key to continue
Quiz
1.입력된 수를 거꾸로 구하라 (예 123->321)
#include "stdafx.h"
#include <stdio.h> //printf(), scanf()
int main(int argc, char* argv[]){
int su =0, temp = 0;
scanf("%d",&su);
while(1){
temp = su%10;
su = su/10;
printf("%d",temp);
if (su == 0)break;
}
}
12312
21321계속하려면 아무 키나 누르십시오 . . .
2.입력된 수의 각 자리수의 합을 구하는 프로그램을 작성하라.
#include "stdafx.h"
#include <stdio.h> //printf(), scanf()
int main(int argc, char* argv[]){
int su, temp, sum = 0;
scanf("%d",&su);
while(1){
temp = su%10;
su = su/10;
sum = sum + temp;
if (su == 0) break;
}
printf("%d\n",sum);
}
123
6
계속하려면 아무 키나 누르십시오 . . .
#---> break와 continue문
break는 빠져나가고 continue는 반복문의 윗지점
예제
#include "stdafx.h"
#include <stdio.h> //printf(), scanf()
int main(int argc, char* argv[]){
int su1, su2;
for(su1=1; su1<=2;su1++){
for(su2=1;su2<=5;su2++){
printf("su1=%d su2=%d\n", su1,su2);
if(su2==2) break; //인접한 제어문을 빠져나감.
}
printf("%d*%d=%d\n", su1,su2,su1*su2);
}
}
su1=1 su2=1
su1=1 su2=2
1*2=2
su1=2 su2=1
su1=2 su2=2
2*2=4
계속하려면 아무 키나 누르십시오 . . .
continue에서는 조건문의 증감부분으로 넘어간다.
continue에서 실행되다가 조건이나 실행지점으로 올라간다.
#---> Q누를 때 종료
#include "stdafx.h"
#include <stdio.h> //printf(), scanf()
#include <conio.h> //getch(입력),putch(출력)
#include <stdlib.h> // exit를 사용하기 위해서
int main(int argc, char* argv[]){
char ch;
while(1){
ch = getch();
putch(ch);
if(ch!='q')
continue;
else
exit(1);
}
}
asdq계속하려면 아무 키나 누르십시오 . . .
1.어떤 수의 약수를 구하는 프로그램을 작성하여라
#include "stdafx.h"
#include <stdio.h> //printf(), scanf()
#include <conio.h> //getch(입력),putch(출력)
#include <stdlib.h> // exit를 사용하기 위해서
int main(int argc, char* argv[]){
int su, i;
scanf("%d",&su);
for(i=1;i<= su;i++) {
if((su%i)==0)printf("%d\n",i);
}
}
10
1
2
5
10
계속하려면 아무 키나 누르십시오 . . .
#2. 1에서 입력된 어떤 수까지 내에 있는 소수를 찾는 프로그램을 작성하라.(1과 자신의수만)
#include "stdafx.h"
#include <stdio.h> //printf(), scanf()
#include <conio.h> //getch(입력),putch(출력)
#include <stdlib.h> // exit를 사용하기 위해서
int main(int argc, char* argv[]){
int su, i, j, cnt=0;
scanf("%d",&su);
for(i=1;i<= su;i++) {
for(j=1; j<=i;j++){
if((i%j) == 0) cnt ++;
}
if (cnt == 2) printf("[%d] ",i);
cnt = 0;
}
}
12
[2] [3] [5] [7] [11] 계속하려면 아무 키나 누르십시오 . . .
#3. 1에서 1000까지의 자연수 중에서 4로 나누어도 6으로 나누어도 나머지가 1인 수의 합을 출려갛라
#include "stdafx.h"
#include <stdio.h> //printf(), scanf()
#include <conio.h> //getch(입력),putch(출력)
#include <stdlib.h> // exit를 사용하기 위해서
int main(int argc, char* argv[]){
//1에서 1000까지의 자연수 중에서 4로 나누어도 6으로 나누어도 나머지가 1인 수의 합을 출려갛라
int sum=0, i;
for(i=1;i <= 1000;i++) {
if((i%4)==1 && (i%6)==1) sum = sum + i;
}
printf("%d",sum);
}
41916계속하려면 아무 키나 누르십시오 . . .
#--> 4. 1~1000사이에 있는 자연수에 대하여 자신의 수를 제외한 모든 약수의 합이 자신과 같아지는 수(완전수)를 구하여라
#include "stdafx.h"
#include <stdio.h> //printf(), scanf()0
#include <conio.h> //getch(입력),putch(출력)
#include <stdlib.h> // exit를 사용하기 위해서
int main(int argc, char* argv[]){
//4. 1~1000사이에 있는 자연수에 대하여 자신의 수를 제외한 모든 약수의 합이 자신과 같아지는 수(완전수)를 구하여라
int su, i, sum=0;
for(i=1;i <= 1000;i++) {
for(int j=1; j<=i; j++){
if((i%j)==0 && i != j) sum= sum+j;
}
if (i==sum) printf("%3d ",i); //3칸을 확보후 %d 값을 표현
sum = 0;
}
}
6 28 496 계속하려면 아무 키나 누르십시오 . . .
#--> 5.두 수의 최소 공배수와 최대 공약수를 구하는 프로그램을 작성하라.
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
int main(int argc, _TCHAR* argv[])
{
int max, min, su1,su2, i, j;
scanf("%d", &su1);
fflush(stdin);
scanf("%d", &su2);
if (su1 >= su2) max=su1, min=su2;
else max=su2, min=su1;
for(j=min; j >= 0; j--)
{
if(su2%j == 0 && su1%j == 0) {printf("최대 공약수는 %d, 최소 공배수는 %d 입니다",j,(min*max)/j);break;} //최대 공약수
}
return 0;
}
'C'의 다른글
- 현재글C 5일차 정리