プログラミング入門II 宿題 2019.06.17

Back


アルファベットの大文字を重複無くランダムに10文字選んで表示し,それをアルファベット順に並べ直して表示するプログラムを作成しましょう.

My student number: s186099

KSWTINMQFC
CFIKMNQSTW

----------------------------

なお,結果の出力では必ず最初の行に自分の学生番号を,最後にハイフンによるラインをつけること.無い場合には減点するので注意.

結果を確認するときには,処理を less に渡して,出力が変なことになっていないか確認してください.

$ ./a.out | less
解答用紙を使用する際には,学生番号と名前の記入も忘れないでください.さらに,解答用紙自体がC言語のプログラムとなっていますので, cc コマンドを実行して,コンパイルエラーの無いことを確認してから提出してください.

指定の解答用紙を使用していない,コンパイルエラーが出る,実行時に警告が出る,学生番号と名前が無い,というような答案は提出されても採点しません.注意してください.


解答例

// ************************************************** 
//                                                    
//      プログラミング入門II レポート課題                                    
//      2019.06.17                                    
//                                                    
// ************************************************** 
//                                                    
//      学生番号:                                     
//                                                    
//      氏名:                                         
//                                                    
// ************************************************** 
//                                                    
//      
              
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
	srand((unsigned) time(NULL));
	
	printf("My student number: s186099\n\n");
	
	int i, j, n, tmp, alph[26];
	char str[11];
	
	str[10] = '\0';		//最終的な文字を入れるための配列のヌル文字準備
	
	for(i=0; i<=25; i++)	//アルファベット26文字をコードで準備
	{
		alph[i] = i + 65;
	}
	
	for(i=0; i<=24; i++)	//アルファベットランダム化
	{
		n = rand() % (26 - i);
		
		tmp = alph[n];
		alph[n] = alph[25-i];
		alph[25-i] = tmp;
	}
	
	for(i=0; i<=9; i++)	//ランダムなアルファベットの最初の10文字分のコード抽出
	{
		str[i] = alph[i];
	}
	
	printf("%s\n", str);	//ランダムな状態の文字列表示
	
	for(i=0; i<=8; i++)	//アルファベット順に文字列ソート
	{
		for(j=i+1; j<=9; j++)
		{
			if(str[i]>str[j])
			{
				tmp = str[i];
				str[i] = str[j];
				str[j] = tmp;
			}
		}
	}
	
	printf("%s\n", str);	//アルファベット順の文字列表示
	
	printf("\n----------------------------\n\n");
	
	return 0;
}


Back