C、C++入门编程整理
一、C语言
1. 程序基本框架
1 #include <stdio.h> //集成了io函数的头文件 2 #include <math.h> //集成了数学函数的头文件 3 4 int main(){ 5 //声明变量或函数,编写主程序 : 6 int i; //变量的声明,C语言中任何变量均须先声明才能使用 7 void function(int i, float j); //函数原型的声明(调用函数必须先声明才能用) 8 9 //三种循环 : 10 for(i=0;i<10;i++){ 11 //利用i进行循环 12 //编写循环主题 13 } 14 while(!循环结束条件){ 15 //循环主体 16 17 break; 18 } 19 do{ 20 21 } while(!循环结束条件) 22 23 //输入输出语句: 24 int n; 25 scanf("%d", &n); 26 printf("%d", n); 27 28 //最后都要加上这一句返回0的语句 29 return 0; 30 } 31 32 void function(int i, float j){ 33 //编写函数主体 34 //函数输入两个参数i和j,输出类型为空,即该函数只执行某种操作而不返回具体值 35 36 }
- 使用printf的注意事项:
- 不同类型的数据应使用相应类型的格式字符说明其输出形式,以保证显示结果符合预期。
- 格式字符中,除了X、E、G外,其他均用小写字母,如“%d”不能写成“%D”。
- 如需输出双引号,应在“格式控制”中表示为转义字符的形式并用单引号引起来,即“\””。
- 如需输出字符“%”,在“格式控制”中用连续两个“%”即可。
- 如:printf(“%d%%”,10);
- 当“格式控制”中格式符个数少于输出表中的输出项时,多余的输出项不予输出。
- 当“格式符”多于输出项时,多出的格式符输出结果为不定值
2. 变量、函数的声明
变量声明格式: 变量类型 变量名;
函数声明格式:函数类型 函数名(参数类型 参数1, 参数类型 参数2);
例如:
int varible; //声明了一个名为varible的变量
void function(int a, int b); //声明了一个名为function的函数
注:C语言中每一个变量均须先声明才能使用,否则会报错(not declare);
函数的声明需在主函数main()内部进行声明,并且需在调用该函数前声明。该函数主体的编写在主函数外进行编写
3. 输入输出语句
-
1 scanf("%d", &n); 2 printf("%d", n);
- 输出函数printf()
- 常见的格式输出:
-
%d —— 以带符号的十进制形式输出整数
%o —— 以无符号的八进制形式输出整数
%x —— 以无符号的十六进制形式输出整数
%u —— 以无符号的十进制形式输出整数
%c —— 以字符形式输出单个字符
%s —— 输出字符串
%f —— 以小数点形式输出单、双精度实数
%e —— 以标准指数形式输出单、双精度实数
%g —— 选用输出宽度较小的格式输出实数 - %s 直接输出指定字符串
- %ms 输出字符串占m列,右对齐。m小于字符串长度时原样输出,大于字符串长度时不足补空格,下同
- %m.ns 输出字符串前n个字符,占m列,右对齐
- %-ms 输出字符串占m列,左对齐,即加了"-"就是左对齐,每加就是右对齐
-
#include<stdio.h> void main(){ printf("%3s,%-6s,%-5.2s,%4.3s,%.3s,","hello", "hello","hello","hello","hello"); } 输出结果: hello,hello ,he , hel,hel,
- 输入函数的格式:scanf("格式控制", 地址表)
-
使用scanf注意事项
1)注意变量表列中,应该是变量的地址。变量的地址通过求地址符&得到。所以在写代码时千万不要遗漏&符号。2)如果格式字符串中有非空白字符,也就是除了格式控制字符和空白字符之外的字符,则用户在输入的时候一定也要输入这些字符。否则将出现不匹配格式控制字符串的情况。为了使用户正确输入,编程时一定要考虑到用户是否清楚如何输入,最好在需要用户输入前提示如何输入的格式。
1 scanf("%d %d %d", &m, &n, &i); //在函数内有三个空格,则在输入的时候应该以空格进行隔开,空格也要输入 2 3 即输入的时候应该: 4 2 3 5 5 (每个数字之间一定要输入空格隔开)
3)在用%c格式符时,空格字符和转义字符都被当作有效字符输入
4)以回车作为下达开始解析命令。整个输入以回车结束。如果输入的数据满足了scanf对需要,则输入结束,如果回车后数据不够,则回车只当作一个空白符
5)scanf解析数据,下列情况认为解析出来一个数据:读入非字符型数据时,遇到空白字符。有宽度指示时,读入到相应的宽度。如%4d,则只解析4个数字即认为读入这个整数完毕。
6) 读取双精度double浮点数时,最好使用%lf输入,使用%f可能会导致精度损失甚至读取失败。
- 字符的输入输出( getchar()和putchar() )、字符串的输入输出( gets()和puts() )
有时仅为在显示器屏幕上打印或从控制台获取一个字符,此时使用功能强大的printf与scanf函数,则显得过于繁琐,C提供了一个库函数putchar/getchar来完成这个简单的任务。 单个字符的输入输出: char ch; getchar(ch); //用户从控制台输入单个字符赋值给变量ch putchar('a'); //输出字符a 字符串的输入输出: puts("你好啊~"); 输出结果:你好啊~ gets()函数进行字符串的输入:(gets从标准输入设备读字符串函数。可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。此函数在stdio.h头文件中定义的。) char buf[20]; //不要char*p,然后gets(p),这是错误的,因为p没有指向有效的内存,它可能指向任何非法地址 ,造成非法访问异常 gets(buf); printf("%s\n", buf);
4. 循环语句
- for循环
for(int i; i<10; i++){ //利用i进行的循环 } //此处大括号后面不需要写分号
- while循环
while(!循环结束条件){ //循环主体
break; //跳出循环 } //此处大括号后面括号不需要写分号 - do while循环
do{ //循环主体
break; //跳出循环 }while(!循环结束条件); //分号别忘写
5. 判断语句
if (判断条件){
执行过程
}
else{
执行过程
}
6. 其他注意事项
- 每条语句最后必须加分号,必须!
二、C++
C语言是一门面向过程的结构化编程语言,重在用逻辑设计程序,强调的是编程的算法方面(所以我们学习严蔚敏老师的数据结构都是用C语言编写的,在此多说一点就是数据结构中结构体和指针的知识一定要学明白,这对于学习数据结构非常重要),而C++在C语言的基础上添加了面向对象编程和泛型编程的支持,这是C++的三大法宝之二,另外一大法宝就是C++继承了C语言高效、简介、快速和可移植性的传统。
其中面向对象的编程(OOP,Object Oriented Programming)只要针对的知识就是:对象、类、封装、数据隐藏、多态和继承
而泛化编程是C++支持的另一种编程模式。它与OOP的目标相同,即使重用代码和抽象通用概念的技术更加简单。不过OOP强调的是编程的数据方面,而泛化编程强调的是独立于特定的数据类型。他们的侧重点不同。OOP是一个管理大型项目的工具,而泛化编程则提供了执行常见的任务(如对数据合并或合并链表)的工具。具体的泛型编程是什么我也不太清楚,只是了解了一点基本概念,没有用到也就没有认真学习。容我学习学习。
C++内容非常非常多,我只写了其中最最最最最简单入门的那一小小小小部分,其中有关数组、指针、类、对象、异常、类继承、代码重用、文件操作等等都没写,具体还需看具体模块的知识,这不是我写这篇播客的初衷。
1. 程序基本框架
1 /* 2 #include为编译指令,而后面的<iostream>为一个特定的文件,该文件包含了C++程序中输入输出函数的定义,只要C++程序中使用cin和cout进行输入输出, 3 均必须包含文件 iostream。 4 像iostream这样的文件叫做包含文件——由于它们被包含在其他文件中,也叫头文件——由于它们被包含在文件的起始处。 5 C语言的传统是:头文件使用扩展名.h,将其作为一种通过名称标识文件类型的简单方式,但C++的用法改变了 ,C++的头文件没有扩展名。有些C头文件被 6 转换为C++头文件,这些文件被重新命名,去掉了扩展名h,并在文件名称前面加上前缀c(表明其来自于C语言)。例:C++版本的math.h为cmath 7 有时C头文件的C版本和C++版本相同,而有时新版本则作出一些修改 8 */ 9 #include <iostream> 10 #include <cstdio> //支持使用printf/scanf函数进行输入输出的头文件 11 #include <cmath> //支持使用数学工具中函数的头文件(本C++程序未用到,只是为示例说明所用) 12 13 using namespace std; //using编译指令 ,旨在指明使用为std的名称空间的单元中的定义 14 //名称空间的支持是一项C++特性,旨在让您编写 大型程序以及将多个厂商现有的代码组合起来 的程序时 更容易,它还有助于组织程序。 15 16 /* 17 C++也可识别C语言风格的这种多行注释 18 */ 19 20 int function(int i, float j); //函数原型的声明,在主函数main外进行声明,在main函数内调用自定义的函数function 21 22 int main(){ 23 int n; //声明变量,为变量分配内存 24 n = 10; //变量的赋值 25 cout<<"Come up and C++ me some time."; //输出语句 ,相对于C语言中的printf来说比较智能 26 int m; 27 cin>>m; //C++中的输入函数 28 cout<<endl; //换行 ,同样的,换行符“\n”也可在C++中使用 29 cout<<"You won't regret it!"<<endl; //输出语句并换行 30 cin.get() ; //有些窗口环境在独立的窗口中运行程序,并且在运行结束之后会自动关闭该窗口,添加这条语句可让窗口一直打开 31 return 0; //结束主程序 32 } 33 34 int function(int i, float j){ //函数主体的定义在main函数后面进行编写 35 //函数主体的编写 36 return i*j; 37 }
2. 变量、函数的声明
变量的声明同C语言中变量的声明,而函数的声明在主函数main外进行声明,函数的定义在主函数后进行具体的定义(函数主体的编写)
3. 输入输出语句
- 输出函数:cout<<
- 输入函数:cin>>
- 换行符:endl
- 这三项均须在包含头文件iostream和名称空间std下才能直接使用。(不明白具体什么意思的可以看程序框架中程序的注释部分)
4. 循环语句
同C语言的三大循环体
5. 判断语句
char ch = 'A'; int i = 0; int j = 0; if (ch == 'A') i++; else j++;
C++中判断语句if后面要跟括号,用法与C语言相同,括号中填写判断条件,需要区分的是Python语言中判断语句的if后面直接是判断条件,没有括号。
6. 其他注意事项
- 每条语句最后必须加分号,必须!

博主在学习数据结构时需用C语言编写程序
在做算法题的时候需用C++语言编写算法(虽说哪种语言都可以编写算法题,但这只是举个例子)
在学习Android应用开发用的是Java语言
在进行数据处理、机器学习方面用Python进行实践
虽然四种语言之间有相互联系的地方,但是小小的语法差别总会在编译运行的时候报错,因此特写此博客用来总结使用这四种语言编程时的差别
作为快速编程入门来看
浙公网安备 33010602011771号