《C语言程序设计》(江宝钏著)实验三答案
- 格式:doc
- 大小:50.00 KB
- 文档页数:6
综合实验三一、实验目的1.综合运用C语言的语法知识。
2.学会指针、结构体和文件的使用方法3.掌握结构化、模块化程序设计方法。
二、实验内容1.学生成绩管理。
具体功能模块包括:(1) 增加学生数据(2) 删除学生数据(3) 查找学生成绩(4) 显示学生名次(5) 显示不及格人员(6) 退出要求:(1)学生数据包括:学生的学号、姓名、成绩,其中学生成绩包括:英语、高数、计算机三门课。
学生数据文件名建议为:student.dat。
(2)按学号删除或查找学生的成绩。
(3)根据学生的平均分排名次。
(4)采用模块化程序程序设计方法,程序可读性强,界面友好。
提示:(1)可定义下面的结构体来表示学生的数据:struct student{ char name[9];int num;int english;int mathmatic;int computer;int average; };(2)建议五个功能模块各是一个独立的文件,文件名分别为:adddata.c 、deldata.c 、dispdata.c 、sortdata.c 、nopass.c,主函数所在文件的文件名为student.c ,最后可通过#include命令或建立工程文件的方式来组合各个文件。
*2.模拟第1题编写一个图书管理程序,功能自定,但自少要有三个功能(例如:图书数据录入、借书、还书等)。
*3.抽签分组:偶数签分到A组,奇数签分到B组,结果各存入相应的数据文件中。
请继续扩充本程序的功能,例如:各种查询等。
二、自测题1.程序改错下面程序中fun函数的功能是:判断两个指针所指存储单元中的值的符号是否相同,若相同函数返回1,否则返回0。
设这两个存储单元中的值都不为0。
请改正函数 fun 中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!#include <stdio.h>fun ( double a, b ) /*改为: fun (double *a, double *b)*/{ if ( a * b > 0.0 ) /*改为:if( (*a)*(*b)>0.0)*/return 1;else return 0;}main( ){ double n , m;printf ("Enter n , m : "); scanf ("%lf%lf", &n, &m );printf( "\nThe value is: %d\n", fun ( &n, &m ) );}2.程序填空下面程序把从终端读入的文本(用@作为结束标志)输出到一个名为bi.dat中。
C语言程序设计(第3版)-参考答案C语言程序设计(第3版) - 参考答案C语言是一种广泛应用于软件开发领域的编程语言,它具有高效、简洁、灵活等特点。
《C语言程序设计(第3版)》是一本经典的教材,本文将提供一些参考答案,帮助读者更好地理解和掌握C语言程序设计。
一、基础知识1. 什么是C语言?C语言是一种通用的编程语言,由贝尔实验室的Dennis Ritchie开发,在20世纪70年代广泛流行起来。
它被设计为一种低级语言,可以直接操作计算机硬件,并提供了足够的抽象层次来方便高级程序设计。
2. 如何输出“Hello, World!”?在C语言中,使用printf函数可以输出文本信息。
要输出“Hello, World!”,可以使用以下代码:```#include <stdio.h>int main() {printf("Hello, World!\n");return 0;}```3. 如何定义和使用变量?在C语言中,可以使用关键字`int`、`float`、`char`等定义变量。
例如:```int age = 20;float weight = 60.5;char grade = 'A';```定义后的变量可以用于存储不同类型的值,并在程序中进行操作和输出。
二、控制流程1. 什么是条件语句?条件语句允许程序通过判断条件来选择性地执行不同的代码块。
在C语言中,常用的条件语句是`if`语句。
例如:```if (score >= 60) {printf("Pass\n");} else {printf("Fail\n");}```根据变量`score`的值,判断学生是否及格并输出相应结果。
2. 什么是循环语句?循环语句可以重复执行一段代码块,以达到多次执行的目的。
在C 语言中,常用的循环语句有`for`、`while`和`do while`。
C程序设计(第三版)课后习题参考解答第1章C语言概述1.5 参照本章例题,编写一个C程序,输出以下信息:******************************Very Good!******************************解:main ( ){printf(“****************************** \n”);printf(“\n”);printf(“Very Good! \n”);printf(“\n”);printf(“****************************** \n”);}1.6 写一个程序,输入a,b,c三个值,输出其中最大者。
解:main ( ){int a,b,c,max;printf(“请输入三个数a,b,c: \n”);scanf(“%d,%d,%d”,&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf(“最大数为:%d ”,max);}第2章程序的灵魂——算法2.1 什么叫结构化的算法?为什么要提倡结构化的算法?解:由一些基本结构顺序组成的算法称为结构化的算法。
由于在基本结构之间不存在非顺序的跳转,流程的转移只存在于一个基本结构范围之内,因而提高了算法的质量。
2.7 什么叫结构化程序设计?它的主要内容是什么?解:结构化程序就是用高级语言表示的结构化算法。
它的主要内容包括“自顶向下,逐步细化”的分析方法和“模块化设计”的解决方法,以及“结构化编码”的实现方法。
第3章数据类型、运算符与表达式3.4将以下三各整数分别赋给不同类型的变量,请画出赋值后数据在内存中的存储形式。
注:如果没有学过二进制和补码,此题可以不做。
解:各数据在内存中的存储形式如下表所示:它是一个负数的补码,对其再求一次补码可得其真值,即-(65536-32769)=-32767。
第一篇:《C语言程序设计教程》(第三版)课后习题参考答案C语言程序设计课后习题参考答案习题一一、单项选择题1、C2、B3、B4、C5、D6、A7、C8、A二、填空题1、判断条件2、面向过程编程3、结构化4、程序5、面向对象方法6、基本功能操作、控制结构7、有穷性8、直到型循环结构9、算法10、可读性11、模块化12、对问题的分解和模块的划分习题二一、单项选择题1、B2、D3、C4、B5、A二、填空题1、主2、C编译系统3、结构化4、程序5、面向对象方法6、.OBJ7、库函数8、直到型循环结构习题三一、单项选择题1、D2、B3、A4、C9、B10、C11、A12、D13、C17、B18、C19、C20、D21、A25、D26、A二、填空题1、补码2、10^-138~10^1 38、15~166、A7、B6、D7、B14、B15、C22、D8、C8、D16、A24、D、A3、实4、单目运算符、自右向左5、函数调用6、65,89习题四一、单项选择题1、D2、C3、D4、A5、D6、B7、A8、C9、B10、B二、填空题1、两, ;2、5.1690003、-200 2500、i=-200,j=2500回车、i=-200回车j=2500回车4、a=98,b=765.000000,c=4321.0000005、100 25.81 1.89234、100,25.81,1.89234、100回车25.81回车1.89234回车6、0,0,37、38、scanf(“%lf %lf %lf”,&a,&b,&c);9、13 13.000000 13.00000010、c=b-a;a=b+c;习题五一、单项选择题1、B2、D3、C4、B5、B6、D7、A8、B二、填空题1、1 、02、k!=03、if(x>4||xelse printf(“error!”); 4、if(((x>=1&&x=200&&x Printf(“%d”,x);5、16、17、10! Right!8、a=09、2,110、0习题六一、单项选择题9、D1、B2、C3、C4、B5、C6、B7、C8、A二、填空题1、无穷次2、83、205、3.66、*#*#*#$7、828、d=1.0 、k++、k9、!(x习题七一、单项选择题1、B2、D3、C4、C5、A二、填空题1、1 2 4 8 16 32 64 128 256 5122、a[age]++、i=18;i3、break、i==84、a[i]>b[i]、i3、j5、b[j]=0、b[j]=a[j][k]习题八一、单项选择题1、B3、C4、A5、A9、D10、B11、A12、C13、A二、填空题1、return1、return n+sum(n-1)2、return1、n*facto(n-1)习题九一、单项选择题1、D2、C3、D4、A5、C9、B10、C11、A13、B17、C18、A19、B20、C二、填空题1、int 、return z2、*p++3、’\0’、++4、p、max*q6、A7、D6、A7、C14、C15、B6、C7、C14、A15、D8、A8、D8、C习题十一、单项选择题1、D2、D3、A4、5、B6、A7、C8、B9、D10、11、C12、D13、D14、C二、填空题1、34 122、ARRAY a[10],b[10],c[10];3、2 34、ab、cd5、(*b).day、b->day6、adghi mnohi no7、(struct node *)、!=’\n’、p=top;8、p1=p1->next9、(struct list *)、(struct list *)、return (n)习题十一一、单项选择题1、A2、A3、B4、A5、B9、A10、B11、B12、B13、C17、D二、填空题1、ASCII(文本)、二进制2、pf=fopen(“A:\zk04\data xfile.dat”,”w”);3、fputc()、fputs()、fscanf()、fread()4、(后两个空)文件结束符、非0值7、B14、C15、D8、A16、A第二篇:C语言程序设计教程课后习题参考答案《C语言程序设计教程》课后习题参考答案习题1 1. (1)编译、链接.exe (2)函数主函数(或main函数)(3)编辑编译链接2.(1)-(5):DDBBC (6)-(10):ABBBC 3.(1)答:C语言简洁、紧凑,使用方便、灵活;C语言是高级语言,同时具备了低级语言的特征;C 语言是结构化程序设计语言,具有结构化的程序控制语句;C语言有各种各样的数据类型;C语言可移植性好;生成目标代码质量高,程序执行效率高。
c语⾔第四版答案第三章,《C语⾔程序设计》课后习题答案(第三章)3.3 请写出下⾯程序的输出结果.结果:575 767.856400,-789.12396267.856400,-789.12396267.86,-789.12,67.856400,-789.123962,67.856400,-789.1239626.785640e+001,-7.89e+002A,65,101,411234567,4553207,d68765535,17777,ffff,-1COMPUTER, COM3.4 ⽤下⾯的scanf函数输⼊数据,使a=3,b=7,x=8.5,y=71.82,c1='A',c2='a',问在键盘上如何输⼊?main(){inta,b;floatx,y;charc1,c2;scanf("a=%d b=%d,&a,&b);scanf("x=%f y=%e",&x,&y);scanf("c1=%c c2=%c",&c1,&c2);}解:可按如下⽅式在键盘上输⼊:a=3 b=7x=8.5 y=71.82c1=A c2=a(说明:在边疆使⽤⼀个或多个scnaf函数时,第⼀个输⼊⾏末尾输⼊的"回车"被第⼆个scanf函数吸收,因此在第⼆\三个scanf函数的双引号后设⼀个空格以抵消上⾏⼊的"回车".如果没有这个空格,按上⾯输⼊数据会出错,读者⽬前对此只留有⼀初步概念即可,以后再进⼀步深⼊理解.)3.5 ⽤下⾯的scanf函数输⼊数据使a=10,b=20,c1='A',c2='a',x=1.5,y=-3.75,z=57.8,请问在键盘上如何输⼊数据?scanf("%5d%5d%c%c%f%f%*f%f",&a,&b,&c1,&c2,&y,&z);解:main(){inta,b;floatx,y,z;charc1,c2;scanf("%5d%5d%c%c%f%f",&a,&b,&c1,&c2,&x,&y,&z);}运⾏时输⼊:10 20Aa1.5 -3.75+1.5,67.8(注解:按%5d格式的要求输⼊a与b时,要先键⼊三个空格,⽽后再打⼊10与20。
《C语言程序设计》实验设计习题答案实验三3.4编写程序,用getchar函数读入两个字符c1,c2,然后分别用putchar函数输出void main(){char c1,c2;c1=getchar();c2=getchar();putchar(c1);putchar(c2);putchar('\n');printf("%c %c\n",c1,c2);}3.5把790分钟换成用小时和分钟表示,然后输出。
void main(){int s=790;printf("%d小时",s/60);printf("%d分钟",s%60);}3.6将读入三个数a,b,c,然后交换它们的值,把a的值给b,把b 的值给c,把c的值给a.main(){int a,b,c,t;scanf("%d,%d,%d",&a,&b,&c);t=a;a=b;b=c;c=t;printf("%d,%d,%d",a,b,c);3.7输入一个double类型的数,使该数保留小数点后两位,对第三位小数进行四舍五入处理,然后输出此数,验证处理是否真确。
#includevoid main(){float x,s,a;int z;scanf("%f",&x);a=100*x+0.5;z=(int)(a);s=z/100.0;printf("%.2f\n",s); }main(){int a,b,t;double c;scanf("%lf",&c);b=100*c;t=1000*c;a=t%10;if (a>=5) b=b+1;else b=b+0;c=1.0*b/100;printf("%7.2lf/n",c); return 0;}void main(){int x,y;scanf("%d",&x);if(x<0&&x>-5) y = x ; if(x==0) y = x-1;if(x<10&&x>0) y = x+1; printf("%d",y);}实验四4.2不嵌套if语句void main(){int x,y;scanf("%d",&x);if(x<0&&x>-5) y = x ;if(x==0) y = x-1;if(x<10&&x>0) y = x+1;printf("%d",y);}法二:嵌套if语句void main(){int x,y;scanf("%d",&x);if((x>-5)&&(x<0)) y=x;else if(x==0) y=x-1;else if(x<10&&x>0) y=x+1;printf("%d",y);}4.3如下程序运用条件运算符求变量的绝对值?void main(){int a,M;scanf("%d",&a);M=a>0?a:-a;printf("abs(a)=%d",M);4.4某服装店经营套服,也可单件出售,若买的不少于50套,每套80元,不足50套的每套90元,只买上衣每件60元,只买裤子每条45元,(读入所买上衣C和裤子t的件数,计算应付款m。
答案基本订正过错处,程序设计题部分附上源代码,基本无误,但由于时间紧迫,可能也会有小问题,仅供参考。
以/* */表示程序注释。
第一章C语言概述参考答案一、选择题:1-7 ADCBBDD一、选择题:1-5 DBCBD二、算法设计(略)第三章一、选择题1-5 DCCDB 6-10 BACAA21-25 ADABA选择题24题题目应为:(a==b++二、填空题C程序设计-顺序程序设计参考答案D答案改为65534第五章选择结构程序设计参考答案一、选择题1-5 BCDCA 6-10 BCDCB 11-15 DABDD二、填空题1. switch或多分支开关控制2.fabs(x-2)<1e-63. 14. 45995. 10 20 0三、写出程序运行的结果Array 1.97,b2.a=1,b=33.该程序书上有误,正确的是:main(){ char c;while((c=getchar())!=‟\n‟){ switch(c-…1‟){case 0:case 1:putchar(c+2);case 3:putchar(c+4);default}}printf(“\n”);}结果:645341由于程序不同,该题可以有两个答案四、程序设计1、下列程序实现从键盘接收3个数,输出最大数和最小数#include <stdio.h>main(){ int a,b,c,max,min;scanf(“%d,%d,%d”,&a,&b,&c); /*键盘输入3个数a,b,c*/max=min=a; /*假设第一个数a是最大数,也是最小数/if(b>a) max=b; /*分别用a和b,c进行两次比较*/else min=b;if(c>max) max=c;if(c<min) min=c;printf(“\nmax=%d,min=%d”,max, min);}1.输入一百分制的成绩,输出他的等级,90以上“A”等,80-89为“B”等,70-79为“C”等,60-69为“D”等,60以下为“E”等。
常熟理工学院电气与自动化工程学院《C语言程序设计》实验指导书实验一熟悉C程序运行环境班级学号姓名成绩一、实验目的1. 熟悉C语言Visual C++6.0调试环境。
2. 掌握C程序的编辑、调试及运行。
二、实验内容项目1. 调试并运行下面程序,并写出运行结果:#include <stdio.h>int main(){printf(“Good morning!\n”);printf(“Hello,world!\n”);return 0;}运行结果(注意,按照屏幕输出格式写):项目2. 调试并运行下面程序,并写出运行结果:#include <stdio.h>int main(){int a , b , sum; /*定义变量*/a=23; b=56; /*为变量赋值*/sum=a+b; /*计算两个变量的和*/printf(“sum is %d\n”,sum); /*输出计算结果*/return 0;}运行结果:2项目3. 调试并运行下面程序,并写出运行结果:#include <stdio.h>int max(int,int);int main(){int a , b , c; /*定义变量*/a=23; b=56; /*为变量赋值*/c=max(a,b); /*调用max函数,将得到的值赋给c*/ printf(“max is %d\n”,c); /*输出c的值*/return 0;}int max(int x,int y) /*定义max函数,函数值为整型*/ {int z; /*定义变量*/if(x>y)z=x;elsez=y;return(z); /*将z的值返回*/}运行结果:三、提高部分1.试想,如果求10个数中的最大者,则程序该如何编写。
程序代码运行结果:实验二数据及其运算班级学号姓名成绩一、实验目的1. 掌握C数据类型的概念、熟悉整型、字符型和实型基本类型的常量的用法;学会三种基本类型变量的定义、赋值和使用方法。
3.5 实验三 选择结构程序设计一、实验目的与要求1. 理解C 语言表示逻辑量的方法,学会正确使用逻辑运算符和逻辑表达式。
2. 掌握利用if 结构实现选择结构的方法。
3. 掌握利用switch 结构实现多分支选择结构。
4. 结合程序掌握一些简单的算法,学习调试程序5. 实验4学时二、实验内容1.程序改错题改正下面程序中的错误。
输入实数x ,计算并输出下列分段函数f(x)的值(保留1位小数)。
)100(1=x x==)(x f y)100(≠x x输入输出示例1(改正后程序的运行结果)Enter x :100f(100.00)= 0.1输入输出示例2(改正后程序的运行结果)Enter x :23f(23.00)= 23.0源程序(有错误的程序)#include<stdio.h>#include<math.h>void main(void){double x;printf("Enter x: \n");scanf("=%f", x);if (x = 100) {y = 1/sqrt(x)}else (x != 100) {y = x;}printf("f(%.2f) = %.1f\n",x,y);}答:#include<stdio.h>#include<math.h>void main(void){double x,y;printf("Enter x:\n");scanf("%lf",&x);if (x=100)y = 1/sqrt(x);elsey= x;printf("f(%.2lf)=%.1lf\n",x,y);}2.一般编程题编程题1输入任意三个整数a,b,c ,求3个数中的最大值和最小值。
答:#include <stdio.h>void main(){int a,b,c;printf("请输入三个整数:");scanf("%d %d %d",&a,&b,&c);if (a>=b)t=a,a=b,b=t;if (a>=c)t=a,a=c,c=t;if (b>=c)t=b,b=c,c=t;printf("最小值为:%d\n",a);printf("最大值为:%d\n",c);}编程题2输入x ,计算并输出下面分段函数f(x)的值(保留2位小数)。
请调用sqrt 函数求平方根,调用pow 函数求幂。
)0(12)1(2<+++x x x x=)(x fx( x)0输入输出示例(共运行3次)Enter x:10f(10.00) = 3.16Enter x:-0.5f(-0.50) = -2.75Enter x:0f(0.00) = 0.00成本答:#include<stdio.h>#include<math.h>void main(){double x,y;printf("Enter x:\n");scanf("%lf",&x);if (x<0)y=pow(1+x,2)+2*x+1/x;elsey=sqrt(x);printf("f(%.2f)=%.2f\n",x,y);}编程题3有一函数:x (-5<x<0)y= x-1 (x=0)x+1 (0<x<10)编写程序,要求用scanf函数输入x的值,输出y的值。
具体要求如下:(1)用if语句实现分支,自变量和函数值均用实数类型。
(2)自变量用scanf函数输入,给一些输入提示。
(3)运行程序,输入x的值(分别为-5<x<0,x=0,0<x<10)三种情况,检查输出的y值是否正确。
答:#include<stdio.h>#include<math.h>void main(){double x,y;printf("Enter x:\n");scanf("%lf",&x);if (x>0&&x<10)y=x+1;else if (x==0)y=x-1;else if (x>-5&&x<0)y=x;printf("f(%.2f)=%.2f\n",x,y);}编程题4某服装店经营成套服装的买卖,同时也允许单件销售。
若一次购买不少于70套,则每套90元;若不足70套,则每套110元;只买上衣每件70元;只买裤子每条60元。
请编写程序假设用户买入x件上衣和y条裤子,请编写程序计算相应的应付款是多少?答:#include<stdio.h>#include<math.h>void main(){double x,y,z;printf("输入上衣x件,裤子y件:\n");scanf("%lf%lf",&x,&y);if (x>=y&&y>=70)z=90*y+70*(x-y);else if (y>=x&&x>=70)z=90*x+60*(y-x);else if (x>y&&y<70)z=110*y+70*(x-y);else if (y>x&&x<70)z=110*x+60*y-x;printf("应付:%.3f(元)\n",z);}编程题5编写程序实现:输入一个整数,判断它能否被3 、5 、7整除,同时输出如下信息。
(1)能同时被3 、5 、7整除;(2)能同时被其中的哪二个数整除;(3)能被其中的哪一个数整除;(4)不能被3 、5 、7任一个数整除。
答:#include<stdio.h>void main(){int x,a,b,c,d;scanf("%d",&x);a=x%3;a=a/a*100;b=x%5;b=b/b*10;c=x%7;d=a+b+c;switch(d){case 100:printf("能被5,7整除\n");case 10 :printf("能被3,7整除\n");case 1 :printf("能被3,5整除\n");case 110:printf("能被7整除\n");case 101:printf("能被5整除\n");case 11 :printf("能被3整除\n");case 111:printf("不能被3,5,7整除\n");case 0 :printf("能被3,5,7整除\n");}}3.较难编程题编程题1请用switch语句编程计算员工每月的薪水。
(exph3_1.cpp)已知某公司员工的保底薪水为500,某月所接工程的利润profit(整数)与提成的关系如下(计量单位:元):profit≤1000 没有提成;1000<profit≤2000 提成10%;2000<profit≤5000 提成15%;5000<profit≤10000 提成20%;10000<profit 提成25%。
分析:为使用switch语句,必须将利润profit与提成的关系,转换成某些整数与提成的关系。
分析本题可知,提成的变化点都是1000的整数倍(1000、2000、5000、……),如果将利润profit整除1000,则相邻两个区间的重叠。
为解决相邻两个区间的重叠问题,最简单的方法就是:利润profit先减1(最小增量),然后再整除1000即可:profit≤1000 对应01000<profit≤2000 对应12000<profit≤5000 对应2、3、45000<profit≤10000 对应5、6、7、8、910000<profit 对应10、11、12、……答:#include <stdio.h>void main(){double p,m,t,q;int n;printf("某月所接工程利润为:");printf("\n\n");scanf("%lf",&p);m=p-1;n=(int)m/1000;switch (n){case 0 : printf("\n薪水为:500\n"); break;case 1 :q=500+p*0.1 ;printf("\n薪水为:%.2lf\n",q);break;case 2 :case 3 :case 4 :q=500+p*0.15;printf("\n薪水为:%.2lf\n",q);break;case 5 :case 6 :case 7 :case 8 :case 9 :q=500+p*0.2 ;printf("\n薪水为:%.2lf\n",q);break;default:q=500+p*0.25;printf("\n薪水为:%.2lf\n",q);}}编程题2编写程序实现如下功能:输入二个运算数(exp1,exp2)和一个运算符(op),计算表达式exp1 op exp2的值,其中OP可以为+、-、*、/、%五个符号中的任一种(提示:用switch 语句实现)。
答:#include <stdio.h>void main(){float exp1,exp2,x;char op;printf("输入:");scanf("%f%c%f",&exp1,&op,&exp2);switch (op){case '+':x=exp1+exp2;break;case '-':x=exp1-exp2;break;case '*':x=exp1*exp2;break;case '/':x=exp1/exp2;break;}printf("\n\n\n%5.2f%c%5.2f=%5.2f\n\n\n",exp1,op,exp2,x);}+。