検索
連載

バグ検出ドリル(12)コンパイルエラーにならないコンパイルエラー山浦恒央の“くみこみ”な話(112)(2/3 ページ)

バグは至るところに、しかも堂々と潜んでおり、自信満々なプログラマーほど、目の前のバグに気付かないものです。「バグ検出ドリル」の第12回は、前回に引き続き「コンパイルエラー」がテーマです。コンパイルエラーにはならないのに、うまく動かないプログラムのバグを見つけ出してください!

Share
Tweet
LINE
Hatena

3.今回の問題

問題文:リスト1に、バグ入りの「アルバイト社員の給料計算」プログラムを示す。リスト2に示す結果を期待したが、実際にはリスト3の実行結果を表示した後、ハングアップした。プログラムを修正し、リスト2の実行結果となるように修正せよ。なお、本問題ではリスト2の入力パターン以外は考慮しないこと。

/*
	SalaryCalc.c
	アルバイト社員の給料を計算するプログラム
	仕様1:名前、一日の勤務時間、勤務時間帯を入力する。
	仕様2:勤務時間帯が通常勤務場合は、基本給 * 勤務時間とし、
		勤務時間帯が深夜勤務の場合は、深夜基本給 * 勤務時間とする。
*/
#define BASE 1000
#define NIGHT_BASE 1100
#include <stdio.h>
int main(void){
	char name[128];	//名前
	int time = 0;	//時間
	int zone = 0;	//時間帯
	int salary = 0;	//通常勤務は0、深夜勤務は1
	//給料の算出
	printf("名前を入力してください\n");
	scanf("%s",name);
	printf("勤務時間を入力してください\n");
	scanf("%d",&time);
	printf("勤務時間帯を入力してください\n");
	printf("通常勤務:0 深夜勤務;1\n");
	scanf("%d",zone);
	if (zone = 0) {
		salary = BASE * time;
	} else {
		salary = NIGHT_BASE * time;
	}
	printf("本日の%sさんの給料は: %d円です\n",name, salary);
	
	return 0;
}
リスト1 アルバイトの給与計算プログラム(C言語)
名前を入力してください
山田博之
勤務時間を入力してください
10
勤務時間帯を入力してください
通常勤務:0 深夜勤務;1
0
本日の山田博之さんの給料は: 10000円です
リスト2 期待した実行結果
名前を入力してください
山田博之
勤務時間を入力してください
10
勤務時間帯を入力してください
通常勤務:0 深夜勤務;1
0
リスト3 実際の実行結果

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る