当前位置:首页 > C程序设计实验指导2013上 - 图文
gets(s1); gets(s2); check(s1,s2,p); return 0; }
void check(char *a,char *b,int(*cmp)( char *, char *)) { printf(\ if(!(*cmp)(a,b)) printf(\ else printf(\
5.将多个字符串按字母顺序输出。 #include
void sort(char *str[] , int n) {
char *temp; int i, j , k;
for (i=0;i for (j=i+1;j if (strcmp(str[k],str[j])>0) k=j; if (k!= i) { temp=str[i]; str[i]=str[k]; str[k]=temp; } } } void main() { char *string[4]={\ /* 指针数组string包含4个字符串的首地址 */ int i , n=4; sort(string , n); for (i=0;i printf(\ /*string[i]表示指针数组中第i个字符串的首地址*/ } 五、上机作业: 1. 指针数组的含义是什么? 2.返回值为指针的函数与函数指针区别在哪里? 3 编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数 // 1/1+1/3+...+1/n(利用指针函数) 4. 编写一个程序,采用一个函数实现字符串的前后连接和后前连接. 5. 编写一个程序,采用一个返回指针的函数实现字符串的前后连接和后前连接. 6.编写一个程序,求给定3个字符串的最长公共子串. 7.编写一个函数,函数接受一个整型参数N,则返回一个包含N个字符的字符串,字符串中依次存放字符?A?、?B?、?C?… 实验十三:指针(四) 一、内容及目标: ? ? ? ? ? 理解指向二维数组的指针变量的定义和使用 掌握指向二维数组中一维数组的指针变量的定义和使用 理解指向数组的指针变量和指针数组的区别 掌握指向指针的指针变量的定义和引用 掌握处理命令行参数的main()函数的定义,理解main(int argc, char * argv[])中argc、argv的含义 二、实验重点 ? 指向二维数组中一维数组的指针变量的定义和使用 ? 指向数组的指针变量和指针数组的区别 37 三、实验难点: 指向二维数组中一维数组的指针变量的使用 指向数组的指针变量和指针数组的区别 指向指针的指针变量的应用 四、上机操作: 1. 写出如下程序的输出结果: #include int nArray[3][10], *p, **q, (*pp)[5]=NULL; p=nArray[0]; q=nArray; p++; q++; pp++;; printf(“q-p=%d\\npp=%d”,q-p,pp); } 2.上机实验以下程序的输出结果: #include { int *p,**q; int x=8,y=5; p=&x; q=&p; printf(“q=%d”,**q); p=&y; printf(“q=%d”,**q); } 3.上机实验以下程序的输出结果: #include { int Array[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*p)[4],*q; p=&(Array+2); q=&p[0][2]; printf(“p=%d,q=%d\\n”,**--p,--*q); } 4. 考虑以下程序的输出结果 #include { static int a[]={1,3,5,7}; int *p[3]={a+2,a+1,a}; int **q=p; printf(“%d\\n”,*(p[0]+1)+**(q+2)); } 5.指向指针的指针 #include { char *s[]={\ char **q; int k; q=s; for(k=0;k<5;k++) { printf(\ } } 6.观察如下程序的输出结果 #include void main(int argc,char *argv[]) { while(argc>1) { ++argv; 38 printf(“%s \\n”,*argv); --argc;} } 如果从键盘输入的命令行为: 程序文件名 computer C_Language 7 编写一个书名查询函数 void search(int *bk_list[],char *bk_name,int n) #include int string_in(char *str1,char *str2) { int m=0; char *p,*q; for (;*str1!='\\0';str1++) if (*str1==*str2) { for(p=str1,q=str2;*q!='\\0';p++,q++) if (*p!=*q) break; if (*q=='\\0') {m=1;break;} } return m; } void search(char *bk_list[],char *bk_name,int n) { int i; for(i=0;i if (string_in(bk_list[i],bk_name)) printf(\ void main() { char *books[6]={\边用边学C语言\计算机文化基础\高等数学\程序设计\基础教程\精讲多练C语言\ char name[30]; gets(name); search(books,name,6); } 六、上机作业: 1.请写出指针数组与数组指针的关系。 2.列出指针与二维数组之间的等价关系。 3.使用指针数组存放三个字符串,要求按字母顺序输出。 (使用指向指针的指针) 4. 编写程序,实现对一个二维数组的奇数列和偶数列互换。 5. 编写程序,实现将一个具有N行N列的二维数组Array进行转换。转换的方式是Array[i][j]和Array[N-j][N-i]互换。 6. 使用指针,实现对二维数组排序,排序的结果是二维数组的每一行都降序排序,而且任意一行的所有元素都不比它前一行元素大。 实验十四:结构体、共用体和枚举类型 一、内容及目标: ? ? ? ? ? ? 掌握结构体类型变量的定义、初始化及对其成员的引用 掌握结构体数组的定义、初始化及对结构体数组元素的成员进行引用 掌握共用体类型和共用体变量的定义及共用体变量成员的引用 掌握共用体变量与结构体变量存储时的区别 了解枚举类型和枚举变量的定义,并掌握枚举元素的处理 掌握类型定义typedef 39 二、实验重点: ? 结构体类型变量的定义、初始化及对其成员的引用 ? 共用体类型和共用体变量的定义及共用体变量成员的引用 三、实验难点: 1.共用体变量与结构体变量存储时的区别 四、上机操作 : 1.对结构体变量成员进行操作 #include printf(\ gets(per.name); per.sex='M'; per.birthday.year=1982; per.birthday.year++; per.birthday.month=12; per.birthday.day=15; per.height=(175+176)/2.0; printf(\; } 2输出结构体数组各元素的成员值 #include struct person { char name[20]; char sex; int age; float height; } per[3]={{ \ int i; for(i=0;i<3;i++) printf(\} 3引用共用体变量的成员 void main() { union temp { char a; int b; }t; t.a=66; t.b=266; /*266=256+10即266的二进制为1 00001010,所以高字节放1、低字节放10*/ printf(\} 40
共分享92篇相关文档