- 1/28宿題について
せっかくですので,宿題の問題点もいつものようにお示しします.
コンパイルエラーがありました.
b1230
解答用紙の不使用も無くなりません.
b1277
久しぶりに無限ループもありました.
b1034
printf("%c",s[(a+i)%26]);
|
今回は循環を使うような指示は出していません.zまでがアルファベット26文字です.
上の場合,例えば文字数が最小の場合は6なんですが,uvwxyzは決して表示されません.問題ですね.
if 文は使用する必要がありません.
if 文のような条件分岐は処理を遅らせる原因の一つですので,不要な場合には使用しないのが一番です.
ここのところ何度か説明しているのですが,なぜ分かってもらえないのでしょうかね.閉じ括弧の真上に式が来るのはきちんとしたインデントではありません.
- セグメンテーション違反について
文字列配列を扱うようになってセグメンテーション違反のエラーが出るプログラムが増えています.これは %c と %s の違いが分かっていないことによって生じる場合が多く見られます.もう一度,以下のことについて,確認と理解をしてください.
例えば,以下のプログラムです.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
|
#include <stdio.h>
main()
{
int i;
char str[3] = {'a', 'b', '\0'};
for(i=0; i<=3; i++)
printf("%s\n", str[i]);
return(0);
}
|
上のプログラムは,8行目からの for 文で文字列の表示を行おうとしていますが,9行目の str[i] は要素の1文字を意味しています.ところが,printf では文字列全体を表す %s を使用していますので,表示の指示と実際の値が違うことになっているために,セグメンテーション違反のエラー警告が出ます.
もう一つややこしいのは,文字列を扱う際に推奨したページャの less を使用すると,そのセグメンテーション違反の警告が見えないことです.ですので,文字列の表示が範囲外まで指定されていないかを確認するために,less を使用するのと,セグメンテーション違反を確認するために使用しないのと,必ず2種類のやり方で結果を確認してください.
- 試験室に関する注意
2クラス続けて試験をします.接触を避けることと円滑な入れ換えとを行うために,以下のような作業を指定しますので,守ってください.
- C6クラスの学生は,下足を入れるための袋等を用意し,試験中は自分の荷物と一緒に持っておいて,試験終了後は前方の扉から東方面(非常階段もしくは東側エレベータ)のみに移動する.
- C7クラスの学生は,通常どおり下足箱に靴を入れておいて,入れ換え時間帯は教室後方で待機しておき,C6クラスの学生が退出し終わったら着席する.
- C7クラスの学生は,となりの学生と必ずPC1つ分空けて座る.
- 携帯電話に関する注意
携帯電話に関しては,必ず電源を切っておいて,鞄に入れておくこと.手元やポケットに持っている場合あるいは鳴動した場合は不正行為とみなす可能性があるので,注意してください.
- 教科書やノートの持込
資料の持込は自由です.ただし,隣の人に見えるようにはしないように注意してください.