C++조건 및 순환 문장의 종합 운용 실례

4356 단어 C++논리학
아래 공식 으로 pi 의 유사 치 를 구하 다.pi/4 개 월 1-1/3+1/5-1/7+...마지막 항목 의 절대 치가 10-7 보다 작 을 때 까지.주어진 알고리즘 에 따라 다음 과 같이 프로그램 을 쉽게 작성 할 수 있 습 니 다.

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main( )
{
  int s=1;
  double n=1,t=1,pi=0;
  while((fabs(t))>1e-7)
  {
    pi=pi+t;
    n=n+2;
    s=-s;
    t=s/n;
  }
  pi=pi*4;
  cout<<"pi="<<setiosflags(ios::fixed)<<setprecision(6)<<pi<<endl;
  return 0;
}
실행 결과

pi=3.141592
메모:n 을 정형 변수 로 정의 하지 마 십시오.그렇지 않 으 면't=s/n'을 실행 합 니 다.시,t 를 얻 은 값 은 0 이다.
[예]피 보 나치 수열 전 40 개 를 구하 세 요.이 수열 은 다음 과 같은 특징 이 있다.1,2 개 수 는 1,1 이다.세 번 째 숫자 부터 각 수 는 앞의 두 수의 합 이다.즉:

  F1=1 (n=1)
  F2=1 (n=2)
  Fn=Fn-1+Fn-2(n≥3)
이것 은 재 미 있 는 고전 수학 문제 입 니 다.토끼 한 쌍 이 태 어 난 지 3 개 월 째 부터 매달 한 쌍 의 토끼 를 낳 습 니 다.토끼 는 자라 서 3 개 월 후에 매달 한 쌍 의 토끼 를 낳 습 니 다.모든 토끼 가 죽지 않 는 다 고 가정 하면 매달 토끼 의 총 수 는 얼마 입 니까?
제 시 된 매달 토끼 총수 의 관계 에 따라 다음 과 같이 프로그램 을 작성 할 수 있 습 니 다.

#include <iostream>
#include <iomanip>
using namespace std;
int main( )
{
  long f1,f2;
  int i;
  f1=f2=1;
  for(i=1;i<=20;i++)
  {
   cout<<setw(12)<<f1<<setw(12)<<f2;
   //         12,       
   if(i%2==0) cout<<endl;
     //    4     ,     4  
     f1=f1+f2;
   //   f1   3  ,  1?2    
   f2=f2+f1;
   //   f2   4  ,  2?3    
  }
  return 0;
}
[예]100~200 칸 의 모든 소 수 를 찾 아 라.작성 자 는 다음 과 같 습 니 다:

#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main( )
{
  int m,k,i,n=0;
  bool prime;//      prime
  for(m=101;m<=200;m=m+2) //  m     ,m 101   200,   2
  {
   prime=true;//      prime  ,    m   
   k=int(sqrt(m)); // k    m     
   for(i=2;i<=k;i++) //       m 2~  m ,       
     if(m%i==0) //     ,  m    
     {
      prime=false; // prime   
      break; //       
     }
     if (prime)//  m   
     {
      cout<<setw(5)<<m; //    m,     5
      n=n+1; //n           
     }
     if(n%10==0) cout<<endl; //  10     
   }
   cout<<endl;//        
   return 0;
}
비밀 번 호 를 번역 하 다
전문 을 비밀 로 하기 위해 서 는 일정한 규칙 에 따라 전문 을 암호 로 바 꾸 고 수신 자 는 다시 약정 한 규칙 에 따라 원문 으로 번역 한다.예 를 들 어 다음 과 같은 규칙 에 따라 전문 을 비밀번호 로 바 꿀 수 있다.알파벳 A 를 알파벳 E 로 바 꾸 고 a 를 e 로 바 꾸 면 그 다음 의 네 번 째 자모 가 되 고 W 는 A 로,X 는 B 로,Y 는 C 로,Z 는 D 로 바 꿀 수 있다.그림 3.20 참조.자 모 는 상기 규칙 에 따라 바 뀌 고 비 자모 문 자 는 변 하지 않 습 니 다.예 를 들 어'Wonderful!'"Asrhivjyp!"로 전환 합 니 다.
해당 암 호 를 출력 하 라 는 문 자 를 입력 하 십시오.

프로그램 은 다음 과 같 습 니 다:

#include <iostream>
using namespace std;
int main( )
{
  char c;
  while ((c=getchar( ))!='
') { if((c>='a' && c<='z') || (c>='A' && c<='Z')) { c=c+4; if(c>'Z' && c<='Z'+4 || c>'z') c=c-26; } cout<<c; } cout<<endl; return 0; }
실행 결 과 는 다음 과 같 습 니 다.

I am going to Beijing!L
M eq ksmrk xs Fimnmrk!
while 문장의 괄호 안의 표현 식 은 세 가지 역할 을 합 니 다.
키보드 에서 문 자 를 읽 습 니 다.이것 은 getchar 함수 로 이 루어 집 니 다.
읽 은 문 자 를 문자 변수 c 에 부여 하기;
이 문자 가''인지 아 닌 지 를 판별 합 니 다.줄 바 꿈 문자 라면 while 문장의 복합 문 구 를 실행 하고 입력 한 줄 바 꿈 문자 가 아 닌 문 자 를 변환 처리 합 니 다.
앞에서 분석 한 사고방식 에 따라 입력 한 문 자 를 처리 합 니 다.한 가 지 는 독자 가 주의 하 시기 바 랍 니 다.내 장 된 if 문 구 는 다음 과 같이 쓸 수 없습니다.
    if (c>'Z'|| c>'z')  c=c-26;
모든 소문 자 는'c>'Z'조건 을 만족 시 키 고'c=c-26'도 실행 하기 때문이다.문장,이것 은 실 수 를 할 수 있다.따라서 그 범 위 를'c>'Z'&&c'='Z'+4',즉 원 자 모 는'W'에서'Z'로 제한 해 야 한다.이 범위 이외 의 것 은 원 대문자 W~Z 가 아니 므 로 이 규칙 에 따라 전환 해 서 는 안 된다.

좋은 웹페이지 즐겨찾기