做网站公司未来的发展方向,建筑工程师培训学校,jsp网站建设毕业设计,wordpress 占用内存高C程序实验报告 实验项目#xff1a; 1、指针基础及指针运算 2、数据交换 3、字符串反转及字符串连接 4、数组元素奇偶排列 姓名#xff1a;曹时仙 实验地点#xff1a;教学楼514教室 实验时间#xff1a;2019.6.12 一、实验目的与要求 1、掌握指针的概念和定义方法 2、掌…C程序实验报告 实验项目 1、指针基础及指针运算 2、数据交换 3、字符串反转及字符串连接 4、数组元素奇偶排列 姓名曹时仙 实验地点教学楼514教室 实验时间2019.6.12 一、实验目的与要求 1、掌握指针的概念和定义方法 2、掌握指针的操作符和指针的运算 3、掌握指针与数组的关系 4、掌握指针与字符串的关系 5、熟悉指针作为函数的参数以及返回指针的函数 6、了解函数指针 二、实验内容 一、指针基础及指针运算8.3.1 1、问题的简单描述 1定义一个整形指针变量p使它指向一个整形变量a定义一个浮点型指针q使它指向一个浮点型变量b同时定义另外一个整形变量c并赋初值3。 2使用指针变量调用scanf函数分别输入a和b的值。 3通过指针间接访问并输出a、b的值。 4按十六进制方式输出p、q的值以及a、b的地址。 5将p指向c通过p间接访问c的值并输出。 6输出p的值及c的地址并与上面的结果进行比较。 2、实验代码 #includestdio.h
int main()
{int *p,a,c3;float *q,b;pa;qb;printf(Please Input the Value of a,b:);scanf(%d,%f,p,q);printf(Result: \n);printf( %d, %f\n,a,b);printf( %d, %f\n,*p,*q);printf(The Address of a, b: %p,%p\n,a,b);printf(The Address of a, b:%p,%p\n,p,q);pc;printf(c%d\n , p);printf(The Address of c :%x ,%x\n,p,c);return 0;
} 3、运行效果 4、问题分析 该题运行效果不与课本上的相同是因为地址本来就不同该题难度不大主要是掌握了指针的最基本知识就能做出来。 二、数据交换8.3.2 1、问题的简单描述 1定义两个函数分别为void swap1int a,int b和void swap2(int a,int b),用于交换ab的值。 2从主函数中分别输入两个整形变量a、b。 3从主函数中分别调用上述两个交换函数并打印输出交换后a、b的结果。 2、实验代码 #includestdio.h
void swap1(int x,int y);
void swap2(int *x,int *y);
int main()
{int a,b;printf(Please Input a:);scanf(%d,a);printf(\n b:);scanf(%d,b);swap1(a,b);printf(\nAfter Call swap1: a%d b%d\n,a,b);swap2(a,b);printf(\nAfter Call swap2 :a%d b%d\n,a,b);return 0;
}
void swap1(int x, int y)
{
int temp;
tempx;
xy;
ytemp;
}
void swap2(int *x,int *y)
{int temp;temp*x;*x*y;*ytemp;
} 3、运行效果 4、问题分析 无 三、字符串反转及字符串连接 1、问题的简单描述 1)定义两个字符指针通过gets()函数输入两个字符串。 (2)定义一个函数char reverse(char str)通过指针移动方式将字符串反转。 (3)A定义一个函数char link(char str1,char *str2)通过指针移动方式将两个字符串连接起来。 (4)从主函数中分别调用上述函数输入字符串并打印输出结果。 2、实验代码 #includestdio.h
char *reverse(char *str);
char *link(char *str1, char *str2);
int main()
{char str[30], str1[30],*str2;printf(Input Reversing Charcter String: );gets(str);str2reverse(str);printf(\nOutput Reversed Character String: );puts(str2);printf(Input String1: );gets(str);printf(\nInput String2:);gets(str1);str2link(str,str1);puts(str2);return 0;}
char *reverse(char *str)
{char *p,*q,temp;pstr,qstr;while(*p!\0)p;p--;while(qp){temp*q;*q*p;*ptemp;p--,q;}return str;
}
char *link(char *str1,char *str2)
{char *pstr1,*qstr2;while(*p !\0)p;while(*q !\0){*p*q;p,q;}*p\0;return str1;
} 3、运行效果 4、问题分析 这题个人感觉难度挺大主要是一开始我还不知道怎样才是指针做相向运动后来知道了问题就基本解决了。 四、数组元素奇偶排列8.3.3 1、问题的简单描述 1定义一个整形一维数组任意输入数组的元素其中包含奇数和偶数。2定义一个函数实现将数组元素奇数在左偶数在右的排列。3在上诉定义的函数中不允许再增加新的数组。4从主函数中分别调用上述函数打印输出结果。 2、实验代码 #includestdio.h
#define N 10
void arrsort(int a[],int n);
int main()
{int a[N],i;for(i0;iN;i)scanf(%d,a[i]);arrsort(a,N);for(i0;iN;i)printf(%d ,a[i]);
}
void arrsort(int a[],int n)
{int *p,*q,temp;pa;qan-1;while(pq){while((*p%2)!0)p;while((*q%2)0)q--;if(pq)break;temp*p;*p*q;*qtemp;p,q--;}
} 3、运行效果 4、问题分析 一开始只是想好如何判断一个数是奇数还是偶数之后的空就可以和之前的题目差不多了。 三、实验小结 本章据说是C语言的灵魂所在玩好指针就说明C语言学的精通不过指针确实也不是那么容易学在上这个理论课的时候就发现了难度较大。不过在实验课上收获不少掌握了指针的移动指针向前、向后、相向移动都有着不小的作用。 转载于:https://www.cnblogs.com/shixian/p/11014983.html