嵌入式学习代码总结(二)

时间范围:2022年10月31日-2022年11月6日

2022年10月31日

/*
 *	作者:徐子宸
 *	来源:原创
 *	功能:用指针实现冒泡排序
 *	日期:2022年10月31日
 *
 */
#include
int input(int a[],int n)
{
	int *p=a;
	n=5;
    printf("请输入待排序的数\n");
	for(int i=0;i<5;i++)
	{
		scanf("%d",&p[i]);
	}
}
int sort(int a[],int n)
{
	int *p=a;
	for(int i=0;i<5;i++)
	{
		for(int j=0;j<5-i;j++)
		{
			if(p[j]>p[j+1])
			{
				int tmp=p[j];
				p[j]=p[j+1];
				p[j+1]=tmp;
			}
		}
	}
}
int output(int a[],int n)
{	
	int *p=a;
	printf("已完成排序\n");
	for(int i=0;i<5;i++)
	{
		printf("%d\n",p[i]);
	}
}
int main()
{
	int a[5]={0};
	input(a,5);
	sort(a,5);
	output(a,5);
	//int i,j;
	return 0;
}
#include
#include
#include
float jia(float a,float b)
{
	return a+b;
}
float jian(float a,float b)
{
	return a-b;
}
float cheng(float a,float b)
{
	return a*b;
}
float chu(float a,float b)
{
	return a/b;
}
int main()
{
	float a,b;
	char c;
	char str[10]={'\0'};
	//while(1);
	printf("输入quit退出,goon继续\n");
	while(1)
	{
	    gets(str);
		if(strcmp(str,"quit")==0)
		{
			exit(0);
		}
		else if(strcmp(str,"goon")==0)
		{
		   printf("请输入要计算的数字和操作\n");
	       scanf("%f%*c%c%f",&a,&c,&b);
			switch(c)
			{
				case '+':
					//jia(a,b);
					printf("%f\n",jia(a,b));
					break;
				case '-':
					//jian(a,b);
					printf("%f\n",jian(a,b));
					break;
				case '*':
					//cheng(a,b);
					printf("%f\n",cheng(a,b));
					break;
				case '/':
					//chu(a,b);
					printf("%f\n",chu(a,b));
					break;
				default:
					printf("ERROR");
					break;
			}
		}
	}
	return 0;
}
#include
int main()
{
	int a=10;
	int *p=&a;
	char b='c';
	char *q=&b;
	printf("%ld\n",sizeof(int *));
	printf("%ld\n",sizeof(char *));
	return 0;
}
#include
int swap(int x,int y)
{
	int temp=x;
	x=y;
	y=temp;
}
int main()
{
	int x=3;
	int y=4;
	swap(x,y);
	printf("x=%d,y=%d\n",x,y);
	return 0;
}
#include
int swap(int *x,int *y)
{
	int temp=*x;
	*x=*y;
	*y=temp;
	printf("x=%d,y=%d\n",*x,*y);
}
int main()
{
	int x=3,y=4;
	swap(&x,&y);
	printf("x=%d,y=%d\n",x,y);
	return 0;
}
#include
int main()
{
	int a=10;
	int *p=&a;
	printf("%d",*&a);
	return 0;
}
#include
int main()
{
	int a=10;
	int *p=&a;
	*p=20;
	printf("%d",*p);
	return 0;
}
#include
int main()
{
	int a=10;
	int *p=&a;
	printf("%d\n",*p);
	*p=20;
	printf("%d\n",a);
	printf("%d\n",*&a);
	return 0;
}
#include
int main()
{
	int a=10;
	int *p=&a;
	int b=20;
	*p=b;
	printf("%p\n",&a);
	printf("%p\n",p);
	printf("%d\n",*p);
	printf("%p\n",&b);
	printf("%p\n",p);
	printf("%d\n",*p);
	return 0;
}
#include
int main()
{
	int *p;
	printf("%p\n",p);
	return 0;
}
#include
int main()
{
	int *p;
	p=NULL;
	printf("%p\n",p);
	return 0;
}
#include
int main()
{
	int a=10;
	const int *p=&a;
	printf("%p\n",p);
	int b=20;
	p=&b;
	printf("%p\n",p);
	return 0;
}
#include
int main()
{
	const int *p=&a;
	int b;
	int a;
	printf("%p\n",*p);
	*p=b;
	printf("%p\n",*p);
	return 0;
}
#include
int main()
{
	int a=20,b=10;
	int * const p=&a;
	*p=10;
	*p=20;
	printf("%d\n",*p);
	return 0;
}
#include
int main()
{
	int a[5];
	int *p=a;
	for(int i=0;i<5;i++)
	{
		scanf("%d",&p[i]);
	}
	for(int i=0;i<5;i++)
	{
		printf("%d\n",p[i]);
	}
	return 0;
}
#include
int main()
{
	int a[5];
	int *p=a;
	for(int i=0;i<5;i++)
	{
		scanf("%d",p+i);
	}
	for(int i=0;i<5;i++)
	{
		printf("%d\n",*(p+i));
	}
	return 0;
}
#include
int main()
{
	int a[5];
	int *p=a;
	for(int i=0;i<5;i++)
	{
		scanf("%d",p++);
	}
	p=a;
	for(int i=0;i<5;i++)
	{
		printf("%d\n",*(p++));
	}
	return 0;
}
#include
int main()
{
	int *p=arr;
	for(int i=0;i<5;i++)
	{
		scanf("%d\n",&p[i]);
	}
	for(int i=0;i<5;i++)
	{
		printf("%d\n",p[i]);
	}
	return 0;
}
#include
int main()
{
	int a[5];
	int *p=a;
	for(int i=0;i<5;i++)
	{
		scanf("%d",p++);
	}
	/*for(int i=0;i<5;i++)
	{
		printf("%d\n",*(p--));
	}*/
	for(int i=0;i<5;i++)
	{
		printf("%d\n",*(--p));
	}
	return 0;
}
#include
int swap(int *a,int *b)
{
	int c=*a;
	*a=*b;
	*b=c;
}
int main()
{
	int a=10,b=20;
	printf("a=%d,b=%d\n",a,b);
	return 0;
}
#include
int swap(int *a,int *b)
{
	int *temp;
	*temp=*a;
	*a=*b;
	*b=*temp;
	printf("a=%d,b=%d\n",*a,*b);
}
int main()
{
	int a=10,b=20;
	swap(&a,&b);
	printf("a=%d,b=%d\n",a,b);
	return 0;
}
/*
 *	段错误
 *
 */

2022年11月1日

#include
int my_strcat(char *s,char *q)
{
	while(*s!='\0')
	{
		s++;
	}
	while(*q!='\0')
	{
		*s=*q;
		q++;
		s++;
	}
}
int main()
{
	char str[50]="aaaaa";
	char str1[50]="bbbbb";
	my_strcat(str,str1);
	printf("%s",str);
	return 0;
}

#include
int my_strcmp(char *s,char *q)
{
	while(*s==*q&&*q!=0)
	{
		s++;
		q++;
	}
	if(*s>*q)
	{
		printf(">\n");
	}
	else if(*s<*q)
	{
		printf("<\n");
	}
	else
	{
		printf("=\n");
	}
}
int main()
{
	char str[100]="xuzichen";
	char str1[100]="zhaozhanqin";
	my_strcmp(str,str1);
	return 0;
}
#include
int main()
{
	char str1[100]={'\0'};
	char str2[100]={'\0'};
	gets(str1);
	gets(str2);
	int i=0;
	int j=0;
	while(str1[i]!='\0')
	{
		i++;
	}
	while(str2[j]!='\0')
	{
		str1[i]=str2[j];
		i++;
		j++;
	}
	puts(str1);
	return 0;
}
#include
int main()
{
	char str1[100]={'\0'};
	char str2[100]={'\0'};
	gets(str1);
	gets(str2);
	int i=0;
	while(str2[i]!='\0')
	{
		str1[i]=str2[i];
		i++;
	}
	str1[i]='\0';
	puts(str1);
	return 0;
}
#include
/*
 *	作者:徐子宸
 *	来源:22091班上课笔记
 *	功能:实现字符串的拷贝
 *
 *
 *
 */
int main()
{
	char *str="China";
	char *atr="country";
	char *p=atr;
	char *q=atr;
	int i=0;
	while(*(p++)!='\0')
	{
		*(q++)=*(p++);
		//i++;
	}
	p[i]='\0';
	puts(str);
	return 0;
}
#include
int input(int n,int *p)
{
	//int i=0;
	for(int i=0;ip[j+1])
			{
				int temp=p[j];
				p[j]=p[j+1];
				p[j+1]=temp;
			}
		}
	}
}
int main()
{
	int arr[5]={0};
	input(5,arr);
	sort(5,arr);
	output(5,arr);
	return 0;
}
#include
void my_strcpy(char *p,char *q)
{
	while(*q!='\0')
	{
		*q=*p;
		p++;
		q++;
	}
	*p='\0';
}
int main()
{
	char str[100]="abcde";
	char str1[100]="aa";
	my_strcpy(str,str1);
	puts(str);
	return 0;
}
/*
 *	有问题
 *
 *
 */
#include
int my_strlen(char *s)
{
	char *p=s;
	while(*p!='\0')
	{
		p++;
	}
	return p-s;
}
int main()
{
	char str[10]="abcde";
	printf("%d",my_strlen(str));
	return 0;
}
#include
int my_strlen(char *s)
{
	char *p=s;
	while(*(p++)!='\0');
	return p-s-1;
}
int main()
{
	char *a="abcde";
	printf("%d",my_strlen(a));
	return 0;
}
#include
int main()
{
	int arr[5]={1,2,3,4,5};
	int *p=&arr[0];
	int *q=&arr[1];
	printf("%ld",q-p);
	return 0;
}
#include
int main()
{
	int arr[5]={1,2,3,4,5};
	int *p=&arr[0];
	int *q=&arr[1];
	printf("%p\n",q);
	printf("%p\n",p);
	printf("%p\n",q-p);
	printf("%d\n",q-p);
	return 0;
}
#include
int main()
{
	int arr[5]={1,2,3,4,5};
	int *p=arr;
	printf("%p\n",p);
	p++;
	printf("%p\n",p);
	printf("%p\n",&arr[1]);
	return 0;
}
#include
int main()
{
	int arr[5]={1,2,3,4,5};
	int *p=arr;
	printf("%p\n",p);
	printf("%p\n",&arr[0]);
	p++;
	printf("%p\n",p);
	printf("%p\n",&arr[1]);
	p--;
	printf("%p\n",p);
	printf("%p\n",&arr[0]);
	return 0;
}
/*
 *	指针的运算
 *
 */

#include
int main()
{
	int arr[5]={1,2,3,4,5};
	int *p=arr;
	printf("%p\n",p);
	printf("%p\n",&arr[0]);
	p++;
	printf("%p\n",p);
	printf("%p\n",&arr[1]);
	p--;
	printf("%p\n",p);
	printf("%p\n",&arr[0]);
	p+1;
	printf("%p\n",p);
	p-1;
	printf("%p\n",p);
	return 0;
}
/*
 *	p++/p--	往地址增大或减小的方向移动一个数据类型的大小,p的指向发生了改变
 *	p+1/p-1 往地址增大或减小的方向移动一个数据类型的大小,p的指向未发生改变
 *
 *
 */
#include
int main()
{
	char a[10];		//	错误
	a[10]="abcde";	
	char b[10];		//	错误
	b="abcde";
	char *c;		//	错误
	*c="abcde";
	char *d;		//	改变指针指向
	d="abcde";
	char *e="abcde";	//	错误
	*e="ab";
	char f[10]="abcde";		//	正确
	char *p;
	p=f;
	char g[10]="abcde";		//	正确	
	char *q=g;
	q=&g[2];
	char *h=NULL;		//	正确  
	h="abcde";
	return 0;
}
#include
int main()
{
	int arr[5]={1,2,3,4,5};
	for(int i=0;i<5;i++)
	{
		printf("%d",arr[i]);
	}
	return 0;
}
#include
int main()
{
	char arr[5]="abcd";
	for(int i=0;i<5;i++)
	{
		printf("%c",arr[i]);
	}
	return 0;
}
#include
int main()
{
	char arr[5]="abcd";
	printf("%s",arr);
	return 0;
}
#include
int main()
{
	char str[3][20]={"aaaa","bbbb","cccc"};
	int i;
	printf("%s",str[i]);
	return 0;
}
#include
int main()
{
	char *s="abcde";
	*s="a";
	return 0;
}
#include
int main()
{
	char str[10]="abcde";
	char *p=str;
	printf("%s\n",p);
	p=&str[2];
	printf("%s\n",p);
	printf("%s\n",str);
	return 0;
}
#include
int main()
{
	char str[10]="abcde";
	printf("%s",str[2]);
	return 0;
}
#include
int main()
{
	char *p="abcde";
	printf("%c\n",*p);
	printf("%s\n",*p);
	printf("%s\n",p);
	printf("%d\n",*p);
	return 0;
}
#include
int main()
{
	char *s="abcde";
	s++;
	printf("%s\n",s);
	s++;
	printf("%s\n",s);
	s++;
	printf("%s\n",s);
	s++;
	printf("%s\n",s);
	return 0;
}
#include
int main()
{
	int a=10;
	int *p=&a;
	int **q=&p;
	printf("%d\n",sizeof(p));
	printf("%d\n",sizeof(q));
	return 0;
}
#include
int main()
{
	int a=10;
	int *p=&a;
	int **q=&p;
	printf("%p\n",&a);
	printf("%p\n",p);
	printf("%p\n",*q);
	printf("%p\n",&p);
	printf("%p\n",q);
	return 0;
}
#include
int main()
{
	int a=10;
	int *p=&a;
	int **q=&p;
	printf("%d\n",*p);
	printf("%p\n",*q);
	printf("%p\n",**q);
	printf("%p\n",p);
	printf("%p\n",&a);
	return 0;
}
#include
int main()
{
	int a=10;
	int *p=&a;
	int **s=&p;
	printf("%d\n",**s);
	printf("%p\n",&a);
	printf("%p\n",p);
	printf("%p\n",*s);
	int b=20;
	*s=&b;
	printf("%p\n",&b);
	printf("%p\n",p);
	printf("%p\n",*s);
	return 0;
}
#include
int main()
{
	int a=10;
	int *p=&a;
	int b=20;
	int *pp=&b;
	int const **s=&p;
	**s=*pp;
	s=&pp;
}
#include
int main()
{
	int a=10;
	int *p=&a;
	int b=20;
	int *pp=&b;
	int ** const s=&p;
	**s=*pp;
	s=&pp;
}
#include
int main()
{
	int a=10;
	int *p=&a;
	int b=20;
	int *pp=&b;
	int * const * s=&p;
	**s=*pp;
	s=&pp;
}
#include
int main()
{
	char *str[3]={"abcde","qwert","zxcvb"};
	int i=0;
	for(i=0;i<3;i++)
	{
		printf("%s\n",*str[i]);
	}
	return 0;
}

2022年11月2日

#include
int main()
{
	int arr[5]={1,2,3,4,5};
	int (*p)[5]=&arr;
	printf("%p\n",arr);
	printf("%p\n",&arr);
	printf("%p\n",&arr[0]);
	printf("%p\n",p);
	return 0;
}
#include
int main()
{
	int arr[5]={1,2,3,4,5};
	int (*p)[5]=&arr;
	printf("%p\n",p);
	int arr1[5]={1,2,3,4,5};
	//int arr1[3]={1,2,3};
	p=&arr1;
	printf("%p\n",p);
	return 0;
}
#include
int main()
{
	int arr[5]={1,2,3,4,5};
	int (*p)[5]=&arr;
	printf("%p\n",p);
	p++;
	printf("%p\n",p);
	return 0;
}
/*
 *	作者:徐子宸
 *	来源:原创
 *	功能:用指针实现冒泡排序
 *	日期:2022年10月31日
 *
 */
#include
int input(int (*p)[5]/*,int n*/)
{
	//int *p=a;
	//n=5;
    printf("请输入待排序的数\n");
	for(int i=0;i<5;i++)
	{
		scanf("%d",&(*p)[i]);
	}
}
int sort(int (*p)[5]/*,int n*/)
{
	//int *p=a;
	for(int i=0;i<5-1/* i<2 i<1 */;i++)
	{
		for(int j=0;j<5-1-i;j++)
		{
			if((*p)[j]>(*p)[j+1])
			{
				int tmp=(*p)[j];
				(*p)[j]=(*p)[j+1];
				(*p)[j+1]=tmp;
			}
		}
	}
}
int output(int (*p)[5]/*,int n*/)
{	
	//int *p=a;
	printf("已完成排序\n");
	for(int i=0;i<5;i++)
	{
		printf("%d\n",(*p)[i]);
	}
}
int main()
{
	int a[5]={0};
	int (*p)[5]=&a;
	input(&a/*,5*/);
	sort(&a/*,5*/);
	output(&a/*,5*/);
	//int i,j;
	return 0;
}
/*
 *	思路分析:
 *	输入元素:1 9 4 2 6
 *	第一趟:
 *	1 9 4 2 6
 *	1 4 9 2 6
 *	1 4 2 9 6
 *	1 4 2 6 9
 *	第二趟:
 *	1 4 2 6 9
 *	1 2 4 6 9
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */
#include
int main()
{
	int arr[5]={1,2,3,4,5};
	int (*p)[5]=&arr;
	for(int i=0;i<5;i++)
	{
		printf("%d\n",*(arr+i));
	}

	for(int i=0;i<5;i++)
	{
		printf("%d\n",*(*p+i));
	}


	for(int i=0;i<5;i++)
	{
		printf("%d\n",*(*p++));
	}


	for(int i=0;i<5;i++)
	{
		printf("%d\n",*((*p)++));
	}


}
#include
int main()
{
	int arr[5];
	int (*p)[5]=&arr;
	//int i;
	for(int i=0;i<5;i++)
	{
		scanf("%d",&(*p)[i]);
	}

	for(int i=0;i<5;i++)
	{
		printf("%d",(*p)[i]);
	}
}
#include
int main()
{
	int arr[5];
	int (*p)[5]=&arr;
	//int i;
	for(int i=0;i<5;i++)
	{
		scanf("%d",&*(*p+i));
	}

	for(int i=0;i<5;i++)
	{
		printf("%d",(*p)[i]);
	}
	return 0;
}
#include
int main()
{
	int arr[5]={1,2,3,4,5};
	int (*p)[5]=&arr;
	printf("%d\n",sizeof(int(*)[5]));
	printf("%d\n",sizeof(int[5]));
	return 0;
}
#include
int main()
{
	printf("%d\n",sizeof(int *));
	printf("%d\n",sizeof(char *));
	printf("%d\n",sizeof(double *));
	printf("%d\n",sizeof(int (*)[5]));
	return 0;

}

附习题:

若有以下定义和语句:

double r=99;double *p=&r ;

*p=r ;

则以下正确的叙述是         

A. 以两处的*p 含义相同,都说明给指针变量p 赋值

B. 在"double r=99,*p=&r;"中,把r 的地址赋值给了p 所指的存储单元

C. 语句"*p=r;"把变量r 的值赋给指针变量p

D. 语句"*p=r;"取变量r 的值放回r 中

5、 分析下面函数,以下说法正确的是        

swap(int *p1,int *p2)

{

 Int *p;

  *p=*p1; *p1=*p2; *p2=*p;

}

A. 交换*p1和*p2的值            B. 正确,但无法改变*p1和*p2的值

C. 交换*p1和*p2的地址          D. 可能造成系统故障,因为使用了野指针

9、 有如下程序段

int *p ,a=10 ,b=1 ;

p=&a ; a=*p+b ;

执行该程序段后,a 的值为         

A. 12        B. 11        C. 10           D. 编译出错

8、 若int x ; int *pb; ,则正确的赋值表达式是         

A. pb=&x       B. pb=x;    C. *pb=&x; D. *pb=*x

12、若有说明:long *p ,a;则不能通过scanf 语句正确给输入项读入数据的程序段

         

A. *p=&a; scanf("%ld",p);

B. p=(long *)malloc(8); scanf("%ld",p);

C. scanf("%ld",p=&a);

D. scanf("%ld",&a);

13、对于类型相同的两个指针变量之间,不能进行的运算是         

A. <         B. =         C. +         D. -

2、执行以下程序后,a的值为( )b的值为( )

void main()

{

  int a,b,k=4,m=6,*p1=&k,*p2=&m;

a = p1==&m;

b=(-*p1)/(*p2)+7;

printf(“a=%d\n”, a);

printf(“b=%d\n”, b);  

}

A.-1    B.1      C.0      D.4

A.5     B.6      C.7      D.10

6、有四组对指针变量进行操作的语句,以下判断正确的选项是()

1. int p, q; q=p;               int a,*p,*q; p=q=&a;

2. int a,*p,*q; q=&a; p=*q;     int a=20,*p; p=a;

3. int a=b=0,*p; p=&a; b=*p;    int a=20,*p,*q=&a; p=q;

4. int a=20,*p,*q=&a; p=q;      int p,*q; p=q;

A.正确(1) 不正确(2)(3)(4)

B.正确(1)(4) 不正确(2)(3)

C.正确(3) 不正确(1)(2)(4)

D.正确(1)(3) 不正确 (2)(4)

7、以下程序中调用scanf 函数给变量a输入值的方法是错误的,其错误原因是( )

void main()

{

int*p, q, a, b;

p=&a;

printf(“input a:”);

scanf(“%d”,*p);

……

}

A.*p表示的是指针变量p的地址 

B.*p表示的是变量a的值,而不是变量a的地址 

C.*p表示的是指针变量p的值

D.*p只能用来说明p是一个指针变量

2.已有定义int k=2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是    

A)k=*ptr1+*ptr2     B)ptr2=k            C)ptr1=ptr2          D)k=*ptr1*(*ptr2)

5.若有说明:int *p1, *p2,m=5,n;以下均是正确赋值语句的选项是        

A)p1=&m; p2=&p1 ;         B)p1=&m; p2=&n; *p1=*p2 ;

C)p1=&m; p2=p1 ;          D)p1=&m; *p1=*p2 ;

6.若有语句:int *p,a=4;和p=&a;下面均代表地址的一组选项是        

A)a,p,*&a           B)&*a,&a,*p        C)*&p,*p,&a        D)&a,&*p,p

  1. 有以下程序

void fun(char *a, char

你可能感兴趣的:(华清远见,西安华清远见,徐子宸,学习,排序算法,算法)