day8 4.10

1.判断大小端存储问题 

linux@linux:~/test/day8$ ./a.out 
xiaoduanshuru
linux@linux:~/test/day8$ cat test7.c
#include <stdio.h>

int main(int argc, char * argv[])
{
	int a = 0x12345678;
	char *p = &a;
	if(*p == 0x78)
	{
		printf("xiaoduanshuru\n");
	}
	else if(*p == 0x12)
	{
		printf("daduanshuru\n");
	}
	return 0;

}

2.有字符串ab_cd_a_,写一个代码删除字符串中的_,要求使用一个字符数组。 

#include <stdio.h>
#include <string.h>

int main(int argc , char * argv[])

{
	char str[] = "ab_cd_a";
	int len = strlen(str),i,j;
	for (i = 0;i<len;i++)
	{
		if(str[i]=='_')
		{
			j = i;
			while (str[j]!='\0')
			{
				str[j] = str[j+1];
				j++;
			}
		}
	}
	puts(str);
	return 0;
}
linux@linux:~/test/day8$ gcc test8.c
linux@linux:~/test/day8$ ./a.out 
abcda

3、strlen、strcpy、strcat、strcmp使用指针实现,不许p[i]方式的访问 

#include <stdio.h>

int main(int argc, char * argv[])

{
	char str[] = "hello";
	char *p = str;
	int i = 0;
	//strlen
	/*	while (*p)
	{
		i++;
		p++;
	}
	printf("%d\n",i);
*/
	//strcpy
	p = str;
	char str1[20] = "world";
	char *p1 = str1;
/*	while (*p1)
	{
		*p = *p1;
		p++;
		p1++;
	}
	p = str;
	puts(p);
*/
	//strcat
/*	p1 = str1;
	p = str;
	while(*p1)
	{
		p1++;
	}
	while(*p)
	{
		*p1 = *p;
		p++;
		*p++;

	}
	*p1 = *p;
	p1 = str1;
	puts(p1);
*/
	//strcmp
	p = str;
	p1 = str1;
	while(*p!='\0'&&*p1&&*p==*p1)
	{
		p++;
		p1++;

	}
	i = *p - *p1;
	printf("%d\n",i);
	return 0;
}

4.使用指针实现字符数组的逆置cj 

linux@linux:~/test/day8$ ./a.out 
olleh
linux@linux:~/test/day8$ cat test10.c
#include <stdio.h>
#include <string.h>

int main(int argc, char * argv[])
{
	char str[] = "hello";
	int len = strlen(str),i;
	char *p = str;
	char *p1 = str + len - 1;
	char temp;
	while (p1>p)
	{
		temp = *p;
		*p = *p1;
		*p1 = temp;
		p++;
		p1--;
	}
	puts(str);
	return 0;
}

5.使用数组指针的方式,求二维数组中的最大值,要求终端输入二维数组中的元素。 

#include <stdio.h>

int main(int argc, char * argv[])
{
	int arr[2][3] = {0};
	int (*p)[3] = arr;
	int i,j;
	for (i = 0;i<2;i++)
	{
		for (j = 0;j<3;j++)
		{
			scanf("%d",*(p+i)+j);
		}
	}

	int max = **p;
	for (i = 0;i<2;i++)
	{
		for (j = 0;j<3;j++)
		{
			if(*(*(p+i)+j)>max)
			{
				max = *(*(p+i)+j);
			}
		}
	}
	printf("%d\n",max);
	return 0;
}
linux@linux:~/test/day8$ gcc test11.c
linux@linux:~/test/day8$ ./a.out 
45 65 322 12 4 4
322

 6.使用mian外部传参的方式,实现简易计算器功能

linux@linux:~/test/day8$ ./a.out 45 + 23
68
linux@linux:~/test/day8$ ./a.out 9 \* 2
18
linux@linux:~/test/day8$ cat test6.c
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char * argv[])

{
	int num1,num2,ret;
	char o;
	num1 = atoi(argv[1]);
	num2 = atoi(argv[3]);

	if(!strcmp(argv[2],"+"))
	{
		ret = num1 + num2;
	}
	o = *argv[2];
	switch (o)
	{
		case '-':
			ret = num1 - num2;
			break;
		case '*':
			ret = num1 * num2;
			break;
		case '/':
			ret = num1 / num2;
			break;
		case '%':
			ret = num1 % num2;
			break;
	}
	printf("%d\n",ret);
	return 0;
}

 

  1. 使用数组指针的方式完成二维数组的输入输出
linux@linux:~/test/day8$ ./a.out 
45 56 12 3 5 7
45	56	12	3	5	7	
linux@linux:~/test/day8$ cat test12.c
#include <stdio.h>

int main(int argc, char * argv[])

{
	int arr[2][3];
	int (*p)[3] = arr;
	int i,j;
	for(i = 0;i<2;i++)
	{
		for (j = 0;j<3;j++)
		{
			scanf("%d",p[i]+j);
		}
	}
	for(i = 0;i<2;i++)
	{
		for (j = 0;j<3;j++)
		{
			printf("%d\t",*(p[i]+j));
		}
	}
	putchar(10);
	return 0;
}
  1. 终端输入带空格的字符串,判断所含单词个数 abc op lo ---->3
#include <stdio.h>

int main(int argc, char * argv[])

{
	char str[20];
	gets(str);
	char *p = str;
	int i,j = 0;
	while(*p)
	{
		while(*p==' ')
		{
			++p;
		}
		if(*p)
		{
			j++;
		}
		while(*p!=' '&&*p)
		{
			++p;
		}
	}
	printf("%d\n",j);
	return 0;
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值