程序设计基础 ——C语言 上机指导参考答案_第1页
程序设计基础 ——C语言 上机指导参考答案_第2页
程序设计基础 ——C语言 上机指导参考答案_第3页
程序设计基础 ——C语言 上机指导参考答案_第4页
程序设计基础 ——C语言 上机指导参考答案_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 上机 1 参考答案 三、 2. 程序输出结果是: C! 0 4. 程序输出结果是: to 5. #) *n); n); *n); ; 6. ( 1) 2065: a : 2065: b : 2065: c : 2)没有错误。 刚才的错误是: a,b,c 没有定义 ( 3)没有显示结果 。 缺少输出语句。 修改程序, 数的最后 一行增加一条语句: %dn”,c); 2 ( 4)有显示结果。 输出: 7 上机 2 参考答案 三、 1.( 1)平均值为: 因是: x, y 和 z 都是整数,则( x+y+z) /3 时,即整数与整数除法得到的结果是取整。 ( 2)平均值为: 3)平均值为: . 程序输出的结果是: 解释: 型的有效位数是 7 位, 型的有效位数是 16 位 。 3. 程序输出的结果是: 97,61,141,d 第一个 格式控制个数与变量列表中的变量个数不一致。 k 的值没有输出。 第二个 两个连续的 %字符会输出一个 %。 k 的值没有输出。 4. 程序输出的结果是: %示小数点保留 2 位有效数字,宽度为 7。 %数点保留 2 位有效数字,宽度为 4,左对齐。 若设定的宽度比实际输出的宽度要小,将按原长输出。 5. 第 7 行错,错误原因: 掉了 &。修改后的语句如下: x=%d,y=%f,c=%c,&x,&y,&c); 第 8 行错,错误原因:格式控制符错误。修改后的语句如下: x=%d,y=%f,c=%c,x,y,c); 程序修改正确后,输出正确的结果是: 3 x=25, y=c=C 6. ( 1)程序输出的结果为: x,y ( 2)将第 4 行改为 “c1,,输出结果为: x,y ( 3)将第 5 行改为 “c1=x;”,编译结果如何?原因是什么? 出错,赋值格式不对。右边不能是变量。 ( 4)将第 5 行改为 “00”,输出结果为: ,y 结合输出结果分析原因: 00,当以 %c 的格式输出 ,进行如下计算: 3004,即输出 4 对应的字符,即 “ ,” 。 ( 5)将第 7 行改为 “%d,%d”,c1,”,输出结果为: 120,121 ( 6)将第 7 行改为 “%d,%d”,55,56);”,输出结果为: 375,377 ( 7)将第 7 行改为 “%c,%c”,55,56);”,输出结果为: w,y 7. 程序输出的结果是: a=2,b=1,c=1,d=0,e=6 观察结果,并对结果做出合理的解释: 对于表达式: +a|+b&+c;当 +a 为真时,由于是做 “或操作 ”,所以 +b 不执行。 对于表达式: (d=wx)&(e=yz);当 (d=wx)为假时,由 于是做 “与操作 ”,所以(e=yz)不执行。 四、 1. #4 a; a=5; %d,%o,%xn,a,a,a); ; 2. # a; %f”,&a); %,a,a); 3. # a; %c,%d,%o,%xn, %c,%d,%o,%xn, ; 5 上机 3 参考答案 三、 1.( 1) 程序描述的分段函数是: ( x=0) ( x0) 1 ( x 请输入要查询的星期: n); %d,& : 上午:英语,数学;下午:法律 n); : 上午:物理,计算机;下午:音乐 n); 6 : 上午:英语,数学;下午:体育 n); : 上午:计算机,物理; 下午:班会 n); : 上午:写作,实习;下午:听力 n); : : 休息 n); 非法输入 n); ; 3. i= n/100; /*n 的百位 */ j= n%100/10; /*n 的十位 */ k= n%10; /*n 的个位 */ if(i*i*i+j*j*j+k*k*k=n) ( 2) 程序 输出的结果是 : 153=13+53+33 370=33+73+03 371=33+73+13 407=43+03+73 7 4. /*用 现 */ # ,n; n=0; n ,n; n=0; n; n+; n ,n; n=0;n i,j; /*打印输出第一行(包括 *和 19 这 9 个数字) */ * 1 2 3 4 5 6 7 8 9n”); /*打印输出从第二行开始的所有内容 */ i=1;i x,y,z; /*第 4 行 */ x=0;x # x,y; %&x); 10 if(x0 & x=3 & x x,y; x=0;x i,j; i=1;i %c,%c,%c,%f,%f,& if(M) if(F) if(Y) if(Y) 身高为: %fn, ; 12 2. 简单的计算器 # 请输入要计算的表达式(例如: ); %f%c%f,& +: -: *: : %f%c%f=%fn,op, ; 13 ( 1)比较实型变量 常量 0 是否相等。 #1if( op,Y; Y|y) 请输入要计算的表达式(例如: ); %f%c%f,& +: -: *: 14 : %f%c%f=%fn,op, ; Do to )?n); %c,& ; 3. 猜数游戏 #00 ; is a nn); ; /* 用系统时间初始化随机数生成器 */ A d n, /*调用 生随机数供猜测 */ 15 % 1; ;) ); %d, & ; /*统计猜的次数 */ = /*猜对 */ d nn, ; i; i=0;i ; ; 5. 18 i=0;i b10; i; ,; i=0; /*正数累加到 */ bi; if(bi # 10 ) ; i,j; ,; i=0;i # 5 # 4 aMN; i,j,请输入 %d*%d 阶矩阵 A: n,M,N ); i=0;iaij) j; ; /*定位第 ,看看 ai否是该列中最大的那个元素 如果是不是,则 0;如果是,则 持为 1*/ j=0;jai ; if(1) ; 第 %d 个鞍点 :a%d%d=%dn,i,ai; 21 if(0) 没有鞍点 ); ; 4. # 80 i=0,j=0; ,; 请输入原文: n); i!=0) /*大写字母时,密文与原文字符的 之和为 155*/ if(i=A & i=a & i # 5 N,i,j,s1,s2, 0; ; /*读入魔方矩阵的数据到二维整型数组 */ i=0;i #0 #1 i,j,0; /*从键盘录入 40 个学生为餐饮服务质量的打分 */ 请输入 %d 个学生的打的分数: n, i=0;i # /*数组 a 存放随机数,数组 b 存放用户所猜的数 */ a4,b4,n,i=0,j,k,x,y; /*计算机随机生成一个各位相异的 4 位数字 */ ; a0 = %10; a1 = %10; a0 = a1); a2 = %10; (a0 = a2) | (a1 = a2); a3 = %10; (a0 = a3) | (a1 = a3) |(a2 = a3); /*最多允许用户猜的次数由用户从键盘输入 */ 想猜数的次数: n); 26 %d,&n); i+; 请输入你猜想的数字: n); %d%d%d%d,&b0,&b1,&b2,&b3); x=0; y=0; /*x 中存放有几个数字数字猜对,位置也猜对 */ j=0;j=v,若 bi; if(bi #I *函数功能:求圆的面积 函数参数: 圆的半径 返回值:实型值圆的面积 */ r) I*r*r); /*函数功能:求圆的周长 函数参数:圆的半径 返回值:实型值圆的周长 */ r) *PI*r); s,l; %c”,& Y | y) 请输入圆的半径 :); 31 %f”,& s= l= 半径为 %f 的圆的面积为: %长为: %s,l); %c”,& ; 2. # 10 # 10 b N,m); b N,m); aMN; i,j; i=0 ; bij; /*函数功能:求二维数组 b 中的最小值函数 函数参数:浮点型二维数组 b,有 N 列;数组的行数 返回值:返回数组 b 中的最小值 */ b N,m) i,j; b00; i=0;i /*函数功能:将字符串 接到字符串 尾部 函数参数:字符数组 符数组 回值:空 */ 0,0) 33 i=0,j=0; i!=0) /找到 的末尾 i+; j!=0) /将 连接到 的尾部 i=j; i+; j+; i=0; /在 的末尾添加一个 0 0,0; 请输入字符串 n); 请输入字符串 n); 连接后的串为: %sn, ; 上机 6 参考答案 三、 *p+0=1 a0=1 *p+1=2 a1=2 34 *p+2=3 a2=3 *p+3=4 a3=4 *p+4=5 a4=5 指针与数组的关系是: *(p+i)和 ai等价( i=04)。 2. /*指针 向第一个字符串 p1= i=0;*(p1+i)!= 0;i+) p2= 0;) /*如果第二个字符串的字符与第一个字符串的字符相同 */ (p1+i)=* s1i,&s1i+1); 3. p1=x,p2=x;p1* ; d,dn,* ); 4. (3)请指出错误的原因并修改错误 。 第 1 处错误: j=x+n; 错误的原因是:数组 x 中的最后一个元素的标号应为 修改为: j=x+ 第 2 处错误: k i,j,n; i=0; j= j=0) *(i)=*(j); i+; *(i)=0; 2. p,n,x) i=0; ; i=0;i # 3 # 4 /*计算并打印每门课程的平均成绩 */ p)N) /*p 为行指针 */ i,j; i=0;i # /*排名 */ *姓名 */ *平均成绩 */ ; =3, 0; i,; /*判断是否找到与姓名相匹配的学生的标志 */ a ); /*输入一个学生姓名 */ i=0;i 0; =李一 ,1,王二 ,2, 赵三 ,3,刘四 ,4,; p; 40 p=p); ; i; i=0;60) /*若总分高于 160*/ 总分高于 160 分 n 姓名: %sn 学号: %dn 成绩 1: %fn 成绩 2: %fn, if( 运行结果: 出的结果为: 3,3 4. 数的功能是: 以升序形式将 入到头指针为 链表的合适位置中。 41 数参数:指向待插入数据 在节点的指针 插入的整型数据 数的功能是: 依次输出链表中所有节点数据域的信息。 四、 1. #*数组 放非闰年和闰年各月份的天数 */ 13=0,31,28,31,30,31,30,31,31,30,31,30,31, 0,31,29,31,30,31,30,31,31,30,31,30,31; /*日期 构体 */ *函数功能:求指定日期是该年的第几天 函数参数:年 数返回值:整数第几天 i,*是闰年 ,非闰年 */ =0&00!=0|00=0); i=1;i # 4 /*学生的编号 */ 10; /*学生的姓名 */ /*学生的语文成绩 */ /*学生的数学成绩 */ *学生的英语成绩 */ /*学生 3 门课的平均成绩 */ ; /*函数功能:求各个学生 3 门课的平均成绩 函数参数:结构体数组 生人数 n 43 函数返回值:无 */ ,n) i; /*求各个学生 3 门课的平均成绩,存放到结构体的 员中 */ i=0;i /*定义时钟结构体 */ *时 */ /*分 */ /*秒 */ ; *函数功能:时、分、秒时间的更新 函数参数:时钟结构体指针 数返回值:无 */ ; /*时钟秒增 1*/ /*若 为 60,表示已过 1 分钟,则 归 0, 加 1*/ = 60) 0; ; /*若 为 60,表示已过 1 小时,则 归 0, 加 1*/ = 60) 0; 45 ; /*若 为 24,则 值从 0 开始计时 */ = 24) 0; /*函数功能:时、分、秒时间的显示 函数参数:时钟结构体指针 数返回值:无 */ /*用回车符 r控制时、分、秒显示的位置 */ %2d:%2d:%2dr, /*函数功能:模拟延迟 1 秒的时间 函数参数:无 函数返回值:无 */ t; t = 0; t # /*数据域 *指针域 ; /*数功能:统计链表中节点的个数。 函数的参数:链表的头指针 47 函数的返回值:无 ;/*存放链 表中节点个数的变量置 0*/ p=p!= /*若不是表尾,则循环遍历每一个节点 */ ; /*计数器加 1*/ p=p- /*让 p 指向下一个节点 */ /*数功能:创建一个链表,当输入的数为 0 时,建立链表结束。 函数的参数:无 函数的返回 值:创建链表的头指针 /*头指针, 尾指针, p 为指向当前节点的指针 */ p; x; 请输入一个整数: ); %d,&x); /*输入节点数据 */ x!=0) /*当输入的数为 0 时,建立链表结束 */ 48 /*为新添加的节点申请内存 */ p=(); if(p= /*若申请内存失败,打印错误信息,退出程序 */ 开辟内存失败 n); ); p-x; /*为新添加节点的数据域赋值 */ p- /*将新添加节点置为表尾 */ /*若原链表为空表,则将新 添加节点设为首节点 */ if(= p; /*若原链表为非空,则将新建节点添加到表尾 */ p; /*将新添加节点置为表尾 */ p; /*尾指针指向新添加节点 */ 请输入一个整数: ); %d,&x); /*返回链表的头指针 */ /*数功能:释放 向的链表中所有节点占用的内存。 函数的参数:链表的头指针 函数的返回值:无 49 p=p!= /*若不是表尾,则释放 节点占用的内存 */ p; /*保存当前节点指针 */ p=p- /*让 p 指向下一个节点 */ /*释放 向的当前节点占用的内存 */ ; /*创建链表 */ /*统计链表中节点个数 */ 链表节点个数为: %dn, /*释放链表节点信息 */ ; 运行结果: 5. /*程序 8 # 50 /*数据域 *指针域 ; /*数功能:将头指针为 函数的参数:第一个链表的头指针 二个链表的头指针 数的返回值:连接后的链表的头指针 pA, p,*q; p=q=*找到头指针为 (p!= q=p; /*将当前 q*/ p=p- /*让 /*将头指针为 *返回连接后的链表的头指针 /*数功能:创建一个链表,当输入的数为 0 时,建立链表结束。 函数的参数:无 函数的返回值:创建链表的头指针 51 /*p; x; 请输入一个整数: ); %d,&x); /*输入节点数据 */ x!=0) /*当输入的数为 0时,建立链表结束 */ /*为新添加的节点申请内存 */ p=(); if(p= /*若申请内存失败,打印错误信息,退出程序 */ 开辟内存失败 n); ); p-x; /*为新添加节点的数据域赋值 */ p- /*将新添加节点置为表尾 */ /*若原链表为空表,则将新添加节点设为首节点 */ if(= p; /*若原链表为非空,则将新建节点添加到表尾 */ p; /*将新添加节点置为表尾 */ p; /*尾指针指向新添加节点 */ 请输入一个整数: ); 52 %d,&x); /*返回链表的头指针 */ /*数功能:显示所有已经建立好的节点中数据项的内容。 函数的参数:链表的头指针 函数的返回值:无 p=链表的所有节点数据为: n); p!= /*若不是表尾,则循环打印 */ %5d,p- /*打印节点的数据 */ p=p- /*让 p 指向下一个节点 */ n); /*数功能:释放 向的链表中所有节点占用的内存。 函数的参数:链表的头指针 函数的返回值:无 p=53 p!= /*若不是表尾,则释放节点占用的内存 */ p; /*保存当前节点指针 */ p=p- /*让 ( /*释放 pA=; /*创建头指针为 链表 */ pB=; /*创建头指针为 链表 */ pA, /*连接两个链表 */ /*显示连接后的链表节点 */ /*释放链表节点信息 */ ; 运行结果: 54 上机 8 参考答案 三、 1. 算法设计: 以只读方式打开文件 从文件 读取 N 个字符存放到数组 。 输出数组 的内容,返回 。 关闭文件 【指导】 数是从文件指针所指向的文件中读入一个长度不超过 字符的字符串,所以如果希望每次从 读取 N 个字符, 数的第二个参数应该为 N+1,同时,存放着 N 个字符的数组的大小应设置为 N+1,以确保空间足够。 程序如下: # 5 +1; *以只读方式打开文件 r) = 文件 开失败! ); ); +1,=*从文件读取 N 个字母到 ,读取 成功或还没读到文件尾部, 55 则继续循环 */ %sn, ; 运行结果: 2. 解题思路: 因为本题读写的都是二进制文件,所以文件以读方式打开采用“ 式,文件以写方式打开采用“ 式。 数分别表示从文件读一个数据块,向文件写一个数据块,并且在读写时是以二进制形式进行的,所以本题可选用这两个函数完成数据的读写操作。 【指导】此题可参看教材中程序 9仿完成。 程序如下: # 3 0; /*姓名 */ /*数学成绩 */ *英语成绩 */ ; 5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论