C实验报告答案--年_第1页
C实验报告答案--年_第2页
C实验报告答案--年_第3页
C实验报告答案--年_第4页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

1、2.1C 程序设计初步一、实验目的(1) 熟悉 C 语言程序的运行环境 (VC+ 6.0) 。(2)掌握 C 语言程序的上机步骤,了解运行C程序的方法。(3) 掌握语言程序的书写格式和语言程序的结构。二、实验内容 ( 均要求给出运行结果 )1程序改错题(1) 以下程序实现计算 x y 的值并将结果输出。请改正程序中的错误。#include stdio.hvoid main()/*FOUND*/ int x=y=4; z=x*y; /*FOUND*/ printf(z=%d/n, Z);答案:=( 答案 1)=int x=,4,y=4,z;=( 答案 2)=printf(z=%dn, z);(2

2、) 以下程序实现输入圆的半径,求圆的周长。请改正程序中的错误。#include stdio.hvoid main() int r;float l;printf(Enter r:);scanf(%d, &r);/*FOUND*/l=2 r/*FOUND*/printf(l=%dn,l);答案:=( 答案 1)=l=2*3.14*r;=( 答案 2)=printf(l=%fn, l);2程序填空题(1) 下面程序能对两个整型变量的值进行交换,请填空。#include stdio.hvoid main() int a=3,b=4,t; t=a; /*SPACE*/【 ?】 ; /*SPACE*/【

3、?】 ; printf(a=%d,b=%dn,a,b);答案:=( 答案 1)=a=b=( 答案 2)=b=t(2) 下面程序不用第三个变量,实现两个数的对调操作。#include void main() int a,b;scanf(%d %d,&a,&b);printf(a=%d,b=%dn,a,b);/*SPACE*/a= 【?】 ;/*SPACE*/b= 【?】 ;/*SPACE*/a= 【?】 ;printf(a=%d,b=%dn,a,b);答案:=( 答案 1)=a + b=( 答案 2)=a-b=或 =a -b=( 答案 3)=a-b=或 =a -b3程序设计题功能:编程实现从键盘

4、输入任意1 个大写字母,转换成小写字母后输出。答案:#include void main() char c,d; scanf(%c,&c); d=c+32 ;printf(%c,%cn,c,d);2.2顺序结构程序设计一、实验目的(1) 掌握赋值语句的功能和使用方法。(2) 掌握 C 语言的数据类型,熟悉不同类型变量的定义及赋值的方法。(3) 学会使用 C语言的有关算术运算符,以及包含这些运算符的表达式。(4) 掌握简单数据类型的输入输出方法,能正确使用格式控制符。(5) 学习编制简单的 C 程序。二、实验内容( 均要求给出运行结果)1程序改错题(1)以下程序输入一个十进制整数,输出与之对应的

5、八进制数与十六进制数。例如, 输入 31,输出 37( 八进制 ) 和 1F(十六进制 ) 。请改正程序中的错误。#include void main() /*FOUND*/ n;printf( 输入一个十进制整数 :); /*FOUND*/ scanf(%d,n); /*FOUND*/printf( 对应的八进制整数是 %On,n); printf( 对应的十六进制整数是 %Xn,n);答案:=( 答案 1)=int n;=( 答案 2)=scanf(%d,&n);=( 答案 3)=printf(对应的八进制整数是%on,n);(2) 下列程序的功能是计算表达式x=1/2 + a b 的值,

6、请改正程序中的错误。#include stdio.h/*FOUND*/void main() int a, b; float x; scanf(%d,%d,&a,&b);/*FOUND*/x=1/2+sqrt(a+b);/*FOUND*/printf(x=%dn,x);答案:=( 答案 1)=#include math.h ”=( 答案 2)=x=1./2+sqrt(a+b);=( 答案 3)=printf(x=%fn,x);2程序填空题(1) 请填写以下程序,要求输出结果如下:A , B65 ,66#includevoid main() /*SPACE*/ char a, 【?】 ; /*S

7、PACE*/ a=【 ?】;b=b; a=a-32;/*SPACE*/b=b- 【?】;printf(%c,%cn%d,%dn,a,b,a,b);答案:=( 答案 1)=b=( 答案 2)=a=或 =97=( 答案 3)=32(2) 下列程序的功能是要求输出如下结果,请填入合适的变量完善程序。b=-1 a=65535a=65534a=30 b=6 c=5#include void main() /*SPACE*/int b=-1,【?】;unsigned short int a;/*SPACE*/a=【 ?】;printf(b=%d a=%un,b,a);/*SPACE*/【 ?】 +=b;p

8、rintf(a=%un,a);/*SPACE*/b=(a=30)/ 【?】;printf(a=%d b=%d c=%dn,a,b,c);答案:=( 答案 1)=c=( 答案 2)=b=( 答案 3)=a=( 答案 4)=(c=5)3程序设计题功能: 输入摄氏温度c,求华氏温度f 。转换公式为f=9/5c+32,输出结果取两位小数。( 说明:因为关于函数调用的知识在第7 章讲解,所以在现阶段本程序的设计可以改用一个主函数来完成。)#include double fun(double m) /*Program*/* End */void main() double c,f;printf(请输入一个

9、摄氏温度:);scanf(%lf,&c);f=fun(c);printf(华氏温度为 :%5.2fn,f);答案:float n;n=9.0/5.0*m+32;return n;2.3选择结构程序设计一、实验目的(1) 掌握关系运算符、逻辑运算符、条件运算符的使用方法。(2) 掌握 if 语句和 switch 语句的使用方法。(3) 学会调试程序,并掌握一些简单的算法。(4) 掌握选择结构程序的设计技巧。二、实验内容 ( 均要求给出运行结果)1程序改错题(1) 以下程序的功能是判断一个 5 位数是否为回文数, 即 12321 是回文数, 个位与万位相同,十位与千位相同。请改正程序中的错误。#i

10、ncludevoid main() /*FOUND*/ long ge,shi,qian;wan,x; scanf(%ld,&x);/*FOUND*/wan=x%10000;qian=x%10000/1000;shi=x%100/10;ge=x%10;/*FOUND*/if (ge=wan|shi=qian)printf(this number is a huiwenn);elseprintf(this number is not a huiwenn);答案:=( 答案 1)=long ge,shi,qian,wan,x;=( 答案 2)=wan=x/10000;=( 答案 3)=if (ge

11、=wan&shi=qian)=或 =if (shi=qian&ge=wan)(2)利用条件运算符的嵌套来完成此题:表示, 6089 分的用 B 表示, 60 分以下的用学习成绩为 90 分以上 ( 包括C表示。请改正程序中的错误。90 分 ) 的学生用A#include void main() int score; /*FOUND*/ char *grade;printf(please input a scoren); /*FOUND*/ scanf(%d,score); /*FOUND*/ grade=score=90?A;(score=60?B:C);printf(%d belongs t

12、o %cn,score,grade);答案:=( 答案 1)=char grade;=( 答案 2)=scanf(%d,&score);=( 答案 3)=grade=score=90?A:(score=60?B:C);2程序填空题(1) 以下程序实现输出 x、 y、 z 这 3 个数中的最大者。#includevoid main() int x = 4, y = 6,z = 7;/*SPACE*/int u ,【?】 ;if(xy)/*SPACE*/【 ?】;elseu = y;if(uz)v = u;elsev=z;printf(the max is %dn,v );答案:=( 答案 1)=

13、v=( 答案 2)=u=x(2) 输入某年某月某日,判断这一天是这一年的第几天。#include void main() int day,month,year,sum,leap;printf(nplease input year,month,dayn);scanf(%d,%d,%d,&year,&month,&day);switch(month) case 1:sum=0;break; case 2:sum=31;break; case 3:sum=59;break; /*SPACE*/ case 4: 【?】;break; case 5:sum=120;break; case 6:sum=1

14、51;break; case 7:sum=181;break;case 8:sum=212;break;case 9:sum=243;break;case 10:sum=273;break;case 11:sum=304;break;case 12:sum=334;break;default:printf(data error);break;/*SPACE*/【 ?】 ; /*SPACE*/ if(year%400=0| 【?】)leap=1;elseleap=0;/*SPACE*/ if( 【?】 )sum+;printf(it is the %dth day.,sum);答案:=( 答案

15、1)=sum=90=( 答案 2)=sum=sum+day=或 =sum= sum + day=( 答案 3)=year%4 = 0 & year%100 != 0=或 =( year%4 = 0 & year%100 != 0)=( 答案 4)=leap=1&month2=或 =leap = 1 & month2=或 =leap = 1 & 2month3程序设计题功能: 对某一浮点数保留2 位小数, 并对第三位小数进行四舍五入。输出 6 位小数, 后4 位均为 0。 ( 说明:因受所学知识的限制,现阶段可以只用一个主函数来完成。)#include #include conio.hdoubl

16、e fun(float h) /*Program*/* End */void main() float m;printf(Enter m: );scanf(%f, &m);printf(nThe result is %fn, fun(m);答案: -int i;i=(int)(h*1000)%10;if(i=5)return(int)(h*100+1)/100.0;elsereturn(int)(h*100)/100.0;-2.4单层循环程序设计一、实验目的(1) 掌握 while 语句、 do-while 语句和 for 语句的基本使用方法。(2) 掌握循环结构程序设计的一些常用算法。二、实

17、验内容 ( 均要求给出运行结果)1程序改错题(1) 以下程序实现求出 1 1+2 2+ +n n1000 中满足条件的最大的 n。#include void main() int n,s; /*FOUND*/ s=n=0;/*FOUND*/while(s1000) +n; s+=n*n;/*FOUND*/printf(n=%dn,&n-1);答案:=( 答案 1)=s=n=0;=( 答案 2)=while(s=1000)=( 答案 3)=printf(n=%dn,n-1);(2) 一个球从 100m高度自由落下,每次落地后反跳回原高度的一半,再落下,求它在第 10 次落地时,共经过多少米?第1

18、0 次反弹多高 ?#include void main() /*FOUND*/ float sn=100.0;hn=sn/2; int n;/*FOUND*/for(n=2;n10;n+) sn=sn+2*hn; /*FOUND*/hn=hn%2;printf(the total of road is %fn,sn);printf(the tenth is %f metern,hn);答案:=( 答案 1)=float sn=100.0,hn=sn/2;=( 答案 2)=for(n=2;n=10;n+)=或 =for(n=2;n11;n+)=( 答案 3)=hn=hn/2;2程序填空题(1)

19、以每行 5 个数来输出 300 以内能被 7 或 17 整除的偶数,并求出其和。请填空。#include void main() int i,n,sum; sum=0; /*SPACE*/【 ?】 ; /*SPACE*/ for(i=1; 【?】 ;i+)/*SPACE*/ if( 【?】)if(i%2=0) sum=sum+i;n+;printf(%6d,i);/*SPACE*/if(【?】)printf(n);printf(ntotal=%dn,sum);答案:=( 答案 1)=n=0=( 答案 2)=i=300=或 =i=i=或 =300i=( 答案 3)=i%7 = 0 | i%17

20、= 0=或 =!(i%7)|!(i%17)=或 =!(i%17)|!(i%7)=或 =!(i%7&i%17)=( 答案 4)=n%5 = 0=或 =!(n%5)=或 =n/5*5=n(2) 计算平均成绩并统计 90 分以上的人数。请填空。#include void main () int n,m;float grade,average;average=0.0;/*SPACE*/n=m=【?】;while(1) /*SPACE*/【 ?】(%f,&grade); if(grade0)break;n+;average+=grade;/*SPACE*/if(grade90)【 ?】;m+;if(n)

21、printf(%.2fn%dn,average/n,m);答案:=( 答案 1)=0=( 答案 2)=scanf=( 答案 3)=continue3程序设计题功能:求一个四位数的各位数字的立方和。( 说明:因为关于函数调用的知识在第7 章讲解,所以在现阶段本程序的设计可以改用一个主函数来完成。)#include int fun(int n) /*Program*/* End */void main() int k;k=fun(1234);printf(k=%dn,k);答案: -int d,s=0;while (n0)d=n%10;s+=d*d*d;n/=10;return s;-2.5嵌套循

22、环程序设计一、实验目的(1) 掌握循环嵌套的程序设计方法。(2) 掌握 break 语句和 continue 语句的使用方法。(3) 掌握结构化程序设计的基本技巧和方法。二、实验内容( 均要求给出运行结果)1程序改错题(1)打印出以下程序的功能是循环读取 a 个。7 个整数 (1 50) ,每读取一个整数存入变量a,程序#include void main() int i,a,n=1;/*FOUND*/while(n7) do scanf(%d,&a);/*FOUND*/while(a50);/*FOUND*/for(i=0;i=a;i+)printf(*);printf(n);n+;答案:=

23、( 答案1)=while(n=7)=或 =while(n8)=( 答案2)=while(a50);=或 =while(a50|a1);=( 答案3)=for(i=1;i=a;i+)(2)以下程序的功能是将一个正整数分解质因数。例如,输入90,打印出90=2*3*3*5。#include void main() int n,i;printf(nplease input a number:n);scanf(%d,&n);printf(%d=,n);for(i=2;i=n;i+) /*FOUND*/while(n=i) /*FOUND*/if(n%i=1) printf(%d*,i);/*FOUND

24、*/n=n%i;elsebreak;printf(%dn,n);答案:=( 答案 1)=while(n!=i)=( 答案 2)=if(n%i=0)=或 =if (!(n%i)=( 答案 3)=n=n/i;2程序填空题(1)字的乘积输出 1 到 100 之间每位数的乘积大于每位数的和的数。例如,数字 12 大于数字之和 8。26,数位上数#include void main() int n,k=1,s=0,m;for(n=1;ns)printf(%d ,n);答案:=( 答案 1)=m=n=( 答案 2)=m0=或 =0m=( 答案 3)=m=m/10=或 =m/=10(2) 如果整数的全部因子

25、 ( 包括, 不包括本身 ) 之和等于; 且整数的全部因子( 包括, 不包括本身 ) 之和等于, 则将整数和称为亲密数。 求 3000 以内的全部亲密数。请填空。#include void main() int a, i, b, n ;printf(Friendly-numbers pair samller than 3000:n) ;for(a=1 ; a3000 ; a+) for(b=0,i=1 ; i=a/2 ; i+ )/*SPACE*/if(!(a%i)【 ?】 ; for(n=0,i=1 ; i=b/2 ; i+)/*SPACE*/if(!(b%i)【 ?】 ; /*SPACE*

26、/if(【?】 & ab)printf(%4d%4dn,a,b) ;答案:=( 答案 1)=b+=i=或 =b=b+i=( 答案 2)=n+=i=或 =n=n+i=( 答案 3)=n = a3程序设计题功能:求给定正整数m以内的素数之和。例如,当m=20时,函数值为77。 ( 说明:因为关于函数调用的知识在第 7 章讲解,所以在现阶段本程序的设计可以改用一个主函数来完成。 )#include int fun(int m) /*Program*/* End */void main() int y; y=fun(20); printf(y=%dn,y);答案: -int i,k,s=0;for(i

27、=2;i=m;i+)for(k=2;ki;k+)if(i%k=0)break;if(k=i)s=s+i;return s;-2.6一维数组程序设计一、实验目的(1) 掌握一维数组的定义、赋值、初始化及输入输出的方法。(2) 掌握与数组有关的算法 ( 重点是排序算法 ) 。二、实验内容 ( 均要求给出运行结果)1程序改错题(1) 以下程序的功能是在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。请改正程序中的错误。#include #define N 11void main() int i,number,aN=1,2,4,6,8,9,12,15,149,156; printf(

28、please enter an integer to insert in the array:n); /*FOUND*/ scanf(%d,&number)printf(The original array:n);for(i=0;i=0;i-)if(number=ai)/*FOUND*/ai=ai-1;else ai+1=number;/*FOUND*/exit;if(numbera0) a0=number;printf(The result array:n);for(i=0;i=0;i-)=或 =for(i=N-2;0=i;i-)=( 答案a i + 1 =ai;3)=( 答案break;4

29、)=(2)以下程序的功能是某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后除以10 的余数代替该位数字。再将新生成数据的第一位和第四位交换,第二位和第三位交换。例如,输入一个四位整数1234,则结果为9876。请改正程序中的错误。#include void main() int a,i,aa4,t;printf(输入一个四位整数:);/*FOUND*/scanf(%d,a);aa0=a%10;/*FOUND*/aa1=a%100%10;aa2=a%1000/100;aa3=a/1000;/*FOUND*/for(i=0;i3;i+) a

30、ai+=5;aai%=10;for(i=0;i=0;i-)printf(%d,aai);答案:=( 答案 1)=scanf(%d,&a);=( 答案 2)=aa1=a%100/10;=( 答案 3)=for(i=0;i=3;i+)=或 =for(i=0;i4;i+)2程序填空题(1) 以下程序的功能是输出 1000 以内的所有完数及其因子。说明:所谓完数是指一个整数的值等于它的因子之和。例如, 6 的因子是 1、 2、 3,而 6=1+2+3,故 6 是一个完数。请填空。#include void main() int i,j,m,s,k,a100 ;for(i=1 ; i=1000 ; i+

31、 ) m=i ;s=0 ;k=0 ;for(j=1 ; jm ; j+)/*SPACE*/if(【 ?】 ) s=s+j ; /*SPACE*/【 ?】=j ;if(s!=0&s=m) /*SPACE*/for(j=0 ;【 ?】 ; j+)printf(%4d,aj) ;printf( =%4dn,i) ;答案:=( 答案 1)=m%j = 0=( 答案 2)=ak+=( 答案 3)=jj(2) 以下程序产生 10 个 30,90 区间上的随机整数, 然后对其用选择法进行由小到大的排序。请填空。#include #include #include time.hvoid main() /*SPACE*/【 ?】 ; int i,j,k; int a10; srand(time(0); for(i=0;i10;i+)ai= rand()%60+30; for(

温馨提示

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

评论

0/150

提交评论