Cプログラミングの実験報告書III
パイロットプロジェクト:文の4-3-1ifアプリケーション、アプリケーションの4-3-2switch-ケース ; アプリケーション4-3-3switch-場合if文を入れ子になった ; 4-3-4switch-ケース構造、ネストされたアプリケーション。
4-3-5分析手順 ; 電卓の実装
名前:魏ライ
実験場所:ホーム
実験時間:2020年3月29日
1、実験目的と要件
1.マスター。(「真」のための「偽」で0と1)C言語の論理値の表現
2、関係および論理式の適切な使用を学ぶ。
3、のすべてのフォームをマスターするif文の構文と使用方法.IF関係ifとelseステートメントを照合し、if文を入れ子になった。
4、マスタースイッチ文の構文と使用方法、使用状況やスイッチ文でswitch文のネストされたノートブレーク。
第二に、実験的なコンテンツ
1、ラボ演習:アプリケーションexample_4_3_1if声明
①、问题的简单描述:无
②、实验代码:
#include<stdio.h>
int main()
{
int l,w,h;
printf("请输入箱子的长,宽,高;\n");
scanf("%d%d%d",&l,&w,&h);
if(l==w&&l==h&&w==h)
printf("该箱子是正方体:\n");
else
printf("该箱子是长方体:\n");
return 0;
}
③、问题分析:无
①、问题的简单描述:不进行对变量的注释会让人看不懂代码想表达什么
②、实验代码:
#include<stdio.h>
main()
{
int a,b,c;/*a表示打印纸的数量,b表示墨盒的数量,c表示光盒的数量*/
float d,m;/*d表示总额 ,m表示应付款*/
printf("请输入打印纸,墨盒,光盒的数量:");
scanf("%d%d%d",&a,&b,&c);
d=18*a+132*b+4.5*c;
if(d>500)
{
m=(1-0.1)*d;
printf("应付款:%.2f",m);
}
else if(d>400&&d<=500)
{
m=(1-0.08)*d;
printf("应付款:%.2f",m);
}
else if(d>300&&d<=400)
{
m=(1-0.07)*d;
printf("应付款:%.2f",m);
}
else if(d>200&&d<=300)
{
m=(1-0.06)*d;
printf("应付款:%.2f",m);
}
else if(d>100&&d<=200)
{
m=(1-0.05)*d;
printf("应付款:%.2f",m);
}
else
{
m=d;
printf("应付款:%.2f",m);
}
}
③、问题分析:对变量进行适量的注释
3、ラボ演習:アプリケーションexample_4_3_3switch-ケースならばネストされたステートメント
①、问题的简单描述:闰年的表达.
②、实验代码:
#include<stdio.h>
int main()
{
int year,month,days;
printf("please enter year and month:\n");
scanf("%d%d",&year,&month);
switch(month)
{
case 2:if((year%4==0&&(year%100==!0))||year%400==0)
days=29;
else
days=28;
break;
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:days=31;
break;
case 4:
case 6:
case 9:
case 11:days=30;
break;
}
printf("天数为:%d",days);
}
③、问题分析:通过查阅资料得出能被4整除不能被一百整除或者能被400整除的为闰年.
4、演習:アプリケーションのexample_4_3_4入れ子構造
①、问题的简单描述:无
②、实验代码:
#include<stdio.h>
int main()
{
int x,n,y;
float sum=0.0;
printf("请选择:1.日用品,2.文具,3.食品\n");
scanf("%d",&x);
switch(x)
{
case 1:printf("请选择:1.牙刷(3.5元/支)2.牙膏(6.2元/支)\n");
printf("3.肥皂(2元/块)4.毛巾(8.6元/条)\n");
scanf("%d",&y);
printf("数量?");
scanf("%d",&n);
switch(y)
{
case 1:sum=3.5*n;break;
case 2:sum=6.2*n;break;
case 3:sum=2*n;break;
case 4:sum=8.6*n;break;
}
break;
case 2:printf("请选择:1.笔(3元/支)2.笔记本(1.2元/个)\n");
printf("3.文件夹(12元/个)4.文具盒(8.6元/个)\n");
scanf("%d",&y);
printf("数量?");
scanf("%d",&n);
switch(y)
{
case 1:sum=3*n;break;
case 2:sum=1.2*n;break;
case 3:sum=12*n;break;
case 4:sum=8.6*n;break;
}
break;
case 3:printf("请选择:1.白糖(3.6元/包)2.盐(1元/包)\n");
printf("3.饼(2元/个)4.方便面(3.6元/条)\n");
scanf("%d",&y);
printf("数量?");
scanf("%d",&n);
switch(y)
{
case 1:sum=3.6*n;break;
case 2:sum=1*n;break;
case 3:sum=2*n;break;
case 4:sum=3.6*n;break;
}
break;
}
printf("总计:%.2f元\n",sum);
}
③、问题分析:无
5、ラボ演習:example_4_3_5解析プログラム
①、问题的简单描述:第一个实验结果不是0
②、实验代码Ⅰ:
#include<stdio.h>
int main()
{
double x=1000/3.0;
double y=x-333.0;
double z=3*y-1.0;
printf("x=%.2lf\n",x);
printf("y=%.2lf\n",y);
printf("z=%.2lf\n",z);
if(z==0)
printf("z==0.\n");
else
printf("z不等于0.\n");
return 0;
}
实验代码Ⅱ:
#include<stdio.h>
int main()
{
int num=20;
if(5<num&&num<10)
printf("%d in range (5,10)!\n",num);
else
printf("%d out of range (5,10)!\n",num);
}
③、问题分析:double是占八个字节,也就是64位,由于小数位数有限,所以得出的结果并不会是0,而是一个十分接近0的小数.
第三に、研修プロジェクト:電卓を達成するために
1、設計:簡単なコンピュータ・プログラムをコンパイルするが、それにより四則演算を達成する、文と文がある場合に、加算、減算の選択スイッチによって共同で実施することができる
2フローチャート。
メソッドの設計及び改善の間に遭遇3.問題
第一次实验发现的问题:编译的代码只能够进行一次运算,而不能根据计算器使用者的意愿进行多次计算.
实验代码:
#include<stdio.h>
int main()
{
int m;
float x,y,z;
char c;
printf("请输入一个数字\n");
printf("**输入数字1表示加法运算**\n");
printf("**输入数字2表示减法运算**\n");
printf("**输入数字3表示乘法运算**\n");
printf("**输入数字4表示除法运算**\n");
scanf("%d,",&m);
switch(m>=1&&m<=4)
{
case 1:switch (m)
{
case 1: c='+'; break;
case 2: c='-'; break;
case 3: c='*'; break;
case 4: c='/'; break;
default: printf("you are wrong\n"); break;
}
printf("请输入两个数x,y\n");
scanf("%f%f",&x,&y);
switch ( c )
{
case '+': z=x+y; break;
case '-': z=x-y; break;
case '*': z=x*y; break;
case '/': z=( y==0 )?(0):(x/y); break;
default: z=0; break;
}
printf("%f%c%f=%f\n",x,c,y,z);break;
default:printf("you are wrong\n");
}
}
解决方法:可以通过使用for语句或者do,while语句对中心语句进行循环或者停止循环.
図4に示すように、コード
#include<stdio.h>
int main()
{
int i,m;
float x,y,z;
char c;
do{
printf("请输入一个数字\n");
printf("**输入数字1表示加法运算**\n");
printf("**输入数字2表示减法运算**\n");
printf("**输入数字3表示乘法运算**\n");
printf("**输入数字4表示除法运算**\n");
scanf("%d,",&m);
switch(m>=1&&m<=4)
{
case 1:switch (m)
{
case 1: c='+'; break;
case 2: c='-'; break;
case 3: c='*'; break;
case 4: c='/'; break;
default: printf("you are wrong\n"); break;
}
printf("请输入两个数x,y\n");
scanf("%f%f",&x,&y);
switch ( c )
{
case '+': z=x+y; break;
case '-': z=x-y; break;
case '*': z=x*y; break;
case '/': z=( y==0 )?(0):(x/y); break;
default: z=0; break;
}
printf("%f%c%f=%f\n",x,c,y,z);break;
default:printf("you are wrong\n");
}
printf("是否继续计算,继续请输入1,退出请输入不为1的整数:\n");
scanf("%d",&i);
}while(i==1);
}
第四に、テストサマリー
損益この実験では、私はのためにいくつかの基本的な使い方のルールを学び、実行し、ループwhile文、レビューと再び論理関係の理解を深め、if文の構造を統合。欠点は、多くは例えば、あるあります4つの操作は、除数が0に忘れることができないとき、コードを書くときに、多くの場合、気を取ら。