for(i=0;i printf(“%d ”,*(a+i)); /*按指针输出第一组数*/ printf(“\\n”); for(i=0;i printf(“%d ”,q[i]); /*按数组输出第二组数*/ printf(“The memory address of p,a,q are:%x,%x,%x\\n”,p,a,q); free(q); } 2、#include void swap(int *p1,int *p2) { int p; p=*p1; *p1=*p2; *p2=p; } void main( ) { int n1,n2,n3; int *p1,*p2,*p3; printf(“Please input three integer datas:”); scanf(“%d%d%d”,&n1,&n2,&n3); p1=&n1; p2=&n2; p3=&n3; if(n1 printf(“%d %d %d\\n”,n1,n2,n3); } 3、#include void swap1(int x,int y); void swap2(int *x,int *y); void main( ) { int a,b; printf(“Please input a=:”); scanf(“%d”,&a); printf(“Please input 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); } void swap1(int x,int y) { int temp; temp=x; x=y; y=temp; } void swap2(int *x,int *y) { int temp; temp=*x; *x=*y; *y=temp; } 4、#include int strlength(char *s); void main( ) { int n1,n2; char *list1=“See no evil,hear no evil.”; char *list2=“blind and deaf?”; n1=strlength(list1); n2=strlength(list2); puts(list1); printf(“The length of list1=%d\\n”,n1); puts(list2); printf(“The length of list2=%d\\n”,n2); } int strlength(char *s) { int n=0; while(*s!=‘\\0’) { n++; s++; } return n; } 实验九 综合实验2:函数、数组、指针的综合应用(2学时) 一、实验方式:一人一机 二、实验目的: 1、进一步掌握通过指针引用数组元素的方法。 2、综合运用函数、数组、指针的知识,实现复杂程序的编程。 3、掌握调试复杂程序的技巧。 三、实验内容: 说明:前两题为必做题目,后两题为选做题目。要求用指针方法实现。 1、数组元素奇偶排列。实验要求:1)定义一个整型一维数组,任意输入数组的元素,其中包含奇数和偶数。2)定义一个函数,实现将数组元素奇数排列在左,偶数排列在右的排列。3)在上述定义的函数中,不允许再增加新的数组。4)从主函数中分别调用上述函数,打印输出结果。(实验指导书P172) 2、编写函数lower( )模拟标准函数strlwr( ),调用形式为lower(char *st),其作用是将字符串st中的大写字母转换成小写。(书P192) 3、编写函数,比较两个字符串是否相等。(书P234) 4、编写函数reverse( )模拟标准函数strrev( ),调用形式为reverse(char *st),其作用是颠倒字符串st的顺序,即按与原来相反的顺序排列。(书P192) 四、实验步骤与过程: 五、实验调试记录: 六、参考答案: 1、#include void arrsort(int a[ ],int n); void main() { int a[N],i; for(i=0;i scanf(“%d”,&a[i]); arrsort(a,N); for(i=0;i printf(“%d ”,a[i]); } void arrsort(int a[ ],int n) { int *p,*q,temp; p=a; q=a+n-1; while(p { while(*p%2) p++; while(!(*q%2)) q--; if(p { temp=*p; *p=*q; *q=temp; } p++,q--; } } 2、#include #define N 20 void lower(char *st) { int i=0; while(st[i]!=‘\\0’) { if(st[i]>=‘A’&&st[i]<=‘Z’) st[i]+=32; i++; } } void main( ) { char s[N]; printf(“Input a string:\\n”); scanf(“%s”,s); lower(s); printf(“Output:%s\\n”,s); } 3、#include int compare(char *p,char *q) { int i,l=strlen(p); if(strlen(p)!=strlen(q)) return 0; for(i=0;i if(p[i]!=q[i]) return 0; return 1; } void main( ) { char str1[80],str2[80]; printf(“Input first string:”); scanf(“%s”,str1); printf(“Input second string:”); scanf(“%s”,str2); if(compare(str1,str2)) printf(“Two strings equation!\\n”); else printf(“Two strings no equation!\\n”); } 4、#include #include void reverse(char *st) { int i=0,n; char t; n=strlen(st); for(;i { t=st[i]; st[i]=st[n-i-1]; st[n-i-1]=t; } } void main( ) { char s[80]; printf(“Input a string:\\n”); scanf(“%s”,s); reverse(s); printf(“Output:%s\\n”,s); } 实验十 综合实验3:结构体、文件程序设计(6学时) 一、实验方式:一人一机 二、实验目的: 1、掌握结构体类型变量的定义和使用。 2、掌握结构体类型数组的概念和使用。 3、学会使用文件打开、关闭、读、写等文件操作的函数。 三、实验内容: 说明:前三题为必做题目,后一题为选做题目。 1、在选举中进行投票,包含候选人姓名、得票数,假设有多位候选人,用结构体数组统计各候选人的得票数。(实验指导书P180) 2、编写一个学生信息排序程序。要求: 1) 程序运行时可输入n个学生的信息和成绩(n预先定义)。 2) 学生信息包括:学号、姓名;学生成绩包括:高等数学、物理、计算机。 3) 给出一个排序选择列表,能够按照上述所列信息(学号、姓名、高等数学、物理、计算机)中的至少一个字段进行排序,并显示其结果。 4) 使用函数方法定义各个模块。 3、将磁盘上一个文本文件的内容复制到另一个文件中。(实验指导书P199) 4、从键盘输入一行字符串,将其中的小写字母全部转换成大写字母,输出到一个磁盘文件“test.dat”中保存,然后读出并输出在屏幕上。(实验指导书P204) 四、实验步骤与过程: