实验报告102答案Word文档下载推荐.docx
《实验报告102答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《实验报告102答案Word文档下载推荐.docx(10页珍藏版)》请在冰豆网上搜索。
3、掌握使用指针操作数组元素的方法
4、掌握使用指针操作字符串的方法
二、知识要点
1、变量的直接访问和间接访问的概念
2、指针和指针变量的概念
3、简单变量的指针及指向简单变量的指针变量的定义、赋值及使用
4、数组的指针及指向数组的指针变量的定义、赋值及使用
5、字符串的指针及指向字符串的指针变量的定义、赋值及使用
三、实验预习(要求做实验前完成)
1、写出一个C语句,使得指针变量u指向变量x:
2、写出一个C语句,输出“指针变量p指向的整型变量”的值:
3、把“指针变量u所指向的变量”的值变为40,其语句是:
4、定义三个变量,其中x1是整型变量;
y1、y2是指向整数的指针变量:
5、若有语句:
chart[20]=“abcdefgh”,*p;
则使p指向字符串的第一个字符的语句是:
四、实验内容(以下题目要求使用指针方法完成)
1、已知一个整数数组x[4],它的各元素值分别为3、11、8和22。
使用指针表
示法编程序,求该数组各元素之积。
#include<
stdio.h>
stdlib.h>
intmain()
{ints,i,x[4]={3,11,8,22};
int*p;
p=x;
s=x[0];
for(i=0;
i<
3;
i++)
{
p++;
s=s*(*p);
}
printf("
%d"
s);
return0;
}
2、编写程序,输入10个整数至一数组,将其中最小的数与第一个数对调,把
最大的数与最后一个数对调。
(要求输出对调前后的数组)
{inta[10],i,min,max,s,b,c=0,n=0;
for(i=0;
10;
scanf("
&
a[i]);
{printf("
%d"
a[i]);
\n"
);
min=max=a[0];
{if(min>
a[i])
{min=a[i];
c=i;
if(max<
{max=a[i];
n=i;
s=a[0];
a[0]=min;
a[c]=s;
b=a[9];
a[9]=max;
a[n]=b;
3、编写程序,复制一个字符串到字符数组x中,要求在复制时删除其中的数字
字符。
输出x数组。
(x数组中不能含有数字字符)
string.h>
{
charb[50]={0},a[50]={0};
char*p,*q;
gets(b);
p=b;
q=a;
while(*p!
='
\0'
)
if(((*p)<
'
0'
)||((*p)>
9'
))
*q=*p;
q++;
puts(a);
4、编写参数为指针变量的函数del,功能是删除字符串中的*号。
要求在主函数中定义数组a,b,输入字符串给数组a,调用del删除*号后存放在数组b中,输出b数组。
voiddel(charstr1[50],charstr2[50])
gets(str1);
p=str1;
q=str2;
if(*p!
*'
intmain()
chara[50]={0},b[50]={0};
del(a,b);
puts(b);
5、编写参数为指针变量的函数,功能是将数组元素按输入顺序逆置存放,要求在主函数中输入数组元素的值,在主函数中输出逆置后的数组。
voiddel(chara[50])
char*q,*p,b[50]={0};
intn,i;
p=a;
q=b;
n=strlen(a);
for(i=n;
i>
0;
i--)
*q=*(p+i-1);
puts(b);
charc[50];
gets(c);
del(c);
6、编写参数为指针变量的函数fun,功能是交换两个数组中的对应元素。
已知
数组a元素值分别为10,20,30,40,数组b元素值分别为1,2,3,4,要求在主函
数中输出交换后的a和b数组。
voiddel(inta[4],intb[4])
int*p,*q,*s,i,c[4];
s=c;
i<
4;
i++)
*(c+i)=*(p+i);
*(p+i)=*(q+i);
*(q+i)=*(c+i);
printf("
%d\t"
b[i]);
inta[4]={10,20,30,40},b[4]={1,2,3,4};
7、利用动态内存分配的方法,输入一个班的学生某门功课的成绩,人数由用户指定,输出全班平均分以及最高分和最低分。
intmax=0,min=0,s=0,i=0,w=0,num=0;
请输入人数:
scanf("
num);
int*p=(int*)malloc(num*sizeof(int)),*q;
q=p;
for(i=0;
num;
p);
p=q;
max=min=*p;
if(max<
*p)
max=*p;
if(min>
min=*p;
s=s+*p;
w=s/num;
free(p);
平均分为%d\n"
w);
最高分为%d\n"
max);
最低分为%d"
min);
五、实验结果(要求写出运行界面及输出的运行结果)
六、实验小结
2.#include<
inta[10],i,t=0,s=0,max,min,b,c;
int*p,*q;
*p);
b=i;
t=*p;
*p=min;
*(p+b)=t;
s=*(p+9);
*(p+9)=max;
*(p+c)=s;