- 追加された行はこの色です。
- 削除された行はこの色です。
[[練習問題]]
*回答例 [#md82ea7f]
*[[練習問題]]の回答例 [#md82ea7f]
#contents
**C++(better C)による回答例 [#fd82d1e2]
***FizzBuzz [#lc3cde05]
#include<iostream>
using namespace std;
int main( int argc, char** argv ){
int lim = 0;
int i;
sscanf( argv[ 1 ], "%d", &lim );
for( i = 1; i <= lim; i ++ ){
if( i % 15 == 0 ){
printf( "FizzBuzz" );
}else if( i % 3 == 0 ){
printf( "Fizz" );
}else if( i % 5 == 0 ){
printf( "Buzz" );
}else{
printf( "%d", i );
}
printf( " " );
}
return 0;
}
***素数判定 [#t96ef71e]
#include<iostream>
#include<math>
using namespace std;
int main( int argc, char** argv ){
int lim = 0;
int i;
bool isPrime = true;
sscanf( argv[ 1 ], "%d", &lim );
for( i = 2; i < ( int )( sqrt( lim ) + 1.0 ); i ++ ){
if(( lim % i ) == 0 ){
isPrime = false;
break;
}
}
if( isPrime ){
printf( "%dは素数\n", lim );
}else{
printf( "%dは非素数\n", lim );
}
return 0;
}
おまけで素数列挙
#include<iostream>
#include<math>
using namespace std;
int main( int argc, char** argv ){
int lim = 0;
int i, j;
bool isPrime;
sscanf( argv[ 1 ], "%d", &lim );
if( lim == 0 ){
return -1;
}
printf( "%d ", 2 );
for( i = 3; i < lim; i ++ ){
isPrime = true;
for( j = 2; j < ( int )( sqrt( i ) + 1.0 ); j ++ ){
if(( i % j ) == 0 ){
isPrime = false;
break;
}
}
if( isPrime ){
printf( "%d ", i );
}
}
return 0;
}
***平方根 [#h1b5f416]
#include<iostream>
using namespace std;
int main( int argc, char** argv ){
double target = .0;
double result = .0;
double temp;
int i, j, k;
char *str1, *str2;
sscanf( argv[ 1 ], "%lf", &target );
sscanf( argv[ 2 ], "%d", &k );
str1 = ( char* )malloc( k );
str2 = ( char* )malloc( k );
if( target == .0 ) return -1;
for( i = 9; i >= 0; i -- )
if( i * i <= ( int )( target )) break;
sprintf( str1, "%d.", i );
for( j = 0; j < k; j ++ ){
for( i = 9; i >= 0; i -- ){
sprintf( str2, "%s%d", str1, i );
sscanf( str2, "%lf", &temp );
if(temp * temp <= target ) break;
}
strcpy( str1, str2 );
}
sscanf( str1, "%lf", &result );
sprintf( str2, "%%lf,%%.%dlf", k );
printf( str2, target, result );
return 0;
}