一.实验目的:
(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;
}