C程序设计重点总结

1、 参考书和IDE

参考书:《C程序设计(第四版)》,谭浩强著,清华大学出版社,IDE:code::blocks.

2、C语言程序结构

C语言程序由一个主函数和若干个其他函数构成,主函数的作用是按照一定的逻辑顺序调用其他函数,实现C程序的功能,其他函数的作用是实现某个小模块的功能,其他函数之间也可以相互调用,但是不能调用主函数,主函数是有系统调用的。下面是C语言的一段示例,功能是求两个整数的最大值。

#include <stdio.h>
int main() {
//    声明函数,给编译器检查函数调用格式是否正确
    int getMax(int x,int y);
    printf("求两个整数的最大值,请分别输入两个整数并用“,”隔开\n");
    int x,y;
    //%d表示以十进制整数
    scanf("%d,%d",&x,&y);
    printf("最大值是:%d",getMax(x,y));
    return 0;
}
//求两个整数的较大者
int getMax(int x,int y) {
    if(x>y) {
        return x;
    } else {
        return y;
    }

}

2.1函数的声明

 由于程序的编译是从上到下逐行进行的,程序由main()函数开始,在main()函数中结束。如果没有对被调用的函数事先声明,那么编译器在执行调用的时候将不能检查传值类型和个数是否正确,如果传值错误也会编译通过,在程序执行的时候才报错,bugs也不方便查找。只有对被调用函数进行事先声明,编译器才能对调用函数的合法性型进行全面检查,所以要养成声明函数的良好编程习惯。

2.2输入和输出函数

scanf(格式控制,地址列表);

scanf("%d,%d",&x,&y),%d表示从键盘上输入十进制整数型数,用“,”隔开,&是C语言中的取地址符,"&x"表示变量x的地址。执行scanf函数,从键盘上读入两个整数,送到变量x和y的地址处,然后把这两个整数分别赋给x和y。

printf(格式控制,输出列表);

printf("最大值是:%d",x),以十进制类型输出x。格式控制由“%”和格式字符组成,它的作用是将输出的数据转换为指定的格式输出。格式字符有d,o,x,u,c,s,f,e,g等,如下:

  • %d 输出有符号的十进制整数,%xd,指定输出数据的域宽(所占的列数);
int x=12;
printf("%5f",x);

//输出
    12; //12前面有3个空格
  • %o以八进制数形式输出整数,
  • %x以十六进制数形式输出整数,
  • %u以十进制数输出unsigned型数据(无符号数)。
  • %c用来输出一个字符,
  • %s用来输出一个字符串,
  • %f用来输出实数,以小数形式输出,%5.3f,表示小数点后保留3位小数,输出数据占5列,不足5列在左边补空格;%-5.3f也表示输出数据占5列,但是不足5列则在右边补空格。

  • %e以指数形式输出实数,

  • %g根据大小自动选f格式或e格式,且不输出无意义的零。

以上所有输出格式都可以指定输出数据的域宽,在%之后指定即可,浮点数还可以指定保留几位小数。

3、C语言常用运算语句

3.1强制类型装换

强制类型转换之后,变量的类型没有被改变,如(int)x的类型是int,但是x仍然是double型。

//强制类型转换测试
void transformTest(double x){
   int y=(int)x;
   printf("浮点型:x=%f,整型:y=%d\n",x,y);
}

/*input:
 transformTest(2.8);
output:
x=2.800000
y=2
*/

3.2关于运算语句

(1)for(; ; ;){  },for中的三个值都可以写在外面;

(2)对于while(){ }循环,do{ } while();循环,for( ){ }循环,可以用break 跳出循环,用continue结束本次循环。

4、数组和用函数实现模块化程序设计

4.1数组定义和初始化

定义数组的一般形式:类型符 数组名 [常量表达式];定义数组的时候需要指定数组的长度。

如:int array[10] 、char array[3+2]、double array[6/3],

(1)数组的长度必须是常量,不能是变量

C语言不允许对数组的长度进行动态定义,及数组的大小不依赖运行过程中变量的值,例如下面定义的数组是不合法的,

int n;
scanf("%d",&n); //企图在程序中临时输入数组的大小
int a[n];        //n是变量,不合法

(2)可变长数组

如果在被调用函数(不包括主函数)中定义数组,其长度可以使变量或非常量表达式。如:

void function(int n){
    int a[2*n];        //合法,n由实参传来
    ...
}

允许在每次调用函数 function时n有不同的值,但是在执行函数时,n的值是不变的,数组长度是固定的。

如果指定数组为静态存储方式,则不能用可变长数组。

void fun(int n){
    static int a[n];    //不合法
}

(3)数组的初始化

int a[10]={0,1,2,3,4},未被赋值的后5个元素自动被赋初值为0;

int b[ ]={0,1,2,3,4}, //合法,b数组的长度是5

凡是未被初始化的数组元素,对于数值型数组,元素被初始化为0,对于字符型数组,元素被初始化为'\0',对于指针型数组,元素被初始化为NULL。

----------待更新--------

 

 

5、善于利用指针

6、建立自己的数据类型:结构体和共用体

 

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值