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

下载本文档

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

文档简介

1、2.1 C程序设计初步、实验目的(1) 熟悉C语言程序的运行环境(VC+ 6.0) o(2) 掌握C语言程序的上机步骤,了解运行C程序的方法。(3) 掌握C语言程序的书写格式和C语言程序的结构。、实验内容(均要求给出运行结果)1 程序改错题(1) 以下程序实现计算 x马的值并将结果输出。请改正程序中的错误。#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)= prin tf(z=%dn, z);(2) 以下程序实现输入

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

3、%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 -ba-b=或a -b3 程序设计题功能:编程实现从键盘输入任意1个大写字母,转换成小写字母后输出。答案:#includ

4、e 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) 以下程序输入一个十进制整数,输出与之对应的八进制数与十六进制数。例如,输 入31,输出37(八进制)和1F(十六进制)。

5、请改正程序中的错误。#include void main() /*FOUND*n;printf(输入一个十进制整数:);* *FOUND *scanf(%d,n);*FOUNDkkkkkkkkprintf(对应的八进制整数是%On,n);printf(对应的十六进制整数是 %Xn,n);答案:int n;=(答案 2)=sea nf(%d,&n);=(答案 3)=prin tf(对应的八进制整数是%on, n);(2)下列程序的功能是计算表达式x=1/2+ a b的值,请改正程序中的错误。#include stdio.h/*found*/void main() int a, b;float x

6、;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)= prin tf(x=%fn,x);2 程序填空题(1) 请填写以下程序,要求输出结果如下:A , B65, 66#include void main() /*space*/char a,【?】;/*space*/a=【?】 b=b;a=a-32;/* *SPACE*b=b-【?】; printf(%c,%cn%d,%dn,a,b,a,b

7、);答案:=(答案 1)= b=(答案 2)= a=或 =97=(答案 3)=32(2) 下列程序的功能是要求输出如下结果,请填入合适的变量完善程序。b=-1a=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;printf(a=%un,a);* *SPACE *b=(a=30)/【?】;printf(a=%d b=%d c=%dn,a,b,c);答案:=(答案 1)=

8、 c=(答案 2)= b=(答案 3)=a(c=5)3 程序设计题功能:输入摄氏温度 c,求华氏温度f。转换公式为f=9/5c+32,输出结果取两位小数。 (说明:因为关于函数调用的知识在第7章讲解,所以在现阶段本程序的设计可以改用一个主函数来完成。)#in elude double fun(double m)*Program* End *void main() double c,f;printf(”请输入一个摄氏温度:);scanf(%lf, &c);f=fun(c);printf(华氏温度为:%5.2fn,f);答案:float n;n=9.0/5.0*m+32;return n;2.3选

9、择结构程序设计、实验目的(1)掌握关系运算符、逻辑运算符、条件运算符的使用方法。 掌握if语句和switch语句的使用方法。学会调试程序,并掌握一些简单的算法。掌握选择结构程序的设计技巧。二、实验内容(均要求给出运行结果)1 程序改错题(1) 以下程序的功能是判断一个5位数是否为回文数,即12321是回文数,个位与万位相同,十位与千位相同。请改正程序中的错误。#includevoid main() /*found*/ long ge,shi,qian;wan,x; scanf(%ld, &x);*FOUNDkkkkkkkkwan=x%10000;qian=x%10000/1000; shi=x

10、%100/10;ge=x%10;/* *FOUNDkkkkkkkkif (ge=wan|shi=qian)printf(this number is a huiwenn); elseprintf(this number is not a huiwenn);答案:=(答案 1)= long ge,shi,qia n,wan,x;=(答案 2)= wa n=x/10000;=(答案 3)=if (ge=wa n&shi=qia n) =或=if (shi=qia n&ge=wa n)(2) 利用条件运算符的嵌套来完成此题:学习成绩为90分以上(包括90分)的学生用A表示,6089分的用B表示,60

11、分以下的用C表示。请改正程序中的错误。#include void main() int score;/* *FOUNDkkkkkkkkchar *grade;printf(please input a scoren);/* *FOUNDkkkkkkkkscanf(%d,score);/* *FOUNDkkkkkkkkgrade=score=90?A;(score=60?B:C); printf(%d belongs to %cn,score,grade);答案:=(答案 1)= char grade;=(答案 2)= sca nf(%d, &score);=(答案 3)= grade=scor

12、e=90?A:(score=60?B:C);2 程序填空题(1)以下程序实现输出x、y、z这3个数中的最大者。#includevoid main() int x = 4, y = 6,z = 7;/*space*/int u ,【?】;答案:u=xif(xy)/*space*/【?】;elseu = y;if(uz)v = u;elsev=z;printf(the max is %dn,v);(答案1)(答案2) 输入某年某月某日,判断这一天是这一年的第几天。#include void main() int day,month,year,sum,leap;printf(nplease inpu

13、t 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=151;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;b

14、reak;case 12:sum=334;break; default:printf(data error);break;* *SPACE *【?】* *SPACE *if(year%400=0| leap=1;else【?】)leap=0;* *SPACE *if(【?】)sum+;printf(it is the %dth day.,sum);答案:=(答案 1)=sum=90=(答案 2)= sum=sum+day=或 =sum= sum + day=(答案 3)=year%4 = 0 & year%100 != 0 =或 =(year%4 = 0 & year%100 != 0)=(答

15、案 4)=leap=1 &mon th2=或 =leap = 1 & mon th2=或 =leap = 1 & 2month3 程序设计题功能:对某一浮点数保留2位小数,并对第三位小数进行四舍五入。输出6位小数,后4位均为0。(说明:因受所学知识的限制,现阶段可以只用一个主函数来完成。)#include #include conio.hdouble fun(float h)*Program*Endkkkkkkkkvoid main() float m;printf(Enter m:); scanf(%f, & m);printf(nThe result is %fn, fun(m);答案:i

16、nt i;i=(i nt)(h*1OOO)%1O;if(i=5)return(i nt)(h*1OO+1)/1OO.O;elsereturn(i nt)(h*1OO)/1OO.O;2.4单层循环程序设计、实验目的(1) 掌握while语句、do-while语句和for语句的基本使用方法。(2) 掌握循环结构程序设计的一些常用算法。、实验内容(均要求给出运行结果)n。1 程序改错题(1)以下程序实现求出1 X1+2 X2+n xn 1000中满足条件的最大的#include void main() int n,s;/*found*/s=n=0;/*found*/while(s1000) +n;

17、s+=n*n;/*found*/printf(n=%dn,&n-1);答案:(答案1)s=n=O;=(答案 2)= while(s=1000)=(答案 3)=prin tf( n=%dn, n-1);(2) 一个球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下,求它在 第10次落地时,共经过多少米?第 10次反弹多高?#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

18、road is %fn,sn); printf(the tenth is %f metern,hn);答案:=(答案 1)= float sn=100.0,h n=sn/2;=(答案 2)= for( n=2 ;n =10; n+) =或 = for( n=2; n11; n+)=(答案 3)= hn=hn/2;2 程序填空题(1) 以每行5个数来输出300以内能被7或17整除的偶数,并求出其和。请填空。#include void main() int i,n,sum;sum=0;/*space*/【?】;/*space*/for(i=1; 【?】;i+)/*space*/if(【?】) if

19、(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 = 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 () i

20、nt 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)printf(%.2fn%dn,average/n,m);答案:=(答案 1)=0(答案2)scanf=(答案 3)= con ti nue3 程序设计题功能:求一个四位数的各位数字的立方和。(说明:因为关于函数调用的知识在第讲解,所以在现阶段本程序的设计可以改用一个主函数来完成。)#inc

21、lude int fun(int n)*Program*Endkkkkkkkkvoid 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嵌套循环程序设计一、实验目的(1) 掌握循环嵌套的程序设计方法。(2) 掌握break语句和continue语句的使用方法。(3) 掌握结构化程序设计的基本技巧和方法。二、实验内容(均要求给出运行结果)1 程序改错题程序打(1)以下程序的功能是循环读取7个整数(150),每读取一个整数存入变量a,印出a个*。#

22、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+;(答案1)while (n=7)=或while( n8)(答案2)while(a50); =或 = while(a50|a1);(答案3)for(i=1;i=a;i+)90,打印出 90=2*3*3*5。(2)以下程序的功能是将一个正整数分解质因数。例如,输入#include void main() int n,i;pr

23、intf(nplease input a numberin); 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*/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之间每位数的乘积大于每位数的和的数。例如,数字26,数位上数字的乘积12大于数字之和

24、&#include void main() int n,k=1,s=0,m;for(n=1;ns) printf(%d ,n);答案:=(答案 1)= m=n=(答案 2)=m00m=(答案 3)= m=m/10=或 =m/=10(2)如果整数A的全部因子 (包括1,不包括A本身 )之和等于E;且整数E的全部因子 (包括1,不包括E本身)之和等于A,则将整数A和E称为亲密数。求3000以内的全部亲密数。请填空。#include void maln() int a, i, b, n ;printf(Friendly-numbers pair samller than 3000:n); for(a

25、=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 *if(【?】& ab) printf(%4d4dn,a,b);答案:=(答案 1)= b+=i=或 =b=b+i=(答案 2)= n+=i=或 =n=n+i=(答案 3)= n = a3 程序设计题功能:求给定正整数 m以内的素数之和。例如,当m=20时,函数值为77。(说明:因为关于函数调用的知识在第 7章讲解,所以在现阶段本程序的设计可以改用一个

26、主函数来完成。)int fun(int m) /*program*/End*void main() int y;y=fun(20); printf(y=%dn,y);答案:int i,k,s=0;for(i=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)以下程序的功能是在一个已按升序排列的数组中插入一个数,插入后,数组元素仍 按升序

27、排列。请改正程序中的错误。#include #define N 11void main() int i,number,aN=1,2,4,6,8,9,12,15,149,156;printf(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; p

28、rintf(The result array:n);for(i=0;i=0;i-) =或 = for(i=N-2;0=i;i-)=(答案 3)= a i + 1 =ai;=(答案 4)= break;再1234,(2)以下程序的功能是某个公司采用公用电话传递数据,数据是四位的整数,在传递过 程中是加密的,加密规则如下:每位数字都加上5,然后除以10的余数代替该位数字。将新生成数据的第一位和第四位交换,第二位和第三位交换。例如,输入一个四位整数则结果为9876。请改正程序中的错误。#include void main() int a,i,aa4,t;printf(输入一个四位整数:);* *FO

29、UND *scanf(%d,a);aa0=a%10;* *FOUND *aa1=a%100%10;aa2=a%1000/100;aa3=a/1000;/* *FOUND*for(i=0;i3;i+) aai+=5; aai%=10; for(i=0;i=0;i-) printf(%d,aai);答案:=(答案 1)= sea nf(%d, &a);=(答案 2)= aa1=a%100/10;=(答案 3)= for(i=0;i=3;i+) =或 = for(i=0;i4;i+)2 程序填空题(1)以下程序的功能是输出1000以内的所有完数及其因子。说明:所谓完数是指一个整数的值等于它的因子之和

30、。例如,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+ ) 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,

31、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(i=0;i9;i+) /*space*/【?】;for(j=i+1;jaj=或 =ajak=(答案 4)=i=0;ii;i+=或 =i=0;i=i;i+=或 =i=0;ii;i+=1=或 =i=0;i=i;i+=1=或 =i=0;ii;+i=或 =i=0;9=i;+i=或 =

32、i=0;i=9;+i3 程序设计题功能:编写函数求一批数中最大值和最小值的差。(说明:因为关于函数调用的知识在第7章讲解,所以在现阶段本程序的设计可以改用一个主函数来完成。)#define N 30 #include stdlib.h#include int max_min(int a,int n) /*program*/* End */void main() int aN,i,k;for(i=0;iN;i+) ai=rand()%100;for(i=0;iN;i+) printf(%5d,ai);if(i+1)%5=0) printf(n);k=max_min(a,N); printf(th

33、e result is:%dn,k);答案:int i,max,mi n;max=min=a0;for(i=1;i max) max=ai; else if(aimin) min=ai;return(max-mi n);2.7 二维数组程序设计、实验目的(1) 掌握二维数组的定义、引用和初始化方法。(2) 掌握数组在实际问题中的应用。二、实验内容(均要求给出运行结果)1 程序改错题(1)打印出杨辉三角形(要求打印出10行),请改正程序中的错误。#include void main() int i,j;int a1010;printf(n);/*found*/for(i=1;i10;i+) a【

34、i【0=1;a【i【i=1;/* *FOUND*for(i=1;i10;i+)for(j=1;ji;j+)* *FOUND *aii=ai-1j-1+ai-1j;for(i=0;i10;i+) for(j=0;j=i;j+)printf(%5d,aij); printf(n);答案:=(答案 1)= for(i=0;i10;i+) =或 = for(i=0;i=9;i+) =(答案 2)= for(i=2;i10;i+) =或 = for(i=2;i=9;i+)=(答案 3)= aij=ai-1j-1+ai-1j;(2)利用二维数组输出如下图形。请改正程序中的错误。*#include #inc

35、lude #define N 7void main()*FOUND*int aNN;int i,j, z;for(i=0;iN;i+)for(j=0;jN;j+)*FOUND*a【ij=;z=0;for(i=0;i(N+1)/2;i+) for(j=z;jN-z;j+)* *FOUND *aij=; z=z+1; z=z-1;for(i=(N+1)/2;iN;i+) z=z-1;for(j=z;jN-z;j+)aij=*;for(i=0;iN;i+) for(j=0;jN;j+)* *FOUND *printf(%d,aij); printf(n);答案:=(答案 1)= char aNN;=

36、(答案 2)= aij=;=(答案 3)= aij=*;=(答案 4)= prin tf(%c,aij);2 程序填空题(1)以下程序产生并输出如下形式的方阵。请填空。1 2 2 2 2 2 13 1 2 2 2 1 43 3 1 2 1 4 43 3 3 1 4 4 43 3 1 5 1 4 43 1 5 5 5 1 41 5 5 5 5 5 1#include void main() int a77;int i,j;for (i=0;i7;i+)for (j=0;j7;j+)* *SPACE *if (【?】)aij=1;*SPACE*else if (ij&i+jj&i+j6)aij=3

37、;*SPACE*else if (【?】)aij=4;elseaij=5;for (i=0;i7;i+) for (j=0;j7;j+)printf(%4d,aij);* *SPACE *【?】答案:=(答案 1)=i = j | i + j = 6=(答案 2)=aij=2=(答案 3)= i6=或 =ji & i + j6=或 = ij & i + 6i & i + 6j=(答案 4)= prin tf(n)(二维数组元素的值要求是随(2)以下程序求一个二维数组中每行的最大值和每行的和 机生成的小于40的数)。#include #include #include void main() int a55,b5,c5,i,j,k,sum=0;srand(time(O);for(i=0;i5;i+)for(j=0;j5;j+) aij=rand()%40;for(i=0;i5;i+) /*sp

温馨提示

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

评论

0/150

提交评论