栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

0122 C排序总结和运算符优先级(笔记)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

0122 C排序总结和运算符优先级(笔记)

目录

一、C编写代码知识点

二、运算符优先级

三、命名规范(参考华为编码规范和范例)

四、代码练习


一、C编写代码知识点
1.#define中的 #与##
  #define GPEBLT_FUNCNAME(basename) (SCODE (GPE::*)(struct GPEBltParms*))&GPE::##basename
  在#define中,标准只定义了#和##两种操作。#用来把参数转换成字符串,##则用来连接两个前后两个参数,把它们变成一个字符串。
  #include 
  #define paster( n ) printf( "token " #n" = %dn ", token##n )
  int main()
  {
  int token9=10;
  paster(9);
  return 0;
  }
  输出为
  [leshy@leshy src]$ ./a.out
  token 9 = 10



2.使用typedef给一个还未完全声明的类型tagNode起了一个新别名
格式顺序:
struct tagNode
{
    char *pItem;
    struct tagNode *pNext;
};
typedef struct tagNode *pNode;

3.rand() % 100 伪随机数 随机种子,没有真正的随机
  eg:srand((unsighed)time(NULL));
     a = rand % 100;

4.??引用相当于 '='   eg:char  a[] = "hello" , a和hello 引用的对象同一个??  

二、运算符优先级

​​​​15级别运算符优先级    图表格式

转载自:C语言符号的优先级_xiaoxiaoyu-CSDN博客_c语言优先级

转载自:C语言运算符优先级(超详细)_良师,益友-CSDN博客_c语言运算符的优先级顺序

三、命名规范(参考华为编码规范和范例)

 

四、代码练习
​1.约瑟夫环
#include

int main()
{
    int a[100] = {0};
	int k = -1;
	int n;
    int i;

	printf("Input a number: n");
	scanf("%d",&n);
    
	for (i = 0; i < n; i++)
	{
		a[i] = i + 1;
	}
    printf("n");

    while(a[1] != 0)
	{
		k = (k + 3) % n;
		printf("%4d|",a[k]);
		for (i = k; i < n; i++)
		{
			a[i] = a[i + 1];
		}
		k = k - 1;
		n = n - 1;
	}
    printf("n%dn",a[0]);
	
	return 0;
}



2.排序(待补充)
#include
#include
#include

#define len 10

void print_sort(int a[])
{
	int i;

    for (i = 0; i < len; i++)
	{
		printf("%3d",a[i]);
	}
	printf("n");
}

void sort_bubbling(int a[])
{
    int i,j,temp;
	
	for (i = 0; i < len - 1;  i++)
	{
		int s = 1;
		for(j = 0; j < len - i - 1; j++)
		{
			if(a[j] > a[j + 1])
			{
				temp = a[j];
				a[j] = a[j + 1];
				a[j + 1] = temp;
				s = 0;
			}
		}
		if (s)
		{
			break;
		}
	}
}

int * create_rand()
{
    int i;
	int * a = (int *)malloc(sizeof(int)*len);

	srand((unsigned)time(NULL));
	if (!a)
	{
		printf("create_rand failed!n");
		return a;
	}
	
	for (i = 0; i < len; i++)
	{
		a[i] = rand() % 100;
	}
    
	return a;
}

void cost_time(int *a,void (*p)(int a[]) )
{
    clock_t start = clock();
	p(a);
	clock_t end = clock();
	printf("%.8fn",((double)(end - start))/CLOCKS_PER_SEC);

}


void f_sort(int a[], int start, int end)
{
    int s_start = start;
	int s_end = end;
    int base = a[start];

	while(s_start < s_end)
	{
		while(s_start < s_end && base < a[s_end])
		{
			s_end--;
		}
		if(s_start < s_end)
		{
			a[s_start] = a[s_end];
			s_start++;
		}
		while(s_start < s_end && base > a[s_start])
		{
			s_start++;
		}
		if(s_start < s_end)
		{
			a[s_end] = a[s_start];
			s_end--;
		}
	}
	a[s_start] = base;
	if (start != s_start)
	{
		f_sort(a,start,s_start - 1);
	}
	if (end != s_end)
	{
		f_sort(a,s_end + 1,end);
	}


}

int main()
{
    int * a = create_rand();

	print_sort(a);
    
	

    

   
	return 0;
}


3.二维数组按每行最小值排序
#include
#include
#include

#define N 5

int main()
{
    int i,j;
	int arr[N][N];
	int min[N] = {0};
	int tmp;
	int k;

	srand((unsigned)time(NULL));

	for (i = 0; i < N; i++)
	{
		for (j = 0; j < N; j++)
		{
			arr[i][j] = rand() % 100;
			printf("%4d",arr[i][j]);
		}
		printf("n");
	}
    
    printf("***********************n");

	for (i = 0; i < N; i++)
	{
		min[i] = arr[i][0];
		for (j = 1; j < N; j++)
		{
			if (min[i] > arr[i][j])
			{
				min[i] = arr[i][j];
			}
		}
	}

    for (i = 0; i < N - 1; i++)
	{
		k = i;

		for (j = i + 1; j < N; j++)
		{
			if (min[k] > min[j])
			{
                k = j;
			}
		}

		if (k != i)
		{
			tmp = min[i];
			min[i] = min[k];
			min[k] = tmp;

			for (j = 0; j < N; j++)
		    {
                tmp = arr[i][j];
		    	arr[i][j] = arr[k][j];
			    arr[k][j] = tmp;
		    }
		}		
	}

    for (i = 0; i < N; i++)
	{
		for (j = 0; j < N; j++)
		{
			printf("%4d",arr[i][j]);
		}
		printf("n");
	}

	return 0;
}

​

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/715008.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号