实验二 顺序结构程序设计
一、实验目的:
1. 理解简单的顺序结构程序设计;
2. 熟练掌握如何定义各种不同数据类型,尤其是整型、浮点型、字符型等常用数据类型;
3. 熟练掌握各种运算符的使用方法,主要是算术运算符和赋值运算符的使用;
4. 熟练使用printf、scanf进行简单基础的输入、输出。
二、实验内容
1.编程输出自己的班级、学号和姓名。
程序代码:
#include<stdio.h>
#define CLASS "数师本2002"
#define XUEHAO "20202102474"
#define NAME "荪葭"
int main()
{
printf("%s\n%s\n%s\n",CLASS,XUEHAO,NAME);
return 0;
}
2.【验证性试验-例3.1】有人用温度计测量出华氏法表示出的温度(如64℉),今天要求把它转换为以摄氏法表示的温度(如17.8℃)。将下列程序按照变化1修改后,回答问题1。
程序代码:
#include <stdio.h>
int main()
{ float f,c; //定义f和c为单精度浮点型变量
f=64.0; //给赋值
c=(5.0/9)*(f-32); //利用公式计算c的值
printf("f=%f\nc=%f\n",f,c); //输出c的值
return 0;
}
变化1:
#include <stdio.h>
int main()
{ float f,c; //定义f和c为单精度浮点型变量
f=64.0; //给赋值
c=(5/9)*(f-32); //变化1
printf("f=%f\nc=%f\n",f,c); //输出c的值
return 0;
}
结合上述代码变化1,回答一下c=(5/9)*(f-32);是否可以解决华氏转化为摄氏温度的问题。说出你的理由。
问题1回答:
否,当“/”左右都是整型的时候,进行整除运算,运行结果可以发现是0,并不是我们所需要的数学上的除法运算。
3.【验证性试验-例3.2】计算存款利息。有1000元,想存一年。
有3种方法:
(1)活期,年利率为r1;
(2)一年期定期,年利率为r2;
(3)存两次半年定期,年利率为r3。
请分别计算出一年后3种方法所得到的本息和。运行下列程序,按照变化1修改后,回答问题1。
程序代码:
#include <stdio.h>
int main ()
{ float p0=1000, r1=0.0036, r2=0.0225, r3=0.0198, p1, p2, p3; //定义变量
p1=p0*(1+r1); //计算活期本息和
p2=p0*(1+r2); //计算一年定期本息和
p3=p0*(1+r3/2)*(1+r3/2); //计算存两次半年定期的本息和
printf("p1=%f\np2=%f\np3=%f\n",p1, p2, p3); //输出结果
return 0;
}
变化1:
如果将上述代码中的
float p0=1000, r1=0.0036, r2=0.0225, r3=0.0198, p1, p2, p3; //定义变量
改为
double p0=1000, r1=0.0036, r2=0.0225, r3=0.0198, p1, p2, p3; //定义变量
是否可以?
问题1回答:
可以,float是单精度浮点数类型,double是双精度浮点数类型,将float改成double提高了变量的精度。
4.【验证性试验】给定一个大写字母,要求用小写字母输出。
程序代码:
#include <stdio.h>
int main ( )
{
char c1,c2;
c1='A';
c2=c1+32;
printf("%c\n",c2);
return 0;
}
5.【验证性试验-例3.4】给出三角形三边长,求三角形面积。
解题思路: 假设给定的三个边符合构成三角形的条件: 任意两边之和大于第三边。
从数学知识已知求三角形面积的公式为:,其中s=(a+b+c)/2。
程序代码:
#include <stdio.h>
#include <math.h>
int main ()
{
double a,b,c,s,area; //定义各变量,均为double型
a=3.67; //对边长a赋值
b=5.43; //对边长b赋值
c=6.21; //对边长c赋值
s=(a+b+c)/2; //计算s
area=sqrt(s*(s-a)*(s-b)*(s-c)); //计算area
printf("a=%f\tb=%f\tc=%f\n",a,b,c); //输出三边a,b,c的值
printf("area=%f\n",area); //输出面积area的值
return 0;
}
6.【验证性试验-例3.8】先后分别输出BOY三个字符。
程序代码:
#include <stdio.h>
int main()
{ char a,b,c; //定义字符变量a,b,c
a=getchar(); //从键盘输入一个字符,送给字符变量a
b=getchar(); //从键盘输入一个字符,送给字符变量b
c=getchar(); //从键盘输入一个字符,送给字符变量c
putchar(a); //将变量a的值输出
putchar(b); //将变量b的值输出
putchar(c); //将变量c的值输出
putchar('\n');//换行
return 0;
}
7.【验证性试验-例3.10】从键盘输入一个小写英文字母,将其转换成大写并输出。
程序代码:
#include <stdio.h>
int main()
{
char c1,c2;
c1=getchar();
c2=c1-32;
printf("小写字母: %c\n大写字母: %c\n",c1,c2);
return 0;
}
8.【验证性试验】从键盘输入三角形三边长,编程实现求三角形面积。
程序代码:
#include <stdio.h>
#include <math.h>
int main ()
{ double a,b,c,s,area; //定义各变量,均为double型
printf("请输入a b c的值\n");
scanf("%lf%lf%lf",&a,&b,&c);
s=(a+b+c)/2; //计算s
area=sqrt(s*(s-a)*(s-b)*(s-c)); //计算area
printf("a=%f\tb=%f\tc=%f\n",a,b,c); //输出三边a,b,c的值
printf("area=%f\n",area); //输出面积area的值
return 0;
}
9.已知圆半径,圆柱高,求圆周长、圆柱体积。
程序代码:
#include <stdio.h>
int main ()
{
float pi=3.14159,r,h,c,s;
printf("请输入圆柱的半径和高:");
scanf("%f%f",&r,&h);
c = 2*pi*r;
s = pi*r*r*h;
printf("圆周长为%f\n圆的面积为%f\n",c,s);
return 0;
}
10.【验证性试验-例3.5】求方程的实数根。a,b,c由键盘输入,
,设
。
程序代码:
#include <stdio.h>
#include <math.h> //程序中要调用求平方根函数sqrt
int main()
{
double a,b,c,disc,x1,x2,p,q; //disc用来存放判别式(bb-4ac)的值
scanf("%lf%lf%lf",&a,&b,&c); //输入双精度型变量的值要用格式声明″%lf″
disc=b*b-4*a*c;
p=-b/(2.0*a);
q=sqrt(disc)/(2.0*a);
x1=p+q;
x2=p-q; //求出方程的两个根
printf("x1=%7.2f\nx2=%7.2f\n",x1,x2); //输出方程的两个根
return 0;
}
11.编程实现从键盘任意输入一个三位整数,计算其各位相加的和。例如,输入258,输出为2+5+8=15。
程序代码:
#include<stdio.h>
int main()
{
int n,a,b,c,s;
printf("请输入一个三位整数:");
scanf("%d",&n);
a = n/100;
b = n/10%10;
c = n%10;
s = a+b+c;
printf("%d+%d+%d=%d\n",a,b,c,s);
return 0;
}
12.编写程序,输入一个正4位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入5000,输出应该是5。
输入格式:
每个测试是一个4位的正整数。
输出格式:
输出按位逆序的数。
输入样例:
1234
输出样例:
4321
输入样例:
5200
输出样例:
25
程序代码:
#include <stdio.h>
int main()
{
int n,a,b,c,d;int e;
printf("请输入一个正四位整数:");
scanf("%d",&n);
a = n/1000;
b = n/100%10;
c = n/10%10;
d = n%10;
e = a + b*10 + c*100 + d*1000;
printf("4位正整数逆序后:%d\n",e);
return 0;
}
13.求整数均值
编写程序,计算3个整数的和与平均值。题目保证输入与输出均在整型范围内。
输入格式:
输入在一行中给出3个整数,其间以#分隔。
输出格式:
在一行中按照格式“Sum = 和; Average = 平均值”顺序输出和与平均值,其中平均值输出小数点后6位。
程序代码:
#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d#%d#%d",&a,&b,&c);
printf("Sum = %d; Average = %.6f",a+b+c,(a+b+c)/3.0);
return 0;
}
14.输入实型数据3.4,整型数据34,字符型数据’B’,计算三个数据之和,分别输出实型数据3.400000,整型数据34,字符型数据’B’,以及以双精度浮点型指数形式输出三个数据之和。
程序代码:
#include <stdio.h>
int main()
{
double a,d;
int b;
char c;
printf("请输入实型数据3.4,整型数据34,字符型数据'B':");
scanf("%lf%d%c",&a,&b,&c);
d = a+b+c;
printf("实型数据%lf,整型数据%d,字符型数据%c,三个数据之和%E\n",a,b,c,d);
return 0;
}