基础指针练习

一.实验目的:

(1)掌握指针的概念,会定义和使用指针变量;

(2)能正确使用交量的指针和指向变量的指针变量;

(3)能正确使用数组的指针和指向数组的指针变量;

(4)能正确使用字符串的指针和指向字符串的指针变量。

二.实验内容

(1)将一个任意整数播人到已排序的整型数组中,播人后数组中的数仍然保持有序。

要求:

1.整型数组由直接赋值的方式初始化,要播人的整数由scanf()函数输人。

2.算法实现过程采用指针进行处理

3. 输出原始数组数据以及播人整数后的数组数据,并加以说明。

(2) 编写函数upCopy (char* new, char* old),将old 指针所指向字符串中的大写

字母复制到new指针指向的字符串中,并在主函数中调用该函数。

要求:

1. 在主函数中以直接初始化方式输人一一个字符串。

2.在主函数中调用upCopy( )函数,输出old 指针和new 指针指向的字符串。

(3) 输入三个整数,按由大到小的顺序输出。

要求:

1.通过scanf 函数输人三个数据并存人三个变量中。

2. 利用指针实现从大到小输出。

(4) 编写函数 catStr (char * strl,char * str2)用于进行两个字符申的连接,采用指

针实现其过程,并在主函数中调用。

要求:

1 不允许使用strcat()字符处理库函数。

2 在主函数中以直接初始化的方式输人两个字符串strl、str2。

3. 调用函数catStr()连接两个字符串(将st2 连接在strl 后而)。

4. 在主函数中输出两个初始字符串和连接后的字符串。

三.源代码

1.

#include <stdio.h>
int main()
{
      int a[9]={1,2,3,4,5,6,7,8,9};
      int *p;
      int b,n,i;
      p=&b;
      printf("1 2 3 4 5 6 7 8 9\n");
      printf("插入:");
      scanf("%d",p);
      for(i=0;i<9;i++)
      {
          if(b>=a[i])
              n=i;
      }
      for(i=0;i<=n;i++)
      {
          printf("%d ",a[i]);
      }
      printf("%d ",b);
      for(i=n+1;i<9;i++)
      {
          printf("%d ",a[i]);
      }
      printf("\n");
}

2.

#include <stdio.h>
void upCopy(char* new1, char* old);
void main()
{
    char a[] = "Happy", b[10];
    char* new1=NULL;
    char* old=NULL;
    int n=0;
 
    for (old = a; *old != '\0'; old++)
    {
        printf("%c", *old);
        n++;
    }
    old = a;
    new1 = b;
    upCopy(new1, old);
    printf("\n%s", new1);
}
void upCopy(char*new1, char*old)
{
    while (*old != 0)
    {
        if (*old >= 'A' && *old <= 'Z')
        {
            *new1 = *old;
            old++;
            new1++;
        }
        else 
          old++;
    }
}

3.

#include <stdio.h>
int main()
{
	int a, b, c,temp;
	int* p1=NULL, * p2=NULL, * p3=NULL;
	printf("请输入三个整数:");
	scanf("%d%d%d", &a, &b, &c);
	p1 = &a;
	p2 = &b;
	p3 = &c;
	if (*p1 > *p2)
	{
	   temp = *p1;
		*p1 = *p2;
		*p2 = temp;
	}
	if (*p1 > *p3)
	{
		temp = *p1;
		*p1 = *p3;
		*p3 = temp;
	}
	if (*p2 > *p3)
	{
		temp = *p2;
		*p2 = *p3;
		*p3 = temp;
	}
	printf(" % d % d % d", a, b, c);
	return 0;

}

4.

#include <stdio.h> 
char catStr(char* strl, char* str2);
void main()
{
	char str1[80], str2[80];
	printf("字符串1:");
	gets(str1);
	printf("\n字符串2:");
	gets(str2);
	catStr(str1, str2);
	printf("\n新字符串:%s", str1);
}
char catStr(char* strl, char* str2)
{
	while (*strl != '\0')
	{
		*strl++;
	}

		while (*str2 != '\0')
		{
			*strl = *str2;
			*strl++;
			str2++;
		}
		*strl = '\0';
	
	return *strl;
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值