---恢复内容开始---

自学C语言编程总结

第1章C语言概述

1、     如果用户将主函数的返回值类型定义为了void,则不需要返回任何值;

2、     C语言的基本结构包括主函数和程序体两部分,主函数是程序的入口函数main()。

3、     对于C语言的头文件如果是系统定义的,一般用尖括号<>

括起来,如果为自己定义的,那必须用双引号《》括起来。                                        ——2018.1.1

第2章 变量和常量

1、     在C语言编程中如果需要输出数据的ASCII码,则可以用数据输出格式为printf(“ %d\n”,数据名);

2、     在输出变量中的数据时,如果输出整型数据应将printf中的“格式化字符串”修改为“%c”如果输出单个字符或者字符串时应将其修改为“%c”或者“%s”,如果输出单精度或者双精度数据时应将其修改为“%f”或者“%1f”;

3、     注意在变量的命名中不能使用特殊字符号(#、*、/、\等),也不能使用C语言中的关键字。

——2018.1.3

第三章    C语言运算符

1、C语言里的运算符主要有赋值运算符、算术运算符、逻辑运算符、关系运算符、三目运算符、位运算符以及单目运算符。

2、在加法算数运算符里面其数据类型必须一致,另外对于两个不同类型的数据类型若要进行相加减,那么必须要使用强制转换,其格式举例如下:

Num=(int)f1+f2

在上述的加法中,作用是将f1的数据类型强制转换为整数型,与f2进行相加。

3、加法和减法运算符不能够用在单个或者多个字符型数据的运算当中。

4、在编程时一定要记得不要将除法运算符/和\混淆,否则,会出现编程错误。

5、C语言的编程当中,逻辑运算符主要有逻辑与(&&),逻辑或(II),逻辑非(!)三种逻辑运算符,不过逻辑运算的结果只有两个:真(1)或假(0)。

6、利用数据逻辑运算符,可以很方便的判断两个数据是否相同。

7、在C语言里面,三目运算符是唯一一个具有三个变量同时参与运算的运算符。其具体的格式如下:

<关系式1>?<表达式2>:<表达式3>

其中,表达式1是运算条件,如果它为真,则运算结果为表达式2,否则结果就是表达式3。

——2018.1.6

8、在编程过程中,应该注意关系运算符里的等于(==)和赋值运算符里面的等于(=)不要搞混,一个表示的是关系,一个是赋予结果,含义不同。一般在表示判断的语句当中,用的是关系运算符(==)。

9、位运算符主要有按位与(&)、按位或(|)、按位异或(^)、左移(<<),右移(>>)等。

10、对于自加和自减表达式,前缀和后缀的运算符对于参与运算的变量而言,计算的数据没有区别,二者的区别在于得到的表达式的值不一样,例如:

a=5,b=++a;等价于a=a+1;b=a;最后的结果为a=6,b=6;

a=5,b=a++;等价于b=a;a=a+1;最后的结果为a=6,b=5.

11、对于单目运算符++和—的运算对象只能是整变量或运算结果是变量的表达式,不能够是常量或者运算结果为数值的表达式,例如:5++,(a+2)++,float f=0;(int)f++,这些都是不合理的。

——2018.1.9

第四章    标准输入/输出

1、对于C语言的标准输入函数为scanf()(输出为printf()),其具体的函数原型是:

Int scanf ( const  char *format ,ch);

(Int printf ( const  char *format ,ch);)

1)参数format表示了格式控制符,主要用于控制获取数据的类型,当然,也可以是一个格式控制符的组合字符串。常用的有以下几种:

%d(获取输入流中的十进制数据),%c(获取输入流中的单个字符数据),%s(获取输入流中的字符串数据),%o(获取输入流中的八进制数据),%u(获取无符号的十进制数据),%x(获取输入流中的十六进制数据),%i(获取输入流中的各种进制数据)。

2)参数ch,它标识了一个已经定义的变量,即将获取的数据放到该参数所指向的变量在地址中进行保存,那么,用户就需要使用取址运算符“&”。

3)对于输出函数printf()函数在输出的时候用户不需要使用地址运算符“&”。

2、单个字符的输入与输出函数:

对于单个字符的输入和输出来说,我们可以使用getchar()和putchar()函数,它们也会是一组相互对应的输入输出函数,不过只能够获取到单个输入和输出单个数据。

例如;对于getchar()在用户输入一串字符数据时,该函数只能够获取到它的第一个字符数据,而后面的直接省略,其原型是:

int  getchar ( void )

其输出函数与之类似。

3、对于C语言编程中字符串的输出,并没有专门的输出函数,不过可以采用整体的思路进行输出,在输出时可以根据不同的情况进行修饰性输出:

1)%s表示直接输出全部的字符串;

2)%ms(m>0)表示输出字符串的宽度定义为m,此时若m大于实际字符串的宽度,那么它会全部输出,并且按照右侧对齐,左侧采用空格补齐。若m小于实际字符串的宽度,则会正常全部输出。

3)%-ms(m>0)表示输出字符串的宽度定义为m,此时若m大于实际字符串的宽度,那么它会全部输出,并且按照左侧对齐,右侧采用空格补齐。若m小于实际字符串的宽度,则会正常全部输出。

4)%m.ns(m>n)表示的是输出字符串的宽度为m,但是按照右侧对齐的方式取其中n位,左侧不足之处采用空格补齐。

5)%-m.ns(m>n)表示的是输出字符串的宽度为m,但是按照左侧对齐的方式取其中n位,右侧不足之处采用空格补齐。

例如:输出字符串“Hello c world”程序段,以下采用五种方式输出:

#include <stdio.h>

int main ()

{

char ch[]="Hello c world";

printf("%s\n",ch);

printf("%20s\n",ch);

printf("%-20s\n",ch);

printf("%8.7s\n",ch);

printf("%-8.7s\n",ch);

return 0;

}

其运行结果为:

Hello c world

Hello c world

Hello c world

Hello c

Hello c

——2018.1.10

第5章 C语言控制结构

1、如果if语句里面的判断语句为判断赋值语句,那么其括号里面的等于应该为双等号,而不是单等号。

2、C语言控制结构主要包括条件编译结构、循环结构、选择结构以及嵌套使用结构等几大类。

3、在C语言的编程中,输入一个字符串类型的数据以及对其的输出,应该遵循以下的数据形式:

Char name[]=“0”

scanf(“%s”,&name)

printf(“%s”,name)

4、     对于do…while语句,不论其参数的是不true,其功能代码都会至少被执行一次,根据机构的这个特点,我们可以对某些功能进行试探性地执行,如果发现错误,则会立刻跳出循环即可。

5、     对于for循环语句,其格式如下:

For(a;b;c){}

其中含有三个独立的参数a,b,c.参数a表示的是循环条件的初始值,参数b表示的是循环条件的最大限值,参数c表示的是循环条件的步进值。而循环功能代码则会严格按照用户指定的循环次数执行。

例如:for(i=1;i<10;i+=2)

——2018.1.15

6、     对于C语言的循环代码,用户如果需要终止的话,可以使用关键字continue以及break,来实现终止循环结构的功能。

7、     关键字break一般都用在循环代码里,起作用是跳出去并且终止循环结构的运行。

8、     对于continue终止循环,它只是会跳出本次循环,不再执行本次循环之后的代码,而不会跳出整个循环,它和break终止循环的功能有所不同。

9、     对于C语言的选择结构,一般又被称为开关语句,一般采用switch…case的结构。

10、   综合练习实例如下:

(1)不断地输入一个学生的名字,然后输入他的分数,判断他的分数等级:

实例代码如下:

#include <stdio.h>

int main()

{

int i,b;

char ch;

char score[]={0};

for(i=0;i<10000000;i+=2){

printf("输入学生的姓名为:\n");

scanf("%s",&ch);

printf("该学生的分数为:\n");

scanf("%d",&score[i]);

if(score[i]<60)

{

b=0;

}

else{

if(score[i]<=80){

b=1;

}

if(score[i]>80){

b=2;

}

}

switch(b){

case 0:

{

printf("第%d学生的成绩不及格\n",i);

break;

}

case 1:

{

printf("第%d该学生的成绩良好\n",i);

break;

}

case 2:

{

printf("第%d学生的成绩优秀\n",i);

break;

}

}

}

return 0;}

(2)输入一个人的姓名及其年龄,可以判断出他是成年人、未成年人还是青年人,另外,可以一直不停地输入和判断。

实例代码如下:

#include <stdio.h>

int main()

{

int i;

char age[]={0};

char ch;

for(i=0;i<1000000000000;i++) {

printf("请输入该用户的姓名为:");

scanf("%s",&ch) ;

printf("该用户的年龄为:");

scanf("%d",&age[i]) ;

if (age[i]<18){

printf("该用户为未成年人\n");

}

else{

if(age[i]<30){

printf("该用户为青年人\n");

}

else{

printf("该用户为成年人\n");

}

}

}

return 0;

}

11、   在switch…case结构语句中,如果它是循环的一小部分,那么一般情况都应该在case语句最后加break来最终这个小的循环。

12、   在C语言编程中,代码strcmp(sz2,“男”)”表示对于指定的两个字符串的比较,如果两者相同,则该函数返回0,如果两者不同,则该函数返回非零值。如果在程序中需要用到此函数,需要在程序上面添加头文件string.h.

13、   用户如果将While循环中的条件设置为1,即while(1),它的意思是将循环无限地进行下去,一般很少这样设置,因为这样容易导致程序失控。

——2018.1.17

第6章  函数

1、C语言的函数包括系统函数及用户自定义函数两大类,对于函数,包括两大部分——参数及其返回值。其中,参数是用来向函数内部传递数据的,而函数的返回值是将函数处理后的结果传递到函数外部。通过函数的返回值,用户可以非常方便地获取到函数处理后的结果。

2、函数的参数有形式参数和实际参数两大类,形式参数主要是用户在自定义函数时会经常用到。另外,在函数自定义的过程中,也可以只使用数据类型作为函数的形式参数,例如:

Void add(int a,int b);

Void add(int,int);

上面两个式子是等效的。

3、对于函数两个组成的作用,形象地说,函数返回值是函数内部与外部通信的桥梁,而函数参数是函数外部与内部通信的桥梁。

4、在C语言函数的调用中,如果需要改变输入的值,那么都必须用到指针或者引用&,才可以实现功能,例如,对于交换两个输入数:

自定义函数如下:

void swap(int a,int b){

int c;

c=a;

a=b;

b=c;}

若在后面输入两个数据时,需要调换输入数据的顺序,总结采用

Swap(x,y)是实现不了的,应该采用指针或者引用如下:

void swap(int *a,int *b){

int c;

c=*a;

*a=*b;

*b=c;}

……

Scanf(“%d%d”,&x,&y);

Swap(&x,&y)

……

或者采用引用的形式:

void swap(int &a,int &b){

int c;

c=a;

a=b;

b=c;}

……

Scanf(“%d%d”,&x,&y);

Swap(x,y)

……

---恢复内容结束---

关于自学C语言开始时应该注意的问题分享—未完待续......的更多相关文章

  1. C++语言体系设计哲学的一些随想(未完待续)

    对于静态类型语言,其本质目标在于恰当地操作数据,得到期望的值.具体而言,需要: (1)定义数据类型 你定义的数据是什么,是整形还是浮点还是字符.该类型的数据可以包含的值的范围是什么. (2)定义操作的 ...

  2. 自学自用 = B站(操作系统_清华大学(向勇、陈渝)) 未完待续。。

    视频地址 https://www.bilibili.com/video/av6538245 介绍 本篇博客,旨在记录视频学习的要点,所以格式随意, 方便本人日后自考和回忆,有兴趣的朋友可以评论讨论. ...

  3. JSON(未完待续,等讲到对象时再加)

    1 定义 JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言:JSON 使用 Jav ...

  4. openSUSE13.1安装时要注意的问题(未完待续)

    1.最好用官方给的imageWriter来写镜像,不要用UltraISO来写镜像,会导致安装Kaffein包错误(:)可能也会有别的错误),后来我用imageWriter写了之后就没有在安装时报错了

  5. Python语言基础与应用 (P23)上机练习:容器类型操作(未完待续)

    上机练习:容器类型操作〉 列表.元组基本操作+, *, len(), [], in Python 3.7.0 (default, Jun 28 2018, 08:04:48) [MSC v.1912 ...

  6. 嵌入式C语言——提取时分秒

    嵌入式C语言--提取时分秒 题目: 相关知识点 提取位: 插入位 用宏定义定义地址 #define TIME_Addr 0xFFFFC0000 #define TIME *(volatile int ...

  7. 关于使用动态语言运行时 (. net)

    AutoCAD Managed .NET API允许您使用使用. NET 4.0 引入的动态语言运行时 (DLR). 使用DLR可以直接访问对象, 而无需: 打开一个对象进行读取或写入, 然后在完成后 ...

  8. 先定一个小目标:10天自学C语言编程,教你如何改变一生

    C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...

  9. 最近遇到VS2013,在打开解决方案时,报如下错误: 未找到与约束

    最近遇到VS2013,在打开解决方案时,报如下错误: “未找到与约束 ContractName Microsoft.Internal.VisualStudio.PlatformUI.ISolution ...

随机推荐

  1. springboot多数据源的配置与使用

    转自:https://www.jianshu.com/p/34730e595a8c 之前在介绍使用JdbcTemplate和Spring-data-jpa时,都使用了单数据源.在单数据源的情况下,Sp ...

  2. 作为测试新手,web测试从何开始学起?

    我们先来弄清楚web测试的测试范围,通常web测试包含:功能测试.性能测试.浏览器兼容测试.安全测试以及用户界面测试等.那么,作为一个初级测试员或者实习测试员,最开始的能做的只能是功能测试和用户界面测 ...

  3. Unity 游戏框架搭建 (二十二) 简易引用计数器

    引用计数是一个很好用的技术概念,不要被这个名字吓到了.首先来讲讲引用计数是干嘛的. 引用计数使用场景 有一间黑色的屋子,里边有一盏灯.当第一个人进屋的时候灯会打开,之后的人进来则不用再次打开了,因为已 ...

  4. PHPStorm等编辑器debug调试(包括使用postman、soapUI)

    很多人在开发的时候,需要进行断点调试,但是很多人配置了很多,还是调试不了,其实是不需要这么麻烦的. 注意:PHPStorm等编辑器debug的配置不用进行任何配置,默认配置就好 实质上,断点调试的时候 ...

  5. Django学习笔记4-csrf防护

    1.CSRF验证失败. 请求被中断. 原因是django为了在用户提交表单时防止跨站攻击所做的保护 什么是 CSRF CSRF, Cross Site Request Forgery, 跨站点伪造请求 ...

  6. Spring总结以及在面试中的一些问题

    Spring总结以及在面试中的一些问题. 1.谈谈你对spring IOC和DI的理解,它们有什么区别? IoC Inverse of Control 反转控制的概念,就是将原本在程序中手动创建Use ...

  7. 计算机基础和Linux基础

    计算机原理 计算机发展史 机器语言—让机器干活 差分机—让机器的数学运算和逻辑运算只简化成“加法”,计算机只处理“加法” 计算机硬件CPU=运算器+控制器+寄存器(缓存)硬盘=存储器+寄存器寄存器是为 ...

  8. c. 求阶乘和的方法(N的值不能太大)初学者

    #include <stdio.h> int main() { int n,i; int a=1;   //a设置为一个数的阶乘 int b;    //  b 设置为阶乘的和 for(i ...

  9. 解决ssh连接中断程序终止的问题——tmux

    参考:http://www.cnblogs.com/kevingrace/p/6496899.html ssh连接有时候会异常中断,重连后原本运行的程序会中断,要解决这个问题,我们可以使用Linux终 ...

  10. Shell--cut用法

    cut是以每一行为一个处理对象的,这种机制和sed一样. cut接受三个定位方法: 1)byte: -b 2)characters: -c 3)fields: -d eg:提取第3,4,5,9的字节: ...