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

下载本文档

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

文档简介

1、2.1 C程序设计初步一、实验目的(1) 熟悉C语言程序的运行环境(VC+ 6.0)。(2) 掌握C语言程序的上机步骤,了解运行C程序的方法。(3) 掌握语言程序的书写格式和语言程序的结构。 二、实验内容(均要求给出运行结果)1程序改错题(1) 以下程序实现计算x×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)=print

2、f("z=%dn", z);(2) 以下程序实现输入圆的半径,求圆的周长。请改正程序中的错误。#include "stdio.h"void main() int r;float l;printf("Enter r:");scanf("%d", &r);/*FOUND*/l=2r/*FOUND*/printf("l=%dn",l);答案:=(答案1)=l=2*3.14*r;=(答案2)=printf("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,b);/*

4、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程序设计题功能:编程实现从键盘输入任意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); 答案:=(答案1)=int n;=(答案2)=scanf("%d",&n);=(答案3)=printf("对应的八进制整数是%on",n);(2) 下列程序的功能是计算表达式x=1/2+的值,请改正程序中的错误。#include "stdio.h"/*FOUND*

7、/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,B 65,66#include<stdio.h>void main() /*SPAC

8、E*/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=65535 a=65534 a=30 b=6 c=5#include <stdio.h>void main() /*SPACE*/int b=-1,【?】;unsigned short int a;/*S

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

10、 <stdio.h>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 选择结构程序设计一、实验目的(1) 掌握关系运算符、逻辑运算符、条件运算符的使用方法。(2) 掌握if语句和switch语句的使用方法。(3) 学会

11、调试程序,并掌握一些简单的算法。(4) 掌握选择结构程序的设计技巧。二、实验内容(均要求给出运行结果)1程序改错题(1) 以下程序的功能是判断一个5位数是否为回文数,即12321是回文数,个位与万位相同,十位与千位相同。请改正程序中的错误。#include<stdio.h>void 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

12、=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=wan&&shi=qian)=或=if (shi=qian&&ge=wan)(2) 利用条件运算符的嵌套来完成此题:学习成绩为90分以上(包括90分)的学生用A表示,6089分的用B表示,60分以下的用C表示。请改正程序中的错误

13、。#include <stdio.h>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 to %cn",score,grade);答案:=(答案1)=char grade;=(答案

14、2)=scanf("%d",&score);=(答案3)=grade=score>=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*/ 【?】;else u = y;if(u>z)v = u; else v=z;printf("

15、;the max is %dn",v );答案:=(答案1)=v=(答案2)=u=x(2) 输入某年某月某日,判断这一天是这一年的第几天。#include <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;c

16、ase 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;break;case 12:sum=334;break;default:printf("data error");break;/*SPACE*/【?】;/*SPACE*/if(year%400=0|【?】

17、)leap=1;elseleap=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)=(答案4)=leap=1&&month>2=或=leap = 1 && month>2=或=leap = 1 &

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

19、quot;, 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) 掌握循环结构程序设计的一些常用算法。二、实验内容(均要求给出运行结果)1程序改错题(1) 以下程序实现求出1×1+2×2+n×n1000中满足条件的最大的n。#include <stdio.h>void main(

20、) int n,s;/*FOUND*/s=n=0;/*FOUND*/while(s>1000) +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次落地时,共经过多少米?第10次反弹多高?#include <stdio.h>void main() /*FOUND*/float sn

21、=100.0;hn=sn/2;int n;/*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,hn=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

22、整除的偶数,并求出其和。请填空。#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

23、=或=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",&grade);if

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

25、t 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

26、() int i,a,n=1;/*FOUND*/while(n<7) do scanf("%d",&a);/*FOUND*/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<=

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

28、reak;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大于数字之和8。#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%10;/*SPACE*/【

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

30、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("%4d%4dn",a,b) ;答案:=(答案1)=b+=i=或=b=b+i=(答案2)=n+=i=或=n=n+i=(答案3)=n = a3程序设计题功能:求给定正整数m以内的素数之和。例如,当m=20时,函数值为77。(说明:因为关

31、于函数调用的知识在第7章讲解,所以在现阶段本程序的设计可以改用一个主函数来完成。)#include <stdio.h>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;k<i;k+) if(i%k=0)break; if(k=i)s=s+i; return s;-2.6 一维数组程序设计一、实验目的(1) 掌握一维数组的定义、赋值、初始化及输入输出的方法

32、。(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 array:n");/*FOUND*/scanf("%d",&nu

33、mber) printf("The original array:n");for(i=0;i<N-1;i+)printf("%5d",ai);printf("n");/*FOUND*/for(i=N-1;i>=0;i-)if(number<=ai)/*FOUND*/ai=ai-1;else ai+1=number;/*FOUND*/exit;if(number<a0) a0=number;printf("The result array:n");for(i=0;i<N;i+)print

34、f("%5d",ai);printf("n");答案:=(答案1)=scanf("%d",&number);=(答案2)=for(i=N-2;i>=0;i-)=或=for(i=N-2;0<=i;i-)=(答案3)=a i + 1 =ai;=(答案4)=break;(2) 以下程序的功能是某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后除以10的余数代替该位数字。再将新生成数据的第一位和第四位交换,第二位和第三位交换。例如,输入一个四位整数1234,则结果为9

35、876。请改正程序中的错误。#include <stdio.h>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;i<3;i+) aai+=5;aai%=10;for(i=0;i<=3/2;i+) t=aai;aai=aa3-i;aa3-i=t;for(i=3;i>=0;i-)printf(&

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

37、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=(答案2)=ak+=(答案3)=j<k=或=k>j(2) 以下程序产生10个30,90区间上的随机整数,然后对其用选择法进行由小到大的排序。请填空。#includ

38、e <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<10;j+)/*SPACE*/if(【?】) k=j;if(k!=i) t=ak;ak=ai;ai=t; /*SPACE*/for(【?】 )printf("%5d&quo

39、t;,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=或=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程序设

40、计题功能:编写函数求一批数中最大值和最小值的差。(说明:因为关于函数调用的知识在第7章讲解,所以在现阶段本程序的设计可以改用一个主函数来完成。)#define N 30#include "stdlib.h"#include <stdio.h>int max_min(int a,int n) /*Program*/* End */void main() 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) print

41、f("n");k=max_min(a,N);printf("the result is:%dn",k);答案:-int i,max,min; max=min=a0; for(i=1;i<n;i+) if(ai>max) max=ai; else if(ai<min) min=ai; return(max-min);-2.7 二维数组程序设计一、实验目的(1) 掌握二维数组的定义、引用和初始化方法。(2) 掌握数组在实际问题中的应用。二、实验内容(均要求给出运行结果)1程序改错题(1) 打印出杨辉三角形(要求打印出10行),请改正程序中的

42、错误。#include <stdio.h>void main() int i,j;int a1010;printf("n");/*FOUND*/for(i=1;i<10;i+) ai0=1;aii=1;/*FOUND*/for(i=1;i<10;i+)for(j=1;j<i;j+)/*FOUND*/aii=ai-1j-1+ai-1j;for(i=0;i<10;i+) for(j=0;j<=i;j+)printf("%5d",aij);printf("n");答案:=(答案1)=for(i=0;

43、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 <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*/aij=;z=0;for(i=0;i<(N+1)/2;i+) for(j=z;j<N-z;j+)/*FOUND*/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='

温馨提示

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

评论

0/150

提交评论