华中科技大学 C语言实验与课程设计实验报告 CS1408赵晓雁
char a[50]=\
\
strncat(a,b,4); printf(\ return 0; }
void strncat(char s[],char t[],int n) {
int i=0,j;
while(s[i])i++; for(j=0;j 5.2.4 程序设计 编写并上机调试运行能实现以下功能的程序: (1)编写一个程序,从键盘读取数据,对一个3 * 4矩阵进行赋值,求其转置矩阵,然后 输出原矩阵和转置矩阵。 (2)编写一个程序,其功能要求是:输入一个整数,将它在内存中二进制表示的每一位转换成对应的数字字符,存放到一个字符数组中,然后输出该整数的二进制表示。 (3)编写一个程序,其功能要求是:输入n个学生的姓名和C语言课程的成绩,将成绩 按从高到低的次序排序,姓名同时作相应的调整,输出排序后学生的姓名和C语言课程的成绩。然后,输入一个C语言课程成绩值,用二分查找进行搜索。如果查找到有该成绩,输出该成绩同学的姓名和C语言课程的成绩;否则输出提示“not found”。 { 【分析】 (1)利用二位数组下标值的不同交换行列数组元素,实现转置数组的目的。 (2)由于十进制数在电脑中自动储存时也为二进制储存,所以不需要考虑转换的问题,只需要按照二进制由低位到高位输出,利用位运算就可以实现。 (3)二分法查找搜索,依次使用每一轮的最高位和最低位求出中间值并进行比较。 【程序】 (1) #include void output(int m,int n,float a[][n]) { int i,j; for(i=0;i printf(\ printf(\} int main() 41 华中科技大学 C语言实验与课程设计实验报告 CS1408赵晓雁 { int i,j; float a[M][N],b[N][M]; printf(\ for(i=0;i scanf(\ for(i=0;i printf(\ output(N,M,b); return 0; } (2) #include int i,a[M]; unsigned n; printf(\ scanf(\ for(i=0;i for(i=M-1;i>=0;i--)printf(\ return 0; } (3) #include int i,j,temp; char name[N][20],a[20]={'\\0'},b; int score[N]; for(i=0;i scanf(\ } 42 华中科技大学 C语言实验与课程设计实验报告 CS1408赵晓雁 for(i=0;i if(score[j] score[j]=score[j+1]; score[j+1]=temp; strcpy(a,name[j]); strcpy(name[j],name[j+1]); strcpy(name[j+1],a); } } } printf(\ for(i=0;i printf(\ return 0; } 【测试】 (1)结果正确: (2)结果正确: (3)结果正确: 43 华中科技大学 C语言实验与课程设计实验报告 CS1408赵晓雁 5.3 实验体会 源程序改错中,依赖于平时良好的输入习惯,在输入过程中已经可以检查出大多数语法错误,或者拼写错误。接下来再检查一下逻辑是否有误,无误则进行多组数据的编译检验,确认最终无误。 源程序修改与替换题锻炼我们将充分利用数组的能力,同时要注意数组下标值是从0开始的,时刻注意它和现实中的计数的不同,防止在引用过程中由于对应不同导致产生逻辑错误,严谨杜绝副作用。 程序设计题则是自主的设计实践,根据题目要求自主设计数组,增强对于所学知识的熟练度和理解程度,锻炼编写代码的能力以及并通过问题的进一步引申锻炼思维的灵活性。 6指针实验 6.1实验目的 (1)熟练掌握指针的说明、赋值、使用。 (2)掌握用指针引用数组的元素,熟悉指向数组的指针的使用。 (3)熟练掌握字符数组与字符串的使用,掌握指针数组及字符指针数组的用法。 (4)掌握指针函数与函数指针的用法。 (5)掌握带有参数的main函数的用法。 6.2实验内容及要求 6.2.1. 源程序改错 下面的源程序中是否存在错误?如果存在,原因是什么?如果存在错误,要求在计算机上对这个源程序进行调试修改,使之能够正确执行。 程序代码: #include float *p; scanf(\ 44 华中科技大学 C语言实验与课程设计实验报告 CS1408赵晓雁 printf(\return 0; } 【分析及改正】本程序错误为:指针在声明时未曾初始化就进行赋值操作,导致悬挂指针的存在,输入地址混乱,会使程序崩溃。 改正为: #include float x,*p=&x; scanf(\ printf(\ return 0; } 6.2.2 源程序修改替换 (1)下面的源程序的功能是:通过函数指针和菜单选择来调用字符串拷贝函数或字符串 连接函数。请在程序中的下划线处填写合适的表达式、语句或代码片段来完善该程序。 (2)请上机运行第(1)题程序,使之能按下面要求输出结果: 1 copy string. 2 connet string. 3 exit input a number(1-2) please! 2(输入) Input the first string please! the more you learn,(输入) input the second string please! the more you get.(输入) the result is the more you learn, the more you get. 程序代码: #include char a[80], b[80], c[160], *result = c; int choice, i; do { printf(\ printf(\ printf(\ printf(\ scanf (\ }while(choice < 1|| choice > 5); switch(choice){ case 1: p = strcpy; 45