階乗を求める

ループで求める
#include<stdio.h>
unsigned int factorial( unsigned int n)
{
  unsigned int result = 1;
  while(n != 0) result *= n, --n;
  return result
}
int main( void )
{
  int n;
  printf("nを入力:");
  scanf("%d", &n);
  printf("%dの階乗は%d\n", n, factorial(n));
  return 0;
}

階乗を求める(再帰)

再帰で求める
#include<stdio.h>
unsigned int factorial( unsigned int n)
{
  return n == 0 ? 1 : n * factorial(n-1);
}
int main( void )
{
  int n;
  printf("nを入力:");
  scanf("%d", &n);
  printf("%dの階乗は%d\n", n, factorial(n));
  return 0;
}

素数判定

http://pc8.2ch.net/test/read.cgi/tech/1165190320/146
2以上の整数を読み込み素数であるかどうかを判定する文をつくる
#include<stdio.h>
#include<stdbool.h>

typedef unsigned int uint;
bool isPrime( uint n )
{
uint i;
if( n < 2 ) return false;
if( n == 2 ) return true;
if( n%2 == 0 ) return false;
for( i = 3; i * i <= n; i += 2 ) if( n%i == 0 ) return false;
return true;
}

int main() {
  int n;
  scanf("%d", &n);
  if(isPrime(n)){
    printf("素数\n");
  }else{
    printf("素数ではない\n");
  }
  return 0;
}

FizzBuzz問題

#include<stdio.h>

char *fzzBuzz( int n )
{
   static char buffer[BUFSIZ];
   return n % 15 == 0 ? "FizzBuzz":
	   n % 3  == 0 ? "Fizz":
	   n % 5  == 0 ? "Buzz":
	   (sprintf(buffer,"%d",n), buffer);
}

int main()
{
   for( int i = 0; i != 100; ++i )
   {
       fputs( fizzBuzz( i ), stdout );
   }
   return 0;
}

#include<stdio.h>
int main(){
  int i, f;
  for(i=1; i<=100; ++i){
        f = 1;
        if(i%3 == 0){ printf("Fizz"); f = 0; }
        if(i%5 == 0){ printf("Buzz"); f = 0; }
        if(f){ printf("%d", i); }
        putchar('\n');
    }
    return 0;
}

タグ:

+ タグ編集
  • タグ:
最終更新:2010年12月01日 00:37