day16 小作业

#include 	
/******************值传递*************************/
void fun_1(int a,int b) 	//声明交换函数
{
	int temp;               //三杯水交换
	temp = a;
	a = b;
	b = temp;
}
/******************值传递*************************/
void fun_2(int *a,int *b) 	//声明交换函数
{
	int *temp;              //三杯水交换  仅仅是指针的指向在进行交换
	temp = a;
	a = b;
	b = temp;
}
/******************地址传递*************************/
void fun_3(int *a,int *b) 	//声明交换函数
{
	int temp;               //三杯水交换  指针通过保存的地址间接访问
										//变量所储存的值,对这些值进行交换
	temp = *a;
	*a = *b;
	*b = temp;
}
/******************值返回*************************/
int fun_4(int a,int b) 	//声明函数
{
	int c;
	c = a - b;
	return c; 			//返回变量c的值
}
/******************地址返回*************************/
int *fun_5(int a,int b) 	//声明函数
{
	int c;
	int *p = &c;
	c = a - b;
	return p; 			    //返回指针变量p的值
}
int main(int argc, const char *argv[])
{
	int a = 20,b = 10,c = 0;
	int *p;
	fun_1(a,b);
	printf("a = %d  b = %d\n",a,b); 	        //调用fun_1 后输出a,b的值,看是否交换了
	fun_2(&a,&b);    
	printf("a = %d  b = %d\n",a,b); 	        //调用fun_2 后输出a,b的值,看是否交换了
	fun_3(&a,&b);
	printf("a = %d  b = %d\n",a,b); 	        //调用fun_3 后输出a,b的值,看是否交换了
	c = fun_4(a,b); 					        //用变量c接收fun_4返回的值
	printf("fun_4(a,b) = %d\n",fun_4(a,b)); 	//调用fun_4 后输出返回的值
	printf("c = %d\n",c);	
	p = fun_5(a,b); 					        //用指针变量p接收fun_5返回的地址
	printf("fun_5(a,b) = %d\n",*fun_5(a,b)); 	//调用fun_5 后输出返回的地址所保存的值
	printf("*p = %d\n",*p);		
	return 0;
}

day16 小作业_第1张图片

#include 	
int a; 				//未初始化的全局变量储存在.bss
int b = 1; 			//已初始化的全局变量储存在.data
static int c; 		//未初始化的静态变量储存在.bss
static int d = 1;   //已初始化的静态变量储存在.data
char arr[100] = "hello"  	//已初始化的全局变量储存在.data,而"hello"储存在.ro
char *p = "hello"  			//已初始化的全局变量储存在.data,而"hello"储存在.ro
int main(int argc, const char *argv[])
{
	int q; 									//在栈区,初始值为随机值
	int w = 1; 								//在栈区,初始值为1
	static t; 								//未初始化静态局部变量,在.bss
	static y = 1; 							//初始化静态局部变量,在.data
	char e[100] = "hello"; 					//e在栈区,"hello"在.ro
	char *r = "hello"; 						//r在栈区,"hello"在.ro
	int *p1 = (int *)malloc(sizeof(int));   //p1在栈区,向堆区申请四个字节的空间
	return 0;
}
#include 	
#include 
#include 
int main(int argc, const char *argv[])
{
	int *p0 = (int *)malloc(sizeof(4)); 		//向堆区申请四个字节大小的空间
	printf("*p0 = %d\n",*p0); 					//输出默认值
	int *p1 = (int *)malloc(sizeof(int)); 		//向堆区申请一个int大小的空间
	*p1 = 520; 									//给*p1赋值
	printf("*p1 = %d\n",*p1); 					//输出*p1的值
	int *p2 = (int *)malloc(sizeof(4)*5); 		//向堆区申请五个连续的四个字节大小的空间
	for(int i=0;i<5;i++)
		printf("*p2 = %d\n",*p2); 				//输出默认值
	free(p0); 									//释放p0的空间
	p0 = NULL;                 					//让p0指向空
	free(p1); 									//释放p1的空间
	p1 = NULL;                 					//让p1指向空
	free(p2); 									//释放p2的空间
	p2 = NULL;                 					//让p2指向空
	return 0;
}
#include 	
#include 
int *p; 								//定义一个全局变量
/***************申请堆区空间********************/
void *shen() 
{
	p = (int *)malloc(sizeof(int)*6); 	//申请堆区空间
}
/***************输入学生成绩********************/
void ru()
{
	int i;
	for(i=0;i<6;i++)  					//用for循环输入学生成绩
	{
		printf("请输入学生的成绩:");
		scanf("%d",(p+i));
	}
}
/***************输出学生成绩********************/
void chu()
{
	int i;
	printf("排序后:"); 					//用for循环输出学生成绩
	for(i=0;i<6;i++)
	{
		printf("%-4d",*(p+i));
	}
	putchar(10);
}
/***************对学生成绩升序排序***************/
void pai()
{
	int temp,max=*p,max_1,i,j;
	for(i=0;i<5;i++)
	{
		max=*p; 						//让每次进入循环时max的值都是未排序的第一个
		max_1=0; 						//让每次进入循环时max_1的值都是未排序的第一个
		for(j=0;j<6-i;j++)
		{
			if(*(p+j)>max) 				//判断循环到的值是否比max大
			{
				max=*(p+j); 			//如果大就将值给到max,下标给到max_1
				max_1=j;
			}
		}
		if(max_1!=j-1) 					//如果最大的值不是未排序的最后一个
		{ 								//就将最大的值和未排序的最后一个交换
			temp = *(p+max_1);
			*(p+max_1) = *(p+j-1);
			*(p+j-1) = temp;
		}
	}
}
/******************主函数********************/
int main(int argc, const char *argv[])
{
	shen(); 							//调用申请空间函数
	ru(); 								//调用输入函数
	pai(); 								//调用排序函数
	chu(); 								//调用输出函数
	free(p); 							//释放p的空间
	p = NULL;   						//让指针p指向空
	return 0;
}
#include   
#include 
typedef unsigned short int uint16;          //将无符号短整型重命名为uint16
typedef int * ptr_i;                        //将int *重命名为ptr_i
typedef char string[10];                    //将char [5]重命名为string
int main(int argc, const char *argv[])
{
    uint16 num = 520;                       //定义num
    printf("sizeof(num) = %ld\n",sizeof(num)); //查看num所占字节大小
    printf("num = %d",num);
    ptr_i p1 = NULL;                        //让指针指向空
    printf("sizeof p1 = %ld\n",sizeof(p1)); 
    string s1;                              //定义长度为10的数组
    strcpy(s1,"hello");
    printf("sizeof s1 = %ld\n", sizeof(s1));      
    printf("strlen s1 = %ld\n", strlen(s1));      
    return 0;
}   
#include   
#include 
struct sp                   //商品
{
    char name[40];          //名称
    char position[40];      //产地
    double price;           //单价
    double weight;          //重量
}
int main(int argc, const char *argv[])
{
    struct sp g1 ;                  //定义一个变量存储信息
    printf("请输入商品的名称:");
    scanf("%s", g1.name);
    printf("请输入商品的产地:");
    scanf("%s", g1.position);
    printf("请输入商品的单价:");
    scanf("%lf", &g1.price);
    printf("请输入商品的重量:");
    scanf("%lf", &g1.weight);
    printf("商品信息:%s %s %.2lf %.2lf\n", g1.name, g1.position, g1.price, g1.weight);  //输出
/***************************************************************************************************************/
    struct sp *ptr = (struct sp*)malloc(sizeof(struct sp));         //向堆区申请能够存储sp大小的空间
    strcpy(ptr -> name,"三鹿");       //给名称赋值
    strcpy(ptc -> position,"中国");   //给产地赋值
    ptr -> price = 300;               //给单价赋值
    ptr -> weight = 350;              //给重量赋值
    return 0;
}  

day16 小作业_第2张图片

 

你可能感兴趣的:(算法)