编写程序,用户自定义一个函数,parsefloat函数 min(parsefloat函数 b,parsefloat函数 c)输入三个实数,

豆丁微信公众号
君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
C语言程序设计及实验指导练习及习题参考答案(8--10)
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口用调用两个函数来实现从键盘输入三个整数求三个整数最大值和最小值_百度知道
用调用两个函数来实现从键盘输入三个整数求三个整数最大值和最小值
我有更好的答案
#include&stdio.h&float max(float x,float y,float z){
t=y; if(z&t)
t=z; }float min(float x,float y,float z){
t=y; if(z&t)
t=z; }int main(){ float a,b,c,mx, printf(&Input a b c: &); scanf(&%f%f%f&,&a,&b,&c); mx=max(a,b,c); mn=min(a,b,c); printf(&max=%.2f, min=%.2f\n&,mx,mn); return 0;}
采纳率:64%
为您推荐:
其他类似问题
键盘输入的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。服务器安全狗防护验证页面网站访问认证,点击链接后将跳转到访问页面第一章 基础知识 一.填空 1. 每个 C 程序都必须有且仅有一个________ 函数。2. C 语言程序开发到执行通常要经过 6 个阶段即编辑、预处理、________、 链接 、加载 和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定: “计算机程序是按照具体要求产生的适合于计算机处理的_________” 。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类 。 6. C 语言是由________组成的。 7. C 语言的函数可分为主函数 main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和 函数体。 9. 编译是将 C 语言所编写的源程序________成机器代码, 也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来, 体现了编程者的控制思想和对计算机执行操 作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作 ,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动 化(OA) 、管理信息系统(MIS) 、人工智能、电子商务、网络互联等等应用而开发的软件程 序,统称为_________。11. 机器语言是以__________形式表示的机器基本指令的集合, 是计算机系统唯一不需要翻 译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作 对 象,也可以用标号和符号来代替地址、常量和变量。 13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。14. C 程序的执行均是由执行_________开始。 15. 函数体即为包含在{ }内的部分。它分为________和为完成功能任务由若干个 C 语句 组成的执行部分。16. C 语言程序中一条简单语句是以________字符作为结束符的。17. C 语言是结构化、________的程序设计语言。18. 由于计算机硬件不能直接识别高级语言中的语句, 因此, 必须经过 “_______程序” , 将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。 所 以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20. 第一个系统体现结构化程序设计思想的教学工具语言是_______语言。解答: 1. main() 2. 编译 3. 开发 4. 指令序列 5. 高级语言 6. 函数 7. 自定义函数 8. 函数首部 9. 翻译 10. 应用软件 11. 二进制代码 12. 助记符 13. # 14. main 函数 15. 声明部分 16. ;(或分号) 17. 模块化 18. 翻译 19. 执行速度 20. PASCAL 二.阅读程序写结果 解答: 三.补充程序 解答: 四.改错题 解答: 五.编程一 解答: 六.编程二 解答: 第二章 常量、变量和表达式 一.填空 1. 以 16 位计算机为例,若定义 则变量 a 占______个字节的内存空间。 2. 以 16 位计算机为例,若定义 则变量 a 占______ 个字节的内存空间。3. 以 16 位计算机为例,若定义 则变量 a 占 ______ 个字节的内存空间。 4. 在______ 位机,int 型占 4 个字节。 、空类型5. C 语言的数据类型有:基本数据类型、构造数据类型、枚举类型、______ 。6. 在 C 语言中,基本数据类型有:______ 7. 整型常量 046 转换为十进制数等于______ 8. 整型常量 054 转换为十进制数等于______ 。 。。9. 整型常量 0x125 转换为十进制数等于 ______。 10. 整型常量 0x7C 转换为十进制数等于 11. 整型常量 39 转换为八进制等于 ______。 ______。 ______。12. 实数 473.468 写成规范化指数形式,则应为13. 实数 0.0453 写成规范化指数形式,则应为 ______。 14. 将 0x123 转换为二进制等于______。15. 字符’A’表示成十六进制等于 ______。 16. 在 C 语言中,称代表常量的标识符为 ______。 17. C语言中是用编译预处理命令______ 来定义符号常量 ,18. 在 C 语言中,以反斜杠符(\)开头,后跟字符的字符序列,称之为 ______ 主 要用来表示控制及不可见的字符或者一些图形符号 19. 语句 printf(&\106&)执行的结果输出是 ______。 20. 语句 printf(“b”)执行的结果输出是______。 21. 语句 printf(“\\b”)执行的结果输出是 ______。 22. 语句 printf(&\102&)执行的结果输出是 ______。 23. 若有 char ch1; ch1='a'+4; 则语句 printf(&%c&,x)的输出结果为 ______。 24. 字符串常量“Hello, everyone! ”占据的内存空间为______ 25. 字符串常量“Hello,Bob!”占据的内存空间为 ______ 26. 十进制整型常量由 0~9 个数据组成,但不能以______ 27. 十六进制常量由 0~9 和______ 28. unsigned long 类型常量通常以______ 29. 实型常量通常有小数形式和______ 30. C语言中是用编译预处理命令______ 组成 为后缀 两种表达方式 来包含其他源文件 个字节个字节 开始,没有小数部分31. 为了表示字符串的结束,系统自动在字符串的最后加一个______,但不被输出32. C 语言中,其值可被改变的量称为变量,它具有三个基本要素:变量名、______ 和变量值 33. C 语言规定,变量的标识符只能由字母、数字和下划线组成,且不能以______ 头。 开 34. 在 16 位机中,sizeof(“hello\n”)等于 ______。 35. 在 16 位机中,printf(“\“hello\” ”)等于 ______。 36. 字符变量在内存中占用______ 个字节的存储空间。 ______。 ______。37. 若有定义 int x=27, y=6; 则表达式 x/y 的值为 38. 若有定义 int x=47, y=8; 则表达式 x%y 的值为39. 若有定义 char ch1='A',ch2,ch3; 执行 ch2=ch1++; ch3=++ch1; printf(&ch1=%c, ch2=% c&,ch1,ch2); 则输出为 ______。 40. 若有定义 char ch1='A',ch2,ch3; 执行 ch2=ch1++; ch3=++ch1; printf(&ch2=%c, ch3=% c&,ch2,ch3); 则输出为 ______。 41. 若有定义 int i=5, j, 执行 j=i--; k=--i; printf(&i=%d, j=%d\n&, i, j); 则输 出为 ______。 42. 表达式 (int)(13.7+25.6)/4%5 的值是 ______。 43. 表达式 3.6-5/2+1.2+5%3 的值是______。 44. 表达式 54%10/2+4.0*(8/5) 的值是 ______。 45. 若定义 double b=5.45; 执行 x=b 后,则 x 的值为______。 46. 若定义 char c='A'; 执行 y=c 后,则 y 的值为 47. 若定义 int a=8; float b=2.5; 则 a/(int)(b)的值为 48. 若 a=5,则执行 a*=7-3 语句后,a 的值是 ______。 ______。 ______。49. 若 int a=1,b=0,c=4,d=2; 则表达式(a&b ? a:b)&&(c-d)的值为______。 50. 已知 a = 0 ,表达式 a = 1?b = 1:b = 0; 执行后,b 的值是 51. 若定义 int m=7,n=12; 则表达式 n%=m-m%5 的值是 ______。______。52. 若定义 int a=8; float b=4.5;执行 a*=a/=a-b 后,a 的值为 ______。 53. int a=2; !a++的值为 ______。 ______。54. int a=0; !a++&++a 的值为 55. int a=7;float b=4.5;则 printf(“%d”,a*=a/=a-b)的值为 ______。 56. int k=7;float a=2.5,b=4.7;则表达式 a+k%3*(int)(a+b)%2/4 的值为 ______。 57. #define Max(a,b) (((a)-(b))&0x)?(a):(b),int a=2,b=6;printf(“%d\n”,M ax(a,b))的值为 ______。 58. 在 32 位机中,int a=4,b=7; printf(“%0x”,a-b)的值为:______。 59. int x,y,z; x=y=2;z=3;y=x++-1;printf(“%d,%d”,x,y)的值为: ______。60. int i=2,j; printf(“%d”,j=i&1)的值为:______ 解答: 1. 0 2. 4 3. 10 4. 32 5. 指针类型 6. int、float、double、char 7. 38 8. 44 9. 293 10. 124 11. 047 12. 4.2 13. 4.2 14.
15. \x41/41H 16. 符号常量 17. #define 18. 转义字符常量 19. F 20. b 21. \b 22. B 23. e 24. 16 25. 11 26. 0 27. A~F 28. U 29. 指数形式 30. #include 31. “\0” 32. 变量类型 33. 数字 34. 7 35. “hello” 36. 1 37. 4 38. 7 39. ch1=C, ch2=A 40. ch2=A, ch3=C 41. i=3, j=5 42. 4 43. 4.. 7.. 5 46. 65 47. 4 48. 20 49. 1 50. 1 51. 2 52. 4 53. 0 54. 0 55. 4 56. 2.. 2 58. fffffffd 59. 3,1 60. 0 二.阅读程序写结果 解答: 三.补充程序 解答: 四.改错题 解答: 五.编程一 解答: 六.编程二 解答: 第三章 顺序结构 一.填空 1. C 语言的语句可分为 5 类,它们是:控制语句、____________、函数语句、符合语句和空 语句。 2. 常用于字符输入的函数为:________________ 。 3. 常用于字符输出的函数为:________________。 4. 常用于字符串输入的函数为:________________。 5. 常用于字符串输出的函数为:________________。 6. 格式输入函数的一般形式为:________________ 。 7. 格式输出函数的一般形式为:________________ 。 8. printf 和 scanf 是标准的库函数,它们的函数原型在头文件________________中。 9. 有 char ch,则从键盘给 ch 赋值的格式输入语句为:________________。 10. 如果要输出字符串常量“HelloWord! ” ,则格式输出语句为:________________。 11. 设有定义:long x=-123456L; ,请写出能够正确输出变量 x 值的语句________________ 。 12. 若有 int a,b; ,想通过 scanf(&%d%d&,&a,&b);输入语句给 a 赋于 1,给 b 赋于 2,则从键 盘 输入数据的形式是________________。 13. 若有 int i,j; scanf(&i=%d,j=%d&;&i,&j); ,要求给 i 赋 10,给 j 赋 20,则应该从键盘 输入_______。 14. 已知 i、j、k 为 int 型变量,若从键盘输入:1,2,3&回车&,使 i 的值为 1、j 的值为 2、 k 的值为 3,请写出正确的输入语句________________ 。 15. 有 int m,n,p; scanf(&m=%dn=%dp=%d&,&m,&n,&p); printf(&%d%d%d\n&,m,n,p); 若想 从键盘上输入数据,使变量 m 中的值为 123,n 中的值为 456,p 中的值为 789,则正确的输入是 _____ ___________。 16. 有 float b, %f\n&, a, b, c); scanf(&%2d%3f%4f&,&a,&b,&c); printf(&\na=%d, b=%f, c=, 若 运 行 时 从 键 盘 上 输 入 & 回 车 & , 则 程 序 的 输 出 结 果 是 ___________________ __。 17. 有 int m=0256,n=256; 则 printf(&%o %o\n&,m,n); 的输出结果是__________________ ___ 。 18. 有 int x=102,y=012; , 则 printf(“%2d,%2d\n”,x,y); 的输出结果是______________ _______ 。 19. 有定义和语句: char c=10; float f=100.0; a=f/=c*=(x=6.5); , 则 printf(&%d %d %3.1f %3.1f\n&,a,c,f,x); 的输出结果是_____________________ 。 20. 若有定义和语句:int m=0xabc,n=0 m-=n; 则 printf(&%o\n&,m);的输出结果是___ __________。 21. 若有 int m=32,n=032; ,则 printf(&%d,%x\n&,m,n); 执行后输出结果是______________ _____ 。 22. 若有 int a=1234; ,则 printf(&%2d\n&,a); 的输出结果是_____________________ 。 23. 若变量已正确说明为 float 类型,要通过语句 scanf(“%f %f %f ”,&a,&b,&c);给 a 赋于 1 0.0,b 赋予 22.0,c 赋予 33.0,不正确的输入形式是_____________________ 。 A) 10 &回车&22&回车&33&回车& B) 10.0,22.0,33.0&回车& C) 10.0&回车& 22.0 33.0&回车& D) 10 22&回车& 33&回车& 24. 若有 int x=3,y=1; 则 printf(&%d %d\n&,x++,y+2); 的输出结果是__________________ ___ 。 25. 若有定义和语句: i=f=l=d=20/3; 则 printf(&% d %ld %f %f \n&, i,l,f,d);的输出结果是(小数点后只写一位) _____________________。 26. 以下说法中正确的是 _____________________。 A) #define 和 printf 都是 C 语句 B) #define 是 C 语句,而 printf 不是 C) printf 是 C 语句,但#define 不是 D) #define 和 printf 都不是 C 语句 27. 若有 int k=17; ,则 printf(&%d,%o,%x \n&,k,k,k);的输出结果是_________________ ____ 。 28. 以下叙述中正确的是_____________________ 。 A) 输入项可以是一个实型常量,如:scanf(&%f&,3.5); B) 只有格式控制,没有输入项,也能正确输入数据到内存,例如:scakf(&a=%d,b=%d&); C) 当输入数据时,必须指明变量地址,例如:scanf(&%f&,&f); 29. 若有定义和语句:int u=010,v=0x10,w=10;则 printf(&%d,%d,%d\n&,u,v,w); 输出结果是 _____________________。 30. 若有 int a=1,b=4,c=2; float x=10.5, y=4.0, z=(a+b)/c+sqrt((double)y)*1.2/c+ ,则 printf(&%f\n&,z); 的输出结果是_____________________ 。 31. 若有 int a=2,c=5; ,则 printf(&a=%%d,b=%%d\n&,a,c);的输出结果是________________ _____ 。 32. 有 int n=100; float f=10; x=f*=n/=(c=50); 则 printf(&%d %f\ n&,n,x); 的输出结果是_____________________。 33. 有 int i=0,j=0,k=0; scanf(&%d%*d%d&,&i,&j,&k); printf(&%d%d%d\n&,i,j,k); 若 从键盘输入:10 20 30&回车&。输出结果是_____________________。 34. 若有 int a,b,c; a=25; b=025; c=0x25;,则 printf(&%d %d %d\n&,a,b,c); 的输出结果 是___________。 35. 有以下语句段 int n1=10,n2=20; printf(“________________”,n1,n2); 要求按以下格式输出 n1 和 n2 的值,每个输出行从第一列开始,请填空。 n1=10 n2=20 36. 若有语句 int i=-19,j=i%4; 则 printf(&%d\n&,j);的输出结果是_____________________ 。 37. 有 int a=0; a+=(a=8); 则 printf(&%d\n&,a);的输出结果是_____________________。 38. 有 int a=1, b=2; a=a+b; b=a-b; a=a-b;则 printf(“%d,%d\n”, a, b );的输出结果是 ______________。 39. 有 unsigned short a=65536;,则 printf(“%d\n”,b=a);的输出结果是________ ______。 40. 语句 printf(&\10289\n&);的数据结果为:__________________ 。 解答: 1. 表达式语句 2. getchar( ) 3. putchar( ) 4. gets( ) 5. puts( ) 6. scanf(“格式控制字符串” ,地址表列); 7. printf(“格式控制字符串” ,输出表列); 8. stdio.h 9. scanf (“%c” ,&ch); 10. printf (“%s” ,HelloWord!); 或者:printf (“HelloWord!”); 11. printf(“x=%1d\n”,x); 12. 1 2 或者 1 2 13. i=10,j=20 14. scanf(“%d,%d,%d”,&i,&j,&k); 15. m=123n=456p=789 16. a=98, b=765.000000, c= 17. 256 400 18. 102,10 19. 1 65 1.5 6.5 20. 0 21. 32,1a 22. 1234 23. B 24. 3 3 25. 6 6 6.0 6.0 26. D 27. 17,21,11 28. C 29. 8,16,10 30. 13.. a=%d,b=%d 32. 2 20..
21 37 35. n1=%d\nn2=%d 36. -3 37. 16 38. 2,1 39. 0 40. B89 二.阅读程序写结果 解答: 三.补充程序 解答: 四.改错题 解答: 五.编程一 解答: 六.编程二 解答: 第四章 选择结构 一.填空 1. 在 if, while, case, do, else 等关键字中,用于选择结构的有( ). 2. 已知 a = 1; 那么 if ( a = 2) printf(&%d&, 2); else printf(&%d&, 1); 的输出结 果是( ). 3. 已知 char a = 'A'; 那么 if ( a & 65) printf(&%s&, &bigger&); else printf(&%s& , &smaller&); 的输出结果是( ). 4. 表示“x≥ y≥ z”的 C 语言表达式是 ( 5. 在 C 语言中,用于实现选择结构的语句有( 。 6. 判断两个浮点型变量 x 和 y 是否相等一般用:if( 7. 设有程序段: t=6;a=7;b=8; if(a=b) t=a;,这段程序执行后,t 的结果是( 。 8. 设 a=1,b=2,c=3,d=4,则表达式:a&b?a:c&d?a:d 的结果为( 9. 表达式 98 && 8 && 31 && (98 - 'a')的值为( 10. 若 int a = 3; 则表达式 (a & 2)&& ! ('D'& 69) 的值为( )。 )。 ) 。 )语句和( )。 ) 语句&1e-6 )? 。 ) 解答: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 二.阅读程序写结果 1. #include &stdio.h& void main( ) { int x,y,t; x=7;y=9; if(x&y) {t=x;x=y;y=t;} printf(&%d,%d\n& , x,y ); }2. #include &stdio.h& void main( ) { int x=1,a=2,b=3; switch(x) { case 1: case 2: case 3: a--; b++; a++;b++; } printf(&\na=%d,b=%d\n&,a,b); }3. #include &stdio.h& void main( ) { char ch1 = 'E'; if(ch1 &= 'A') ch1++; else ch1+=32; printf(&ch1 = %c\n&, ch1); }4. #include &stdio.h& void main( ) { int x,y,t; x=5;y=3; if(x&y) { t=x;x=y;y=t;} printf(&%d,%d\n& , x,y ); }5. #include &stdio.h& int main() { int a,b,c,m; printf(&Enter three integers:&); scanf(&%d%d%d&,&a,&b,&c); if(a&=b) m=a; else m=b; if(c&m) m=c; printf(&m=%d\n&,m); return 0; } 输入:21 22 23&回车&6. #include &stdio.h& int main() { char ch1='a',ch2='B',ch3='E'; if(ch1&ch2) if(ch2&ch3) else --ch3; printf(&ch3=%c\n&,ch3); return 0; }ch3++; 7. #include &stdio.h& int main() { float x,y; scanf(&%f&,&x); switch((int)x/10) { case 0: y=1.0; printf(&y=%f\n&,y); case 1: y=2*x+1; printf(&y=%f\n&,y); case 2: y=3*x*x+2; printf(&y=%f\n&,y); default: printf(&No definition.\n&); } return 0; } 输入:15.3&回车& 8. #include &stdio.h& int main() { char ch1='A',ch2='B'; switch(ch1) { case 'A': switch(ch2) {case 'B': printf(&Good!\n&); case 'A': printf(&Better!\n&); } case 'B': printf(&Best!\n&); } return 0; }9. #include &stdio.h& void main() { score = 100; if (score&60) else switch( ( int ) score / 10 ) { case 10: case 9: printf(&A\n&); case 8: printf(&B\n&); case 7: printf(&C\n&); case 6: printf(&D\n&);printf(&E\n&);default: printf(&Error\n&); } }10. #include &stdio.h& void main() { int i=0,a=2; if(i==0) printf(“**”); else printf(“$$”); printf(“*”); }11. #include&stdio.h& void main() { int m=10,n=0,p=4,q=20; if (n) q=15-m; else q=25+m; else if (p) q=q+p; printf(“q=%d\n”,q); } if (m)12. #include&stdio.h& void main() { int a=1,b=0; switch(a) { case 1: switch (b) { case 0: printf(&**0**&); case 1:printf(&**1**&); } case 2: printf(&**2**&); } } 13. #include&stdio.h& int main( ) { int a=2,b=7,c=5; switch (a&0){ case 1: switch (b&0){ case 1: printf(&@&); case 2: printf(&!&); } case 0: switch (c==5){ case 1: printf(&*&) ; default : printf(&#&) ; } default : printf(&&&); } printf(&\n&); return 0; }14. #include&stdio.h& int main() { int a=0,b=1,c=0,d=20; if(!c) d=15;if(a) d=d-10; else d=25;else if (!b) printf(&d=%d\n&,d); return 0; } 15. #include&stdio.h& int main() { int a=1; switch(a){ case 0: printf(&**0**&); case 1:printf(&**1**&); case 2:printf(&**2**&); } return 0; } 16. #include &stdio.h& int main() { int x, scanf(&%d&,&x); y = x&12 ? x + 10 : x - 12; return 0; } 输入:12&回车& 17. #include &stdio.h& int main() { float x, scanf(&%c%f%f&,&op,&x,&y); switch(op) { case '+': r = x + case '-': r = x - case '*': r = x * case '/': r = x / } printf(&%.1f&, r); return 0; } 输入:3.5&回车& 18. #include &stdio.h& void main( ) { int a=7; if(a&9 || a&10) a=a%3; printf(&a=%d&, a); }printf(&%d\n&, y);a=a/3;else 19. #include&stdio.h& void main() { int a=20; switch(a%3) case 0: printf(&0&); case 1: printf(&1&); case 2: printf(&2&); default: printf(&3&); } printf(&4&); } 20. #include &stdio.h& void main() { int a=2,b=5,c=8,t; if ( a & b ) { t = a = b = } if ( b & c ) { t = b = c = } if ( a & b ) { t = a = b = } printf( &%d,%d\n&, a++, --c ); } 解答: 1. 运行结果: 9,7 2. a=1,b=3 3. ch1= F 4. 3,5 5. m=21 6. ch3=D 7. y=31.. Good! Best! 9. A B{ C 10. *** 11. q=35 12. **0****2** 13. *& 14. d=20 15. **1** 16. 0 17. 0.6 18. a=2 19. 234 20. 8,1 三.补充程序 1. 根据输入字符的 ASCII 码来判别字符的类别。由 ASCII 码表可知 ASCII 值小于 32 的为控制 字 符。 在“0”和“9”之间的为数字,在“A”和“Z”之间为大写字母, 在“a”和“z”之 间为小写字母,其余则为其它字符。 #include&stdio.h& #include&string.h& int main() { printf(&input a character: &); _____________________________________________ if(c&32) printf(&This is a control character\n&); _____________________________________________ printf(&This is a digit\n&); else if _______________________________________ printf(&This is a capital letter\n&); else if(c&='a'&&c&='z') printf(&This is a small letter\n&); ____________________________________________ printf(&This is an other character\n&); return 0; }2. 计算器程序。用户输入运算数和四则运算符, 输出计算结果. #include&stdio.h& int main() { float a,b; ____________________________________________; printf(&input expression: a+(-,*,/)b \n&); scanf(&%f%c%f&,&a,&c,&b); switch(c) { case '+': printf(&%f\n&,a+b); ____________________________________________ case____________________________________________ printf(&%f\n&,a-b); case '*': printf(&%f\n&,a*b); case '/': ____________________________________________; default: printf(&input error\n&); } return 0; }3. 输入三个整数,输出最大数和最小数(注:max 总是记录最大数, 而 min 总是记录最小数). #include&stdio.h& int main() { int a,b,c,max, printf(&input three numbers: &); scanf(&%d%d%d&,&a,&b,&c); if(a&b) { _______________________________________ _______________________________________ } else {max=b;min=a;} ____________________________________________ max=c; if(min&c) _____________________________________ printf(&max=%d\nmin=%d&,max,min); return 0; } 4. #include&stdio.h& int main() { printf(&input integer number: &); scanf(&%d&,&a); _____________________________________________ { case 1:printf(&Monday\n&); _____________________________________________ printf(&Tuesday\n&); case 3:printf(&Wednesday\n&); case 4:printf(&Thursday\n&);_____________________________________________ case 5:printf(&Friday\n&); case 6:printf(&Saturday\n&); case 7:printf(&Sunday\n&); _____________________________________________ printf(&error\n&); } return 0; } 5. 判断 a&b、a&b 、a=b 或 a≠b 四种关系。 #include&stdio.h& int main() { int a,b; printf(&please input a,b: &); scanf(&%d%d&,&a,&b); _____________________________________________ printf(&A=B\n&); _____________________________________________ printf(&A&B\n&); _____________________________________________ printf(&A&B\n&); _____________________________________________ printf(&A≠B\n&); return 0; } 6. 根据以下函数关系,对输入的每个 x 值,计算出相应的 y 值。 #include&stdio.h& int main ( ) { int x,c,m; scanf(“%d”,&x); _________________________________________c=-1; c=_____________________________________________; switch (c) { case C1 : y=0 ; case 0 : y= case 1 : y=10 ; case 2 : case 3 : y=-0.5*x+20 ; _____________________________________________;else default : y=-2 ; } if (c!=2) printf (“y=%f”,y); _____________________________________________ printf(“error!”); return 0; } 7. 找出 x,y,z 三个数中的最小数,并判断该数是否等于 b。 #include&stdio.h& int main() { int x=4,y=5,z=8 ,b; int u,v; scanf(&%d&,&b); u = x&y ? _____________________________________________ ; v = u&z ? _____________________________________________; if_____________________________________________printf (“最小数等于 b!\n”); _____________________________________________printf (“最小数不等于 b!\n”); return 0; }8. 输入两个运算数 x,y 和一个运算符号 op, 输出该运算结果的值, 例如输入 3+5L得到结果 8 . #include&stdio.h& int main ( ) { float x,y,r; scanf(&%f,%c,%f&,&x,&op,&y); switch (op) { case '+': r=x+ _____________________________________________; _____________________________________________ r=x- case '*' :_____________________________________________; _____________________________________________ r=x/y; } printf(&%f&,r); return 0; }9. 根据输入字符的 ASCII 码来判别字符的类别。由 ASCII 码表可知 ASCII 值小于 32 的为控制 字 符。 在“0”和“9”之间的为数字,在“A”和“Z”之间为大写字母, 在“a”和“z”之 间为小写字母,其余则为其它字符。 #include&stdio.h& int main() { printf(&input a character: &); c=getchar(); _____________________________________________ printf(&This is a control character\n&); if(c&='0'&&c&='9') printf(&This is a digit\n&); _____________________________________________ printf(&This is a capital letter\n&); _____________________________________________ printf(&This is a small letter\n&); _____________________________________________ printf(&This is an other character\n&); return 0; } 10. 找出 a,b,c 三个数中的最大数,并判断该数是否等于 x。 #include&stdio.h& int main() { int a=8,b=4,c=12, int u,v; scanf(“%d”,&x); u = a&b ? _____________________________________________; v = u&c ? _____________________________________________; if_____________________________________________printf (“最大数等于 x!\n”); _____________________________________________printf (“最大数不等于 x!\n”); return 0; } 解答: 1. c=getchar(); (c&='0'&&c&='9') (c&='A'&&c&='Z') else 2. '-': printf(&%f\n&,a/b); 3. max=a; min=b; if(max&c) min=c; 4. switch(a) case 2: default: 5. if(a==b) else if(a&b) else if(a&b) else 6. if(x&0) c=x/10; else 7. x:y; u:z; (v==b) else 8. case '-': r=x*y; case '/': 9. if(c&32) else if(c&='A'&&c&='Z') else if(c&='a'&&c&='z') else10. b:a c:u (v==x) else 四.改错题 解答: 五.编程一 1. 求分段函数 的值, 输入 x 值,输出结果。 2. 从键盘上输入一个数 x,计算并输出下列分段函数 y 的值。&strong&&/strong&3. 某运输公司运费计算时根据运输距离打折计算,折扣的计算方法如下:(其中,discount 表示折扣,S 表示运输距离) 。 编写一完整程序,输入运输距离,统计运费并输出。每公里的运费通过符号常量定义为 2 .5。 4. 编程输入一元二次方程的三个系数,求解一元二次方程的实根,无实根时不用求虚根, 给出相应提示信息即可。 5. 给定三条边,判断其是否能构成三角形,若能构成,判断其是等腰三角形、等边三角形 、直角三角形还是普通三角形。 6. 从键盘输入一个三角形的三条边,判断是否能组成三角形,若能组成三角形,则输出它 的面积。 7. 从键盘输入一个百分制的学生成绩,输出其对应的分数等级,其中 90~100 为 A,80~ 89 为 B,70~79 为 C,60~69 为 D,60 以下为 E。 8. 编写一个程序,从键盘输入三个整数给 a,b,c,然后交换它们中的数,把 a 中原来的值 给 b,把 b 中原来的值给 c,把 c 中原来的值给 a。 9. 输入一个字符,判断其是否为英文字母,若是英文字母,则将其大小写进行转换,若不 是英文字母,则不变。 10. 给定三个整数型 x,y,z,输出三个数中的最大值和最小值。 解答: 1. #include &stdio.h& #include &math.h& void main() { float x,y; printf(&input x\n&); scanf(&%f&,&x); if(x&0) y=1; else if(x&=5) y=2*x; else y=sqrt(x); printf(&x=%5.1fy=%8.3f\n&,x,y); } 2. #include &stdio.h& #include &math.h& void main() { float x,y; printf(&input x\n&); scanf(&%f&,&x); if(x&20||x&1&&x&10) { printf(&无定义\n&); } if(x&0) y=-x; else if(x&=1) y=sin(x)+x; else if(x&=10&&x&=20) y=x*x*x; printf(&x=%5.1fy=%8.3f\n&,x,y); } 3. #include &stdio.h& #include &math.h& #define price 2.5 void main() { float discount,cost,s; printf(&input distance\n&); scanf(&%f&,&s); if(s&250) discount=0; else if(s&800) elsediscount=0.02; else if(s&1500)discount=0.05;discount=0.08; cost=s*(1-discount)* printf(&distance=%5.1f;cost=%5.1f\n&,s,cost); } 4. /*功能:求一元二次方程的解。*/ #include &math.h& #include &stdio.h& main() {float a,b,c,disc,x1,x2; scanf(&%f,%f,%f&, &a, &b, &c); disc=b*b-4*a*c; if (disc==0) printf(&x1=x2=%7.2f\n&, -b/(2*a)); /*输出两个相等的实根*/ else if (disc&0) { x1=(-b+sqrt(disc))/(2*a); /*求出两个不相等的实根*/ x2=(-b-sqrt(disc))/(2*a); printf(&x1=%7.2f,x2=%7.2f\n&, x1, x2); } else printf(&无实根\n&); } 5. #include &stdio.h& void main() { float a,b,c; printf(&输入三条边:\n&); scanf(&%f%f%f&,&a,&b,&c); if(a+b&c&&a+c&b&&b+c&a) { if(a==b&&b==c) printf(&等边三角形\n&); else if(a==b||b==c||c==a) printf(&等腰三角形\n&); else if(a*a==b*b+c*c||b*b==a*a+c*c||c*c==b*b+a*a) printf(&直角三角形\n&); } else printf(&不能构成三角形 \n&); } 6. #include &stdio.h& #include &math.h& void main() { float a, b, c, s, printf(&输入三条边:\n&); scanf(&%f%f%f&,&a,&b,&c); if(a+b&c&&a+c&b&&b+c&a) { s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf(&area=%7.2f\n&,area); } else printf(&不能构成三角形 \n&); } 7. #include &stdio.h& void main() { printf(&Input score\n&); scanf(&%d&,&score); if (score&100||score&0) { printf(&data error!\n&); } switch(score/10) { case 10: case 9:d='A'; case 8:d='B'; case 7:d='C'; case 6:d='D'; default : d='E'; } printf(&score=%3ddengji=%c\n&,score,d); } 8. #include &stdio.h& void main() { int a,b,c,t; printf(&Input a,b,c\n&); scanf(&%d%d%d&,&a,&b,&c); t=a; a=b; b=c; c=t; printf(&a=%d;b=%d;c=%d;\n&,a,b,c); } 9. #include &stdio.h& void main() { char c1,c2; printf(&Input a c1=getchar(); if(c1&='a'&&c1&='z') c2=c1+'A'-'a'; else if(c1&='A'&&c1&='Z') c2=c1+'a'-'A'; else c2=c1; } 10. #include &stdio.h& void main() { int a,b,c,max, printf(&Input a,b,c\n&); scanf(&%d%d%d&,&a,&b,&c); max=a;min=a; if(b&max) max=b; else if(b&min) min=b; if(c&max) max=c; else if(c&min) min=c; printf(&a=%d;b=%d;c=%d;\n&,a,b,c); printf(&max=%d;min=%d\n&,max,min); } 六.编程二 解答: 第五章 循环结构 一.填空 1. C 语言中提供了三种循环控制语句,它们是:(letter: &);printf(&原字符:%c 转换后为:%c\n&,c1,c2);)、do-while 语句、() 。2. break 语句在 C 程序中只能出现在两种场合:一是用于( )语句中。)语句中,二是用于 ( 3. 以下程序段中的语句 printf(“***”)要执行 5 次,请在空白处填入合适的数 。 for( i=1;i&=( );i=i+2 ) printf(“***”); 4. 定义 int k=10;执行语句 while(k&20) k += 1 ; 后,k 的值为( 5. 在循环控制结构中 break 语句的作用是( 6. 在循环控制结构中 continue 语句的作用是:( )。 )。 )。7. 若已知 int a[5][5]; 并在运行过程中 a 数组已经赋值;要打印次对角线元素,在空白处 填入合适的值/表达式; for (i = 0; i&5; i++) for (j = ( ); j &=0; j--) printf(&%5d&, a[i][j]); 8. 执行完语句 sum = 0; for (i = 0; i & 10; i++) { if (i % 5 = = 0) sum += sum = ( ) 。 9. 在使用 while 语句中需要注意,为了防止“死循环”的发生,在循环体中一定要有( )语句。 10. do-while 语句中,判断循环条件在( ” ) ),执行循环体在 ( ) 。 (填“先” “后解答: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 二.阅读程序写结果 1. #include &stdio.h& void main() { int number , number = 1234; while ( number != 0 ) { digit = number%10 ; printf( &%d& , digit ) ; number = number / 10 ; } } 2. #include &stdio.h& #define N 5 void main( ) { for(i=1;i&N;i++) printf(&%d\n&,i*i); } 3. #include&stdio.h& void main( ) { int i,s,x; s=0; x=15; if (x%i==0) printf(&i=%d,s=%d\n&,i,s); }for(i=1;i&=5;i++) s= s +4. #include &stdio.h& void main() { int counter=1; while(counter &= 5) printf(&%d \n&, counter ); counter++; } } 5. #include&stdio.h& int main() { int i,sum,m,a; sum=0; m=5; for(i=0;i&=3;i++) { scanf(&%d&,&a); if(a&m) sum+=a; } printf(&sum=%d\n&,sum); return 0; }{ 输入:2 10 8 3&回车&6. #include&stdio.h& int main() { int i,j,k; for(i=1;i&=4;i++) { for (j=1;j&5-i;j++) printf(& &); for(k=1;k&=i;k++) printf(&*&); printf(&\n&); } return 0; } 7. #include &stdio.h& int main() { int i,j; i=1; while(i&5) { for(j=1;j&2*i+1;j++) printf(&%c&,'#'); printf(&\n&); i++; } return 0; } 8. #include &stdio.h& int main() { int i=10,m=0,n=0; do { if(i%2!=0) m=m+i; else n=n+i; i--; }while(i&=0); printf(&m=%d,n=%d\n&,m,n); return 0; } 9. #include &stdio.h& void main() { int sum=0,n; scanf(&%d&,&n); while(n&=5) { sum+=n; n++; } printf(&sum=%d&,sum); } 输入:1&回车& 10. #include &stdio.h& void main() { int i, for(i=2;i&=0;i--) { for(j=1;j&=i;j++) printf(&*&); for(j=0;j&=2-i;j++) printf(&!&); printf(&\n&); } } 11. #include &stdio.h& void main() { int a,b; for(a=1,b=1;a&=100;a++) { if(b&20) if(b%4==1) b=b+4; } b=b-5; } printf(&a=%d\n&,a); } 12. #include &stdio.h& void main( ){ { for(i=1;i&3;i++) { scanf(&%c&,&k); switch(k) { case '0': printf(&another\n&); case '1': printf(&number\n&); } } } 输入:01&回车& 13. #include &stdio.h& int main() { int i, s = 0; for(i = 1; i & 10; i++) { s += i * if(s & 10) } printf(&i=%d, s=%d\n&, i, s); return 0; } 14. #include &stdio.h& void main() { while((ch=getchar())!='\n') { if (ch&='A'&&ch&='Z') ch=ch+32; ch=ch-32; } } 输入:ABCdef&回车&else if (ch&='a'&&ch&='z') printf(&%c&,ch);15. #include &stdio.h& int main () { int a, for (a = 1, b = 1 ; a &= 100 ; a++) { if (b &= 9) if (b % 3 == 1) b += 3 ; } b -= 5; } printf(&%d,%d\n&, a, b); return 0; } {16. #include&stdio.h& int main () { int i = 0,j = 0; while (i & 10) i++; while (j++ & 10) ; printf(&i=%d,j=%d\n&,i,j); return 0; } 17. #include &stdio.h& void main( ) { int i,j,t; for(i=1,j=10;i&3;i++,j--) t=i+j; t++; printf(&%d,%d&,j,t); } 18. #include &stdio.h& void main() { int i=10,j; do { j = i%2; i--; } while ( i& 4 ); } 19. #include &stdio.h& void main() { int i=7,j; while ( i& 2)printf( &%d&,j );{ j = i%2; i--; } printf( &%d&,i ); }printf( &%d&,j );20. #include &stdio.h& void main() { int i,j,t=0; for(i=3;i&0;i--) for(j=0;j&4;j++) t+=j; printf(&t=%d&,t); } 解答: 1.
4 9 16 3. i=6,s=9 4. 1 2 3 4 5 5. sum=18 6. * ** *** ****7. ## #### ###### ######## 8. m=25,n=30 9. sum=15 10. **! *!! !!! 11. a=6 12. another number number 13. i=3, s=14 14. abcDEF 15. 4,10 16. i=10,j=11 17. 8,12 18. . . t=18 三.补充程序 1. 输出 100 以内能被 3 整除的数 #include&stdio.h& int main() { _____________________________________________; for(_________________________;n&=100; ________________________) { if (n%3!=0) ________________________ printf(&%d &,n); } return 0; } 2. 输出 100 以内的素数。素数是只能被 1 和本身整除的数。为减少循环次数,只需对数 n 用2 ~ 去除来判断该数是否素数。 #include&stdio.h& ________________________ int main() { int n,i,k; for(n=2;n&=100; ________________________) { k=sqrt(n); for(i=2;i&=k; ________________________) if(n%i==0) ________________________ if(i&k) printf(&\t%2d&,n); } return 0; } 3. 输出 200 以内能被 5 整除的数 #include&stdio.h& int main() { ________________________ for(________________________;n&=200; ________________________) { if (n%5!=0) ________________________ printf(&%d &,n); } return 0; } 4. 求输入的十个整数中正数的个数及其平均值 #include &stdio.h& int main() { int i,num=0,a; float sum=0; for(i=0; ________________________;________________________) { scanf(&%d&,&a); if(a&=0) { ________________________; ________________________; } } printf(&%d plus integer's sum: %6.0f\n&,num,sum); printf(&Mean value:%6.2f\n&,sum/num); return 0; } 5. 求输入的十个整数中负数的个数及其平均值 #include &stdio.h& int main() { int i,num,a; float sum=0; ________________________; ________________________; while(i&10) { scanf(&%d&,&a); if(a&=0) { ________________________; num++; } ________________________; } printf(&%d plus integer's sum: %6.0f\n&,num,sum); printf(&Mean value:%6.2f\n&,sum/num); return 0; } 6. 分解并打印出 X 的各个素数因子.如 18=1*2*3*3. #include &stdio.h& int main() { int i,x; scanf(“%d”,&x); printf(“%d=1”,x); for(________________________;i&=x; ________________________) { while________________________ { printf(“*%d”,i); ________________________; } } return 0; } 7. 输出九九乘法表. #include &stdio.h& int main() { int i,j; for (i=1; ________________________;________________________) { for(________________________;________________________;j++) printf(&%2d*%2d=%2d&, j, i ,i*j); printf(&\n\n&); } return 0; } 8. 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前 20 项之和。 #include &stdio.h& int main() { int n,t,number=20; float a=2,b=1, ________________________; for( n=1; ________________________;________________________) { s=s+a/b; t=a; a=a+b; ________________________; } printf(&sum is %9.6f\n&,s); return 0; } 9. 求 1+2!+3!+...+20!的和. #include &stdio.h& int main() { float n, ________________________,t=1; ________________________;________________________;) { t*=n; ________________________; } printf(&1+2!+3!...+20!=%e\n&,s); return 0; }for(n=1;10. 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前 20 项之和。 #include &stdio.h& int main() { int n,t,number=20; float a=2, ________________________,s=0; for(________________________;________________________;n++) { s=s+a/b; t=a; ________________________; b=t; } printf(&sum is %9.6f\n&,s); return 0; } 解答: 1. n=1; n++ 2. #include&math.h& n++ i++ 3. n=1 n++ 4. i&10 i++ num++ sum+=a 5. i=0; num=0; sum+=a; i++; 6. i=1 i++ (x%i==0) x=x/i; 7. i&=9 i++ j=1 j&=i 8. s=0 n&=20 n++ b=t; 9. s=0 n&=20 n++ s+=t; 10. b=1 n=1 n&=20 a=a+b 四.改错题 解答: 五.编程一 1. 试编写程序求 S=1+1*2+1*2*3+1*2*3*4+?+1*2*3*?*10 的值。2. 编程利用以下公式求π 的值。 (取 n=10000)3. 计算 s=1+1/2+1/3+?+1/n 的值,其中 n 的值由键盘输入。4. 编写程序,在屏幕上输出下面的图案(要求用 for 循环实现) 。 ***** ***** ***** ***** ***** 5. 编写程序,输入整数 n,并根据 n 的值打印图案(要求用 for 循环实现) 。 。 n 为中间一行的*号个数。例如,当 n=4时,图案为 * ** *** **** *** ** * 6. 从键盘输入若干个学生的成绩,-1 作为结束标志,求出平均成绩及最高成绩并输出其结 果。 7. 编写一程序,从键盘输入 n 个数,输出其最大数和最小数,并输出它们在序列中的序号。 8. 编程实现:输出由 0、1、2、3 组成的所有的各位数字均不相同的三位数,输出时每 8 个 数 占一行。 9. 输入一行字符,回车作为结束,分别统计出其中英文字母、空格、数字和其它字符的个 数。10. 求 s=a+aa+aaa+aaaa+aa...a 的值,其中 a 是一个数字。例如 2+22+222+(此时 共 有 5 个数相加),几个数相加由键盘控制。解答: 1. #include &stdio.h& void main() { float s=0,term=1; for(i=1;i&=10;i++) { s=s+ term=term*(i+1); } printf(&sum%10.1f\n&,s); } 2. #include &stdio.h& void main() { float e=1,term=1; for(i=1;i&=100;i++) { term=term*i; e=e+1./ } printf(&e=%10.6f\n&,e); } 3. #include &stdio.h& void main() { int i,n; float s=0; printf(&input n\n&); scanf(&%d&,&n); for(i=1;i&=n;i++) s=s+1./i; printf(&s=%10.6f\n&,s); } 4. #include &stdio.h& void main() { int i,j,k; for(i=1;i&=5;i++) {for(k=1;k&=2*i;k++) printf(& &); for(j=1;j&=5;j++) printf(&* &); printf(&\n&);} }5. #include &stdio.h& void main() { int i,j,n; printf(&input n\n&); scanf(&%d&,&n); for(i=1;i&=n;i++) { for(j=1;j&=i;j++) printf(&* &); printf(&\n&); } for(i=n-1;i&=1;i--) { for(j=1;j&=i;j++) printf(&* &); printf(&\n&); } } 6. #include &stdio.h& void main() { int i,score,sum=0, i=0; printf(&please input score:\n&); scanf(&%d&,&score); max= while (score!=-1) { sum=sum+ if(score&max)max= i++; scanf(&%d&,&score); } printf(&max=%d\n&,max); printf(&average=%f\n&,(float)sum/i); } 7. #include &stdio.h& void main() { int i, n,x,max,min,maxi=1,mini=1; printf(&please input n:\n&); scanf(&%d&,&n); printf(&please input x:\n&); scanf(&%d&,&x); max=x;min=x; for(i=2;i&=n;i++) { scanf(&%d&,&x); if(x&max) { max=x;maxi=i;} if(x&min) { min=x;mini=i;} } printf(&max=%d;maxi=%d\n&,max,maxi); printf(&min=%d;mini=%d\n&,min,mini); } 8. #include &stdio.h& void main() { int i,j,k,n=0; for(i=1;i&=3;i++) for(j=0;j&=3;j++) for(k=1;k&=3;k++) if(i!=j&&i!=k&&j!=k) { n++; printf(&%5d&,i*100+j*10+k); if(n%8==0)printf(&\n&); } } 9. #include &stdio.h& void main() { int shuzi=0,zimu=0,kge=0,qita=0; ch=getchar(); while(ch!='\n') { if(ch==' ') kge++; else if(ch&='0'&&ch&='9') shuzi++; else if(ch&='a'&&ch&='z'||ch&='A'&&ch&='Z') zimu++; else qita++; ch=getchar(); } printf(&数字=%d;字母=%d;空格=%d;其它%d&,shuzi,zimu,kge,qita); } 10. #include&stdio.h& void main() { int Sn=0,a,n,i=0,t; printf(&Sn=a+aa+aaa+…+aaa…a\nplease input a,n:&); scanf(&%d,%d&,&a,&n);t=a; while(i&n) { Sn=Sn+t; t=10*t+a; i++; } printf(&%ld\n&,Sn); } 六.编程二 解答: 第六章 函数 一.填空 1. 函数中的形参和调用时的实参都是数组名时,传递方式为( 变量时,传递方式为( ) 。 2. 一个函数在它的函数体内调用它自身称为( 3. 函数体包括函数的说明部分和( ) 。 )变量,它的作用范围只是定义 ) 调用。) ;形参实参都是4. 定义在一个程序块(函数)中的变量,称为( 它的程序块。5. 在函数原型声明中,必须声明函数参数的类型,但可以省略( 6. C 语言源程序中主函数名由系统规定为() 。) ,程序员是不能改变的。 7. 已知函数首部定义为:int stat(int a , float *p) 则此函数的两个参数类型分别是() 、 () 。8. 在 c 语言中,进行函数调用是,实参和实参之间有严格的规定,主要有三种要求分别是: ( ) 相等, ( )一致,并( )对应。 9. 若自定义的函数要求返回一个值,则应在该函数中有一条( )语句。10. 若函数头部定义为 int foo(), 则该函数中 return 语句返回的数据类型是( ) 。 11. 若函数头部定义为 struct stu * foo(), 则该函数中 return 语句返回的数据类型是( ) 。 12. 若函数头部定义为 int * foo(), 则该函数中 return 语句返回的数据类型是( ) 。 13. 若函数头部定义为 float foo(), 则该函数中 return 语句返回的数据类型是( ) 。 14. 若函数头部定义为 char foo(), 则该函数中 return 语句返回的数据类型是( ) 。 15. 若函数头部定义为 char * foo(), 则该函数中 return 语句返回的数据类型是( ) 。 16. 若函数头部定义为 void foo(int a[]),在主程序中有如下语句: int a[5] = {1};? foo(a[5]); 这句函数调用的语句是 ( 正确” “错误” ) 17. 若函数头部定义为 void foo(int *a),在主程序中有如下语句: int array[5] = {1};? foo(array); 这样的语句是( 确” “错误” )) 。 (填“) 。 (填“正18. 若函数头部定位为 void foo (char * str), 在主程序中有如下语句: char array[5] = &good&;? foo(array); 这样的语句是( “正确” “错误” )) 。 (填19. 若一个函数中的主要语句是这样的, int a = 3; if (a & 3) return -1; return 0; 那 么 这 个 函 数 的 返 回 值 是 ( ) 。 20. 若函数头部定义为 void foo (int * a), 主程序中定义 int array[10], 现在要将 arra y 数据传进数组进行处理,正确函数调用语句是() 。 解答: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 二.阅读程序写结果 1. #include &stdio.h& long fun(int x,int n); int main() { int x=3,n=3; p=fun(x,n); printf(&p=%ld\n&,p); return 0; } long fun(int x,int n) { long p=1; for(i=0;i&n;i++) p*=x; } 2. #include &stdio.h& int isDigit(char ch); int main() {
while((ch=getchar())!='\n') { if(isDigit(ch)) putchar(ch); } printf(&\n&); return 0; } int isDigit(char ch) { if(ch&='0' && ch&='9') return 1; else return 0; } 输入:Abc1d23eF45g&回车& 3. #include &stdio.h& void odddivisor(int n); int main() { scanf(&%d&,&n); odddivisor(n); return 0; } void odddivisor(int n) { for(i=3;i&=n/2;i=i+2) if(n%i==0) printf(&\n&); } 输入:15&回车&printf(&%5d&,i);4. #include &stdio.h& void print(); int a=5; int main() { int a=1,b=2; a=a+b; print(); printf(&%d %d\n&,a,b); return 0; } void print() { int b=3; printf(&%d %d\n&,a,b); } 5. #include &stdio.h& int fun1(int x); void fun2(int x); int main() { int x=1; x=fun1(x);printf(&%d\n&,x); return 0; } int fun1(int x) { x++; fun2(x); } void fun2(int x) { x++; } 6. #include &stdio.h& int fun1(int a,int b,int c); int main() { int a=11,b=21,c=31; fun1(a,b,c); printf(&%d %d %d\n&,a,b,c); return 0; } int fun1(int a,int b,int c) { a=a+10; b=b+10; c=c+10; } 7. #include&stdio.h& void fun(int x); int main() { fun(7); printf(&\n&); return 0; } void fun(int x) { if(x/2&1) printf(&%5d&,x); }fun(x/2);8. #include &stdio.h& void fun(int a[]); int main() { int i,a[5]={1,2,3}; fun(a); for(i=0;i&5;i++) printf(&%5d&,a[i]); printf(&\n&); return 0; } void fun(int a[]) { for(i=0;i&5;i++) a[i]+=5; } 9. #include &stdio.h& void fun ( int k ) ; void main ( ) { int w = 5 ; fun ( w ) ; printf ( &\n& ) ; } void fun ( int k ) { if ( k&0 ) fun ( k-1 ) ; printf ( &%d& , k ) ; } 10. #include&stdio.h& void f1(void); int a=1; void main( ) { int a=2; f1(); { int a=3; } printf(&a3=%d\n&,a); } void f1(void) { printf(&a1=%d\n&,a); }printf(&a2=%d\n&,a);11. #include&stdio.h& void f(int a, int b, int *c) { a=20; b=10; *c=a+b; } void main() { int a=10,b=20,c=30,d=40; printf(&%d,%d,%d\n&,a,b,c); }f(a,b,&c);12. #include&stdio.h& void swap(int a,int b); void main() { int a=2,b=3; printf(&a=%d,b=%d\n&,a,b); swap(a,b); printf(&a=%d,b=%d\n&,a,b); } void swap(int a,int b) { c=a; a=b; b=c; } 13. #include &stdio.h& void fun(int a,int b,int c); void main() { int x=10,y=20,z=30; fun(x,y,z); printf(&%d,%d,%d\n&,x,y,z); } void fun(int a,int b,int c) { a=456;b=567;c=678; } 14. #include &stdio.h& float f(int n) {float s=0.0; for(i=1;i&n;i++) s=s+(float)1.0/i; } void main() {float a=0.0; for(i=1;i&3;i++) a=a+f(i); printf(&a=%.4f\n&, a); } 15. #include &stdio.h& int f(int a); void main() { int a=2,i; for(i=0;i&3;i++) printf(&%d&,f(i)); } int f(int a) { int b=0,c=3; c++; return(a+b+c); } 16. #include&stdio.h& int fun(); void main() { int i,x; for(i=0;i&=2;i++) x=fun(); printf(&%d\n&,x); } int fun() { int x=3; x++; }b++;17. #include &stdio.h& float add(float x,float y); void main( ) { float a,b,c; a=1.0; b=2.0; printf(&%f\n&,c); } float add(float x,float y) { z=x+y; return(z); } 18. #include&stdio.h& void fun(int x, int cp, int dp) { cp=x++; dp=++x; }c=add(a,b); void main(void) { int a,c=80, d=-20; a=30; printf(&%d,%d\n&, c,d); } 19. #include &stdio.h& int f(int a,int b); void main() { int i=2,p; p=f(i,i+1); printf(&%d\n&,p); } int f(int a,int b) { if(a&b) c=1; else if (a==b) c=0; else c=-1; return (c); }fun(a,c,d);20. #include &stdio.h& int fun(int n) { if(n= =1) return 1; else return fun(n-1)+3; } void main() { int i,j=0; for(i=1;i&4;i++) j=j+fun(i); printf(&j=%d\n&,j); } 21. #include &stdio.h& void f(int x,int y) { if(x&y) {t=x;x=y;y=t;} } void main() { int a=4,b=3,c=5;f(a,b); f(a,c); f(b,c); printf(&%d,%d,%d&,a,b,c); } 22. #include&stdio.h& int age(int n) { if(n==1) c=10; else c=age(n-1)+2; return(c); } void main() { printf(&%d&,age(5)); } 23. #include &stdio.h& void hello_world(void) { printf(&Hello, world!\n&); } void three_hellos(void) { for (counter =1;counter &= 3;counter++) hello_world(); } void main(void) { three_hellos(); } 24. #include &stdio.h& int f(int a,int b); void main() { int x,i=1,k=3; x=f(i,k); printf(&x=%d \n&,x); } int f(int a,int b) { int M=0; while(b!=0) M=M+a; b--; } return M; }{25. #include&stdio.h& f(int b[ ],int m,int n) { int i,s = 0; for(i =i &i++) s += b[i]; } int main() { int x,a[ ] = {1,2,3,4,5,6,7,8,9}, *p = x = f(p,3,7); printf(&x=%d\n&,x); return 0; } 26. #include &stdio.h& void fun(int i, int j) { int x = 7; printf(&i = %d; j = %d; x = %d\n&, i, j, x); } int main() { int i = 2, x = 5, j = 7; fun(j, 6); printf(&i = %d; j = %d; x = %d\n&, i, j, x); return 0; } 27. #include &stdio.h& void f(int a[]) { int i=0; while(a[i]&=10) { printf(&%d&,a[i]); i++; } } int main() { int a[]={1,7,17,9,11,34}; f(a+1); }28. #include &stdio.h& void add(int x, int y, int z) { z = x + x = x * y = y * printf(&(2) x = %d y = %d z = %d\n&, x, y, z); } int main() { int x = 2, y = 3, z = 0; printf(&(1) x = %d y = %d z = %d\n&, x, y, z); add(x, y, z); printf(&(3) x = %d y = %d z = %d\n&, x, y, z); return 0; }29. #include &stdio.h& int x1 = 30, x2 = 40; void sub(int x, int y) { x1 = x = y = x1; }int main() { int x3 = 10, x4 = 20; sub(x3, x4); sub(x2, x1); printf(& %d, %d, %d, %d\n&, x3, x4, x1, x2); return 0; } 30. #include&stdio.h& void cube() { x = x * x * }int main() { x = 5; cube(); printf(& %d\n&, x); return 0; } 31. #include &stdio.h& invert(int *s, int i, int j) { if(i & j) { invert(s, i + 1,j - 1); t = *(s + i); *(s + i) = *(s + j); *(s + j) = } } void main( ) { int a[6] = {10, 6, 23, -90, 0, 3}, invert(a, 0, 5); for(i = 0; i & 6; i++) printf(&%d, &, a[i]); printf(&\n&); } 32. int func(int a[][3]){int i,j,sum=0; for(i=0;i&3;i++)for(j=0;j&3;j++){a[i][j]=i+j;if(i==j)sum = sum+a[i][j];}}int main(){ int a[3][3]={1,3,5,7,9,11,13,15,17};sum=func(a);printf(&sum=%d&,sum);return 0; }33. # include &stdio.h& int i=10; void fun(); void main( ) { for(i=2; i&0; i--) fun( ); } void fun() { i*=2; printf(&i=%d\n&, i); } 34. #include &stdio.h& int fun(int n) { if(n&=1) return 1; else return fun(n-1)*n; } void main() { int i,j=0; for(i=1;i&=3;i++) j+=fun(i); printf(&j=%d\n&,j); }35. #include &stdio.h& int funa(int a, int b) { if (a & b) t = a/b; else t = a%22; } void main() { int a=33, b=22,c; c=funa(a,b); printf(&c=%d\n&, c); }36. # include &stdio.h& void fun(int i); void main( ) { for(i=2; i&0; i--) fun(i); } void fun(int i) { i*=2; printf(&+%d+&, i); } 37. # include &stdio.h& void fun(int n); void main( ) { int x=879; fun(x); } void fun(int n) { int a,b,c,t; a = n % 10; b = (n/10) % 10; } if ( b & c ) { t = b = c = } if ( a & b ) { t = a = b = } printf( &%d&, b ); }c = (n/100) % 10;if ( a & b ) { t = a = b = 38. #include &stdio.h& int funa(int a, int b) { if (a & b) { t = a = b = } } void main() { int a=33, b=22,c; c=funa(a,b); printf(&c=%d\n&, c); } 39. #include &stdio.h& int swap(int x, int y) { z=x%10; x=y%10; y=z; z=x; } void main() { int a=38, b=29,c; c=swap(a,b); printf(&%d%d\n&, a,c); }40. #include &stdio.h& void fun(int n) { if(n==1) printf(&*\n&); else { printf(&-&); fun(n-1); } } void main() { int i,j=0; for(i=1;i&4;i++) fun(i); printf(&XiaoXin!&); } 解答: 1. p=27 2. 运行结果: 4. 5 3 32 5. 2 6. 11 21 31 7. 3 7 5 8. 678559. . a1=1 a2=3 a3=2 11. 10,20,30 12. a=2,b=3 a=2,b=3 13. 10,20,30 14. a=1.7 16. 4 17. 3.. 80,-20 19. -1 20. j=12 21. 4,3,5 22. 18 23. Hello, world! Hello, world! Hello, world! 24. x=3; 25. x=22 26. i = 7; j = 6; x = 7 i = 2; j = 7; x = 5 27. 7 28. (1) x = 2 y = 3 z = 0 (2) x = 4 y = 9 z = 5 (3) x = 2 y = 3 z = 0 29. 10, 20, 40, 40 30. 125 31. 3,0,-90,23,6,10 32. sum=6 33. i=20 i=40 34. j=9 35. c=1 36. +4++2+ 37. 8 38. c=33 39. 389 40. * -* --* XiaoXin!三.补充程序 1. 定义了一个 max 函数,找两个整数的最大值,其位置在 main 之后. #include &stdio.h& ________________________ int main() { int x,y,z; printf(&input two numbers:\n&); scanf(&%d%d&,&x,&y); ________________________; printf(&maxmum=%d&,z); return 0; } int max(int a,int b) { ________________________; if(a&b)w=a; else w= ________________________; } 2. 用函数 nzp 判别一个整数 a 的值,若大于 0 则输出该值,若小于等于 0 则输出 0 值。 #include &stdio.h& ________________________nzp(________________________) { if(v&0) ________________________ else printf(&%d &,0); } int main() { printf(&input number a:\n&); scanf(&%d&,&a); ________________________ return 0; } 3. 主函数调 f1 计算 n 阶乘. #include &stdio.h& ________________________ int main() { scanf(“%d”,&n); ________________________ printf(&\ns=%ld\n&,s); return 0; } long f2(int n) { ________________________
for(i=1;i&=n;i++) c=c*i; ________________________ } 4. 主函数调 fun 计算 1+1/2!+1/3!+...+1/30!的和. #include &stdio.h& ________________________ int main() { ________________________ printf(&1+1/2!+1/3!...+1/30!=%f\n&,s); return 0; } float fun() { float t=1; ________________________ for(n=1;n&=30;n++) { t*=1/n; s+=t; } ________________________ } 5. 数组 a 中存放了一个学生 5 门课程的成绩,求平均成绩。 #include &stdio.h& ________________________ int main() { float sco[5], printf(&\ninput 5 scores:\n&); for(i=0;i&5;i++) scanf(&%f&,&sco[i]); ________________________ printf(&average score is %5.2f&,av); return 0; } float aver(float a[]) { float s=a[0]; ________________________ for(i=1;i&5;i++) s=s+a[i]; av=s/5; ________________________ } 6. 用递归法计算 n! #include &stdio.h& ________________________ int main() { printf(&\ninput a inteager number:\n&); scanf(&%d&,&n); ________________________ printf(&%d!=%ld&,n,y); return 0; } ________________________ff( int n) { if(n&0) printf(&n&0,input error&); else if(n==0||n==1) f=1; else f=ff(n-1)*n; ________________________ }7. 输入正方体的长宽高 l,w,h。求体积及三个面 x*y,x*z,y*z 的面积。 #include &stdio.h& int s1; ________________________ int vs( int a,int b,int c) { ________________________ v=a*b*c; s1=a*b; s2=b*c; s3=a*c; ________________________ } int main() { int v,l,w,h; printf(&\ninput length,width and height\n&); scanf(&%d%d%d&,&l,&w,&h); ________________________ printf(&v=%d s1=%d s2=%d s3=%d\n&,v,s1,s2,s3); return 0; } 8. 输入两个正整数 num1,num2,求其最大公约数. #include &stdio.h& ________________________ int main() { int num1,num2; printf(&please input two numbers:\n&); scanf(&%d,%d&,&num1,&num2); ________________________ printf(&gongyueshu:%d\n&,d); return 0; } int gongyue(int a,int b) { ________________________ while(b) { temp=a%b; a=b; b= } ________________________ } 9. 利用递归函数调用方式,输出 6 个数字。 #include &stdio.h& ________________________ int main() { int w=5; fun(w); printf(&\n&); return 0; } ________________________fun(________________________) { if(k&0) ________________________; printf(“%d”,k); } 10. 主函数调 printstar 打印一串星形图案. #include &stdio.h& ________________________ int main() { ________________________ ; return 0; } ________________________printstar(________________________) { printf(“*************\n”); }解答: 1. int max(int a,int b); z=max(x,y); 2. void int v printf(&%d&,v); nzp(a); 3. long f2(int n); s=f2(n); long c=1; 4. float fun(void); s=fun(); float s=0;5. float aver(float a[]); av=aver(sco);6. long ff(int n); y=ff(n); 7. int s2,s3; v=vs(l.w,h); 8. int gongyue(int a,int b); d=gongyue(num1,num2);
9. void fun(int k); fun(k-1); 10. void printstar(void); printstar(); void void 四.改错题 解答: 五.编程一 解答: 六.编程二 1. 编程实现:任意输入两个正整数,求它们的最大公约数和最小公倍数。要求最大公约数 通过自定义函数来输出。 2. 编程实现:求出 10~10000 之内的所有素数。要求素数判断通过自定义函数来实现。 3. 编程实现:输出所有的“水仙花数” 。所谓“水仙花数”是指一个 3 位数,其各位数字立 方和等于该数本身。例如:153 是一个“水仙花数” ,因为 。要求水仙花数的判断通过自定 义函数来实现。 4. 编程实现:打印出 2~1000 之间的所有完数。所谓完数,是指这样的数,该数的各因子之 和正好等于该数本身,例如:6=1+2+3;28=1+2+4+7+14;因此,6、28 都是完数。要求完数 的 判断通过自定义函数来实现。 5. 编程实现:打印出 10~9999 之间的所有回文数,要求每 10 个数一行输出。要求回文数的 判 断通过自定义函数来实现。 6. 编程实现:打印出 1~9999 之间的所有同构数,所谓同构数是指一个数如果出现在该数平 方的右端,该数就是同构数。如 5,25 都是同构数。要求同构数的判断通过自定义函数来实 现 。 7. 给定一 5*5 的整型矩阵,求所有正对角线元素之和,并以矩阵的形式输出矩阵的值。要 求 :对角线元素之和及矩阵输出分别通过两个自定义函数来实现。 8. 编程实现:输入一 4*4 的矩阵的值,求出每行的最大值并输出其所在列号。要求:通过 通 过自定义函数实现矩阵的输入输出。 9. 编程实现:任意给定一个十进制的整数,将其转换成二进制,按位将其存放到数组中, 然后输出,要求数制转换通过自定义函数来实现。10. 编程实现:任意输入一个正整数,编程求出它是几位数并将其逆序输出。要求通过自定 义函数实现求是几位数,该函数原形为:int ni(int x,int a[]);函数返回值是该数是几位 数,x 为给定的数,a 中存放该数的各个位。 11. 编写程序从键盘输入 x 和 n 的值,求 xn (n 为大于等于零的整数) ,要求用 n 递归函数求 x 。12. 编写实现:输入两个正整数 m,n(m&n) ,计算从 m 个元素中任意取 n 个元素的组合,计 算机公式为: 要求通过递归函数求阶乘。13. 编程实现:从键盘任意输入 10 个不相同的整数,然后,输入要查找的数 x,如果在这 10 个 数中找到 x,则打印“Found!” ;如果找不到,则打印“Not found!” 。要求通过自定义函数 实现查找功能。 14. 从键盘输入某班 20 个学生的成绩和学号,然后从键盘任意输入一个学生的学号,查找 出 他的成绩并输出,若未找到,给出相应提示。要求通过自定义函数实现查找功能。 15. 编程实现:从键盘任意输入某班 20 个学生的姓名和成绩,输出最高分及不及格学生的 人 数。要求分别用两个自定义函数求最高分和不及格人数。 16. 编程实现:输入 2 个降序排列的整数数列,将这两个数列合并存放到另一个数组中,要 求 每个数都一次到位,不得在新数组中重新排序。要求数列合并通过自定义函数来实现。 17. 编程实现:输入 N 名职工的姓名及计算机水平考试的成绩,输出及格人数和及格的职工 信 息。要求:职工信息的输入和输出分别通过自定义函数来实现。18. 编程实现:从键盘输入 10 名学生的信息,包括学号、姓名、成绩,用一个排序函数 sort 完成学生成绩降序排列,并输出学生排序后的结果。 19. 编程实现:任意输入一组不多于 20 个的升序排列的若干个整数,任意输入不多于 10 个 的 整数(-1 作为输入结束标志) ,将其插入到该序列中,使其依然有序。要求:通过自定义函 数实现将一个整数插入到一个有序序列中,使其依然有序。 20. 一个班级有 30 个学生,每个学生有学号、姓名及数学、语文、计算机成绩、平均成绩。 要求编程实现以下功能: 1) 从键盘上输入 30 个学生的信息,平均成绩通过公式:平均成绩=(数学+语文+计算 机 )/3 计算得出。 2) 输出所有平均成绩大于等于 85 的学生姓名(要求用自定义函数实现该功能)。 解答: 1. #include &stdio.h& int GreatComDiv(int m,int n); int LeaseComMul(int m,int n); void main() { int m,n,t; printf(&请输入 m 和 n 的值:&); scanf(&%d%d&,&m,&n); if((m&=0)||(n&=0)) { printf(&输入错误!请重新输入!\n&); scanf(&%d%d&,&m,&n); } if(m&n) {t=m;m=n;n=t;} printf(&m 和 n 的最大公约数是: %d\n&,GreatComDiv(m,n)); printf(&m 和 n 的最小公倍数是: %d\n&,LeaseComMul(m,n)); } int GreatComDiv(int m,int n) { r=m%n; while(r!=0) { m=n; n=r; r=m%n; } } /*利用辗除法,直到 b 为 0 为止*/int LeaseComMul(int m,int n) { greatcomdiv=GreatComDiv( m, n); return m*n/ }2. #include &stdio.h& int sushu(int n); void main() { printf(&input n:\n&); scanf(&%d&,&n); if (sushu(n)) printf(&%d 是素数\n&,n); else printf(&%d 不是素数\n&,n); } int sushu(int n) { for(i=2;i&n;i++) if(n%i==0)return 0;return 1; } 3. 编程实现:输出所有的“水仙花数” 。所谓“水仙花数”是指一个 3 位数,其各位数字立 方和等于该数本身。例如:153 是一个“水仙花数” ,因为 。要求水仙花数的判断通过自定 义函数来实现。 #include &stdio.h& int fun(int n); void main() { for(i=100;i&=999;i++) if (fun(i))printf(&%d\n&,i); } int fun(int n) {int a,b,c; a=n/100;b=n/10%10;c=n%10; }if (a*a*a+b*b*b+c*c*c==n)return 1;return0;4. #include &stdio.h& int wanshu(int n); void main() { printf(&input n:\n&); scanf(&%d&,&n); if (wanshu(n)) printf(&%d 是完数\n&,n); else printf(&%d 不是完数\n&,n); } int wanshu(int n) { int i,s=0; for(i=1;i&=n/2;i++) if(n%i==0) s+=i; if(s==n) return 1; else return 0;}5. 方法一: #include &stdio.h& int huiwen(int n); void main() { printf(&input n:\n&); scanf(&%d&,&n); if (huiwen(n)) printf(&%d 是回文数\n&,n); else printf(&%d 不是回文数\n&,n);} int huiwen(int n) { int a[6],i=0,j; while (n!=0) //从第一个开是放元素 {i++; a[i]=n%10; n=n/10; } for(j=1;j&i/2;j++) if(a[j]!=a[i-j+1]) return 0; return 1; }方法二、#include &stdio.h& int rev(int a);------------------------------------------------------------------------- 1 分 void main() { int x, y,i=0; for(x=1;x&1000;x++)-------------------------------------------------------------2 分 { y=rev(x); if(x==y) { printf(&%6d&,x);----------------------------------------------------------3 分 --2 分 } } int rev(int a) { int m, b=0;--------------------------------------------------------------------------1 分 while(a!=0) { m=a%10; b=b*10+m; a=a/10;--------------------------------------------------------------------------5 分 }------------------------------------------------------------------------------1 分 i++; if(i%10==0) } printf(&\n&);----------------------------------------------------------6. #include &stdio.h& int tgshu(int n); void main() { printf(&input n:\n&); scanf(&%d&,&n); if (tgshu(n)) printf(&%d 是同构数\n&,n); else printf(&%d 不是同构数\n&,n); } int tgshu(int n) { int d=1,nn,k=0,t; nn=n*n; t=n; while(t!=0) { d=d*10; t=t/10; if(nn%d==n) return 1;} else return 0; }7. #include &stdio.h& #define n 5 void out(int a[n][n] ); int he(int a[n][n]); void main() { int a[n][n],i,j,s; printf(&input 5*5 elements\n&); for(i=0;i&n;i++) for(j=0;j&n;j++) scanf(&%d&,&a[i][j]); printf(&\n&); s=he(a); printf(&he=%d\n&,s); out(a); } void out(int a[n][n]) { int i,j; for(i=0;i&n;i++) { for(j=0;j&n;j++) printf(&%6d&,a[i][j]); printf(&\n&); } } int he(int a[n][n]) { int i,sum=0; for(i=0;i&n;i++) sum+=a[i][i]; }8. #include &stdio.h& #define n 4 void out(int a[n][n] ); void inp(int a[n][n]); void main() { int a[n][n],i,j,k; printf(&input 5*5 elements\n&); inp(a); for(i=0;i&n;i++) { k=0; for(j=1;j&n;j++) if(a[i][j]&a[i][k]) k=j; printf(& 第%d 行最小值为:%5d,它是第%2d 列\n&,i+1,a[i][k],k+1); } printf(&\n&); out(a); } void inp(int a[n][n]) { int i,j; for(i=0;i&n;i++) for(j=0;j&n;j++) scanf(&%d&,&a[i][j]); } void out(int a[n][n]) { int i,j; for(i=0;i&n;i++) { for(j=0;j&n;j++) printf(&%6d&,a[i][j]); printf(&\n&); } }9. #include &stdio.h& int change(int x,int a[]) //返回值为二进制的位数 { int n=-1; while(x!=0) { n++; a[n]=x%2; x=x/2; } } void main() { int x,a[20],i,n; printf(&input x\n&); scanf(&%d&,&x); n=change(x,a); for(i=n;i&=0;i--) printf(&%1d&,a[i]); printf(&\n&); } 10. #include &stdio.h& int ni(int x,int a[]) //返回值为数的位数 { int n=-1; while(x!=0) { n++; a[n]=x%10; x=x/10; } } void main() { int x,a[20],i,n; printf(&input x\n&); scanf(&%d&,&x); n=ni(x,a); for(i=0;i&=n;i++) printf(&%1d&,a[i]); printf(&\n&); } 11. #include &stdio.h& int exp(int x,int n); void main() { int x,n; printf(&input x,n:\n&); scanf(&%d%d&,&x,&n); printf(&%d\n&,exp(x,n)); } int exp(int x,int n) { if (n==1) return x*exp(x,n-1); }12. #include &stdio.h& long int jch(int n) { if(n==1) return 1; else return n*jch(n-1); } void main() { int m,n, printf(&input two integers m,n(m&n)\n&); scanf(&%d,%d&,&m,&n); if(m&=n) zuhe=jch(m)/(jch(n)*jch(m-n)); printf(&%d,%d 的组合为:%d&,m,n,zuhe); } 13. #include &stdio.h& void serach(int a[],int x) { for (i=0;i&10;i++) if(a[i]==x) { printf(&Found\n&); } printf(&Not found!\n&); } void main() { int i,a[10],x; printf(&input 10 integers \n&); for (i=0;i&10;i++) scanf(&%d&,&a[i]); printf(&input x\n&); scanf(&%d&,&x); serach(a,x); } 14. #include &stdio.h& #include &string.h& typedef struct { char no[10]; } void search(studtype a[],char xno[]) { for (i=0;i&20;i++) if(strcmp(a[i].no,xno)==0) { printf(&%d\n&,a[i].score); } printf(&Not found!\n&); } void main() { studtype stu[20]; char xno[10]; printf(&input 20 no,score\n&); for (i=0;i&20;i++) scanf(&%s%d&,stu[i].no,&stu[i].score); printf(&input xno\n&); scanf(&%s&,xno); search(stu,xno); } 15. 编程实现:从键盘任意输入某班 20 个学生的姓名和成绩,输出最高分及不及格学生的 人 数。要求分别用两个自定义函数求最高分和不及格人数。 #define N 20 #include&stdio.h& typedef struct { char name[10]; } int max(datatype stu[]); int num(datatype stu[]); void main() { datatype stu[N]; int i,max_score,n; /*姓名*/ /*成绩*/ /*最高分函数声明*/ /*不及格人数函数声明*/ printf(&请输入 %d 名职工姓名 成绩:\n&, N); for(i=0;i&N;i++) scanf(&%s%d&,stu[i].name,&stu[i].score); max_score=max(stu); n=num(stu); printf(&最高分:%d;不及格人数%d&,max_score,n); } int max(datatype stu[]) /*最高分函数定义*/ {int m,i; m=0; for(i=1;i&N;i++) if(stu[i].score&stu[m].score)m=i; return stu[m]. } int num(datatype stu[]) { int i,n=0; for(i=0;i&N;i++) if(stu[i].score&60) n++; } /*不及格人数函数定义*/16. 编程实现:输入 2 个降序排列的整数数列,将这两个数列合并存放到另一个数组中,要 求 每个数都一次到位,不得在新数组中重新排序。要求数列合并通过自定义函数来实现。 #define M 4 #define N 5 #include&stdio.h& void merge(int a[],int b[],int c[]); void main() { int i,a[M],b[N],c[M+N]; printf(&请输入 %d 个降序排列的整数:\n&, M); for(i=0;i&M;i++) scanf(&%d&,&a[i]); printf(&请输入 %d 个降序排列的整数:\n&, N); for(i=0;i&N;i++) scanf(&%d&,&b[i]); merge(a,b,c); for(i=0;i&M+N;i++) printf(&%5d&,c[i]); } void merge(int a[],int b[],int c[]) { int i,j,k; i=0;j=0;k=0; while(i&M && j&N) if(a[i]&b[j]) c[k++]=a[i++]; else c[k++]=b[j++]; while(i&M) c[k++]=a[i++]; while(j&N) c[k++]=b[j++]; }17. 编程实现:输入 N 名职工的姓名及计算机水平考试的成绩,输出及格人数和及格的职工 信 息。要求:职工信息的输入和输出分别通过自定义函数来实现。 #define N 10 #include&stdio.h& //#include&stdlib.h& typedef struct { char name[10]; } void input(datatype work[]); void print(datatype work[]); void main() { datatype work[N]; input(work); print(work); } void input(datatype work[]) /*input 函数定义*/ { printf(&请输入 %d 名 学生的姓名 成绩:\n&, N); for(i=0;i&N;i++) scanf(&%s%f&,work[i].name,&work[i].score); } /*姓名*/ /*成绩*/ /*input 函数声明*/ /*print 函数声明*/ void print(datatype work[]) /*print 函数定义*/ { for(i=0;i&N;i++) if(work[i].score&60)printf(&%10s\n&,work[i].name); }18. 编程实现:从键盘输入 10 名学生的信息,包括学号、姓名、成绩,用一个排序函数 sort 完成学生成绩降序排列,并输出学生排序后的结果。 #define N 10 #include&stdio.h& //#include&stdlib.h& typedef { char num[20]; char name[20]; } void input(stutype stu[]); void sort(stutype stu[]); void print(stutype stu[]); int main() { stutype stu[N]; input(stu); sort(stu); print(stu); return 0; } void input(stutype stu[]) /*input 函数定义*/ { printf(&请输入 %d 名学生信息(学号 姓名 成绩):\n&, N); for(i=0;i&N;i++) scanf(&%s%s%f&,stu[i].num,stu[i].name,&stu[i].score); } void sort(stutype stu[]) { int i,k,j; for(i=0;i&N-1;i++) { /*sort 函数定义*/ /*学号*/ /*姓名*/ /*成绩*/ /*input 函数声明*/ /*sort 函数声明*/ /*print 函数声明*/ k=i; for(j=i+1;j&N;j++) if(stu[k].score&stu[j].score) k=j; if(k!=i) { t=stu[i]; stu[i]=stu[k]; stu[k]=t; } } } void print(stutype stu[]) { /*print 函数定义*/printf(&****名次 学号 姓名 成绩****\n&); for(i=0;i&N;i++) printf(&%6d%8s%8s%8.2f\n&,i+1,stu[i].num,stu[i].name, stu[i].score); }19. //编程实现:任意输入一组不多于 20 个的升序排列的若干个整数,任意输入不多于 10 个 的整数(-1 作为输入结束标志) ,将其插入到该序列中,使其依然有序。要求:通过自定义 函数实现将一个整数插入到一个有序序列中,使其依然有序。 #include &stdio.h& void ins(int a[],int*n,int x); void main() { int a[30],x,m,i; m=-1; printf(&输入一组不多于 20 个的升序排列的若干个整数,-1 作为输入结 束标志\n&); scanf(&%d&,&x); while(x!=-1) { m++; a[m]=x; scanf(&%d&,&x); } printf(&输入一组不多于 10 个的升序排列的若干个整数, -1 作为输入结束标志\n&); scanf(&%d&,&x); while(x!=-1) { ins(a,&m,x); scanf(&%d&,&x); } for(i=0;i&=m;i++) printf(&%5d&,a[i]); } void ins(int a[],int*n,int x) { int i=*n; while(a[i]&x&&i&=0) { a[i+1]=a[i]; i--; } a[i+1]=x; (*n)++; }20. 一个班级有 30 个学生,每个学生有学号、姓名及数学、语文、计算机成绩、平均成绩。 要求编程实现以下功能: 1) 从键盘上输入 30 个学生的信息,平均成绩通过公式:平均成绩=(数学+语文+计算 机 )/3 计算得出。 2)输出所有平均成绩大于等于 85 的学生姓名(要求用自定义函数实现该功能)。 #include &stdio.h& #define n 30 typedef struct { char no[11],name[9]; int math,chiness, } void out(studtype a[]) { for (i=0;i&n;i++) if(a[i].ave&=85)printf(&%10s\n&,a[i].name); } void main() { studtype stu[n]; printf(&input no,name,math,chiness,computer\n&); for (i=0;i&n;i++) { scanf(&%s%s%d%d%d&,stu[i].no,stu[i].name,&stu[i].math,&stu[i].chiness ,&stu[i].comp); stu[i].ave=(stu[i].math+stu[i].chiness+stu[i].comp)/3.0; } out(stu); } 第七章 数组 一.填空 1. 数组是由固定数目的()的变量按一定顺序排列而构成的。 )个字节2. 设有数组定义:char array[]=“China” ;则数组所占的存储空间为( 。 3. 一个二维字符数组 a[10][20]能够存储( )个字符串。4. 假定在一维数组 b[10]中,元素 b[5]的指针为 p,则 p+4 所指向的元素为( 5. 一维数组的下标从( )开始。 )。) 。6. 设有数组 a[10];则首地址可以写成 (7. 设有数组 int a[10], 数组元素 a[5]用指针表示的形式是( 8. 设有数组 int a[10][15], 数组元素 a[5][3]用指针表示的形式是( 9. 定义 3 行 4 列的整型二维数组 a 的语句是( ) 。 10. 定义 int b[ ]={5,6,7,8}, y, *p=b; 执行 y=*p++ 以后, y 的值为( 11. 按下面的语句定义数组 a 后,a [2][0] 的值为( int a[3][2]={2,4,6,8,10}; )。 )。 ) 。) 。12. 假设要把“student! ”存入一个字符数组,则该数组长度应该至少为( 。 13. 在 C 语言中,如果采用语句 int a[2][3] = {1,2,3,4,5} 完成一个二维数组的定义和初 始化,那么 a[0][1] 的值为( ) 。 14. 在 C 语言中,如果采用语句 int a[2][3] = {1,2,3,4,5} 完成一个二维数组的定义和初 始化,再定义 int *b = a[0],那么 *(b+2) 的值为 ( ). 15. 若 int a[ ][3]={1,2,3,4,5,6,7,8,9};则*(*a+1)的值是( 16. 按下面的语句定义数组 b 后,b[2][1]的值为( int b[][2]={2,1,4,3,5,6}。 ) 。 ) 。) 17. 设 int a[]={0,1,2,3,4,5,6,7,8,9},*p=a,则*p+4=( 18. 定义 2 行 3 列 5 层的整型三维维数组 a 的语句是( 19. 若有 int a[3]={10,12,30};则*(a+2)+3= ( 20. 若有 int a[3]={10,12,30};则 a+1 是() 。 ) 。 ) 。 )的地址。21. 假设 int 型变量占两个字节的存储单元,若有定义:int x[10]={0,2,4}; 则数组 x 在内存 中所占字节数为 ( ) 。 22. 若有定义 int a[][3]={1,2,3,4,5,6,7};,则 a 数组第一维的大小是( ) 。 23. 数组 int a[3][3];共定义了( 24. C 语言中,二维数组的存放方式为按( )个数组元素。 )存放。 (填“行”或“列” )25. 定义 int a[10]={11,12,13,14,15}, *p=&a[5]; 假设&a[0]和&a[1]的值分别是 0x2000 和 0 x2004,则 p 的值是( ) 。 26. 定义 int a[10]={11,12,13,14,15}, *p=&a[3]; 假设&a[0]和&a[1]的值分别是 0x2000 和 0 x2004,则表达式 a[0]+*p 的值是( ) 。 27. 对一维数组初始化时,若有 int ) 。 a[10]={0,1,2,3,4},则 a[5]的值是(28. 已知:int a[][3]={1,3,5,7,9,11}; 此时数组元素 a[1][2]的值为( ) 。 29. 定义 char a[7]= &abcdef&; char b[4]= &ABC&,执行语句 strcpy(a,b);printf(&%s&,a), 输出结果是( ) 。 30. 定义 int a[10]={1,3,5,7,9,11,13,15,17,19},*p=a;执行语句 printf(&%d&,*p+7);输出 结果是( ) 。 31. 已知 int a[5] = { 2, 3, 4, 5, 6 }; int *p = a+2; 则表达式 *p*a[3] 的值是( ) 。 32. 定义 char a[7]= &123456&; char b[4]= &ABC&,执行语句 strcpy(a,b); printf(&%c&,a[ 6]),输出结果是( ) 。 33. 对整形数组 int a[5]={1,2,3}; 则执行语句 a[2]=a[2]+a[1]*(*(a+3)); a[2]的值为( ) 34. 定义 char a[5]={65,66,67},*p=a; 则执行语句 printf(&%s&,p+1);输出结果为( )。 35. 对于定义 struct TData{ int a[2]; }; struct TDa

我要回帖

更多关于 min.floatvalue 的文章

 

随机推荐