Source code
printf()
の変換指定
Copy #include <stdio.h>
int main ( void )
{
char c;
int n;
double d;
char s[ 20 ] = "abcde" ;
c = 65 ;
printf( "c: %c \n" , c) ; // c: A
printf( "c: %d \n" , c) ; // c: 65
n = 66 ;
printf( "n: %c \n" , n) ; // n: B
printf( "n: %d \n" , n) ; // n: 66
n = 1000 ;
printf( " 8: %o \n" , n) ; // 8: 1750
printf( " 10: %d \n" , n) ; // 10: 1000
printf( "16x: %x \n" , n) ; // 16x: 3e8
printf( "16X: %X \n" , n) ; // 16X: 3E8
d = 56789.12 ;
printf( "f: %f \n" , d) ; // f: 56789.120000
printf( "e: %e \n" , d) ; // e: 5.678912e+004
printf( "E: %E \n" , d) ; // E: 5.678912E+004
printf( "s: %s \n" , s) ; // s: abcde
printf( "c= %d n= %d s= %s \n" , c , n , s) ; // c=65 n=1000 s=abcde
return 0 ;
}
printf()
のオプション指定
Copy #include <stdio.h>
int main ( void )
{
double d = 654.321 ;
printf( "[ %f ]\n" , d) ; //[654.321000]
printf( "[ %12f ]\n" , d) ; //[ 654.321000]
printf( "[ %9.2f ]\n" , d) ; //[ 654.32]
printf( "[ %9.f ]\n" , d) ; //[ 654]
printf( "[ %.2f ]\n" , d) ; //[654.32]
}
fgets()
関数
Copy #include <stdio.h>
int main ( void )
{
char s[ 100 ];
printf( "Enter a string: " ) ;
fgets(s , 100 , stdin) ;
printf( " %s " , s) ;
return 0 ;
}
scanf()
関数とfgets()
関数の違い
Copy #include <stdio.h>
int main ( void )
{
char s1[ 80 ] , s2[ 80 ];
printf( "fgets():" ) ;
fgets(s1 , 80 , stdin) ;
printf( "s1= %s \n" , s1) ;
printf( "scanf():" ) ;
scanf( " %s " , s1) ;
printf( "s1= %s \n" , s1) ;
scanf( " %s " , s2) ;
printf( "s2= %s \n" , s2) ;
return 0 ;
}
Problem
問題1. キーボードから入力した10進数の数値を,8進数と16進数で表示せよ.
問題2. キーボードから入力した文字列を配列に格納し,1文字ずつ文字コード(2桁の16進数)で表示せよ.(参考: p.244-245)
問題3. キーボードから入力した文字列をアルファベット順に並び替えて出力せよ.ただし,入力するアルファベットはすべて小文字とする.
scanf()
は%s
で文字列読み込みができる(p.117)
各文字は文字コード表にある値で表される(p.244 – 245)
「隣り合う配列の要素と比較し,順序が逆であれば入れ替える」ということを繰り返す
Solutions
問題1
キーボードから入力した10進数の数値を,8進数と16進数で表示せよ.
Copy #include <stdio.h>
int main ( void )
{
int num;
printf( "input a number: \n" ) ;
scanf( " %d " , & num) ;
printf( "8: %o \n16x: %x \n" , num , num) ;
return 0 ;
}
問題2
キーボードから入力した文字列を配列に格納し,1文字ずつ文字コード(2桁の16進数)で表示せよ.(参考: p.244-245)
Copy #include <stdio.h>
int main ( void )
{
char ss[ 80 ]; int i = 0 ;
printf( "Input a string:" ) ;
fgets(ss , 80 , stdin) ;
while (ss[i] != '\0' ){
printf( " %2X " , ss[i ++ ]) ;
}
printf( "\n" ) ;
return 0 ;
}
問題3
キーボードから入力した文字列をアルファベット順に並び替えて出力せよ.ただし,入力するアルファベットはすべて小文字とする.
Copy #include <stdio.h>
int main ( void ){
int i , j , temp;
char str[ 100 ];
scanf( " %s " , str) ;
for (i = 0 ;str[i] != 0 ;i ++ ){
for (j = i + 1 ;str[j] != 0 ;j ++ ){
if (str[i] > str[j]){
temp = str[i];
str[i] = str[j];
str[j] = temp;
}
}
}
printf( " %s \n" , str) ;
return 0 ;
}
Last updated 2 months ago