《C语言程序设计》实验.设计.习题.答案. 顺序结构与逻辑运算
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验2顺序结构与逻辑运算
学号:姓名:实验日期:
1.实验目的和要求
(1)掌握数据输入/输出函数的使用,能正确使用各种格式转换符。
(2)熟悉顺序结构程序中语句的执行过程,并学会基本调试程序方法。
(3)能够正确使用逻辑运算符和逻辑表达式。
(4)学会运用逻辑表达式或关系表达式等表示条件。
(5)熟练掌握if语句和switch语句,掌握条件表达式构成的选择结构。
scanf("%d%d",&c,&t);
if(t==c)
{
if(c>=50)
m=c*80;
else m=c*90;
}
else
{
if(c>t)
{
if(t>=50)
m=t*80+(c-t)*60;
else m=c*80+(t-c)*45;
}
else
{
if(c>=50)
m=t*90+(c-t)*60;
else m=c*90+(t-c)*45;
#include<stdio.h>
main()
{
int m=345;
float n=2.56;
printf("m=%d,n=%f,n*100=%f\n",m,n,n*100);
}
3-1-2该程序的功能是:输入三个数赋给a,b,c,输出这三个数,并计算输出s=a*b和v=a*b*c的值
程序运行结果画面如下:
}
3-3注意:这道程序我们不按书中提示进行,而在VC环境下进行调试。
语法错误和逻辑错误的区别何在?语法错误有错误提示,程序不可运行;逻辑错误无错误提示,程序可运行,但得不到你想求得的答案。
如何启动单步调试?在菜单栏中选择“组建”,然后在下拉菜单中选择“开始调试”,然后选择“Step Into”。
要使程序运行到“ss=(k…”这一行暂停下来,该如何操作?点到“ss=(k…”这一行,按F9,设置一个断点。
main()
{
int x,y;
scanf("%d",&x);
if(x>-5&&x<0)
y=x;
else if(x==0)
y=x-1;
else if(x>0&&x<10)
y=x+1;
printf("%d",y);
}
4-3填空的内容为:a>0?a:-a;
运行结果画面:
#include<stdio.h>
main()
c2=getchar();
putchar(c1);
putchar(c2);
printf("\n");
printf("%c%c\n",c1,c2);
}
3-5我使用的算法:运用求商的整数部分和求余数进行分钟的转换
运行ห้องสมุดไป่ตู้果画面:
#include<stdio.h>
main()
{
int x,h,m;
printf("输入需转换的分钟数:");
}
4-2-1运行结果画面:
#include<stdio.h>
main()
{
int x,y;
scanf("%d",&x);
if(x>-5&&x<0)
y=x;
if(x==0)
y=x-1;
if(x>0&&x<10)
y=x+1;
printf("%d",y);
}
4-2-2运行结果画面:
#include<stdio.h>
}
if(i==0)
printf("这三边不构成三角形\n");
}
4-5我使用的算法:用求余的方法,若赋给x的值除以5和除以7的余数都为0,则输出yes,否则输出no。
运行结果画面:
#include<stdio.h>
main()
{
int x;
scanf("%d",&x);
if(x%5==0&&x%7==0)
}
实验四部分
4-1-a该程序的功能是:输入两个数:a、b,判断a*a+b*b的值,若a*a+b*b的值等于3或1,则y=a+b;若a*a+b*b的值等于0,则y=b-a;若a*a+b*b的值等于其他值,则输出“eerror”;最后输出y的值。
运行结果画面:
#include<stdio.h>
main()
{
int a,b;
long m,n;
float p,q;
scanf("%d,%d\n",&a,&b);
scanf("%f,%f\n",&p,&q);
scanf("%ld\n%ld",&m,&n);
printf("a=%d,b=%d\n m=%ld,n=%ld\n",a,b,m,n);
printf("p=%f,q=%f\n",p,q);
scanf("%d",&x);
h=x/60;
m=x%60;
printf("%d小时%d分钟",h,m);
}
3-7我使用的算法:进行千分位转换,四舍五入。
运行结果画面:
#include<stdio.h>
main()
{
double x;
scanf("%lf",&x);
printf("%7.2f\n",x);
}
3-2-1该程序的功能是:输入两个整数m,n,输出m,n并使其输出时每个数输出宽度为6,两数之间逗号间隔;并输出x,y并使其每个数输出宽度为7,小数位数为2。
程序运行结果画面如下:
#include<stdio.h>
main()
{
int m,n;
float x=3.5,y=6.2;
scanf("%d,%d",&m,&n);
i++和i—是在使用变量后加(减)一,++i和—i是在使用变量前加(减)一。
3-4请回答书中问题
问题(1)都可以。
问题(2)用printf函数,c1、c2输出的格式符用%d。
问题(3)不可以
程序运行结果画面如下:
#include<stdio.h>
main()
{
char c1,c2;
c1=getchar();
printf("m=%6d,n=%6d\n",m,n);
printf("x=%7.2f,y=%7.2f\n",x,y);
}
3-2-2该程序的功能是:赋给a,b,m,n,p,q数值,并输出a,b,m,n的整型数值和p,q的浮点型数值。
程序运行结果画面如下:
#include<stdio.h>
main()
在本题中,假设要在运行第2条语句(即scanf语句后),要马上观察i,j,k,ss,m,n的变量的值,操作方法:在菜单栏中选择“组建”,然后在下拉菜单中选择“开始调试”,然后选择“Step Into”,在watch窗口的名称下的框中输入要马上观察的“i,j,k,ss,m,n”,请把观察这些变量时的画面粘贴到下面:
}
}
printf("%d\n",m);
}
4-5我使用的算法:输入三边,然后判断是否构成三角形,能构成三角形后再判断三角形类型。
运行结果画面:
#include<stdio.h>
main()
{
float x,y,z;
int i;
printf("输入三条边长:");
scanf("%f%f%f",&x,&y,&z);
运行结果画面:
#include<stdio.h>
main()
{
int a,b,y;
scanf("%d%d",&a,&b);
switch(a+b)
{
case 10:y=a+b;break;
case 11:y=a-b;break;
default :printf("error\n");break;
}
printf("%d",y);
if(x+y>z&&x+z>y&&y+z>x&&x>0&&y>0&&z>0)
{i=1;}
if(i==1)
{
if(x==y&&y==z)
printf("此三角形为等边三角形\n");
else if(x==y||y==z)
printf("此三角形为等腰三角形\n");
else
printf("此三角形为不等边三角形\n");
(5)可以进行简单的程序的编写
运行结果画面:
#include<stdio.h>
main()
{
int a,b,y;
scanf("%d%d",&a,&b);
switch(a)
{
default :y=a+b;break;
case 10:y=a-b;break;
case 11:y=a*b;break;
}
printf("%d",y);
}
4-1-c该程序的功能是:输入两个数:a、b,判断a+b的值,若a+b的值等于10,则y=a+b;若a+b的值等于11,则y= a-b;若a+b的值等于其他值,则输出“eerror”;最后计算输出y的值。
#include<stdio.h>
main()
{
double a,b,c,s,v;
scanf("%lf,%lf,%lf",&a,&b,&c);
s=a*b;
v=a*b*c;
printf("%lf,%lf,%lf\n",a,b,c);
printf("s=%lf\n",s);
printf("v=%lf\n",v);
printf("yes\n");
else
printf("no\n");
}
4实验小结
通过实验我的C语言能力的到了进一步的提高:
(1)学会了基本的程序调试;
(2)掌握了IF和SWITCH语句的应用;
(3)掌握数据输入/输出函数的使用,能正确使用各种格式转换符
(4)知道了逻辑运算符、逻辑表达式、关系表达式的运用
{
int a,M;
scanf("%d",&a);
M=a>0?a:-a;
printf("abs(a)=%d\n",M);
}
4-4运行结果画面:
#include<stdio.h>
main()
{
int c,t,m;
printf("input the number of coat and trousers your want buy:\n");
怎样终止调试状态(程序复位)?在菜单栏中选择“调试”,然后选择“StopDebugging”。
单步调试状态下,向下运行一条语句的操作方法(分两种情况回答,第一种,跟踪到自定义函数内部,第2种,不跟踪到自定义函数内部):第一种选择“Step Into”,跟踪到自定义函数内部;第2种选择“Step over”,不跟踪到自定义函数内部
(6)熟练掌握跟踪调试程序,针对具体数据组织输入测试数据,观察程序运行能否得到预期的输出结果。
(7)学会编写简单程序。
2.实验内容:实验指导书中的实验三和实验四
3.实验步骤及结果
实验三部分:
3-1-1该程序的功能是:输出m=345,n=2.560000,并计算输出(n*100)
程序运行结果画面如下:
#include<stdio.h>
main()
{
int i,j,k,ss,m=1,n=1;
scanf("%d%d",&i,&j);
m+=i++;
n*=--j;
ss=(k=m+2,n-5,k+n);
printf("%d",ss);
}
通过这道题单步调试,你对i++和++i及i—和—i应该有了更直观的理解,他们的区别在于:
{
int a,b,y;
scanf("%d%d",&a,&b);
switch(a*a+b*b)
{
case 3:
case 1:y=a+b;break;
case 0:y=b-a;break;
default :printf("error\n");
}
printf("%d",y);
}
4-1-b该程序的功能是:输入两个数:a、b,判断a的值,若a的值等于10,则y=a-b;若a的值等于11,则y= a*b;若a的值等于其他值,则y=a+b;最后计算输出y的值。
学号:姓名:实验日期:
1.实验目的和要求
(1)掌握数据输入/输出函数的使用,能正确使用各种格式转换符。
(2)熟悉顺序结构程序中语句的执行过程,并学会基本调试程序方法。
(3)能够正确使用逻辑运算符和逻辑表达式。
(4)学会运用逻辑表达式或关系表达式等表示条件。
(5)熟练掌握if语句和switch语句,掌握条件表达式构成的选择结构。
scanf("%d%d",&c,&t);
if(t==c)
{
if(c>=50)
m=c*80;
else m=c*90;
}
else
{
if(c>t)
{
if(t>=50)
m=t*80+(c-t)*60;
else m=c*80+(t-c)*45;
}
else
{
if(c>=50)
m=t*90+(c-t)*60;
else m=c*90+(t-c)*45;
#include<stdio.h>
main()
{
int m=345;
float n=2.56;
printf("m=%d,n=%f,n*100=%f\n",m,n,n*100);
}
3-1-2该程序的功能是:输入三个数赋给a,b,c,输出这三个数,并计算输出s=a*b和v=a*b*c的值
程序运行结果画面如下:
}
3-3注意:这道程序我们不按书中提示进行,而在VC环境下进行调试。
语法错误和逻辑错误的区别何在?语法错误有错误提示,程序不可运行;逻辑错误无错误提示,程序可运行,但得不到你想求得的答案。
如何启动单步调试?在菜单栏中选择“组建”,然后在下拉菜单中选择“开始调试”,然后选择“Step Into”。
要使程序运行到“ss=(k…”这一行暂停下来,该如何操作?点到“ss=(k…”这一行,按F9,设置一个断点。
main()
{
int x,y;
scanf("%d",&x);
if(x>-5&&x<0)
y=x;
else if(x==0)
y=x-1;
else if(x>0&&x<10)
y=x+1;
printf("%d",y);
}
4-3填空的内容为:a>0?a:-a;
运行结果画面:
#include<stdio.h>
main()
c2=getchar();
putchar(c1);
putchar(c2);
printf("\n");
printf("%c%c\n",c1,c2);
}
3-5我使用的算法:运用求商的整数部分和求余数进行分钟的转换
运行ห้องสมุดไป่ตู้果画面:
#include<stdio.h>
main()
{
int x,h,m;
printf("输入需转换的分钟数:");
}
4-2-1运行结果画面:
#include<stdio.h>
main()
{
int x,y;
scanf("%d",&x);
if(x>-5&&x<0)
y=x;
if(x==0)
y=x-1;
if(x>0&&x<10)
y=x+1;
printf("%d",y);
}
4-2-2运行结果画面:
#include<stdio.h>
}
if(i==0)
printf("这三边不构成三角形\n");
}
4-5我使用的算法:用求余的方法,若赋给x的值除以5和除以7的余数都为0,则输出yes,否则输出no。
运行结果画面:
#include<stdio.h>
main()
{
int x;
scanf("%d",&x);
if(x%5==0&&x%7==0)
}
实验四部分
4-1-a该程序的功能是:输入两个数:a、b,判断a*a+b*b的值,若a*a+b*b的值等于3或1,则y=a+b;若a*a+b*b的值等于0,则y=b-a;若a*a+b*b的值等于其他值,则输出“eerror”;最后输出y的值。
运行结果画面:
#include<stdio.h>
main()
{
int a,b;
long m,n;
float p,q;
scanf("%d,%d\n",&a,&b);
scanf("%f,%f\n",&p,&q);
scanf("%ld\n%ld",&m,&n);
printf("a=%d,b=%d\n m=%ld,n=%ld\n",a,b,m,n);
printf("p=%f,q=%f\n",p,q);
scanf("%d",&x);
h=x/60;
m=x%60;
printf("%d小时%d分钟",h,m);
}
3-7我使用的算法:进行千分位转换,四舍五入。
运行结果画面:
#include<stdio.h>
main()
{
double x;
scanf("%lf",&x);
printf("%7.2f\n",x);
}
3-2-1该程序的功能是:输入两个整数m,n,输出m,n并使其输出时每个数输出宽度为6,两数之间逗号间隔;并输出x,y并使其每个数输出宽度为7,小数位数为2。
程序运行结果画面如下:
#include<stdio.h>
main()
{
int m,n;
float x=3.5,y=6.2;
scanf("%d,%d",&m,&n);
i++和i—是在使用变量后加(减)一,++i和—i是在使用变量前加(减)一。
3-4请回答书中问题
问题(1)都可以。
问题(2)用printf函数,c1、c2输出的格式符用%d。
问题(3)不可以
程序运行结果画面如下:
#include<stdio.h>
main()
{
char c1,c2;
c1=getchar();
printf("m=%6d,n=%6d\n",m,n);
printf("x=%7.2f,y=%7.2f\n",x,y);
}
3-2-2该程序的功能是:赋给a,b,m,n,p,q数值,并输出a,b,m,n的整型数值和p,q的浮点型数值。
程序运行结果画面如下:
#include<stdio.h>
main()
在本题中,假设要在运行第2条语句(即scanf语句后),要马上观察i,j,k,ss,m,n的变量的值,操作方法:在菜单栏中选择“组建”,然后在下拉菜单中选择“开始调试”,然后选择“Step Into”,在watch窗口的名称下的框中输入要马上观察的“i,j,k,ss,m,n”,请把观察这些变量时的画面粘贴到下面:
}
}
printf("%d\n",m);
}
4-5我使用的算法:输入三边,然后判断是否构成三角形,能构成三角形后再判断三角形类型。
运行结果画面:
#include<stdio.h>
main()
{
float x,y,z;
int i;
printf("输入三条边长:");
scanf("%f%f%f",&x,&y,&z);
运行结果画面:
#include<stdio.h>
main()
{
int a,b,y;
scanf("%d%d",&a,&b);
switch(a+b)
{
case 10:y=a+b;break;
case 11:y=a-b;break;
default :printf("error\n");break;
}
printf("%d",y);
if(x+y>z&&x+z>y&&y+z>x&&x>0&&y>0&&z>0)
{i=1;}
if(i==1)
{
if(x==y&&y==z)
printf("此三角形为等边三角形\n");
else if(x==y||y==z)
printf("此三角形为等腰三角形\n");
else
printf("此三角形为不等边三角形\n");
(5)可以进行简单的程序的编写
运行结果画面:
#include<stdio.h>
main()
{
int a,b,y;
scanf("%d%d",&a,&b);
switch(a)
{
default :y=a+b;break;
case 10:y=a-b;break;
case 11:y=a*b;break;
}
printf("%d",y);
}
4-1-c该程序的功能是:输入两个数:a、b,判断a+b的值,若a+b的值等于10,则y=a+b;若a+b的值等于11,则y= a-b;若a+b的值等于其他值,则输出“eerror”;最后计算输出y的值。
#include<stdio.h>
main()
{
double a,b,c,s,v;
scanf("%lf,%lf,%lf",&a,&b,&c);
s=a*b;
v=a*b*c;
printf("%lf,%lf,%lf\n",a,b,c);
printf("s=%lf\n",s);
printf("v=%lf\n",v);
printf("yes\n");
else
printf("no\n");
}
4实验小结
通过实验我的C语言能力的到了进一步的提高:
(1)学会了基本的程序调试;
(2)掌握了IF和SWITCH语句的应用;
(3)掌握数据输入/输出函数的使用,能正确使用各种格式转换符
(4)知道了逻辑运算符、逻辑表达式、关系表达式的运用
{
int a,M;
scanf("%d",&a);
M=a>0?a:-a;
printf("abs(a)=%d\n",M);
}
4-4运行结果画面:
#include<stdio.h>
main()
{
int c,t,m;
printf("input the number of coat and trousers your want buy:\n");
怎样终止调试状态(程序复位)?在菜单栏中选择“调试”,然后选择“StopDebugging”。
单步调试状态下,向下运行一条语句的操作方法(分两种情况回答,第一种,跟踪到自定义函数内部,第2种,不跟踪到自定义函数内部):第一种选择“Step Into”,跟踪到自定义函数内部;第2种选择“Step over”,不跟踪到自定义函数内部
(6)熟练掌握跟踪调试程序,针对具体数据组织输入测试数据,观察程序运行能否得到预期的输出结果。
(7)学会编写简单程序。
2.实验内容:实验指导书中的实验三和实验四
3.实验步骤及结果
实验三部分:
3-1-1该程序的功能是:输出m=345,n=2.560000,并计算输出(n*100)
程序运行结果画面如下:
#include<stdio.h>
main()
{
int i,j,k,ss,m=1,n=1;
scanf("%d%d",&i,&j);
m+=i++;
n*=--j;
ss=(k=m+2,n-5,k+n);
printf("%d",ss);
}
通过这道题单步调试,你对i++和++i及i—和—i应该有了更直观的理解,他们的区别在于:
{
int a,b,y;
scanf("%d%d",&a,&b);
switch(a*a+b*b)
{
case 3:
case 1:y=a+b;break;
case 0:y=b-a;break;
default :printf("error\n");
}
printf("%d",y);
}
4-1-b该程序的功能是:输入两个数:a、b,判断a的值,若a的值等于10,则y=a-b;若a的值等于11,则y= a*b;若a的值等于其他值,则y=a+b;最后计算输出y的值。