第2回演習:解答例


演習課題

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

/*1.大文字に変換するプログラム*/


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

(2)以下の暗号化を行うプログラムを作成せよ.文字列はプログラム中で定義してよい.
    (変換前)abc→(変換後)efg
    (変換前)XyZ→(変換後)BcD
ヒント:アルファベットで四文字ずらす.

/*2.暗号プログラム*/


#include <stdio.h>
void main()
{
	char a[4]="abc";
	char b[4]="XyZ";
	int i;

	for(i=0;i<3;i++){
		a[i]=a[i]+4;
		b[i]=b[i]-22;
	}
	printf("abcの変換後は%sです.¥n",a);
	printf("XyZの変換後は%sです.¥n",b);
}


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

/*3.文字列カウントプログラム*/


#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)キーボードから入力した文字列をアルファベット順に並び替えるプログラムを作成せよ.

/*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);
}