第2回演習の解答例


問1:文字を入力すると文字コードを表示するプログラムを参考に、文字コードを入力すると文字を表示するプログラムを作成せよ。


#include <stdio.h>

void main()
{
    int a;
 
    printf("文字コードを入力してください:");
    scanf("%d", &a);
 
    printf("文字は%cです.¥n", a);
}

問2:数字を入力すると16進法で表示するプログラムを作成せよ。


#include <stdio.h>

void main()
{
    int a;
 
    printf("数字を入力してください:");
    scanf("%d", &a);
 
    printf("16進法で表示すると%xです.¥n", a);
}

問3:以下の暗号化を行うプログラムを作成せよ.文字列はプログラム中で定義してよい.
    (変換前)abc→(変換後)efg

    (変換前)XyZ→(変換後)BcD


#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);
}

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


#include <stdio.h>

void main()
{
	char str[100];
	int i, count;

	count = 0;

	printf("文字を入力してください:");
	scanf("%s", str);

	for(i=0;str[i]!='¥0';i++){
		count++;
	}

	printf("文字数は%dです.¥n", count);
}

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


#include <stdio.h>

void main()
{
	char str[100];
	int i, j, tmp;

	printf("文字を入力してください:");
	scanf("%s", str);

	for(i=0;str[i]!='¥0';i++){
		for(j=i+1;str[j]!='¥0';j++){
			if(str[i] > str[j]){
				tmp = str[i];
				str[i] = str[j];
				str[j] = tmp;
			}
		}
	}

	printf("アルファベット順に並べ替えると%sです.¥n", str);
}