ページ 1 / 1
超入門者コード
Posted: 2007年3月27日(火) 15:04
by 長
#include <stdio.h>
int main(void) {
int num1,num2;
char ch;
do{
printf("1:足し算 2割り算\n");
ch = getchar();
while(ch !='1' && ch != '2');
if(ch == '1') {
printf("二つの整数を入力\n");
scanf("%d",num1);
scanf("%d",&num2);
printf("足し算=%d",num1 + num2 );
}else {
printf("整数入力\n");
scanf("%d",&num1);
scanf("%d",&num2);
if(num2 != 0){
printf("割り算=%d",num1/num2);
}else if(num2 == 0){
printf("エラーです\n");
}
}
return 0;
}
:\vc\Practice1\ex01.c(32) : fatal error C1004: 予期せぬ EOF が検出されました。
なぜ? }の数?
Re:超入門者コード
Posted: 2007年3月27日(火) 15:08
by Blue
> }の数?
そうです。
多分
> do{
> printf("1:足し算 2割り算\n");
> ch = getchar();
> while(ch !='1' && ch != '2');
の対応が取れていないから。
また
>scanf("%d",num1);
&が抜けているような。
Re:超入門者コード
Posted: 2007年3月27日(火) 15:09
by ※
}が足りません。
do{
printf("1:足し算 2割り算\n");
ch = getchar();
}while(ch !='1' && ch != '2');
↑
ここ
Re:超入門者コード
Posted: 2007年3月27日(火) 15:13
by 長
ありがとうございます!!
もっとこうしたほうがいいと思うところありますか?
Re:超入門者コード
Posted: 2007年3月27日(火) 16:06
by keichan
>もっとこうしたほうがいいと思うところありますか?
getchar() は int型を返すので
char ch;
は
int ch;
にしなくてはいけません。
Re:超入門者コード
Posted: 2007年3月27日(火) 17:19
by 管理人
別の「電卓作成中」のトピに電卓プログラムのサンプルを書いておりますので
よければそちらも参考にしてください。
Re:超入門者コード
Posted: 2007年3月27日(火) 20:10
by 長
int i;
i = strcmp(str1,str2);
if(!i){
printf("文字列は等しい\n");
}else if(i < 0){
printf("%sは%sより小さい\n",str1,str2);
}else
printf("%sは%sより大きい\n",str1,str2);
}
文字列を比較している部分のコードですが、if(!i)というのが分かりません。!iというのはiではないなら、ということですよね?またstrcmpも説明があやふやですごく分かりにくいです。
ここでは何をしているのですか?
Re:超入門者コード
Posted: 2007年3月27日(火) 20:53
by box
> if(!i)というのが分かりません。
if (!i)
↓
iが偽ならば
↓
ここで、偽はゼロと等価
↓
つまり、iがゼロならば、という意味
↓
if (!i) は、if (i == 0) と等価
Re:超入門者コード
Posted: 2007年3月27日(火) 20:57
by 長
boxさんありがとうございます。理解できました。