第三章 最简单的C程序设计——顺序程序设计
@toc
3.1 顺序程序设计举例
【例3.1】有人用温度计测量出用华氏法表示的温度(如64℉),今要求把它转换为以摄氏法表示的温度(如17.8℃)。
编写程序
#include<stdio.h>
int main ()
{
float f,c;
f=64.0;
c=(5.0/9)*(f-32);
printf("f=%f\nc=%f\n",f,c);
return 0;
}
运行结果
【例3.2】计算存款利息。
有1000元想存一年。有3种方法可选:(1)活期,年利率为r1;(2)一年期定期,年利率为r2;(3)存两次半年定期,年利率为r3。请分别算出一年后按3种方法所得到的本息和。
编写程序
#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;
}
运行结果
3.2 数据的表现形式及其运算
转义字符表
转义字符 | 字符值 | 输出结果 |
---|---|---|
\' |
一个单撇号(’) | 输出单撇号字符’ |
\'' |
一个双撇号(’’) | 输出双撇号字符’’ |
\? |
一个问号(?) | 输出问号字符? |
\\ |
一个反斜线(\) | 输出反斜线字符\ |
\a |
警告(alert) | 产生声音或视觉信号 |
\b |
退格(backspace) | 将光标当前位置后退一个字符 |
\f |
换页(form feed) | 将光标当前位置移到下一页的开头 |
\n |
换行 | 将光标当前位置移到下一行的开头 |
\r |
回车(carriage return) | 将光标当前位置移到本行的开头 |
\t |
水平制表符 | 将光标当前位置移到下一个Tab位置 |
\v |
垂直制表符 | 将光标当前位置移到下一个垂直制表对齐点 |
\o、\oo或\ooo其中o代表一个八进制数字 |
与该八进制码对应的ASCII字符 | 与该八进制对应的字符 |
\xh[h···]其中h代表一个十六进制数字 |
与该十六进制码对应的ASCII字符 | 与该十六进制对应的字符 |
符号常量与常变量
&emsp;常变量与常量的异同:常变量具有变量的基本属性:有类型,占储存单元,只是不允许改变其值。可以说,常变量是有名字的不变量,而常量是没有名字的不变量。有名字就便于在程序中被引用。
# define Pi 3.1415926 //定义符号常量
const float pi=3.1415926; //定义常变量
符号常量Pi和常变量pi都代表3.1415926,在程序中都能使用。但二者性质不同:定义符号常量用# define
指令,它是预编译指令,它只是用符号常量代表一个字符串,在预编译时仅进行字符替换,在预编译后,符号常量就不存在了(全部置换成 3.1415926 了),对符号常量的名字是不分配储存单元的。而常变量要占用储存单元,有变量值,只是该值不改变而已。从使用的角度看,常变量具有符号常量的优点,而且使用更方便。有了长变量以后,可以不必多用符号常量。
数据类型
3.3 运算符和表达式
【例3.3】给定一个大写字母,要求用小写字母输出。
编写程序:
#include<stdio.h>
int main()
{
char c1,c2;c1='A';
c2=c1+32;
printf("%c\n",c2);
printf("%d\n",c2);
return 0;
}
运行结果:
强行类型转换
(double)a //将a转换成double型
(int)(x+y) //将x+y的值转换成int型
(float)(5%3) //将5%3的值转换成float型
3.4 C语句
【例3.4】给出三角形的三边长,求三角形面积。
编写程序:
#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c,s,area;
a=3.67;
b=5.43;
c=6.21;
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%f\tb=%f\t%f\n",a,b,c);
printf("area=%f\n",area);
return 0;
}
运行结果:
3.5 数据的输入输出
【例3.5】求ax²+bx+c=0方程的根。a,b,c由键盘输入,设b²-4ac>0。
编写程序:
#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c,disc,x1,x2,p,q;
scanf("%lf%lf%lf",&a,&b,&c);
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;
}
运行结果:
【例3.6】用%f输出实数,只能得到6位小数。
编写程序:
#include<stdio.h>
int main()
{
double a=1.0;
printf("%f\n",a/3);
return 0;
}
运行结果:
【例3.7】float型数据的有效位数。
编写程序:
#include<stdio.h>
int main()
{
float a;
a=10000/3.0;
printf("%f\n",a);
return 0;
}
运行结果:
【例3.8】先后输出BOY三个字符
编写程序:
#include<stdio.h>
int main()
{
char a='B',b='O',c='Y';
putchar(a);
putchar(b);
putchar(c);
putchar('\n');
return 0;
}
运行结果:
【例3.9】从键盘输入BOY3个字符,然后把它们输出到屏幕。
编写程序
#include<stdio.h>
int main()
{
char a,b,c;
a=getchar();
b=getchar();
c=getchar();
putchar(a);
putchar(b);
putchar(c);
putchar('\n');
return 0;
}
运行结果:
【例3.10】改写例3.3程序,使之可以适用于任何大写字母。从键盘输入一个大写字母,在显示器上显示对应的小写字母。
编写程序:
#include<stdio.h>
int main()
{
char c1,c2;
c1=getchar();
c2=c1+32;
putchar(c2);
putchar('\n');
return 0;
}
运行结果:
本章完:)
@[toc](第三章 最简单的C程序设计——顺序程序设计) # 3.1 顺序程序设计举例 ## 【例3.1】有人用温度计测量出用华氏法表示的温度(如64℉),今要求把它转换为以摄氏法表示的温度(如17.8℃)。 **编写程序** ```c #include编写程序
#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;
}
运行结果
3.2 数据的表现形式及其运算
转义字符表
转义字符 | 字符值 | 输出结果 |
---|---|---|
\' |
一个单撇号(’) | 输出单撇号字符’ |
\'' |
一个双撇号(’’) | 输出双撇号字符’’ |
\? |
一个问号(?) | 输出问号字符? |
\\ |
一个反斜线(\) | 输出反斜线字符\ |
\a |
警告(alert) | 产生声音或视觉信号 |
\b |
退格(backspace) | 将光标当前位置后退一个字符 |
\f |
换页(form feed) | 将光标当前位置移到下一页的开头 |
\n |
换行 | 将光标当前位置移到下一行的开头 |
\r |
回车(carriage return) | 将光标当前位置移到本行的开头 |
\t |
水平制表符 | 将光标当前位置移到下一个Tab位置 |
\v |
垂直制表符 | 将光标当前位置移到下一个垂直制表对齐点 |
\o、\oo或\ooo其中o代表一个八进制数字 |
与该八进制码对应的ASCII字符 | 与该八进制对应的字符 |
\xh[h···]其中h代表一个十六进制数字 |
与该十六进制码对应的ASCII字符 | 与该十六进制对应的字符 |
符号常量与常变量
&emsp;常变量与常量的异同:常变量具有变量的基本属性:有类型,占储存单元,只是不允许改变其值。可以说,常变量是有名字的不变量,而常量是没有名字的不变量。有名字就便于在程序中被引用。
# define Pi 3.1415926 //定义符号常量
const float pi=3.1415926; //定义常变量
符号常量Pi和常变量pi都代表3.1415926,在程序中都能使用。但二者性质不同:定义符号常量用# define
指令,它是预编译指令,它只是用符号常量代表一个字符串,在预编译时仅进行字符替换,在预编译后,符号常量就不存在了(全部置换成 3.1415926 了),对符号常量的名字是不分配储存单元的。而常变量要占用储存单元,有变量值,只是该值不改变而已。从使用的角度看,常变量具有符号常量的优点,而且使用更方便。有了长变量以后,可以不必多用符号常量。
数据类型
3.3 运算符和表达式
【例3.3】给定一个大写字母,要求用小写字母输出。
编写程序:
#include<stdio.h>
int main()
{
char c1,c2;c1='A';
c2=c1+32;
printf("%c\n",c2);
printf("%d\n",c2);
return 0;
}
运行结果:
强行类型转换
(double)a //将a转换成double型
(int)(x+y) //将x+y的值转换成int型
(float)(5%3) //将5%3的值转换成float型
3.4 C语句
【例3.4】给出三角形的三边长,求三角形面积。
编写程序:
#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c,s,area;
a=3.67;
b=5.43;
c=6.21;
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%f\tb=%f\t%f\n",a,b,c);
printf("area=%f\n",area);
return 0;
}
运行结果:
3.5 数据的输入输出
【例3.5】求ax²+bx+c=0方程的根。a,b,c由键盘输入,设b²-4ac>0。
编写程序:
#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c,disc,x1,x2,p,q;
scanf("%lf%lf%lf",&a,&b,&c);
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;
}
运行结果:
【例3.6】用%f输出实数,只能得到6位小数。
编写程序:
#include<stdio.h>
int main()
{
double a=1.0;
printf("%f\n",a/3);
return 0;
}
运行结果:
【例3.7】float型数据的有效位数。
编写程序:
#include<stdio.h>
int main()
{
float a;
a=10000/3.0;
printf("%f\n",a);
return 0;
}
运行结果:
【例3.8】先后输出BOY三个字符
编写程序:
#include<stdio.h>
int main()
{
char a='B',b='O',c='Y';
putchar(a);
putchar(b);
putchar(c);
putchar('\n');
return 0;
}
运行结果:
【例3.9】从键盘输入BOY3个字符,然后把它们输出到屏幕。
编写程序
#include<stdio.h>
int main()
{
char a,b,c;
a=getchar();
b=getchar();
c=getchar();
putchar(a);
putchar(b);
putchar(c);
putchar('\n');
return 0;
}
运行结果:
【例3.10】改写例3.3程序,使之可以适用于任何大写字母。从键盘输入一个大写字母,在显示器上显示对应的小写字母。
编写程序:
#include<stdio.h>
int main()
{
char c1,c2;
c1=getchar();
c2=c1+32;
putchar(c2);
putchar('\n');
return 0;
}
运行结果:
本章完:)