C博客作业00--我的第一篇博客

第一次博客作业

这个作业属于哪个班级 | C语言--网络2011/2012 |
| ---- | ---- | ---- |
| 这个作业的地址 | C博客作业00--我的第一篇博客 |
| 这个作业的目标 | 学习Makdown语法,对本专业及C语言课程有个简单了解,记录自学慕课视频的笔记。教师可以对学生有个初步的认识。 |

1.你对网络专业或者计算机专业了解是怎样?

我们正处于信息时代,具有超强运算能力的超级计算机无疑是“国之重器”。而网络是信息化必不可少的平台。我认为这是一个充满奋斗热情,充满挑战的专业,是给予我们更广阔,更多样化发展空间的平台。在我的认知中,计算机是一种载体,它能记载大量数值并进行信息筛选处理。印象中的计算机专业是编程,写软件或者是开发一些网络之类的东西,并没有很深的认知。

  • 网络运维,关于运维的价值,可能就是采用相关技术、流程手段,保证网络高质量发展。写一些程序加以建立工具或者平台,对运营数据进行分析,去加强系统的稳定性。
  • 网络安全,综合对网络安全的认识,可能是由于设计系统的不规范或者是安全性考虑欠缺周密而引起网络安全的问题。这可能也是今后我们学习工作的方向吧。

2.你了解C语言吗?C语言有什么应用?

C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。————百度百科

对于我而言,近一次接触C语言是在高一的信息技术课上,但只是老师泛泛而谈,并没有很深入的了解。在暑假的学习过程中,了解到C语言是一种抽象化且运用广泛但又是最基础的计算机程序设计语言,相较于其他的编程语言,C语言的普适性、实用性较强。不仅能编写软件,也能作为应用程序的设计语言,制作游戏、动画、图像

3.你希望在这个专业中学到那些内容?大学学习生活时间要怎么安排?

  • 因为之前很少接触这个领域,所以当然先从基础的语法开始了解学习,再进行深入探究拓展延伸。我希望在这门专业中发现好玩的东西并让我感到学有所获,可以学习到计算机网络系统的设计及开发,网页制作,网络方面的通信原理规划组建调试计算机,更希望从中能培养自己的思维逻辑。与亨嘉之会一同工作学习,努力成为材雄德茂的it精英人士。
  • 关于大学学习生活的安排,经常去图书馆学习学习,毕竟之前很少接触这个方面的知识,多去巩固夯实自己的基础知识,在保证不挂科的前提下学习一些感兴趣的东西,拓宽自己的认知范围。具体的时间规划现在也不能确定,但大方向可能就是以学习+适当放松的模式进行学习。每天都有学习上的收获,不能在大学期间虚度光阴,还是要学知识的。

4.我目前自学的内容

浙大C语言程序设计

4.0 关于C的变名量

1)基本格式

# include <stdio.h>
int main ()
{
return 0;
}

2) 变量
它是一个保存数据的地方,用了变量保存了数据,才能参加到后面的计算中。
一般形式:<类型名称><变量名称>;

3) 赋值和初始化
“=”赋值运算符,表示将“=”右边的值赋值给左边的变量。

4)格式化输出函数printf()scanf()(f:formative格式化)

  • scanf()函数与printf()函数是系统提供的库函数,在stdio.h中定义,用于向终端输入输出字符。
    • Scanf()使用时的注意事项
      - 最重要的就是不要漏“&”符号,刷题的时候非常容易遗漏这个符号
      - 输入数据类型一定要与所需要的数据类型保持一致。
      - Scanf_s是scanf()的扩展,也叫做安全函数,它能够解决字符输入超限溢出的问题,在vs中就需要用到。
    • Printf()使用时的注意事项
      - 格式说明符中应当与所对应的表达式类型一致,若为整型,用“%d”,浮点型用“%f”
      - M为指定的数据输出宽度。“% m.nf”表示输出的浮点型数据共占m列,含小数点,其中小数点后有n位数字;“% m.ns”表示输出的字符串共占m列,但只取字符串左端的n个字符,这n个字符输出在m列的右侧,左侧补空格。

5)数据类型(目前自学)
Int(整型):输入时调用scanf()函数,输出调用printf()函数,并格式控制说明为%d
Float(单精度浮点型):输入时调用scanf()函数,输出调用printf()函数,格式控制说明用%f
Double(双精度浮点型):输入时调用scanf()函数,输出时调用printf()函数,格式控制说明用%f

  • float与double区别
    字节:float 4,double 6
    有效位数:float 8,double 16

6)复合赋值

  • total += 5 →total = total + 5
    total += (sum + 100)/2 → total +(sum + 100)/2
  • 递增递减运算符 (INC 递增,DEC 递减)
    “++”“--”单目运算符,算子必须是变量,其作用是让这个变量+1或-1,可以放变量前后

7)常用数学函数(使用时需要在开始打代码时加上 #include <math.h>)
平方根函数sqrt(x)

可实现案例:

eg1.计算存款利息:

eg2.求整数均值:

4.0.1 表达式(一些定义)

  • 表达式:一个表达式是一系列运算符和算子的组合,用来计算一个值。
  • 运算符:C语言运算符是说明特定操作的符号,它是构造C语言表达式的工具。
  • 算子:是指参与运算的值,可能是常数,也有可能是变量或者一个方法的返回值。
  • 运算符优先级:逻辑运算符<关系运算符(判断是否相等的运算符比其他的关系运算符低)<算术运算符
  • 优先级
  • 关系运算的结果:当两个值的关系符合关系运算符的预期时,关系运算的结果为整数1,否则为0。
  • 需判断是否相等==和!=的优先级比其他的低,连续的关系运算是从左到右进行。
  • 注释“//”
    注释插入在代码中,用来向读者提供解释信息且对于程序功能没有任何影响。
    以“/”开始,“/”结束。

4.1分支结构

语法:

1)单分支结构

if(表达式)
{

语句;
}
  return 0;
  • 注意:if语句结束时没有表示语句结束的“;”if后的条件中表示相等的为“==”而不是“=”,因为if只要求()里的值是零或者非零

2) 双分支结构

if(表达式)
{
语句;
}
else
{
语句;
}
   return 0;

3)多分支结构

if(表达式)
{
      语句1;
else{
      语句2;
}
    return 0;
  • 注意:Else必须在所有else if 后面,Else总是和最近的那个if匹配
  • 小技巧:即使只有一条语句将时,在if或else后总用{}
  • 常见错误:忘了大括号
可实现案例:

eg1.if-else阶梯电价:

eg2.分段函数:

eg3.判断成绩:

4.2 循环结构

1)while循环:当条件满足时,不断重复循环体内的语句。

while(表达式)
{
(循环语句;)
}

  • 注意:
    • 循环体要用花括号括起来“{ }”
    • 循环体内要有改变条件的机会
    • 循环执行之前判断是否继续循环,所以有可能循环一次也没有被执行
    • 条件成立是循环继续的条件
    • While语句后面不能再有分号“;”

可实现案例:

eg1.计算几位数:

eg.2循环计算:


eg.3.算平均数

  • 小套路:
    计算前先保存原始的值,后面有可能会用到。
    当计数循环时,若要模拟运行一个很大的次数的循环,可以模拟较少次数的循环,再进行推断。

2)do-while循环:先做循环内的句子再判断条件

do
{
(循环语句;)
}while(表达式);

可实现案例:

eg1.计算几位数:

  • while循环与do-while循环二者区别:
    - 同:条件满足时执行循环,条件不满足时结束循环。
    - 异:while循环是先判断再执行而do-while循环是先执行再判断

3)for循环:

for(初始动作;条件;每轮的动作){
}
可实现案例:

eg1.for 求N分之一序列前N项和:

eg2.for 求奇数分之一序列前N项和:

eg3.for 求简单交错序列前N项和 :

eg.4 for 求平方根序列前N项和:

eg.5 for 求阶乘序列前N项和:

一般情况下,初始化总是一个赋值语句,它用来为循环控制变量赋初值;条件表达式则是一个关系表达式,它决定什么时候退出循环;而增量定义循环控制变量每循环一次后按什么方式变化。这三个部分之间用分号“;”分割开来。

  • 小套路:
    • 做求和程序时,记录结果的变量应初始化为0,而做求积的变量时,记录结果的变量初始化为1.
    • 尽量使循环控制变量的取值采用半开半闭区间写法,从功能上看,虽然半开半闭区间写法和闭区间写法的功能是完全相同的,但相比之下,半开半闭区间写法可读性更强。
    • 尽量使循环体内工作量达到最小化
  • 注意:
    • for循环中的表达式1,表达式2,表达式3都是可选项,也就是可以省略,但是“; ”不能省略
    • 省略了表达式1,表示不对循环变量赋初值
    • for(;条件;)==while(条件)
    • 禁止将第三个表达式放置在循环体中

4.2.1 循环结构中的一些语法

1) switch-case
遵循以下规则:

  • 控制表达式只能是整数型的结果
  • 在一个switch中可以有任意数量的case语句且每个case后需要跟一个要比较的值和一个冒号“:”
  • 当被测试的变量等于case中的常量时,case后跟的语句将被执行,直到遇到break语句为止。
  • 不是每一个case都需要包含break。如果case语句不包含break,控制流将会继续后续的case,,知道遇到break为止。
  • 若所有的case都不匹配,则就执行default后的语句。

2) break: 可以用来从循环体中跳出循环体,即提前结束循环,接着执行循环下面的语句;

  • 注意:
    • break不能和循环语句和switch语句以外的语句连用
    • break 对if-else 不起作用
    • break语句只能向外跳出一层

3)continue:只结束本次循环,而不是终止整个循环,只能在循环语句中使用,即只能在 for、while 和 do…while 中使用。

  • 注意:
    - continue 不能在 switch 中使用,除非 switch 在循环体中

4)素数

素数:除了1和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被 2~16 的任一整数整除。

  • 求素数的两种思路
    • 判断一个整数m是否是素数,只需把 m 被2~m-1之间的每一个整数去除,如果都不能被整除,那么m就是一个素数。
#include <stdio.h>

int main(){
    int a=0;  // 素数的个数
    int b=0;  // 输入的整数

    printf("输入一个整数:");
    scanf("%d",&b);

    for(int i=2;i<b;i++){
        if(b%i==0){
            a++;  
        }
    }

    if(a==0){
        printf("%d是素数\n", b);
    }else{
        printf("%d不是素数\n", b);
    }

    return 0;
}

  • m 不必被2m-1之间的每一个整数去除,只需被2根号m之间的每一个整数去除就可以了。如果m不能被2~根号m间任一整数整除,则m 必定是素数。
#include <stdio.h>
#include <math.h>
int main(){
    int a;  // 输入的整数 
    int b;  // 循环次数
    int k;  // a 的平方根 

    printf("输入一个整数:");
    scanf("%d",&a);
 
    k=(int)sqrt( (double)a );
    for(b=2;b<=k;b++)
        if(a%b==0)
            break;

    if(b>k)
        printf("%d是素数\n",a);
    else
        printf("%d不是素数\n",a);

    return 0;
}

4.2.3 总结

  • 如果有固定次数用for
  • 如果必须执行一次,用do_while
  • 其他情况用while
  • 在嵌入式开发中,使用循环结构需要特别注意,一定需要存在循环终止的条件

4.3 函数

  1. 函数的定义
dataType  functionName(){
    //body
}
  • dataType 是返回值类型,它可以是C语言中的任意数据类型
  • functionName 是函数名,函数名后面的括号( )不能少
  • body 是函数体,它是函数需要执行的代码,是函数的主体部分。即使只有一个语句,函数体也要由{ }包围
posted @ 2020-10-19 22:36  GGGa-Yi  阅读(187)  评论(2编辑  收藏  举报