C语言实验报告参考答案原_第1页
C语言实验报告参考答案原_第2页
C语言实验报告参考答案原_第3页
C语言实验报告参考答案原_第4页
C语言实验报告参考答案原_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

1、C 语言实验报告参考答案实验一熟悉C语言程序开发环境及数据描述四、程序清单1编写程序实现在屏幕上显示以下结果:The dress is longThe shoes are bigThe trousers are black答案:#include<stdio.h>main()printf("The dress is longn");printf("The shoes are bign");printf("The trousers are blackn");2编写程序:(1) a=150,b=20,c=45, 编写求 a/b、

2、a/c(商)和 a%b a%c除数)的程序的程序(2)a=160,b=46,c=18,d=170, 编写求 (a+b)/(b-c)*(c-d)答案:( 1)#include<stdio.h> main()int a,b,c,x,y;a=150;b=20;c=45;x=a/b;y=a/c;printf("a/b的商=%dn",x);printf("a/c的商=%dn",y);x=a%b;y=a%c;printf("a/b 的余数 =%dn",x);printf("a/c 的余数 =%dn",y);( 2)

3、#include<stdio.h>main()int a,b,c,d;float x;a=160;b=46;c=18;d=170;x=(a+b)/(b-c)*(c-d);printf("(a+b)/(b-c)*(c-d)=%fn",x);3.设变量a的值为0, b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将0赋给c。 ( 提示:用条件运算符)答案:#include<stdio.h>main()int a,b,c;a=0;b=-10;c= (a>b) ? b:a;printf("c = %dn"

4、,c);五、调试和测试结果1. 编译、连接无错,运行后屏幕上显示以下结果:The dress is longThe shoes are bigThe trousers are black2、(1)编译、连接无错,运行后屏幕上显示以下结果:a/b的商=7a/c的商=3a/b的余数=10a/c的余数=15(2)编译、连接无错,运行后屏幕上显示以下结果:(a+b)/(b-c)*(c-d)=-1064.00003.编译、连接无错,运行后屏幕上显示以下结果:c =-10实验二顺序结构程序设计四、程序清单1.键盘输入与屏幕输出练习问题1 D 。问题 2 改 printf("%c,%c,%dn&q

5、uot;,a,b,c); 这条语句改成:printf("%c %c %dn",a,b,c);问题 3 改 scanf("%c%c%d",&a,&b,&c);这条语句改为:scanf("%c , %g %d",&a,&b,&c);这条语句4 改 printf("%c,%c,%dn",a,b,c);改成: %c %dn",a,b,c);5 把 scanf("%c%c%d",&a,&b,&c); 和 printf(&qu

6、ot;%c,%c,%dn",a,b,c);改成 scanf("%c%*c%c%*c%d",&a,&b,&c);printf("'%c','%c',%dn",a,b,c);2(1) 从键盘输入两个八进制数,计算两数之和并分别用十进制和十六进制数形式输出。#include <stdio.h>int main()int a,b,c;scanf("%d%d",&a,&b);c = a + b;printf("%dn",c);pri

7、ntf("%xn",c);return 0;2(2)编写程序:从键盘输入两个实数 a和x,按公式计算并输出y的值:#include<stdio.h>#include<math.h>int main()float a,x,y;scanf("%f%f",&a,&x);y = pow(a,5) + sin(a*x) + exp(a*x) + log(a+x);printf("y=%fn",y);return 0;五、调试和测试结果2(1) 输入: 12 14输出: 261a2(2) 输入: 1 0输出

8、: 2.000000实验三 选择结构程序设计四、设计流程(算法描述)( 请写出上机内容2(3) 题的算法描述)主要是两两比较,然后得出最大的数五、程序清单(1) 输入一个整数,若大于等于0, 输出提示信息“ is positive ”, 否则输出 “ is negative#include<stdio.h>#include<math.h>main()int a;scanf("%d",&a);if(a>=0)printf("the number is positven");elseprintf("the nu

9、mber is negetiven");return 0;(2)输入两个整数a和b,若a>=b时,求其积c并显示;若a<b时,求其商c并显示#include<stdio.h>main()int a,b,c;scanf("%d%d",&a,&b);if(a>=b)printf("c=%dn",a*b);elseprintf("c=%dn",a/b);return 0;(3) 输入a、 b、 c 三个整数,输出最大数。#include<stdio.h>main()int

10、a,b,c,x;scanf("%d%d%d",&a,&b,&c);if(a>=b)x=a;elsex=b;if (x<c)x=c;printf("the max number is:%dn",x);return 0;六、调试和测试结果2(1) 输入: 2输出: the number is positve输入: 0输出:thenumber ispositve输入:-2输出:thenumber isnegetive2(2) 输入: 3 2输入: 2 32(3) 输入: 3 2 1输入:2 3 1输入:1 2 3四、设计流程

11、(算法描述)输出: c=6输出: c=0输出: the max number is:3输出: the max number is:3输出: the max number is:3实验四 循环结构程序设计( 请写出上机内容2 的算法描述)首先求出每一个给定数的所有因子和,然后从 2 到 5000 循环, 那一个数x 与因子之和相等,就是完数。五、程序清单1,编写程序:求 1+2+3+100和12+2?+33+10O2o#include<stdio.h>#include<math.h>int main()int i,j,sum;sum = 0;for (i=1;i<=

12、100;i+)sum += i;printf("the sum is:%dn",sum);sum =0;for(i=1;i<=100;i+)j=pow(i,2);sum +=j;printf("the square sum is:%dn",sum);return 0;2 50002 一个数如果恰好等于它的因子之和,这个数就称为“完数”,编写程序找出中的所有完数。#include<stdio.h>#include<math.h>main()int i,j,sum=0;for(i=2;i<=5000;i+) / 遍历从 2

13、 到 5000的所有数sum = 0;for (j=1;j<=i/2;j+) / 找出给定整数X的所有因子和if(i%j = 0)sum +=j;if(i = sum)/sum为因子和,如果和i 相等,则输出printf("%d ",i);return 0;3.编写程序:计算sinx的近似值,精确到10-6 0(2n 1)(n 1) X一-、其实sin x ( 1)-所以程序n 1(2n1)!#include <stdio.h>#include <math.h>main()float x,sinx,i,t;printf("请输入一个x

14、值(弧度值):");scanf("%f",&x);sinx=0; t=x;i=1;while(fabs(t)>=1e-6) sinx=sinx+t;t=t*(-x*x/(2*i*(2*i+1);i+;printf("sin(%.2f)=%.6fn",x,sinx);六、调试和测试结果1:结果:the sum is : 5050the square sum is : 3383502:结果:6 28 4963、输入0,输出 sin(0.00)=0.000000输入 1.57,输出 sin(1.57)=1.000000输入 0.5,输出

15、 sin(0.50)=0.479426实验五 函数和编译预处理四、设计流程(算法描述)( 请写出上机内容2 的算法描述)求素数的方法就是:给定一个大于3的数x,从2到X的平方根遍历,只要有数可以被x整除,就不是素数五、程序清单1.编写自定义函数long power(int m,int n),计算mn的值。利用此函数编程序实现:从键盘输入两个整数m和n,计算出mn的值。#include<stdio.h>long power(int m,int n)/ 要返回的是long 型int i;long s;/ 因为是要返回的数,所以这里也定义为long 型s=1;for(i=1;i<=

16、n;i+)s *=m;return s;int main(void)int m,n;scanf("%d%d",&m,&n);printf("s=%ldn",power ( m,n);return 0;2 .编写自定义函数prime(int x),判断x是否为素数。利用此函数编写程序找出35000中的所有素数,并输出素数的个数。#include<stdio.h>#include<math.h>int prime(int m)int i,k;k=sqrt(m);for(i=2;i<=k;i+)if(m%i=0)b

17、reak;if(i>k)return 1;return 0;main()int i,k;k=0;for(i=3;i<=5000;i+)if(prime(i)=1)k+;printf("%d is a prime muber n",i);printf("共有 d 个素数 n",k);3 .编写自定义函数count(int x),计算x的因子个数。利用此函数找出并输出11000中有奇数个不同因子的整数。#include<stdio.h>#include<math.h>int count(int x)int sum,i;su

18、m =0;/ 记住因子的个数for(i=1;i<=x/2;i+)if(x%i = 0)sum +=1;return sum+1;int main(void)int i,y;for(i=1;i<=100;i+) y=count(i);if(y%2=1)printf("%dt",i);return 0; 六、调试和测试结果1 . 输入: 2 3输出: s=82 .输出:共有668个素数日6y "口 1 FT? m?1 Q、Q如金日-3<-33后¥1NT拶1 -TN6T卡 *gY mGR整Vb J-H 3?AH <3 ril/avIWH

19、V己T不昌山*分£。m1"学 31T?*帛4日寺勺73* Jiti 3 J-neBJ.址r?事】 1H4? 0Q、N0NT 1O国整工 |£二3:整 44*jL 4> 7 4itbUiJ1i. Vauy,RRIL日9鼻 UM少1 061 1.31 ±£HOli Zid« J之量W3 %3,1 33® 3N6日R 省色电JA S7eV Z'VV 工emu itvy /g3 WNQ ?aei 33(1 n&i 1633 -I?JfaW 隼KV/¥富力 401 3 MTl 一17"7 41

20、.9 T:3T 号 44"4.6-g-e MN Jl 事69, .”用:好 心q /亨67 口!叫! Vl&WV 1WV 1»567 ±V33 NR 1 M*HV 213sta3a 33口号 3 *ifhV 3 5SV 泼OL% 3 71 1aftisv X堂M assn? 11 Ai3 IV 1 3«3 3修3学 m咤1 q JbV i3W-& 日"3曾鼻事 iI中 f 44V, &LE-tm日"7 441SJ 4.33 /& 3,T 41?W3事才"OR-t>6i/r7 :v FT

21、Hlr-七a mv 2 793SEEK2?1,3 M'Ztf 1 a»6i 3 957 TUI a> a,飞 1 i -I 1117Tl 3-15V U方qJl 牙"V 21匕子少 37K 3B&S 3*31 4O3JI4'/J44耳?£” <i» Ji 少 47ai Pg-tT731 VWV I.? 1073笈如量V Wg l£bl> 141grWE 量:L a Ii VI XT,量”内 提安4 9316 3 33:95> 33 13 inyugyJ'?tKl 3?*3 JttV 3*F

22、I T曰才7 -IIS-? TN 17 司" TQ 7m 4463 M£ O 的41 -473司Q TY好71 "7X1 J » 学 f之如主"/ I3ST3 St V' N7N1?鼻J? 3。喙1 SXb?T 33X3 3*1 3-tTl 33* YJHU ± AX7 -I IM 重 4l :2 s/T NJl ? -tMW'JIT3中 “ 4Eb 1«?"4Hi aT屯宁1F.卡qyI to M l扫?¥ mvt 3口勺量* *立 aee-7 Ulf .h 4PVT 1送MM3 量前呼

23、PVI 用。6P LU3:sa? -fMV mT ? ¥ atib* 397 青孑上4* 泞 ift 0 Jl Jfata4®6 41 3 1 f ZW? "* TiK 誓 7 <MA3 -69 4ih5 L 473 3i -*tai V杷T4 宇?1.733:1 ATTLS111993LBB?1 1yei1.V”1WV3NJL:!dR鼻工±2旧P3兄如 3A3C7;=r?1牙、33a i3?瑞善n上»03SS1?3&ai%,用口str.«4X7T1. 整 NHM-鼻等。等 2争今 状好4, JMUa na?* 鼻Gfi

24、3331 :J41 3 31511 :=lt>?!3£43 dWM V laanM»嗔日七73 y 433± 1里中? -1HW-T 4<*fl 中当日争,eJ,Y中?6 4H314 fl 辛排木&日阳3 3-(13 »他口 3 BATIbttl 争用巧争 J! Kt II a鼻鼻a -IVjLx加I <er?34i B3 <0-111 <3 a? «Si 也1吗1?BH 4b<3 J今 4H«jX W THg#include<stdio.h>2.3、输出结果为:实验六数组四、设

25、计流程(算法描述)(请写出上机内容1的算法描述)设置两个变量分别指示头和尾。第一个和最后一个元素值互换,然后头和尾变量向里移动, 最终到两变量相遇为止。五、程序清单实现将数组中的n个数据按逆序存放1.编写程序:从键盘输入一审整数保存到数组中,调用函数 antitone()将数组反序输出 自定义函数 void antitone(int a口,int n)void antitone(int a口,int n)int i,j;int k;i=0;j=n-1;while(i<j)k=ai;ai=aj;aj=k;i +=1;j -=1;2已知某数列的前两项为2 和3,其后每一项为其前两项之积。编程

26、实现:从键盘输入一个整数X,判断并输出x最接近数列的第几项?#include<math.h>void Mad(int a,int n)int i;a0=2;a1=3;for(i=2;i<n;i+)ai = ai-1 * ai-2;int main(void)int a100,x,k1,k2;int i;Mad(a,100);/ 产生序列printf("input x:");scanf("%d",&x);i=0;for(;x>ai;i+);k1 = abs(x-ai-1);k2 = abs(x-ai);if(k1>k2

27、)printf("the most similar x number is:%dn",ai);elseprintf("the most similar x number is:%dn",ai-1);return 0;3. 编程实现:输入10 个学生 5 门课的成绩并完成如下功能(1) 求每个学生的平均分;(2) 求每门课程的平均分。#include<stdio.h>#include<math.h>#define num 10typedef struct studentchar name20;float math;float eng

28、lis;float computer;float Chinese;float history;STUDENT;int main(void)STUDENT stunum;int i;float score,sum,average;char s10;float scoreMath,scoreEng,scoreCom,scoreChi,scoreHis;for(i=0;i<num;i+)printf("Name: ");gets();printf("math score: ");scanf("%f",&sco

29、re);stui.math = score;printf("englis score: ");scanf("%f",&score);stui.englis = score;printf("computer score: ");scanf("%f",&score);puter = score;printf("Chinese score: ");scanf("%f",&score);stui.Chinese = score;printf(&

30、quot;history score: ");scanf("%f",&score);stui.history = score;gets(s);/ 功能是接受最后一个回车符,然后下一次gets(); 才能起到作用/ 求每个学生的平均分数for(i=0;i<num;i+)sum=0;sum +=stui.math;sum +=stui.englis;sum +=puter;sum +=stui.Chinese;sum +=stui.history;average = sum/5;printf("%s's

31、 average score is:%fn",,average);/ 求每门课的平均成绩scoreMath=0;scoreEng=0;scoreCom=0;scoreChi=0;scoreHis=0;for(i=0;i<num;i+)scoreMath += stui.math;scoreEng += stui.englis;scoreCom += puter;scoreChi += stui.Chinese;scoreHis += stui.history;printf("math's average score is:%f

32、n",scoreMath/num);printf("englis's average score is:%fn",scoreEng/num);printf("computer's average score is:%fn",scoreCom/num);printf("Chinese's average score is:%fn",scoreChi/num);printf("history's average score is:%fn",scoreHis/num);retur

33、n 0;实验七 数组和函数四、程序清单( 请写出上机内容2 中函数的源代码)void fun(int ttMN,int ppN) int i,j,max;for(j=0; j<N; j+ ) max=tt0j;for(i=1;i<M;i+) if(ttij>max)max=ttij;ppj=max;五、调试和测试结果(写出上机内容1中填空的内容)(1) (1) sum=0 (2)tii(3) J(1) J (2) (3)ap+i实验八指针(1)四、程序清单(请写出上机内容2中的函数)100,放求出每个位上的数字,然后放在千位上的数字乘以1000,放在百位上的数字乘以在10位上

34、的数字乘以10,然后相加。void fun(int a,int b,long *c)int a10,a1,b10,b1;a10=a/10;a1=a%10;b10=b/10;b1=b%10;*c = a10 * 1000 + b1 * 100 + a1 *10 + b10;五、调试和测试结果(请写出上机内容1的输出结果)1(1)输出结果为:8,7,7,8X=10 y=20x=20 y=10【1】int *p&ai【3】pi输入:1 2 3 4 5 6输出:1设计流程(算法描述)实验九指针(2)(请写出上机内容2中的算法描述)使用指针编程求数组元素之积#include <stdio.

35、h> int main(void)int a=4,6,8,10,12,sum;int *p;sum=1;for(p=a;p<a+5;p+)sum *= *p;printf("%dn",sum);return 0;2 .定义函数int f(char*x, char y) 判断x所指的字符串中是否包含字符y,若是则函数返回1,否则返回1。int f(char *x, char y)char *p;for(p=x;*p!='0'p+)if(*p = y)printf("%cn",*p);return 1;return 0;y 所指的

36、存储单3 . 定义函数void f(float x, int *y, float *z)将 x 的整数部分存于元, x 的小数部分存于x 所指的存储单元。void f(float x, int *y, float *z)*y=(int)x;*z=x - *y;实验十 结构体四、程序清单( 请写出上机内容2 中的函数的源代码)void fun(struct STREC *a) int i;a->ave=0;for(i=0;i<N;i+)a->ave+=a->si;a->ave/=N;五、调试和测试结果( 请写出上机内容1 的填空结果)上机内容1 的填空结果(1) -

37、>sno (2) ->name (3) &t实验十一共用体与枚举文件四、程序清单( 请写出上机内容2 中的程序源代码)#include <stdio.h>#include <string.h>#include <stdlib.h>int main(void)int i,sum;FILE *fd;char s10,*p,ch;if( (fd=fopen("D:shi.txt","wt")=NULL)printf("creat the file failedn");exit(0);e

38、lsefor(i=1;i<100;i+)if( (i%3 =0) && (i%5 = 0) )printf("%d, ",i);itoa(i,s,10); / 转换成字符串fputs(s,fd);fputc(' ',fd);printf("n");fclose(fd);/ 提取字符转换成数字输入if( (fd=fopen("D:shi.txt","rt")=NULL)printf("open the file failedn");exit(0);elsep=

39、s;sum=0;doch=fgetc(fd);if(ch = ' ')i=atoi(s);sum +=i;printf("%d ",i);strset(s,'0');p=s;else*p=ch;p+;while(ch != EOF);printf(" 数的和是:%dn",sum);fclose(fd);return 0;实验十二参考答案实验十二参考答案:( 可根据情况,弄清楚一个模块即可)题目:设某班有n 位同学,每位同学的数据包括以下内容:学号(长整型)、姓名(字符串) 、数学成绩(整型)、程序设计成绩(整型)。设计程序

40、完成以下五项功能:新建数据档案、添加数据、删除数据、对输入的数据进行排序和查询。注:输入数据时,要求学号不能相同,姓名可以相同。设计思路:1) 程序运行时,首先显示主菜单(模块)如下:1 程序运行时,首先显示主菜单如下:2 新建数据2添加数据3删除数据4排序5查询6退出用户输入序号后,程序进行相应操作。2) 在主菜单中选择序号4,弹出子菜单选择排序方式,子菜单如下:1 数学成绩排序2程序设计成绩排序3总分排序。4返回主菜单选择子菜单的序号后,程序能正确运行并在屏幕上显示按要求排序后的相关信息。3在主菜单中选择序号5,弹出子菜单选择查询方式,子菜单如下:2 学号查询2姓名查询3数学成绩查询4程序

41、设计成绩查询5总分查询6返回主菜单请按序号选择相应操作在子菜单中选择序号后,程序按以下方式工作。( 1)学号查询:输入学号后,若该学号存在则显示与其相关的所有信息,否则显示找不到的提示信息;(提示:查询到满足条件的结果后,查询即可结束)( 2)姓名查询:输入姓名后,若该姓名存在则显示与其相关的所有信息,否则显示找不到的提示信息;(提示:使用字符串比较函数进行比较)( 3)按科目查询:输入指定分数,程序运行后显示该科目中考试成绩大于等于指定分数的同学的学号、姓名以及该科成绩并统计满足条件的人数;( 4)总分查询:输入指定分数,程序运行后显示总分成绩大于等于指定分数的同学的学号、姓名以及各科成绩并

42、统计满足条件的人数。C 源程序清单如下:#include "stdio.h"#include "stdlib.h"#include "string.h"#include "conio.h"#include "mem.h"#include "ctype.h"#include "alloc.h"#define N 2typedef struct z1char no11;char name15;int scoreN;float sum;float average

43、;int order;struct z1 *next;STUDENT;/*Functions*/STUDENT *init(); /*initialize*/STUDENT *create();STUDENT *delete(STUDENT *h);STUDENT *searchno(STUDENT *h);void print(STUDENT *h);void search(STUDENT *h);void save(STUDENT *h);STUDENT *load();STUDENT *insert(STUDENT *h);STUDENT *sort(STUDENT *h);STUDEN

44、T *index(STUDENT *h);int menu_select(); /*menu*/*main*/main()int i;STUDENT *head;head=init();clrscr();for(;)switch(menu_select()case 1:head=init();break;case 2:head=create();break;case 3:head=delete(head);break;case 4:print(head);break;case 5:search(head);break;case 6:head=searchno(head);break;case

45、7:save(head);break;case 8:head=load(); break;case 9:head=insert(head); break;case 10:head=sort(head);break;case 11:case 12:case 13:head=index(head);break;case 0:exit(0);menu_select()char *menu="*MENU*"" 1. Init list"," 2. Enter list",3. Delete a record from list",&

46、quot; 4. print list "," 5. Search record by name"," 6. Search record by Number"," 7. Save the file"," 8. Load the file"," 9. insert record to list "," 10. sort by total scores"," 11. sort by maths scores"," 12. sort by p

47、rogram scores"," 13. index on number"," 0. Quit"char s3;int c,i;gotoxy(1,25);printf("press any key continuen");getch();clrscr();gotoxy(1,1);textcolor(YELLOW);textbackground(BLACK);gotoxy(10,2);putch(0xc9);for(i=1;i<44;i+)putch(0xcd);putch(0xbb);for(i=3;i<20;i+)gotoxy(10,i);putch(0xba);gotoxy(54,i);putch(0xba);gotoxy(10,20);putch(0xc8);for(i=1

温馨提示

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

评论

0/150

提交评论