C语言笔记--2程序设计(总)

程序设计主要是结构的设计,其中结构主要有:顺序结构、选择结构、循环结构。

顺序结构:没有标识符,直接粗暴的些代码,一步一步执行就可;

选择结构:即可选择,数学中的可选择分为连续、间断,其中连续有if,间断用switch;

循环结构:多次重复使用的数据的精简语句,有for,while,do……while;

下面以多个结构分别进行代码说明。


选择结构

if表达式switch表达式
if(表达式1)                语句1 
        else if(表达式2)        语句2 
        else                          语句3 
     switch(表达式) {
            case 常量表达式1: 语句1; break;
            case 常量表达式2: 语句2; break;
            ……
            case 常量表达式n: 语句n; break;
            default:         语句n+1;
        }

连续

y = x    x > 0
y = -9    x = 0
y = -x    x < 0

离散

y = x    x = 1
y = -9    x = 0
y = -x    x = -1

// 测试条件语句
void test01(int y, int x) {
	// if语句
	if(x > 0) y = x;
	else if(x = 0) y = 0;
	else y = -x;

	// switch语句
	switch(x) {
		case 1:  y = x; break;
		case 0:  y = -9; break;
		case -1: y = -x; break;
		default: exit(0);
	}
}

循环结构

forwhiledo……while

for(表达式1; 表达式2; 表达式3) 

    语句

while(表达式) 

  语句

do 

   语句

while(表达式) ;

功能更强 至少执行一次

     用三种循环将快排写一下

for循环

void test02_for(char *arr, int left, int right) {
	char *i, *j, *k;
	char value;
	if(left < right) {
		i = j = arr + left;
		value = *(arr + left);
		for( ; i< arr + right; i++) {
			//printf("%c, %c\n", value, *i);
			if( value < *i) {
				*j = *i;
				j++;
				for( k = i; k > j; k--) *k = *(k - 1);
				*k = value;
			}			
			//printf("%s\n", arr);
		}
		test02_for(arr, j - arr + 1, right);
		test02_for(arr, left, j - arr);
	}	
}

while循环

void test02_while(char *arr, int left, int right) {
	char *i, *j, *k;
	char temp;
	if(left < right) {
		i = j = k = arr + left;
		temp = *(arr + left);
		//printf("%c,%c,%d,%d\n",*i, temp, left, right);
		while( i < arr + right)  {
			if( *i < temp ) {
				//printf("%c,%c,%s\n", temp, *i, arr);
				*j = *i;
				j++;
				k = i;
				while( k > j) {
					*k = *(k-1);
					k--;
				}
				*k = temp;
			}
			i++;
		}
		test02_while(arr, left, j - arr);
		test02_while(arr, j - arr + 1, right);
	}
}

do……while循环

void test02_doWhile(char *arr, int left, int right) {
	char *i, *j, *k;
	char temp;
	if(left < right) {
		i = j = k = arr + left;
		temp = *(arr + left);
		//printf("%c,%c,%d,%d\n",*i, temp, left, right);
		do{
			if( *i > temp ) {
				//printf("%c,%c,%s\n", temp, *i, arr);
				*j = *i;
				j++;
				k = i;
				while( k > j) {
					*k = *(k-1);
					k--;
				}
				*k = temp;
			}
			i++;
		} while( i < arr + right);	
		test02_doWhile(arr, left, j - arr);
		test02_doWhile(arr, j - arr + 1, right);
	}
}

将三个函数进行调用

// 测试循环语句 -- 快排
void test02() {
	void test02_for(char *arr, int left, int right);
	void test02_while(char *arr, int left, int right);
	void test02_doWhile(char *arr, int left, int right);

	char str[N] = {'4', '5', '3', '6', '2', '7', '8', '0', '9', '1'};
	
	printf("%s\n", str);
	test02_for(str, 0, N);			// for由大到小排序
	printf("%s\n", str);
	test02_while(str, 0, N);		// while由小到大排序
	printf("%s\n", str);
	test02_doWhile(str, 0, N);		// do……while由大到小排序
	printf("%s\n", str);

}

输入结果如下:


返回:C语言笔记--数据类型(总)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值