当前位置: 首页 > news >正文

关于自学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)

……

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

转载于:https://www.cnblogs.com/Yanjy-OnlyOne/p/9716424.html

相关文章:

  • CSS position 属性
  • 高可用并发集群lvs的几种模式及应用
  • springboot实体类的级联说明
  • 你安装的是SUN/Oracle JDK还是OpenJDK?
  • CTC loss 理解
  • Virtual Box 新建一个虚拟机安装系统(补充:WIN7 64 bit 系统虚拟机无法安装 64 bit 系统问题)...
  • 如何正确的把 Java 数组 Array 转为列表 List
  • ASP.NET Core Identity 配置 - ASP.NET Core 基础教程 - 简单教程,简单编程
  • (转)Sublime Text3配置Lua运行环境
  • 十三种基于直方图的图像全局二值化算法原理、实现、代码及效果(转)
  • SQL 查看SQL语句的执行时间 直接有效的方法
  • 使用js实现简单的注册验证
  • C3算法 和 super
  • There are stopped jobs
  • RabbitMQ 运转流程
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • CEF与代理
  • JavaScript设计模式系列一:工厂模式
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • STAR法则
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • Webpack 4 学习01(基础配置)
  • Yii源码解读-服务定位器(Service Locator)
  • 从零搭建Koa2 Server
  • 对象引论
  • 聊聊redis的数据结构的应用
  • 使用common-codec进行md5加密
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 试着探索高并发下的系统架构面貌
  • 数组大概知多少
  • 详解移动APP与web APP的区别
  • 写给高年级小学生看的《Bash 指南》
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • (5)STL算法之复制
  • (C++20) consteval立即函数
  • (补)B+树一些思想
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (十六)串口UART
  • (十一)c52学习之旅-动态数码管
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转) ns2/nam与nam实现相关的文件
  • (转载)从 Java 代码到 Java 堆
  • .NET 回调、接口回调、 委托
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • @AliasFor注解
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @JSONField或@JsonProperty注解使用
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka
  • @Resource和@Autowired的区别
  • []error LNK2001: unresolved external symbol _m