C语言程序设计 最简单的C程序设计——顺序程序设计_c语言实验报告顺序结构程序设计-程序员宅基地

技术标签: 算法  C语言  程序设计  

1 算法是程序的灵魂

1.1 什么是算法

程序包括两个方面的内容:
(1)对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构。
(2)对操作的描述。即操作步骤,也就是算法。
数据结构+算法=程序
设计一个程序需要运用算法、数据结构、程序设计方法和语言。
算法是灵魂,数据结构是加工对象,语言是工具,编程需要采用适合的方法。
计算机算法分两大类:数值运算算法和非数值运算算法。
算法是解决“做什么”和”怎么做“的问题。
”做什么“就是目的,效果。
”怎么做“就是做哪些事情才能达到解决问题的目的;二是决定做这些事情的先后次序。

1.2 怎样表示算法

用自然语言表示算法
用流程图表示算法
用N-S流程图表示算法
用伪代码表示算法

2 程序的三种基本结构

(1)顺序结构。各操作步骤是顺序执行。
(2)选择结构。又称为判断结构或分支结构。
(3)循环结构。又称重复结构,即在一定条件下反复执行某一部分的操作。
这三种基本结构构成的程序称为“结构化程序”。
if实现选择结构。
for语句,while语句实现循环结构。

3 C语言语句综述

一个函数是由数据声明部分和执行语句组成。

3.1 控制语句

if()…else…
条件语句,实现选择结构

switch
多分支选择语句
for()…
循环语句,实现循环结构

while()…
循环语句,实现循环结构

do…while()
循环语句,实现循环结构

continue
结束本次循环语句

break
中止执行switch或循环语句

return
从函数返回的语句

3.2 函数调用语句

由调用语句由一个函数调用加一个分号构成。如:printf();

3.3 表达式语句

表达式语句由一个表达式加一个分号构成,赋值表达式语句由一个赋值表达式加分号构成,如:a=3;

3.4 空语句

;
只有一个符号的语句,它什么也不做。

3.5 复合语句

用{}把一些语句括起来成为符合语句。如:
在这里插入图片描述
C语言允许一行写几个语句,也允许一个语句拆开写在几行上,书写格式无固定要求。

4 赋值表达式和赋值语句

4.1 赋值表达式

4.1. 1 赋值运算符

赋值符号“=”就是复制运算符,它的作用是将一个 数据赋给一个变量。如:a=3,把常量3赋值给a。也可以将一个表达式赋值给一个变量。

4.1.2 复合的赋值运算符

分类:+=,-=,*=,/=,%=
a+=3 等价于a=a+3
x *=y+8等价于x=x *(y+8)
x%=3等价于x=x%3

4.1.3 赋值表达式

由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式”。它的形式为: 变量 赋值运算符 表达式。如a=(b=7),a=1+(b=8)。
赋值运算符按照“自右而左”的结合顺序。

4.2 赋值过程中的类型转换

(1)实型转整型。实型数据(单、双精度)赋值给整型变量,先对实数取整(即舍去小数部分),然后赋整型变量。
如:i=2.33,以整数形式存储在整型变量,i=2。
(2)整型转单精度或双精度变量。
(3)double型数据转float变量。
(4)字符型数据赋给整型变量。将字符的ASCII码赋给整型变量。
(5)将一个占字节多的整型数据赋给一个占字节少的整型变量或字符变量。如:把一个4字节的long型数据赋给一个2字节的short型的short型变量,或将一个2字节的int型数据赋给1字节的char型变量

4.3 赋值语句

赋值语句是由赋值表达式加上一个分号构成,作用是将一个表达式的值赋给一个变量。
注:一个表达式中可以包含一个或多个赋值表达式。

4.4 变量赋初值

设置初值既可以用赋值语句去实现,也可以在定义变量的同时使变量初始化。如:
int a,b,c=5;
int a=3,b=3,c=3;

5 数据输入输出的概念

C语言本身不提供输入输出语句。printf和scanf不是C语言的关键字,而只是库函数的名字
putchar(输出字符)、getchar(输入字符)、printf(格式输出)、scanf(格式输入)。
在使用系统库函数时,应当在程序中使用预编译指令“#include”。如:#include <stdio.h>。目的是将有关的“头文件”的内容包括到用户源文件。
stdio是standard input & output(输入和输出)的缩写。文件后缀中“h”是header的缩写。

6 字符数据的输入输出

6.1 用putchar函数输出一个字符

putchar是put character(给字符)的缩写。作用是输出字符变量,向显示器输出字符。
在这里插入图片描述
putchar(’\n’)的作用是输出一个换行符。
在这里插入图片描述

整型数据与字符数据是相通的(整型数据的值应在字符的ASCIId代码范围内)。
putchar函数只能输出字符不能输出整数。
在这里插入图片描述

6.2 用getchar函数输入一个字符

调用系统函数库中的getchar函数(字符输入函数)。getchar是get char(取得字符)的缩写。
作用是从显示器的键盘输入一个字符,就是计算机得一个字符。
getchar没有参数,一般形式是getchar()。
getchar函数只能接受一个字符。
在这里插入图片描述
输入BOY,回车。

在这里插入图片描述
此外,getchar函数可以获得在屏幕无法显示的字符,如控制字符\n,\r…
在这里插入图片描述
输入B,回车,输入O,得出B 回车O。

7 简单的格式输入与输出

输入输出主要用printf和scanf函数实现的。这两个函数是格式输入输出的函数。

7.1 printf函数输出数据

格式:
printf(格式控制,输出列表)
如:
printf("%d,%c\n",i,c)
格式控制包括格式声明和普通字符。
格式声明由“%”和格式字符组成,如%d,%f等。它的作用是将输出的数据转换为指定的格式输出。

7.1.1 d格式字符

十进制整型数据的实际长度输出。
在这里插入图片描述

7.1.2 c格式字符

输出一个字符。
一个整数,只要他的值在0~255范围内,可以用“%c”按字符形式输出,将该整数作为ASCII码转换成相应的字符。
在这里插入图片描述

7.1.3 s格式字符

用来输出一个字符串
在这里插入图片描述

7.1.4 f格式字符

用来输出实数(单、双精度),以小数形式输出。单精度实数的有效数为6~7位,双精度有效数为15 ~16位。
在这里插入图片描述
a,b为float类型,a+b只能保证6~7位精度,所以只有前7位数字是有效数字,后面的几位数字是误差,千万不要以为凡是计算机输出的数字都是准确的。

7.1.5 e格式字符

用格式声明%e指定指数形式输出实数。
在这里插入图片描述
e也可以写成大写E形式。

在这里插入图片描述

普通字符即需要的原样输出的字符。如:a=%b,a就是普通字符。
输出列表是需要输出的一些数据,可以是常量、变量或表达式。

7.2 scanf函数输入数据

7.2.1 scanf函数的一般形式

scaf(格式控制,地址表列)
地址表列是由若干个地址组成的表列,可以是变量的地址或字符串的首地址。
在这里插入图片描述
”&“是“地址运算符”,&a指变量a在内存中的地址。
输入的a,b,c的值放到变量a,b,c的存储单元,然后根据&a,&b,&c找到a,b,c的存储单元。
“%d%d%d”表示要按十进制整数形式连续输入3个数据。输入数据时,在两个s数之间以一个或多个空格分隔,也可以按Enter键或Tab键分隔输入数据。

7.2.2 scanf函数中的格式声明

scanf函数中的“格式控制”后面是变量地址,不是变量名。
正确写法:scanf("%d%d%d",&a,&b,&c);
错误写法:scanf("%d%d%d",a,b,c);

在输入数据时在对应位置应输入与这些字符相同的字符。
在这里插入图片描述
在两个%d间插入一个逗号。
在输入的两个数据间也应插入一个逗号。

在用%c格式声明输入字符时,空格字符和转义字符都作为有效字符输入。
在这里插入图片描述

在这里插入图片描述
这里输入a 空格 b,a传给变量a,空格传给变量b,b传给变量c。

在输入数据时,空格键、Enter键、Tab键或遇到不合要求的输入,认为该数据结束。
在这里插入图片描述
12312传给变量a,a传给变量b,21232传给变量c。

对于unsigned型变量所需的数据,可以用%u或%d格式输入。

8 顺序结构程序设计举例

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

知道三边求三角形面积的公式:
在这里插入图片描述
在这里插入图片描述
定义5个双精度变量。
%lf,l是格式字符f的附加字符,lf表示实数,即双精度数据,不加附加字符l,则不能用于输入双精度变量。
sqrt函数是求平方根的函数。由于要调用属性函数库的函数,需要在程序开头加一条#include,把头文件math.h包含到程序中来。
“%7.2f”表示指定输入数据的字段宽度为7列,其中小数点后的数字为2列。

用来丰富格式字符功能的附加字符称为“修饰符”。表示为“ %m.nf ”m必须大于n。

8.2 从键盘输入一个大写字母,输出该小写字母

小写字母的ASCII=大写字母的ASCII+32
在这里插入图片描述
用fetchar函数的到从键盘输入的字母‘A’,赋值给字符变量c1。将c1分别用字符形式(‘A’)和整型形式(65)输出。得出‘a’,赋值给c2,将c2分别用字符形式(‘a’)和整数形式(97)输出。

9 简单易用的C++的输入输出

c++用cin进行输入,用cout进行输出。cout输出不用考虑输出格式(%d%f)。
<<是输出运算符,>>是输入运算符
每个<<只能输出一个项。
如果程序用C++的cincout进行输入输出,应在程序文件开头写“#include <iostream.h>”。此时,不用写“#include <stdio.h>”。

例如:
C语言的输出语句:
printf(“a=%f\n”,a);
在c++中可用以下形式输出:
cout<<“a=”<<a<<"\n";

C语言的输入语句:
scanf("%d %f",&a,&b);
C++的输入:
cin>>a>>b;

总结:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
输入数据时不可以规定精度,输出时才可以规定精度。

格式控制:scanf函数和printf函数中的双撇号中的部分。
格式声明:由%和格式字符组成,如%d,%c,%7.2f。
格式字符:用来指定各种输出格式,如d,c,f等。
修饰符(附加格式字符):对格式字符的作用补充说明,如%3d,%5.2f,%-10.3f中的3,5.3,-10.3。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_45059457/article/details/113776661

智能推荐

while循环&CPU占用率高问题深入分析与解决方案_main函数使用while(1)循环cpu占用99-程序员宅基地

文章浏览阅读3.8k次,点赞9次,收藏28次。直接上一个工作中碰到的问题,另外一个系统开启多线程调用我这边的接口,然后我这边会开启多线程批量查询第三方接口并且返回给调用方。使用的是两三年前别人遗留下来的方法,放到线上后发现确实是可以正常取到结果,但是一旦调用,CPU占用就直接100%(部署环境是win server服务器)。因此查看了下相关的老代码并使用JProfiler查看发现是在某个while循环的时候有问题。具体项目代码就不贴了,类似于下面这段代码。​​​​​​while(flag) {//your code;}这里的flag._main函数使用while(1)循环cpu占用99

【无标题】jetbrains idea shift f6不生效_idea shift +f6快捷键不生效-程序员宅基地

文章浏览阅读347次。idea shift f6 快捷键无效_idea shift +f6快捷键不生效

node.js学习笔记之Node中的核心模块_node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是-程序员宅基地

文章浏览阅读135次。Ecmacript 中没有DOM 和 BOM核心模块Node为JavaScript提供了很多服务器级别,这些API绝大多数都被包装到了一个具名和核心模块中了,例如文件操作的 fs 核心模块 ,http服务构建的http 模块 path 路径操作模块 os 操作系统信息模块// 用来获取机器信息的var os = require('os')// 用来操作路径的var path = require('path')// 获取当前机器的 CPU 信息console.log(os.cpus._node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是

数学建模【SPSS 下载-安装、方差分析与回归分析的SPSS实现(软件概述、方差分析、回归分析)】_化工数学模型数据回归软件-程序员宅基地

文章浏览阅读10w+次,点赞435次,收藏3.4k次。SPSS 22 下载安装过程7.6 方差分析与回归分析的SPSS实现7.6.1 SPSS软件概述1 SPSS版本与安装2 SPSS界面3 SPSS特点4 SPSS数据7.6.2 SPSS与方差分析1 单因素方差分析2 双因素方差分析7.6.3 SPSS与回归分析SPSS回归分析过程牙膏价格问题的回归分析_化工数学模型数据回归软件

利用hutool实现邮件发送功能_hutool发送邮件-程序员宅基地

文章浏览阅读7.5k次。如何利用hutool工具包实现邮件发送功能呢?1、首先引入hutool依赖<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.19</version></dependency>2、编写邮件发送工具类package com.pc.c..._hutool发送邮件

docker安装elasticsearch,elasticsearch-head,kibana,ik分词器_docker安装kibana连接elasticsearch并且elasticsearch有密码-程序员宅基地

文章浏览阅读867次,点赞2次,收藏2次。docker安装elasticsearch,elasticsearch-head,kibana,ik分词器安装方式基本有两种,一种是pull的方式,一种是Dockerfile的方式,由于pull的方式pull下来后还需配置许多东西且不便于复用,个人比较喜欢使用Dockerfile的方式所有docker支持的镜像基本都在https://hub.docker.com/docker的官网上能找到合..._docker安装kibana连接elasticsearch并且elasticsearch有密码

随便推点

Python 攻克移动开发失败!_beeware-程序员宅基地

文章浏览阅读1.3w次,点赞57次,收藏92次。整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)近年来,随着机器学习的兴起,有一门编程语言逐渐变得火热——Python。得益于其针对机器学习提供了大量开源框架和第三方模块,内置..._beeware

Swift4.0_Timer 的基本使用_swift timer 暂停-程序员宅基地

文章浏览阅读7.9k次。//// ViewController.swift// Day_10_Timer//// Created by dongqiangfei on 2018/10/15.// Copyright 2018年 飞飞. All rights reserved.//import UIKitclass ViewController: UIViewController { ..._swift timer 暂停

元素三大等待-程序员宅基地

文章浏览阅读986次,点赞2次,收藏2次。1.硬性等待让当前线程暂停执行,应用场景:代码执行速度太快了,但是UI元素没有立马加载出来,造成两者不同步,这时候就可以让代码等待一下,再去执行找元素的动作线程休眠,强制等待 Thread.sleep(long mills)package com.example.demo;import org.junit.jupiter.api.Test;import org.openqa.selenium.By;import org.openqa.selenium.firefox.Firefox.._元素三大等待

Java软件工程师职位分析_java岗位分析-程序员宅基地

文章浏览阅读3k次,点赞4次,收藏14次。Java软件工程师职位分析_java岗位分析

Java:Unreachable code的解决方法_java unreachable code-程序员宅基地

文章浏览阅读2k次。Java:Unreachable code的解决方法_java unreachable code

标签data-*自定义属性值和根据data属性值查找对应标签_如何根据data-*属性获取对应的标签对象-程序员宅基地

文章浏览阅读1w次。1、html中设置标签data-*的值 标题 11111 222222、点击获取当前标签的data-url的值$('dd').on('click', function() { var urlVal = $(this).data('ur_如何根据data-*属性获取对应的标签对象

推荐文章

热门文章

相关标签