《C实验报告答案_2015年15156.pdf》由会员分享,可在线阅读,更多相关《C实验报告答案_2015年15156.pdf(66页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、.2.1 C 程序设计初步 一、实验目的(1)熟悉 C 语言程序的运行环境(VC+6.0)。(2)掌握 C 语言程序的上机步骤,了解运行 C 程序的方法。(3)掌握语言程序的书写格式和语言程序的结构。二、实验容(均要求给出运行结果)1程序改错题(1)以下程序实现计算 xy 的值并将结果输出。请改正程序中的错误。#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)=printf(z=%dn,z);(2)以下程序实现输入圆的半径
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)下面程序能对两个整型变量的值进行交换,请填空。#include stdio.h void main()int a=3,b=4,t;t=a;/*SPACE*/【?】;/*SPACE*/【?】;printf(a=%d,b=%dn,a,b)
3、;答案:=(答案 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-b 3程序设计题 功能:编程实现从键盘输入任意 1 个大写字母,转换成小写字母后输出。答案:#include void
4、 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);/*FOUND*/printf(对应的八进制整数是%On,n);printf(对应的十六进制整数是%Xn,n);答案:=(答案 1)=int n;.=(答案 2)=scanf(%d,&n);=(答案 3)=printf(对应的八进制整数是%on,n);(2)下列程序的功能是计算表达式 x=1/2+ab的值,请改正程序中的错误。#include stdio.h/*FOUND*/void main()int a,b;float x;scanf(%d,
6、%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 void main()/*SPACE*/char a,【?】;/*SPACE*/a=【?】;b=b;a=a-32;/*SPACE*/b=b-【?】;printf(%c,%cn%d,%dn,a,b,a,b);.答案:=(答案 1)=b =(答
7、案 2)=a=或=97 =(答案 3)=32 (2)下列程序的功能是要求输出如下结果,请填入合适的变量完善程序。b=-1 a=65535 a=65534 a=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)=c =(答案 2)=b =(答
8、案 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(请输入一个摄氏温度:);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)掌握关系运算符、逻辑运算符、条件运算符的使用方法。(2)掌握 if 语句和 switch 语句的使用方法。(3)学会调试程序,并掌握一些简单的算法。(4)掌握选择结构程序的设计技巧。二、实验容(均要求给出运行结果)1程序改错题(1)以下程序的功能是判断一个 5 位数是否为回文数,即 12321 是回文数,个位与万位相同,十位与千位相同。请改正程序中的错误。#include void main()/*FOUND*/long ge,shi,qian;wan,x;scanf(%ld,&x);./*FOUND*/wan=x%10000;qian=x%10000/1000;
10、shi=x%100/10;ge=x%10;/*FOUND*/if(ge=wan|shi=qian)printf(this number is a huiwenn);else printf(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
11、 表示。请改正程序中的错误。#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 to%cn,score,grade);答案:=(答案 1)=char grade;=(答案 2)=scanf(%d,&score);.=(答案 3)=grade=score=90?A:(score=60?B:C);2程序填空题(1)以下程序实现
12、输出 x、y、z 这 3 个数中的最大者。#include void main()int x=4,y=6,z=7;/*SPACE*/int u,【?】;if(xy)/*SPACE*/【?】;else u=y;if(uz)v=u;else v=z;printf(the max is%dn,v);答案:=(答案 1)=v =(答案 2)=u=x (2)输入某年某月某日,判断这一天是这一年的第几天。#include void main()int day,month,year,sum,leap;printf(nplease input year,month,dayn);scanf(%d,%d,%d,&
13、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;break;case 12:sum=334;break;default:prin
14、tf(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)=(答案 4)=leap=1&month2=或=leap=1&month2=或=leap=1&2month 3程序设计题 功能
15、:对某一浮点数保留 2 位小数,并对第三位小数进行四舍五入。输出 6 位小数,后4 位均为 0。(说明:因受所学知识的限制,现阶段可以只用一个主函数来完成。)#include .#include conio.h double 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;else return(i
16、nt)(h*100)/100.0;-2.4 单层循环程序设计 一、实验目的(1)掌握 while 语句、do-while 语句和 for 语句的基本使用方法。(2)掌握循环结构程序设计的一些常用算法。二、实验容(均要求给出运行结果)1程序改错题(1)以下程序实现求出 11+22+nn1000 中满足条件的最大的 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)
17、=(答案 3)=printf(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 road is%fn,sn);printf(the tenth is%f metern,hn);.答案:=(答案 1)=float sn=100.0
18、,hn=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(i%2=0)sum=sum+i;n+;printf(%6d,i);/*SPACE*/if(【?】)printf(n);printf(ntotal=%dn,sum);答案:=(
19、答案 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()int n,m;float grade,average;average=0.0;/*SPACE*/n=m=【?】;while(1)/*SPACE*/【?】(%f,&grade);if(grade0)break;n+;averag
20、e+=grade;/*SPACE*/if(grade90)【?】;m+;if(n)printf(%.2fn%dn,average/n,m);答案:=(答案 1)=0 =(答案 2)=scanf .=(答案 3)=continue 3程序设计题 功能:求一个四位数的各位数字的立方和。(说明:因为关于函数调用的知识在第 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)
21、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 void main().int i,a,n=1;/*FOUND*/while(n7)do scanf(%d,&a);/*FOUND*/while(a50);/*FOUND*/for(i=0;i
22、=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+)(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*/i
23、f(n%i=1)printf(%d*,i);/*FOUND*/n=n%i;else break;.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 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/
24、10=或=m/=10 (2)如果整数的全部因子(包括,不包括本身)之和等于;且整数的全部因子(包括,不包括本身)之和等于,则将整数和称为亲密数。求 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*/if(【?】&ab)print
25、f(%4d%4dn,a,b);答案:=(答案 1)=b+=i=或=b=b+i =(答案 2)=n+=i=或=n=n+i =(答案 3)=n=a 3程序设计题 功能:求给定正整数 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=2;i=m;i+)for(k=2;ki;k+)if
26、(i%k=0)break;if(k=i)s=s+i;return s;-2.6 一维数组程序设计 一、实验目的(1)掌握一维数组的定义、赋值、初始化及输入输出的方法。(2)掌握与数组有关的算法(重点是排序算法)。二、实验容(均要求给出运行结果)1程序改错题(1)以下程序的功能是在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。请改正程序中的错误。#include#define N 11 void main()int i,number,aN=1,2,4,6,8,9,12,15,149,156;printf(please enter an integer to insert in
27、 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-)=(答案 3)=a i+1=ai;=(答案 4)=break;(2)以下程序的功能是某个公司采用公用传递数据,数据是四位的整数,在传递过程中是
28、加密的,加密规则如下:每位数字都加上 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+)aai+=5;aai%=10;for(i=0;i=0;i-)printf(%d,aa
29、i);答案:=(答案 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+)m=i;s=0;k=0;for(j=1;jm;j+)/*SPACE*/if(【?】)s=s+j;/*SPACE
30、*/【?】=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.h void 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+)/*
31、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=或=i=0;i=9;+i 3程序设计题 功能:编写函数求一批数中最大值和最小值的差。(说明:因为关于函数调用的知识在第 7 章讲解,所以在现阶段本程序的设计可以改用一个主函数来完成。)#define N 30#include stdlib.h.#include int max_min(int a,int n)/*Program*/*End */void main(
32、)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(the result is:%dn,k);答案:-int i,max,min;max=min=a0;for(i=1;imax)max=ai;else if(aimin)min=ai;return(max-min);-2.7 二维数组程序设计 一、实验目的(1)掌握二维数组的定义、引用和初始化方法。(2)掌握数组在实际问题中的应用。二、实验容(均要求给出运行结果)1程序改错
33、题(1)打印出辉三角形(要求打印出 10 行),请改正程序中的错误。#include void main()int i,j;int a1010;printf(n);/*FOUND*/.for(i=1;i10;i+)ai0=1;aii=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;
34、i10;i+)=或=for(i=2;i=9;i+)=(答案 3)=aij=ai-1j-1+ai-1j;(2)利用二维数组输出如下图形。请改正程序中的错误。*#include#include#define N 7 void main()/*FOUND*/int aNN;int i,j,z;for(i=0;iN;i+)for(j=0;jN;j+)/*FOUND*/.aij=;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=*
35、;for(i=0;iN;i+)for(j=0;jN;j+)/*FOUND*/printf(%d,aij);printf(n);答案:=(答案 1)=char aNN;=(答案 2)=aij=;=(答案 3)=aij=*;=(答案 4)=printf(%c,aij);2程序填空题(1)以下程序产生并输出如下形式的方阵。请填空。1 2 2 2 2 2 1 3 1 2 2 2 1 4 3 3 1 2 1 4 4 3 3 3 1 4 4 4 3 3 1 5 1 4 4 3 1 5 5 5 1 4 1 5 5 5 5 5 1#include void main()int a77;.int i,j;for
36、(i=0;i7;i+)for(j=0;j7;j+)/*SPACE*/if(【?】)aij=1;/*SPACE*/else if(ij&i+jj&i+j6)aij=3;/*SPACE*/else if(【?】)aij=4;else aij=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)=printf(n)(2)以下程序求一个二维数组中每行的最大值和每行的和(二维数组元
37、素的值要随机生成的小于 40 的数)。#include#include .#include void main()int a55,b5,c5,i,j,k,sum=0;srand(time(0);for(i=0;i5;i+)for(j=0;j5;j+)aij=rand()%40;for(i=0;i5;i+)/*SPACE*/k=ai0;【?】;for(j=0;j5;j+)/*SPACE*/if(【?】)k=aij;sum=sum+aij;bi=k;/*SPACE*/ci=【?】;for(i=0;i5;i+)for(j=0;j5;j+)/*SPACE*/printf(%5d,【?】);printf
38、(%5d%5d,bi,ci);printf(n);答案:=(答案 1)=sum=0 =(答案 2)=kk =(答案 3)=sum =(答案 4)=aij 3程序设计题 功能:求 5 行 5 列矩阵的主、副对角线上元素之和。注意,两条对角线相交的元素只加一次。例如,主函数中给出的矩阵的两条对角线的和为 45。(说明:因为关于函数调用的知.识在第 7 章讲解,所以在现阶段本程序的设计可以改用一个主函数来完成。)#include#define M 5 int fun(int aMM)/*Program*/*End */void main()int aMM=1,3,5,7,9,2,4,6,8,10,2
39、,3,4,5,6,4,5,6,7,8,1,3,4,5,6;int y;y=fun(a);printf(s=%dn,y);答案:-int s=0;int i,j;for(i=0;iM;i+)s=s+aii+aiM-1-i;s=s-a(M-1)/2(M-1)/2;return s;-2.8 字符数组程序设计 一、实验目的(1)进一步掌握数组(重点是一维数组)的应用。(2)掌握字符数组和字符串函数的使用。二、实验容(均要求给出运行结果)1程序改错题(1)以下程序实现从字符串 str 中删除第 i 个字符开始的连续 n 个字符(注意:str0代表字符串的第一个字符)。请改正程序中的错误。#includ
40、e /*FOUND*/#include void main()char str81;int i,n;printf(请输入字符串 str 的值:n);.scanf(%s,str);printf(你输入的字符串 str 是:%sn,str);printf(请输入删除位置 i 和待删字符个数 n 的值:n);scanf(%d%d,&i,&n);while(i+n-1strlen(str)printf(删除位置 i 和待删字符个数 n 的值错!请重新输入 i 和 n 的值n);scanf(%d%d,&i,&n);/*FOUND*/while(stri+n)stri-1=stri+n-1;i+;/*FO
41、UND*/stri=0;printf(删除后的字符串 str 是:%sn,str);答案:=(答案 1)=#include =(答案 2)=while(stri+n-1)=(答案 3)=stri-1=0;(2)下面程序的功能是:求 3 个字符串(每串不超过 20 个字符)中的最大者。请改正程序中的错误。#include#include void main()char s20,string320;int i;for(i=0;istring10)strcpy(s,string0);else strcpy(s,string1);if(strcmp(string2,s)0)strcpy(s,strin
42、g2);/*FOUND*/printf(s);答案:.=(答案 1)=gets(stringi);=(答案 2)=if(strcmp(string0,string1)0)=(答案 3)=puts(s);2程序填空题(1)删除字符串中的指定字符,字符串和要删除的字符均由键盘输入。请填空。#include void main()char str80,ch;/*SPACE*/int i,k=【?】;gets(str);/*SPACE*/ch=【?】;for(i=0;stri!=0;i+)if(stri!=ch)/*SPACE*/【?】;k+;/*SPACE*/【?】;puts(str);答案:=(答
43、案 1)=0 =(答案 2)=getchar()=(答案 3)=strk=stri=或=*(str+k)=*(str+i)=或=strk=*(str+i)=或=*(str+k)=stri.=(答案 4)=strk=0=或=*(str+k)=0=或=strk=NULL=或=strk=0=或=*(str+k)=0=或=*(str+k)=NULL (2)以下程序将字符串 s 中的数字字符放入 d 数组中,最后输出 d 中的字符串。例如,输入字符串 abcl23edf456,执行程序后输出:123456。#include#include void main()char s80,d80;int i,j;
44、gets(s);/*SPACE*/for(i=j=0;【?】;i+)/*SPACE*/if(【?】)dj=si;j+;dj=0;puts(d);答案:=(答案 1)=si!=0=或=i=0&si=9 3程序设计题 功能:求一个给定字符串中的字母的个数。(说明:因为关于函数调用的知识在第 7 章讲解,所以在现阶段本程序的设计可以改用一个主函数来完成。).#include int fun(char s)/*Program*/*End */void main()char str=Best wishes for you!;int k;k=fun(str);printf(k=%dn,k);答案:-int
45、 i,k=0;for(i=0;si!=0;i+)if(si=a&si=A&si=Z)k+;return k;-2.9 函数调用程序设计 一、实验目的(1)掌握函数的定义方法。(2)掌握函数的声明与调用方法。(3)掌握函数实参与形参的对应关系以及“值传递”的方式。(4)掌握函数的嵌套调用。二、实验容(均要求给出运行结果)1程序改错题(1)求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积。例如,输入圆的半径值 19.527,输出 s=598.950017。请改正程序中的错误。#include /*FOUND*/double fun(r)double s;/*FOUND*/s=
46、1/2*3.14159*r*r;/*FOUND*/return r;void main()float x;.printf(Enter x:);scanf(%f,&x);printf(s=%fn,fun(x);答案:=(答案 1)=float fun(float r)=或=double fun(float r)=或=double fun(double r)=(答案 2)=s=1.0/2*3.14159*r*r;=(答案 3)=return s;(2)判断 m 是否为素数,若是返回 1,否则返回 0。请改正程序中的错误。#include /*FOUND*/int fun(int n)int i,k
47、=1;if(m=1)k=0;/*FOUND*/for(i=1;im;i+)/*FOUND*/if(m%i=0)k=0;/*FOUND*/return m;void main()int m,k=0;for(m=1;m100;m+)if(fun(m)=1)printf(%4d,m);k+;if(k%5=0)printf(n);答案:=(答案 1)=int fun(int m)=或=fun(int m).=(答案 2)=for(i=2;ii;i+)=或=for(i=2;i=i;i+)=(答案 3)=if(m%i=0)k=0;=(答案 4)=return k;2程序填空题(1)计算并输出 500 以最
48、大的 10 个能被 13 或 17 整除的自然数之和。请填空。#include int fun(int k)int m=0;/*SPACE*/int mc=【?】;/*SPACE*/while(k=2&mc【?】)/*SPACE*/if(k%13=0|【?】)m=m+k;mc+;k-;return m;void main()/*SPACE*/printf(%dn,【?】);答案:=(答案 1)=0 =(答案 2)=10 .=(答案 3)=k%17 =0=或=!(k%17)=或=k/17*17=k =(答案 4)=fun(500)(2)下面程序的功能是计算 sum1+(1+1/2)+(1+1/2
49、+1/3)+(1+1/2+1/n)的值。例如,当 n3 时,sum4.3333333。请填空。#include double f(int n)int i;double s;s=0;for(i=1;i=n;i+)/*SPACE*/【?】;return s;void main()int i,m=3;double sum=0;for(i=1;i=m;i+)/*SPACE*/【?】;/*SPACE*/printf(【?】n,sum);答案:=(答案 1)=s+=1.0/i=或=s=s+1.0/i =(答案 2)=sum+=f(i)=或=sum=sum+f(i)=(答案 3)=%f.3程序设计题 功能:
50、找出一个大于给定整数且紧随这个整数的素数,并作为函数值返回。#include#include conio.h int fun(int n)/*Program*/*End */void main()int m;printf(Enter m:);scanf(%d,&m);printf(nThe result is%dn,fun(m);答案:-int i,k;for(i=n+1;i+)for(k=2;ki;k+)if(i%k=0)break;if(k=i)return(i);-2.10 递归函数和数组作为参数程序设计 一、实验目的(1)掌握函数的递归调用。(2)了解数组名作为函数参数的用法以及“地址