关于自学C语言开始时应该注意的问题分享—未完待续......
---恢复内容开始---
自学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语言开始时应该注意的问题分享—未完待续......的更多相关文章
- C++语言体系设计哲学的一些随想(未完待续)
对于静态类型语言,其本质目标在于恰当地操作数据,得到期望的值.具体而言,需要: (1)定义数据类型 你定义的数据是什么,是整形还是浮点还是字符.该类型的数据可以包含的值的范围是什么. (2)定义操作的 ...
- 自学自用 = B站(操作系统_清华大学(向勇、陈渝)) 未完待续。。
视频地址 https://www.bilibili.com/video/av6538245 介绍 本篇博客,旨在记录视频学习的要点,所以格式随意, 方便本人日后自考和回忆,有兴趣的朋友可以评论讨论. ...
- JSON(未完待续,等讲到对象时再加)
1 定义 JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言:JSON 使用 Jav ...
- openSUSE13.1安装时要注意的问题(未完待续)
1.最好用官方给的imageWriter来写镜像,不要用UltraISO来写镜像,会导致安装Kaffein包错误(:)可能也会有别的错误),后来我用imageWriter写了之后就没有在安装时报错了
- Python语言基础与应用 (P23)上机练习:容器类型操作(未完待续)
上机练习:容器类型操作〉 列表.元组基本操作+, *, len(), [], in Python 3.7.0 (default, Jun 28 2018, 08:04:48) [MSC v.1912 ...
- 嵌入式C语言——提取时分秒
嵌入式C语言--提取时分秒 题目: 相关知识点 提取位: 插入位 用宏定义定义地址 #define TIME_Addr 0xFFFFC0000 #define TIME *(volatile int ...
- 关于使用动态语言运行时 (. net)
AutoCAD Managed .NET API允许您使用使用. NET 4.0 引入的动态语言运行时 (DLR). 使用DLR可以直接访问对象, 而无需: 打开一个对象进行读取或写入, 然后在完成后 ...
- 先定一个小目标:10天自学C语言编程,教你如何改变一生
C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...
- 最近遇到VS2013,在打开解决方案时,报如下错误: 未找到与约束
最近遇到VS2013,在打开解决方案时,报如下错误: “未找到与约束 ContractName Microsoft.Internal.VisualStudio.PlatformUI.ISolution ...
随机推荐
- BootstrapTable返回结果集递增序号
{ 'field': '', 'title': '序号', 'align': 'center', 'width': '5%', 'formatter': function (value, row, i ...
- spring配置redis(xml+java方式)(最底层)
条件:引用好架包 <dependency> <groupId>org.springframework.data</groupId> <artifactId&g ...
- Linux tmux 使用指南
注意:本文内容适用于 Tmux 2.3 及以上的版本,但是绝大部分的特性低版本也都适用,鼠标支持.VI 模式.插件管理在低版本可能会与本文不兼容. Tmux 快捷键 & 速查表 启动新会话: ...
- 简要的谈一谈我对CSS中长度单位的理解
CSS中的长度单位目前分为两种,分别是绝对长度和相对长度.绝对长度单位包括: in:英寸 cm:厘米 mm:毫米 pt:磅(1磅等于1/72英寸) pc:pica(1pica等于12磅) 以上五个就是 ...
- 【数据结构】浅谈倍增求LCA
思路 运用树上倍增法可以高效率地求出两点x,y的公共祖先LCA 我们设f[x][k]表示x的2k辈祖先 f[x][0]为x的父节点 因为从x向根节点走2k 可以看成从x走2k-1步 再走2k-1步 所 ...
- Keil开发的ARM程序main函数之前的汇编分析
Keil开发的ARM程序main函数之前的汇编分析 ——BIN文件中RW段的数据移动 系统平台: STM32系列STM32F103ZE,512KB内部FLASH,64KB片内存储; FLASH地址范围 ...
- 关于sharepoint如何做SSO,如何做OOS监视编辑
应客户需求,需要做sharepoint SSO,以前都是默认的AD验证,如果客户已经有一套SSO系统,验证过SSO之后就能自动登录,而不是浏览器上设置保存用户名密码的AD登陆. 怎么做呢? 首先sha ...
- 异常笔记:Hadoop异常 namenode.NameNode: Encountered exception during format
00:53:47,977 WARN namenode.NameNode: Encountered exception during format: java.io.IOException: Canno ...
- JS 创建对象总结
狭义:new 构造函数. (注:在JS中创建对象只有一种方式,就是new 构造函数.其中字面量的方式是一种语法糖,本质仍然是new 构造函数) 广义:工厂模式(解决复杂度) 构造函数模式(解决复杂度, ...
- Android中的AutoCompleteTextView(随笔提示文本)组件的简单使用
Android中的随笔提示文本组件AutoCompleteTextView的使用,此组件用于输入文本,然后就会在所配置的适配器中的数据进行查找显示在组件下面. 这里值得注意的是AutoComplete ...