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

下载本文档

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

文档简介

1、2.1 C程序设计初步、实验目的(1) 熟悉C语言程序的运行环境(VC+ 6.0)。(2) 掌握C语言程序的上机步骤,了解运行C程序的方法。(3) 掌握C语言程序的书写格式和C语言程序的结构。、实验容(均要求给出运行结果)1 程序改错题(1) 以下程序实现计算xx y的值并将结果输出。请改正程序中的错误。#include "stdio.h"void 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(

2、"z=%dn", z);(2) 以下程序实现输入圆的半径,求圆的周长。请改正程序中的错误。#include "stdio.h"void 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) 下面程序能对两个整型变量的

3、值进行交换,请填空。#include "stdio.h"void main() int a=3,b=4,t;t=a;/* *SPACE*【?】/* *SPACE*【?】; printf("a=%d,b=%dn",a,b);答案:=(答案 1)= a=b=(答案 2)=b=t(2) 下面程序不用第三个变量,实现两个数的对调操作。#include <stdio.h>void main() int a,b;scanf("%d %d", &a,&b);printf("a=%d,b=%dn",a,

4、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个大写字母,转换成小写字母后输出。答案:#include <stdio.h>void main() char c,d;scanf("%c", &c);d=c+32 ;printf("%c,%cn",c,d);2.2顺序结构程序设计、实验

5、目的(1) 掌握赋值语句的功能和使用方法。(2) 掌握C语言的数据类型,熟悉不同类型变量的定义及赋值的方法。(3) 学会使用C语言的有关算术运算符,以及包含这些运算符的表达式。(4) 掌握简单数据类型的输入输出方法,能正确使用格式控制符。(5) 学习编制简单的 C程序。二、实验容(均要求给出运行结果)1 程序改错题例如,输(1) 以下程序输入一个十进制整数,输出与之对应的八进制数与十六进制数。入31,输出37(八进制)和1F(十六进制)。请改正程序中的错误。#include <stdio.h>void main()* *FOUND *n;printf("输入一个十进制整数

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

7、in() 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)= prin tf("x=%fn",x);2 程序填空题(1) 请填写以下程序,要求输出结果如下:A , B65, 66#include<stdio.h> void main() /*

8、space*/char a,【?】;/*space*/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 <stdio.h> void main()*SPACE*int b=-1,【?】unsigned short int a;*

9、 *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)= c=(答案 2)= b=(答案 3)=a(c=5)3 程序设计题功能:输入摄氏温度c,求华氏温度f。转换公式为f=9/5c+32 ,输出结果取两位小数。 (说明:因为关于函数调用的知识在第7章讲解,所以在现阶段本程序的设计可以改用一个主函数来完成。)#in

10、elude <stdio.h>double fun(double m)*Program*End'k'k'k'k'k'k'k'kvoid 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 选择结构程序设计、实验目的(1) 掌握关系运算符、逻辑运算符、条件运算符

11、的使用方法。(2) 掌握if语句和switch语句的使用方法。(3) 学会调试程序,并掌握一些简单的算法。(4) 掌握选择结构程序的设计技巧。、实验容(均要求给出运行结果)1 程序改错题(1) 以下程序的功能是判断一个5位数是否为回文数,即12321是回文数,个位与万位相同,十位与千位相同。请改正程序中的错误。#include<stdio.h>void main() /*found*/long ge,shi,qian;wan,x;scanf("%ld", &x);wan=x%10000;qian=x%10000/1000; shi=x%100/10;ge

12、=x%10;/* *FOUND'k'k'k'k'k'k'k'kif (ge=wan|shi=qian)printf("this number is a huiwen'n"); elseprintf("this number is not a huiwen'n");答案:=(答案 1)= long ge,shi,qia n,wan,x;=(答案 2)= wa n=x/10000;=(答案 3)=if (ge=wa n&&shi=qia n) =或=if (shi

13、=qia n&&ge=wa n)(2) 利用条件运算符的嵌套来完成此题:学习成绩为90分以上(包括90分)的学生用A表示,6089分的用B表示,60分以下的用C表示。请改正程序中的错误。#include <stdio.h>void main() int score;/* *FOUND'k'k'k'k'k'k'k'kchar *grade;printf("please input a score'n");/* *FOUND'k'k'k'k'

14、;k'k'k'kscanf("%d",score);/* *FOUND'k'k'k'k'k'k'k'kgrade=score>=90?'A'(score>=60?'B':C); printf("%d belongs to %cn",score,grade);答案:=(答案 1)= char grade;=(答案 2)= sca nf("%d", &score);(答案3)grade=score&g

15、t;=90?'A':(score>=60?'B':C);2 程序填空题(1)以下程序实现输出x、y、z这3个数中的最大者。#include<stdio.h>void main() int x = 4, y = 6,z = 7;/*space*/int u ,【?】;if(x>y)/*space*/【?】;elseu = y; if(u>z)v = u;elsev=z;printf("the max is %dn",v);答案:(答案1)(答案2)u=x(2)输入某年某月某日,判断这一天是这一年的第几天。#incl

16、ude <stdio.h>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:su

17、m=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;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.

18、",sum);答案:=(答案 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 &&mon th>2=或 =leap = 1 && mon th>2=或 =leap = 1 && 2<month3 程序设计题功能:对某一浮点数保留2位小数,并对第三位小数进行四舍五入。输出6位小数

19、,后4位均为0。(说明:因受所学知识的限制,现阶段可以只用一个主函数来完成。)#include <stdio.h>#include "conio.h"double fun(float h)*Program*End'k'k'k'k'k'k'k'kvoid main() float m;printf("Enter m:"); scanf("%f", & m);printf("nThe result is %fn", fun(m); 答案

20、:int 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) 掌握循环结构程序设计的一些常用算法。二、实验容(均要求给出运行结果)1 程序改错题(1)以下程序实现求出1X 1+2X 2+nxnw 1000中满足条件的最大的#include <stdio.h>void main() int n,s;/*found*/s=n=0;/*foun

21、d*/while(s>1000) +n; 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) 一个球从100 m高度自由落下,每次落地后反跳回原高度的一半,再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?#include <stdio.h>void main() /*found*/float sn=100.0;hn=sn/2; int n;/*

22、found*/for(n=2;n<10;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,h n=sn/2;=(答案 2)= for( n=2 ;n <=10; n+) =或 = for( n=2; n<11; n+)=(答案 3)= hn=hn/2;2 程序填空题(1)以每行5个数来输出300以能被7或17整除的偶数,并

23、求出其和。请填空。#include <stdio.h>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<300=或 =300>=i=或

24、 =300>i=(答案 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 <stdio.h>void main () int n,m;float grade,average;average=0.0;* *SPACE *n=m= ?】while(1)*SPACE*【?】("%f",&gra

25、de);if(grade<0)break;n+;average+=grade;* *SPACE *if(grade<90) ?】;m+;if(n)printf("%.2fn%dn",average/n,m);答案:=(答案 1)=0(答案2)scanf=(答案 3)= con ti nue3 程序设计题功能:求一个四位数的各位数字的立方和。(说明:因为关于函数调用的知识在第7章讲解,所以在现阶段本程序的设计可以改用一个主函数来完成。)#include <stdio.h>int fun(int n)*Program* End *void main()

26、int k;k=fun(1234); printf("k=%dn",k);答案:int d,s=0;while (n >0)d=n%10;s+=d*d*d;n/=10;return s;2.5 嵌套循环程序设计一、实验目的(1) 掌握循环嵌套的程序设计方法。(2) 掌握break语句和continue语句的使用方法。(3) 掌握结构化程序设计的基本技巧和方法。二、实验容(均要求给出运行结果)1 程序改错题(1)以下程序的功能是循环读取7个整数(150),每读取一个整数存入变量a,程序打印出a个*。#include <stdio.h>void main()

27、int i,a,n=1;do scanf("%d", &a);/*found*/*found*/ while(n<7)while(a<1 &&a>50);/*found*/ for(i=0;i<=a;i+)printf("*"); printf("n"); n+;答案:(答案1)while (n<=7)=或while( n<8)(答案2)while(a<1|a>50); =或 = while(a>50|a<1);(答案3)for(i=1;i<=a

28、;i+)(2)以下程序的功能是将一个正整数分解质因数。例如,输入90,打印出90=2*3*3*5。#include <stdio.h>void main() int n,i;printf("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; e

29、lsebreak; printf("%dn",n);答案:=(答案 1)= while( n!=i)=(答案 2)= if(n %i=0)=或 = if (!(n%i)=(答案 3)= n=n/i;2 程序填空题26,数位上数(1)输出1到100之间每位数的乘积大于每位数的和的数。例如,数字 字的乘积12大于数字之和&#include <stdio.h>void main() int n,k=1,s=0,m;for(n=1;n<=100;n+)k=1;s=0;/*space*/【?】;/*space*/while(【?】) k*=m%10;s+=m

30、%10;/*space*/【?】; if(k>s) printf("%d ",n);答案:(答案1)m=n=(答案 2)=m>0=或 =0<m=(答案 3)= m=m/10=或 =m/=10(2)如果整数A的全部因子(包括1,不包括A本身)之和等于E;且整数E的全部因子(包括1,不包括E本身)之和等于A,则将整数A和E称为亲密数。求3000以的全部亲密数。请填空。#include <stdio.h>void maln() int a, i, b, n ;printf("Friendly-numbers pair samller tha

31、n 3000:n");for(a=1 ; a<3000 ; 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(【?】&& a<b) printf("%4d4dn",a,b);答案:=(答案 1)=b+=i=或 =b=b+i=(答案 2)= n+=i=或 =n=n+i=(答案 3)= n = a3 程序设计题功能:求给定正整数 m以的素数之和。例如,

32、当m=20时,函数值为77。(说明:因为关于函数调用的知识在第7章讲解,所以在现阶段本程序的设计可以改用一个主函数来完成。)#include <stdio.h>int fun(int m)*ProgramEnd'k'k'k'k'k'k'k'k 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;k<i;k+)if(i%k=0)break;if(k=i)s=s+i;ret

33、urn s;2.6 一维数组程序设计、实验目的(1) 掌握一维数组的定义、赋值、初始化及输入输出的方法。(2) 掌握与数组有关的算法(重点是排序算法)。、实验容(均要求给出运行结果)1 程序改错题(1)以下程序的功能是在一个已按升序排列的数组中插入一个数,插入后,数组元素仍 按升序排列。请改正程序中的错误。#include <stdio.h>#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 ar

34、ray:n");/* *FOUND'k'k'k'k'k'k'k'kscanf("%d",&number) printf("The original array:n"); for(i=0;i<N-1;i+)printf("%5d",ai);/* *FOUND for(i=N-1;i>=0;i-)if(number<=ai)/*found*/ai=ai-1;else ai+1=number;/*found*/exit;if(number&l

35、t;a0) a0=number; printf("The result array:n");for(i=0;i<N;i+) printf("%5d",ai);printf("n");答案:=(答案 1)= sea nf("%d",&n umber);=(答案 2)= for(i=N-2;i>=0;i-) =或 = for(i=N-2;0<=i;i-)=(答案 3)= a i + 1 =ai;=(答案 4)= break;(2)以下程序的功能是某个公司采用公用传递数据,数据是四位的整数,在传

36、递过程中是加密的,加密规则如下:每位数字都加上5,然后除以10的余数代替该位数字。再将新生成数据的第一位和第四位交换,第二位和第三位交换。例如,输入一个四位整数1234,则结果为9876。请改正程序中的错误。#inelude <stdio.h>void main() int a,i,aa4,t;");printf("输入一个四位整数:/*found*/seanf("%d",a); aa0=a%10;/*found*/aa1=a%100%10; aa2=a%1000/100;/* *FOUNDfor(i=0;i<3;i+) aai+=5;

37、 aai%=10; for(i=0;i<=3/2;i+) t=aai; aai=aa3-i; aa3-i=t;for(i=3;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;i<4;i+)(1)以下程序的功能是输出 数的值等于它的因子之和。例如, 填空。2 程序填空题1000以的所有完数及其因子。说明:所谓完数是指一个整6的因子是1、2、3,

38、而6=1+2+3,故6是一个完数。请#include <stdio.h>void main() int i,j,m,s,k,a100;for(i=1 ; i<=1000 ; i+ ) m=i ;s=0 ;k=0 ;for(j=1 ; j<m ; 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=(答案

39、2)=ak+=(答案 3)=j<k=或 =k>j(2)以下程序产生10个30,90区间上的随机整数,然后对其用选择法进行由小到大的 排序。请填空。#include <stdio.h> #include <stdlib.h> #include "time.h" void main() /*space*/【?】;int i,j,k;int a10; srand(time(0);for(i=0;i<10;i+)ai= rand()%60+30;for(i=0;i<9;i+) /*space*/【?】;for(j=i+1;j<1

40、0;j+) /*space*/ if(【?】)k=j;if(k!=i) t=ak;ak=ai; ai=t;/*space*/for(【?】)printf("%5d",ai); printf("n");答案:=(答案 1)= int t=(答案 2)= k=i=(答案 3)= ak>aj=或 = aj<ak=(答案 4)=i=0;i<10;i+=或 =i=0;10>i;i+=或 =i=0;i<=9;i+=1=或 =i=0;9>=i;i+=或 =i=0;i<10;i+=1=或 =i=0;10>i;i+=1=或

41、=i=0;i<=9;i+=或 =i=0;9>=i;i+=1=或 =i=0;i<10;+i=或 =i=0;10>i;+i=或 =i=0;9>=i;+i=或 =i=0;i<=9;+i3 程序设计题功能:编写函数求一批数中最大值和最小值的差。(说明:因为关于函数调用的知识在第7章讲解,所以在现阶段本程序的设计可以改用一个主函数来完成。)#define N 30 #include "stdlib.h"#include <stdio.h>int max_min(int a,int n) /*program*/* End */void m

42、ain() int aN,i,k;for(i=0;i<N;i+) ai=rand()%100;for(i=0;i<N;i+) printf("%5d",ai);if(i+1)%5=0) printf("n"); k=max_min(a,N); printf("the result is:%dn",k);答案:int i,max,mi n;max=min=a0;for(i=1;i <n ;i+) if(ai>max) max=ai; else if(ai<min) min=ai;return(max-mi

43、n);2.7 二维数组程序设计、实验目的(1) 掌握二维数组的定义、引用和初始化方法。(2) 掌握数组在实际问题中的应用。、实验容(均要求给出运行结果)1 程序改错题(1)打印出辉三角形(要求打印出10行),请改正程序中的错误。#include <stdio.h>void main() int i,j;int a1010;printf("n");/* *FOUND*for(i=1;i<10;i+) a【i【0=1;a【i【i=1;/* *FOUNDfor(i=1;i<10;i+)for(j=1;j<i;j+)* *FOUND *aii=ai-1

44、j-1+ai-1j;for(i=0;i<10;i+) for(j=0;j<=i;j+)printf("%5d",aij); printf("n");答案:=(答案 1)= for(i=0;i<10;i+) =或 = for(i=0;i<=9;i+) =(答案 2)= for(i=2;i<10;i+) =或 = for(i=2;i<=9;i+) =(答案 3)= aij=ai-1j-1+ai-1j;(2)利用二维数组输出如下图形。请改正程序中的错误。*#include <stdio.h>#include &l

45、t;conio.h>#define N 7void main()*FOUND*int aNN;int i,j, z;for(i=0;i<N;i+)for(j=0;j<N;j+)*FOUND*z=0;for(i=0;i<(N+1)/2;i+) for(j=z;j<N-z;j+)aij='' z=z+1; z=z-1; for(i=(N+1)/2;i<N;i+) z=z-1;for(j=z;j<N-z;j+)aij='*' for(i=0;i<N;i+) for(j=0;j<N;j+)* *FOUND *prin

46、tf("%d",aij); printf("n");答案:=(答案 1)= char aNN;=(答案 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 <stdio.h>voi

47、d main() int a77;int i,j;for (i=0;i<7;i+)for (j=0;j<7;j+)if (【?】)aij=1;*SPACE*else if (i<j&&i+j<6)【?】else if (i>j&&i+j<6)aij=3;*SPACE*else if (【?】)aij=4; elseaij=5;for (i=0;i<7;i+) for (j=0;j<7;j+)printf("%4d",aij);* *SPACE *【?】答案:=(答案 1)=i = j | i +

48、 j = 6=(答案 2)=aij=2=(答案 3)=i<j && i + j>6=或 =j>i && i + j>6=或 =i<j && i + 6<j=或 =j>i && i + 6<j=(答案 4)=prin tf("n")(二维数组元素的值要随机生(2)以下程序求一个二维数组中每行的最大值和每行的和成的小于40的数)。#include <stdio.h>#include <time.h>#include <stdlib.h&g

49、t;void main() int a55,b5,c5,i,j,k,sum=0;srand(time(0);for(i=0;i<5;i+)for(j=0;j<5;j+) aij=rand()%40;for(i=0;i<5;i+) /*space*/k=ai0;【?】;for(j=0;j<5;j+) /*space*/if(【?】)k=aij;sum=sum+aij;bi=k;/*space*/ ci=【?】; for(i=0;i<5;i+) for(j=0;j<5;j+)/*space*/printf("%5d", 【?】);printf("%5d%5d",bi,ci); printf("n");答案

温馨提示

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

评论

0/150

提交评论