【C】顺序程序设计


从程序流程的角度来看,程序可以分为三种基本结构,即顺序结构、分支结构、循环结构。这三种基本结构可以组成所有的各种复架程序。C语言提供了多种语句来实现这些程序结构。


语句分类

C程序的执行部分是由语句组成的。程序的功能也是由执行语句实现的,C语句可以分为下面五类:

  • 表达式语句

    • 表达式语句由表达式加上分号“;”组成
    • 一般形式:表达式;
    • 执行表达式语句就是计算表达式的值
    • 列如:i++;

  • 函数调用语句

    • 函数调用语句由函数名、实际参数加上分号";"组成
    • 一般形式:函数名(实际参数表);
    • 执行函数语句就是调用函数体并且把实际参数赋予函数中定义的形式参数,然后执行被调函数体中的语句
    • 例如:printf(“hello world”);

  • 控制语句

    • 控制语句用于控制程序的流程,以实现程序的各种结构方式。C语言的九种控制语句,大致可以分为以下三类
    • 条件判断语句:if、switch
    • 循环执行语句:do while、while、for
    • 转向语句:break、goto、continue、return

  • 复合语句

    • 复合语句是吧多个语句是由括号括起来组成一个语句

    • 在程序中把复合语句看成是单条语句,而不是多条

    • 例如:

      {
      	x = y + z;
      	a = b + c;
      	printf("%d%d",x,a);
          }
      
    • 符合语句内的各条语句都必须以分号结尾,在括号外不能加分号


  • 空语句

    • 空语句是只有分号组成的语句,空语句是什么也不执行的语句。在程序中空语句可用来作空循环体

    • 例子如下

      while(getchar()!='\n'){
          ;
      }
      
    • 本语句的功能是,只要从键盘上输入的不是回车那么久重新输入


函数调用语句

putchar和getchar函数

//因为是输出输入函数所以必须调用stdio
//stdio 就是standard input output的缩写  也就是标准输入输出
#include<stdio.h>
void main() {
	char c;
	printf("input a character\n");
	//getchar是用来获取键盘上的输入的
	c = getchar();
	//putchar是用来将字符输出的
	putchar(c);
}

结果显示

在这里插入图片描述

printf函数


printf函数(格式输出函数),他的最后一个字母f即为format格式的意思,他的功能是按用户指定的格式,把指定的数据显示到显示器上

printf函数是一个标准的库函数,他的函数在头文件"stdio.h"之中。但是作为一个特例,不要求在使用printf函数之前必须包含stdio.h文件


printf的使用步骤及效果如下

#include<stdio.h>
void main() {
	//printf的简单使用
	int month = 12;
	printf("一年有%d个月", month);
}

效果显示如下

在这里插入图片描述


prinf不仅仅只要%d还有其他的

格式字符意义
d以十进制形式输出带符号整数(正数不输出符号)
o以八进制形式输出无符号整数(不输出前缀0)
x,X以十六进制形式输出无符号整数(不输出前缀0x)
u以十进制形式输出无符号整数
f以小数形式输出单、双精度实数
e、E以指数形式输出单、双精度实数
g、G以%f或%e中较短的输出宽度输出单、双精度实数
c输出单个字符
s输出字符串

输出的最小宽度:用十进制整数来表示输出的最少位数。若实际位数多余定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则以0或者空格补全


标志:标志字符为+、-、#、空格四种,他的意义如下:

标志意义
-结果左对齐,右边填空格
+输出符号(正号或者负号)
空格输出值为正时冠以空格,为符号时冠以负号
#对c、s、d、u类没有影响。对于o类,在输出的时候加前缀哦,对于x类,在输出的时候加前缀0x;对于e、g、f类当前结果有小数时才给出小数点

scanf函数


scanf格式输入函数,即按照用户指定的格式从键盘上把数据输入到指定的变量之中。

scanf是一个标准库函数,他的函数原型在头文件stdio.h中,与printf函数相同,C语言也允许在使用scanf函数之前不必包含stdio.h文件


scanf的一般形式为:

scanf ("格式控制字符串",地址列表)

其中格式控制字符串的作用与printf函数相同,但不能显示非格式字符串,也就是不能显示提示字符串,地址就是保存接收到的地址

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

void main(){
	//定义三个变量
	int a, b, c;
	printf("input a,b,c\n");
	//将键盘打入保存
	//&变量名是获取其地址
	scanf("%d%d%d", &a, &b,&c);
	//输出
	printf("a=%d,b=%d,c=%d",a,b,c);
}

结果

在这里插入图片描述

三个数字在输入的时候要么输入一个按一个空格要么回车


*符表示跳过该输入值

scanf("%d%*d%d",&a,&b,&c);

如果输入的值是1,2,3那么把1赋予a,2被跳过,3赋予c


宽度:用十进制整数指定输入的宽度

//输入1234567但只将12345赋予给a,其他的舍去
scanf("%5d",&a);
//输入123456将12赋予给a,将34赋给b
scanf("%2d%2d",&a,&b);

如果格式控制串中有非格式字符,那么在输入的时候也要输入改字符

//下面就必须要输入1,2,3
scanf("%d,%d,%d",&a,&b,&c);
//下面要输入a=1,b=2,c=3
scanf("a=%d,b=%d,c=%d",&a,&b,&c);

例题

例一

输入三角形的三边长,求三角形的面积

已知三角形的三边长为a,b,c,该三角形的面积公式为

在这里插入图片描述

其中s=(a+b+c)/2

程序如下

#define _CRT_SECURE_NO_WARNINGS 1
#include<math.h>
#include<stdio.h>
void main()
{
	float a, b, c, s, area;
	printf("input a b and c\n");
	scanf("%f%f%f", &a, &b, &c);
	//这里之所以不直接除以2是因为浮点型乘以浮点型才能保持答案的正确
	s = 1.0/2*(a + b + c);
	area = sqrt(s*(s - a)*(s - b)*(s - c));
	//7.2是保留俩位小数
	printf("area=%7.2f", area);
}

结果
在这里插入图片描述

Math函数库还有以下的函数

序号函数 & 描述
1double acos(double x) 返回以弧度表示的 x 的反余弦。
2double asin(double x) 返回以弧度表示的 x 的反正弦。
3double atan(double x) 返回以弧度表示的 x 的反正切。
4double atan2(double y, double x) 返回以弧度表示的 y/x 的反正切。y 和 x 的值的符号决定了正确的象限。
5double cos(double x) 返回弧度角 x 的余弦。
6double cosh(double x) 返回 x 的双曲余弦。
7double sin(double x) 返回弧度角 x 的正弦。
8double sinh(double x) 返回 x 的双曲正弦。
9double tanh(double x) 返回 x 的双曲正切。
10double exp(double x) 返回 e 的 x 次幂的值。
11double frexp(double x, int *exponent) 把浮点数 x 分解成尾数和指数。返回值是尾数,并将指数存入 exponent 中。所得的值是 x = mantissa * 2 ^ exponent。
12double ldexp(double x, int exponent) 返回 x 乘以 2 的 exponent 次幂。
13double log(double x) 返回 x 的自然对数(基数为 e 的对数)。
14double log10(double x) 返回 x 的常用对数(基数为 10 的对数)。
15double modf(double x, double *integer) 返回值为小数部分(小数点后的部分),并设置 integer 为整数部分。
16double pow(double x, double y) 返回 x 的 y 次幂。
17double sqrt(double x) 返回 x 的平方根。
18double ceil(double x) 返回大于或等于 x 的最小的整数值。
19double fabs(double x) 返回 x 的绝对值。
20double floor(double x) 返回小于或等于 x 的最大的整数值。
21double fmod(double x, double y) 返回 x 除以 y 的余数。
例二

求ax2+bx+c=0方程的根,abc都由键盘输入,设b2-4ac>0,求根公式如下

在这里插入图片描述

代码如下

#define _CRT_SECURE_NO_WARNINGS 1
#include<math.h>
#include<stdio.h>
void main()
{
	float  a, b, c, p, q, x1, x2;
	printf("请输入a、b、c\n");
	scanf("%f%f%f", &a, &b, &c);
	p = -(b / 2 * a);
	q = sqrt(b*b - 4 * a*c) / 2 * a;
	x1 = p + q;
	x2 = p - q;
	printf("x1=%7.2f,x2=%7.2f", x1, x2);
}

结果

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值