#include<stdio.h>
int main(void)
{
int na,nb,nc;
puts("三つの整数を入力して下さい。");
printf("整数A:");
scanf("%d", &na);
printf("整数B:");
scanf("%d", &nb);
printf("整数C:");
scanf("%d", &nc);
if(na==nb && nb==nc)
puts("三つの整数は等しいです。");
else if(na==nb || nb==nc || nc==na) /* この条件式の評価値は,三つの整数が等しい場合にも1(真)となるが,
三つの整数が等しい場合は上のif文で処理済となる。
(三つの整数が等しい場合はこのelse if文は実行されない) */
puts("二つの整数が等しいです。");
else
puts("三つの整数は異なります。");
return(0);
}
/*
読み込んだ三つの整数値において全て等しいか、二つ等しいか、バラバラかを判定
*/
#include <stdio.h>
int main(void)
{
int n1, n2, n3;
puts("三つの整数を表示してください。");
printf("整数1 :"); scanf("%d", &n1);
printf("整数2 :"); scanf("%d", &n2);
printf("整数3 :"); scanf("%d", &n3);
if (n1 == n2 && n2 == n3)
puts("三つの値は等しいです。");
else if (n1 != n2 && n2 != n3 && n1 != n3)
puts("三つの値は異なります。");
else
puts("二つの値が等しいです。"); /* 三つの値が全て等しい場合と,
三つの値が全て異なる場合
以外にあり得る状況は,どれか二つの値が等しい場合 しかないのである!*/
return (0);
}
/*
三つの整数を読み込んでそれらの値が等しいか否かを判断
*/
#include <stdio.h>
int main(void)
{
int n1, n2, n3;
puts("三つの整数を入力して下さい:");
printf("整数1:"); scanf("%d", &n1);
printf("整数2:"); scanf("%d", &n2);
printf("整数3:"); scanf("%d", &n3);
if (n1 == n2 && n2 == n3)
puts("三つの値は等しいです。");
else if (n1 == n2 && n2 != n3 || n1 == n3 && n3 != n2 || n2 == n3 && n2 != n1)
/*
&& と || の優先順位(どちらが先に処理されるか,テキスト205ページTable7-11参照)は,&& のほうが高いので,これで期待どおりの動作をする。
しかし,自分の意図する順番でコンピュータに処理させることを明確にしておくために,以下のように ( ) を使用することをお勧めします。
else if ( (n1 == n2 && n2 != n3) || (n1 == n3 && n3 != n2) || (n2 == n3 && n2 != n1) )
*/
puts("二つの値が等しいです。");
else
puts("三つの値は異なります");
return (0);
}
コンピュータプログラムは, “例外なく” “漏れなく” “期待されている動作をする” ことが,最も重要である。 計算効率などは,二の次で,よい。 |
/*
3つの整数値を読み込んで、そのうち等しいものはいくつあるかを表示する
*/
#include <stdio.h>
int main(void)
{
int a,b,c,A,B,C,S ;
printf("3つの整数値を入力して下さい\nひとつめ:");
scanf("%d",&a);
printf("ふたつめ:");
scanf("%d",&b);
printf("みっつめ:");
scanf("%d",&c);
A = a == b ; B = b == c ; C = c == a ;
S = A + B + C ;
/* コンピュータの内部では,真は1で,偽は0で表されるという性質をうまく使っている。
このコードを書いたひとは,コンピュータに慣れているひとでしょう。うまい!*/
if ( S == 0 )
puts("等しいものは0個です。");
else if ( S == 1 )
puts("等しいものは2個です。");
else
puts("等しいものは3個です。");
return(0);
}
/*
exer3-9
三つの整数値を読みこんで、比較
*/
#include<stdio.h>
int main(void)
{
int a,b,c;
puts("三つの整数を入力して下さい");
printf("整数1:"); scanf("%d",&a);
printf("整数2:"); scanf("%d",&b);
printf("整数3:"); scanf("%d",&c);
if (a==b){
if(b==c) printf("三つの値は等しいです。\n");
else printf("二つの値が等しいです。\n");
}else{
if(b==c || a==c) printf("二つの値が等しいです。\n");
else printf("三つの値は異なります。\n");
}
return(0);
}
#include <stdio.h>
int main(void)
{
int n1, n2, n3;
puts("3つの整数を入力してください。");
printf("整数1:"); scanf("%d", &n1);
printf("整数2:"); scanf("%d", &n2);
printf("整数3:"); scanf("%d", &n3);
if (n1 == n2 == n3) /* この式は,まず,n1==n2 が評価されて,
0(n1とn2が等しくない場合)もしくは1(n1とn2が等しい場合)の評価値となり,
その次に,その評価値==n3が評価されることになる。
すなわち,n3と等価演算子==で比較されるのは0または1となってしまう!気をつけて!
(コンパイルはエラーなくとおる) */
puts("三つの値は等しいです。");
else if (n1 == n2 || n2 == n3 || n3 == n1)
puts("二つの値が等しいです。");
else
puts("三つの値は異なります。");
return (0);
}
#include <stdio.h>
main(){
int na, nb, nc;
printf("整数Aを入力して下さい:"); scanf("%d" ,&na);
printf("整数Bを入力して下さい:"); scanf("%d" ,&nb);
printf("整数Cを入力して下さい:"); scanf("%d" ,&nc);
if(na==nb && nb==nc){
puts("3つの値は等しいです。");
}
else if(na==nb || nb==nc){ /* この式は,naとncが等しいとき(例えば,naが2,nbが3,ncが2,など)
0(偽)となってしまう可能性が残されてしまっている。注意! */
puts("2つの値が等しいです。");
}
else{
puts("3つの値は異なります。");
}
return 0;
}
#include<stdio.h>
int main(void)
{
int na, nb, diff ;
puts("二つの整数を入力して下さい。");
printf("整数A:");
scanf("%d", &na);
printf("整数B:");
scanf("%d", &nb);
diff = na - nb ;
if(diff > 10 || diff < -10)
puts("それらの差は11以上です。") ;
else
puts("それらの差は10以下です。") ;
return(0) ;
}
||
なんか,オレは使わない。)
#include <stdio.h>
int main(void) {
int a, b;
int diff;
puts("二つの整数を入力してください。");
printf("整数A:");
scanf("%d", &a);
printf("整数b:");
scanf("%d", &b);
diff = (a > b) ? (a - b) : (b - a); /* 条件演算子 ? : については,Cf. テキスト56ページ
このひとも,コンピュータに慣れたひとでしょう。*/
if(diff <= 10) puts("それらの差は10以下です。");
else puts("それらの差は11以上です。");
return 0;
}