SBS.C——2、类型、运算符与表达式以及控制流
数据类型C语言提供了下列几种基本数据类型:
char 字符型,占用一个字节,可以存放本地字符集中的一个字符。int 整型float 单精度浮点型double 双精度浮点型
short和long两个限定符
short类型通常是16位
long类型通常是32位
signed和unsighed限定符可用于限定char类型或任何类型。
unsigned类型的数总是正值或0,并遵守算数模2^n定律,其中n是该类型占用的位数。
/* * leap.c * * Created on: Mar 17, 2013 * Author: seaeast */#include <stdio.h>void leap(int year);int main(){ int year; year = 2008; leap(year); year = 2013; leap(year); return 1;}void leap(int year){ if((year%4==0&&year%100!=0)||year%400==0) printf("%d is a leap year\n",year); else printf("%d is not a leap year\n",year);}
自增运算符和自减运算符
++ --它们既可以用作前缀运算符,也可以用作后缀运算符。其效果都是将变量n的值加1.但是它们之间有一点不同。表达式++n先将n的值递增1,然后在使用变量n的值。而表达式n++则是先使用变量n的值,然后再将n的值递增1.
按位运算符
C语言提供了6个位置操作运算符。这些运算符只能作用于整形操作符,即只能作用于带符号或无符号的char、short、int与long类型。
& 按位与(AND)| 按位或(OR)^ 按位异或(XOR)<< 左移>> 右移~ 按位求反
二分查找
int binsearch(int l[],int x, int n){ int low,high,mid; low = 0; high = n - 1; while (low < high) { mid = (low + high)/2; if (x>l[mid]) low = mid + 1; elseif (x < l[mid]) high = mid -1; else return mid; } return -1;}
希尔排序
void shellsort(int v[], int n){ int gap, i, j, temp; for (gap = n/2; gap > 0; gap /= 2) for (i = gap; i < n; i++) for (j=i-gap; j >=0 && v[j]>v[j+gap]; j-=gap) { temp = v[j]; v[j] = v[j+gap]; v[j+gap] = temp; }}