第2回演習:解答例


演習課題

(1)文字を入力すると文字コードを表示するプログラムを参考に、文字コードの10進数で32から126の間の文字コードと対応する文字を画面に表示するプログラムを作成せよ.


#include <stdio.h>
void main()
{
	char c;
	for(c=32;c<=126;c++){
		printf("文字コード %d の文字は %c です¥n",c,c);
				}
}

(2)キーボードからアルファベットの小文字を 1 文字入力(前述のgetchar()関数を使おう)すると,大文字に変換して画面に表示するプログラムを作成せよ.
ヒント:
・まず入力された文字が小文字かどうかの判定を行おう.
・文字コード表をよく見ると,ABC... , abc... と規則的に並んでいる.


#include <stdio.h>
void main()
{
	char c;
	
	printf("小文字を入力して下さい");
	c = getchar();
	
	
	if(c>=97&&c<=122){
	
		c -= 32;
		printf("大文字は%cです。¥n",c);
	}else{
		printf("小文字を入力して下さい。¥n");
	}
}

(3)キーボードから文字列を入力すると何文字入力されたかを画面に表示するプログラムを作成せよ.
ヒント:文字列の終わりには,必ず null文字(¥0,0x00)が置かれている.


#include <stdio.h>
void main()
{
	int i;
	int b=0;
	char a[256];
 
	printf("文字列を入力してください.¥n"); scanf("%s",a);
	printf("入力された文字列は%sです.¥n",a);
	
	for(i=0;a[i]!=0x00;i++){
		b=b+1;
	}
	printf("文字数は%dです.¥n",b);
}

(4)キーボードから入力した文字列をアルファベット順に並び替えるプログラムを作成せよ.


#include <stdio.h>
void main()
{
	int i,j;
	char str[100],a;
	
	printf("文字を入力して下さい");
	scanf("%s",str);
	
	printf("入力された文字列は%sです¥n",str);
 
	for(i=0; str[i]!=0; i++){
		for(j=i+1; str[j]!=0; j++){
			if(str[i]>str[j]){
				a = str[i];
				str[i] = str[j];
				str[j] = a;
			}
		}
	}
	
	printf("アルファベット順に並び替えた文字列は%sです¥n",str);
}