《经典规范C语言程序设计》实验报告(第七章)
《高级语言程序设计》实验报告
班级: 学号: 姓名: 成绩:
实验日期: 年 月 日
实验题目: 实验七 指针程序设计实验目的:
实验内容:(包括算法说明:用文字或流程图说明;程序清单;运行结果:原始数据、相应的运行结果和必要的说明。)
原始数据、相应的运行结果和必要的说明。
原始数据、相应的运行结果和必要的说明。
分析与思考:(调试过程及调试中遇到的问题及解决办法;调试程序的心得与体会)
1
1.改错题1)下列程序的功能为:统计将已知字符串中数字符的个数.c存盘。
#include
int digits(char *s)
{int c=0;
while(s)
{
if(*s >=0&&*s <=9)
c++;
s++;
}
return c;
}
void main()
{
char s[80];
printf("请输入一行字符\n");
gets(s);
printf("字符长度是:%d\n",digits(s));
}
2.程序填空
计算数组中的最大元素及其下标值和地址值
#include
int findmax(int *s,int t )
{
int i,k=0;
for(i=0; ;i++)
if( ) k=i;
return ;
}
void main()
{ int a[10]={12,23,34,45,56,67,78,89,11,22},k=0,*add;
int j;
for(j=0;j<10;j++)
printf("%4d%10xh\n",a[j],&a[j]);
k=findmax(a,10);
add=&a[k];
printf("\n%d %d %xh\n",a[k],k+1,add );
}
(2)下列程序的功能为:通过返回地址值,来输出a[2]~a[4]的值;请填写适当的符号或语句,使程序实现其功能,程序以文件名sy7_5.c存盘。
#include
main()
{
int a[5]={1,3,5,7,9}; /* a是int数值的数组 */
int *num[5],i,*p; /* num是指向int类型的指针型数组,p是指向int型的变量 */
int *f(int *x[],int); /* 返回指针值的f函数的声明 */
for (i=0;i<5;i++)
num[i]= ; /* num的每个分量指向a的每个相应元素 */
p=f(num,2); /* 返回num[2]分量所指的数组a中的元素的地址 */
for ( ; p<=num[4]; p++) /* 在num[2]~num[4]地址范围内扫描 */
printf(" %d\t", ); /* 输出该地址范围内的数据 */
}
int *f(int *x[],int i)
{
int k=0;
for (; k
return ; /* 返回num[i]的所指的地址 */
}
(3)下列程序的功能为:通过指针变量的自增运算,扫描一维数组中全部元素的地址,并引用它们各自的值,同时对数组中的正整数求和。请填写适当的符号或语句,使程序实现其功能,程序以文件名sy7_6.c存盘。
#include "stdio.h"
#define N 10
main()
{
int i,k,a[N],sum,count,*p; /* 所有变量和数组a的基类型都是int */
count=sum=0;
do
{ printf(" input k: \n");
scanf("%d",&k); /* 总共要求输入k个数 */
} while (k<=0||k>N); /* 直到型循环确保0≤k≤N */
printf(" input a[0]~a[%d]:\n",k-1);
for (p=a;p
{ scanf("%d", ); /* 此处的p等价于&a[i] */