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. 其他注意事项

  • 每条语句最后必须加分号,必须!
posted @ 2021-09-18 18:08  Hishallyi  阅读(281)  评论(0)    收藏  举报