c语言实验报告 (2)
○4 能正确使用指向函数的指针变量;? ○5 了解指向指针的指针的数,按由小到大的顺序输出,然后将程序改为:输入三个字符串,按由小 到大顺序输出。 (2).???将一个 3X3 的矩阵转置,用一函数实现之。 ?l????3?????5????? 7????9????11???? 13??15????19 将数组名作为函数实参,在执行函数的过程中实现矩阵转置,函数调用结束后在主函数中输 出已转置的矩阵。 (3).有 n 个人围成一圈,顺序排号。从第 1 个人开始报数(从 1 到 3 报数),凡报到 3 的人退 出圈子,问最后留下的是原来第几号的那位。 (4).???用一个函数实现两个字符串的比较,即自己写一个 strcmp 函数,函数原型为: int?strcmp?(char?*?p1,?char?*?p2);? 设 p1 指向字符串 s1,p2 指向字符串 s2,要求当 s1=s2 时,函数返回值为?0,??如果 sl≠ s2,则返回它们二者第一个不相同字符的 ASCII 码差值(如“BOY”与“BAD”的第二个字母 不相同,“O”与“A”之差为 79—65=14);如果 sl>s2,则输出正值;如果 sl<s2 则输出负值。 两个字符串 s1、s2 由 main 函数输入,strcmp 函数的返回值也由 main 函数输出。 (5).用指向指针的指针的方法对 n 个整数排序并输出。要求将排序单独写成一个函数。n 和 各整数在主函数中输入,最后在主函数中输出。
实验 7 函数
一、实验目的:
(1)?掌握定义函数的方法。? (2)?掌握函数实参与形参的对应关系及值传递的方式。? (3)?掌握函数的嵌套调用和递归调用的方法。? (4)?掌握全局变量和局部变量,动态变量和静态变量的概念和使用方法。? (5)?学习对多文件程序的编译和运行。
二、实验内容:
1.写一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息。本程序应当准备 以下测试数据:17、34、2、1、0。分别运行并检查结果是否正确。 2.用一个函数来实现将一行字符串中最长的单词输出。此行字符从主函数传递给该函数。 (1)把两个函数放在同一个程序文件中。? (2)将两个函数分别放在两个程序文件中,作为两个文件进行编译、连接和运行。 3.用递归法将一个整数 n 转换成字符串。例如输入 483.应输出字符串“483”。n 的位 数不确定,可以是任意的整数。 4.求两个整数的最大公约数和最小公倍数。用一个函数求最大公约数用另一个函数根据求
?{? int?i,j,m=0,n=0;? i=8;?j=10;? m+=i++;? n-=--j;? printf("i=%d,j=%d,m=%d,n=%d\n",i,j,m,n);?}
实验 5 循环控制
一、实验目的:?
(1)熟练掌握 for?语句、while?语句、do-while?语句实现循环的方法;? (2)理解循环嵌套及其使用方法;? (3)掌握 break?语句与 continue?语句的使用;? (4)掌握用循环实现一些常用算法(如穷举、迭代、递推等)。
printf("%d?%d\n",c1,c2);? 再运行,并分析结果。 输出结果如图,编译成功,无错误。 ○3 将第 3 行改为 int?c1,c2;? 再运行,并分析结果。 ○4 再将第 4、5 行改为 c1=a;? c2=b;? 再运行,并分析结果。 a,b 没有定义,编译报错。 ○5 再将第 4、5 行改为 c1=‘’a‘’;? c2=‘’b‘’;? 再运行,并分析结果。 ○6 再将第 4、5 行改为 c1=300;? c2=400;? 再运行,并分析结果。 以字符型输出时,输出的将是 300,400 对应的字符。 (2)输人并运行教材第 3 章习题 3.?6 给出的程序 ?#include<stdio.h> ?main?()? {? char?c1='a',c2='b',c3='c',c4='\101',c5='\116';?
三、程序调试与问题解决:
(1).???输入三个整数,按由小到大的顺序输出,然后将程序改为:输入三个字符串,按由小 到大顺序输出。 (2).???将一个 3X3 的矩阵转置,用一函数实现之。 ?l????3?????5????? 7????9????11????
形式。 ③将一个长整数赋给无符号变量,会得到什么结果(分别考虑该长整数的值大于或等于 65535 以及小于 65535 的情况)。画出它们在内存中的表示形式。 ○1 得到的是原来正数取存的数 ○2 将一个大于 32767 的长整数斌给整型变 t,造成溢出,数据丢失。 ○3 可能会溢出,也可能正常。 (4)输人习题 3.?10 ?#include<stdio.h> ?void?main()? {? int?i,j,m,n;? i=8;? j=10;? m=++i;? n=j++;? printf("%d,%d,%d,%d\n",i,j,m,n);?} ①运行程序,注意 i,j,m,n 各变量的值。分别作以下改动并运行:? ②将第 6,7 行改为:? m=i++;?n=++j;? 再运行。 ③将程序改为:? #include<stdio.h>? void?main() ?{? int?i,j;
printf("a%c?b%c\tc%c\tabc\n",c1,c2,c3); ?printf("\t\b%c?%c\n",c4,c5);? } #include<stdio.h> ?void?main() ?{?? int?a,b;?? unsigned?c,d;? long?e,f; a=100;?? b=-100;?? e=50000;?? f=32767;?? c=a;?? d=b;?? printf("%d,%d\n",a,b);?? printf("%u,%u\n",a,b);?? printf("%u,%u\n",c,d);?? c=a=e;??d=b=f;?? printf("%d,%d\n",a,b);?? printf("%u,%u\n",c,d); ?} 请对照程序和运行结果分析:? ①将一个负整数斌给一个无符号的变 t,会得到什么结果。画出它们在内存中的表?示形式。 ②将一个大于 32767 的长整数斌给整型变 t,会得到什么结果。画出它们在内存中?的表示
出的最大公约数求最小公倍数。分别用下面的两种方法编程。? (1)不用全局变量,在主函数中输入两个数和输出结果。? (2)用全部变量的方法,数据的传递通过全部变量的方法。 5.写一个函数,输入一个十六进制数,输出相应的十进制数。
三、程序调试与问题解决:
1.写一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息。本程序应当准备 以下测试数据:17、34、2、1、0。分别运行并检查结果是否正确。 该例编译时出现错误,原因是误将 sushu(a)==1 写为 sushu(a)=1。 改正后编译无误。 2.用一个函数来实现将一行字符串中最长的单词输出。此行字符从主函数传递给该函数。 子函数中第二个 while 考虑到了多种标点符号的情况,但是该程序可能存在的问题是,如 果有两个单词的长度是相同的? 3.用递归法将一个整数 n 转换成字符串。例如输入 483.应输出字符串“483”。n 的位 数不确定,可以是任意的整数。 4.求两个整数的最大公约数和最小公倍数。用一个函数求最大公约数用另一个函数根据求 出的最大公约数求最小公倍数。分别用下面的两种方法编程。?(1)不用全局变量,在主 函数中输入两个数和输出结果。?(2)用全部变量的方法,数据的传递通过全部变量的方 法。
使用了两个子函数,我认为应该还有更简单的算法?!
5.写一个函数,输入一个十六进制数,输出相应的十进制数。 程序运行时出现错误,后检查发现在 scanf 格式字符串的双引号是中文符号,改成英文双引 号后成功。
实验 9 指针
一、实验目的?:
○1 ?通过实验进一步掌握指针的概念,会定义和使用指针变量;?? ○2 能正确使用数组的指针和指向数组的指针变量;?? ○3 能正确使用字符串的指针和指向字符串的指针变量;??
三、程序调试与问题解决:
(1)输人并运行下面的程序 ?#include<stdio.h>? void?main() ?{? char?c1,c2;? c1='a';? c2='b';? printf("%c??%c\n",c1,c2);? } ○1 运行此程序。 ○2 在上面 printf 语句的下面再增加一个 printf 语句。
三、程序调试与问题解决:
1.输入两个正整数,求其中最大公约数和最小公倍数。 编译无错误,运行如上图所示,使用了最简单的算法,清晰易理解,同时注意了编程
的格式,在以往编程序时,往往不注意上下对齐等问题,容易出现缺标点等现象,将大括 号一级一级对齐后,可以有效地避免出错。
发现一个技巧,打括号时一次打出一对括号,可以减少括号不配对的错误。 2. 输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。 编译无误,测试正确,写该程序时特意加了注释,以便阅读。 3.用牛顿迭代法求方程 2X3- 4X2+ 3X- 6=0 在 1.5 附近的根。 该程序缺少#include<stdio.h>;是截图原因,原程序中是存在的。 下若干个桃子,当即吃了一半,还不过痛,又多吃了一 个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一 天剩下的一半零一个。到第 10 天早上想再吃时,见只剩一个桃子了。求第一天共摘了 多少桃子。
C 语言实验报告
说明
1,所有程序均用 VC6.0 编译运行,文件名命名为姓名+日期,因为实验存在补做,所以并不 是按照日期先后排列的。 2,为了使截图清晰,手动将运行窗口由“黑底白字”改为了“白底黑字”。