《C语言程序设计教程》(第三版)李凤霞 主编——第十章习题答案
《C语言程序设计教程》(第三版)李凤霞 主编——第一章习题答案

第一章:程序设计基础知识一、单项选择题1、面向过程的程序设计语言是________。
A)机器语言 B)汇编语言 C)高级语言 D)第四代语言2、程序设计一般包含以下四个步骤,其中其中首先应该完成的是_________。
A)设计数据结构和算法B)建立数学模型C)编写程序 D)调试和运行程序3、以下常用算法中适合计算等差级数的算法是_________。
A)枚举法B)递推法 C)分治法 D)排序法4、以下不属于算法基本特征的是__________。
A)有穷性 B)有效性C)可靠性 D)有一个或多各输出5、以下描述中不正确的是___________。
A)程序就是软件,但软件不仅仅是程序。
B)程序是指令的集合,计算机语言是编写程序的工具。
C)计算机语言都是形式化的语言,它有一个语法规则和定义。
D)计算机语言只能编写程序而不能表示算法。
6、下面描述中,正确的是_____________。
A)结构化程序设计方法是面向过程程序设计的主流。
B)算法就是计算方法。
C)一个正确的程序就是指程序书写正确。
D)计算机语言就是编写程序的工具而不是表示算法的工具。
7、下面描述中,不正确的是______________。
A)递归法的关键是必须有一个递归终止的条件。
B)递归算法要求语言具有反复自我调用子程序的能力。
C)对于同一个问题,递推算法比递归算法的执行时间要长。
D)递推算法总可以转换为一个递归算法。
8、N-S图与传统流程图比较,主要优点是_________。
A)杜绝了程序的无条件转移。
B)具有顺序、选择和循环三种基本结构。
C)简单、只管。
D)有利于编写程序。
A)B)C)D)二、填空题1、在流程图符号中,判断框中应该填写的的是________。
(判断条件)2、结构化程序设计是__________应遵循的方法和原则。
(面向过程编程)3、结构化程序必须用__________程序设计语言来编写。
(具有结构化控制语句)4、可以被连续执行的一条条指令的集合称为计算机的________。
C语言程序设计(第三版)的习题集库答案.doc

C 语言程序设计(第三版)习题库1、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。
用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。
请编程序。
#include <stdio.h>main(){float r,h,C1,Sa,Sb,Va,Vb;scanf(__”%f ”__,&r);scanf(”%d ”,__&h _);;C1=2*3.14*r;Sa=3.14*r*r;Sb=4*Sa;Va=4*3.14*r*r*r/3;Vb=Sa*h;printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb );}2、输入一个华氏温度,要求输出摄氏温度。
公式为 c=5(F-32)/9输出要求有文字说明,取位2小数。
#include <stdio.h>main(){float F,c;scanf("%f",&F);____c=5*(F-32)/9______;printf("c=%.2f",c);}3、有一函数:⎪⎩⎪⎨⎧≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。
#include <stdio.h>main(){int x,y;printf("输入x :");scanf("%d",&x);if(x<1) { /* x<1 */y=x;printf("x=%3d, y=x=%d\n",x,y);} else if (____x<10_______){ /* 1≤x -10 */_____y=2*x-1_______;printf("x=%3d, y=2*x-1=%d\n",x,y);} else{ /* x≥10 */y=3*x-11;printf("x=%3d, y=3*x-11=%d\n",x# include "stdio.h"main(){int x,y;scanf("%d",&x);if(x<1){ y=x;}else if(x>=1 && x<10){ y=2*x-1;}else{ y=3*x-11;}printf("%d",y);}# include "stdio.h"main(){int x,y;scanf("%d",&x);if(x<1){ y=x;}else if(x>=1 && x<10){ y=2*x-1;}else{ y=3*x-11;}printf("%d\n",y);}# include "stdio.h"main(){int x,y;scanf("%d",&x);if(x<1){ y=x;}else if(x>=1 && x<10){ y=2*x-1;}else{ y=3*x-11;}printf("%d",y);}scanf("%d",&x);if(x<1){ y=x;}else if(x>=1 && x<10){ y=2*x-1;}else{ y=3*x-11;}# include "stdio.h" main(){int x,y;scanf("%d",&x);if(x<1)y=x;else if(x>=1 && x<10)y=2*x-1;elsey=3*x-11;printf("%d",y);},y);}}4、给定一个不多于5位的正整数,要求:①求它是几位数;②按逆序打印出各位数字。
《C语言程序设计教程》(第三版)李凤霞 主编——第九章习题答案

习题九一、单选题1、已知:int *p,a;则语句"p=&a;"中的运算符"&"的含义是()。
A)位与运算 B)逻辑与运算 C)取指针内容D)取变量地址2、已知:int a,x;则正确的赋值语句是()。
A)a=(a[1]+a[2])/2 B)a*=*a+1; C)a=(x=1,x++,x+2); D)a="goog";3、已知:int a,*p=&a; 则下列函数调用中错误的是()。
A)scanf("%d",&a); B)scanf("%d",p); C)printf("%d",a); D)printf("%d",p);4、main(argc,argv)中形式参数argv的正确说明形式应当为()。
A)char *argv[ ] B)char argv[ ][ ] C)char argv[ ] D)char *argv5、说明语句"int (*p)(); "的含义是()。
A)p是一个指向一维数组的指针变量B)p是一个指针变量,指向一个整型数据C)p是一个指向函数的指针,该函数的返回值是一个整型D)以上都不对6、设有说明int(*ptr)[M];其中的标识符ptr是()。
A)M个指向整型变量的指针B)指向M个整型变量的函数指针C)一个指向有M个整型元素的一维数组的指针D)具有M个指针元素的一维指针数组,每个元素都只能指向整型变量7、已知:double *p[6]; 它的含义是()。
A)p是指向double型变量的指针 B)p是double型数组C)p是指针数组 D)p是数组指针8、已知函数说明语句:void *f(); 则它的含义是()。
A)函数f的返回值是一个通用型的指针 B)函数f的返回值可以是任意的数据类型C)函数f无返回值D)指针f指向一个函数,该函数无返回值9、已知:char s[10],*p=s,则在下列语句中,错误的语句是()。
C程序设计(第三版)习题答案(10章)_谭浩强著(3)_官田

{int *p;
for(p=number;p<number+9;p++)
printf("%d,",*p);
printf("%d\n",*p);
}
10.4
main()
{int number[20],n,m,i;
scanf("%d",&n);
scanf("%d",&m);
for(i=0;i<n:i++)
scanf("%d",&number[i]);
move(number,n,m);
input(number)
int number[10];
{int i;
for(i=0;i<10;i++)
scanf("%d",&number[i]);
}
max_min_value(number)
int number[10];
p++;
}
printf("sle=%d,cle=%d,wsp=%d,di=%d,ot=%d\n",sle,cle,wsp,di,ot);
}
10.9
main()
{int a[3][3],*p,i;
*p=number[0];
number[0]=*min;
*min=*p;
*p=number[9];
number[9]=*max;
*max=*p;
return;
《C语言程序设计教程》第三版课后习题参考答案

《C语言程序设计教程》第三版课后习题参考答案C语言程序设计教程第三版课后习题参考答案第一章:C语言概述1.1 C语言的特点答案:C语言是一种通用的、面向过程的程序设计语言,具有高效、简洁、灵活等特点。
它提供了丰富的程序设计元素和功能,适用于各种不同的应用领域。
1.2 C语言程序的基本结构答案:C语言程序由预处理指令、函数声明、函数定义、变量声明和语句组成。
其中,预处理指令用来引入头文件或定义宏,函数声明用来声明函数的名称和参数,函数定义用来实现函数的功能,变量声明用来声明变量的类型和名称,语句用来表达具体的计算过程。
1.3 C语言的数据类型答案:C语言提供了多种数据类型,包括基本类型(整型、浮点型、字符型等)和派生类型(数组、指针、结构体等)。
每种数据类型在内存中占据一定的存储空间,并具有特定的取值范围和操作规则。
1.4 C语言的运算符和表达式答案:C语言支持各种运算符和表达式,例如算术运算符(+、-、*、/等)、关系运算符(>、<、==等)、逻辑运算符(&&、||、!等)等。
通过运算符和表达式可以进行各种数值计算和逻辑判断。
第二章:基本数据类型与运算2.1 整型数据类型答案:C语言提供了不同长度的整型数据类型,包括有符号整型(int、long等)和无符号整型(unsigned int、unsigned long等)。
整型数据类型可以表示整数值,并具有不同的取值范围。
2.2 浮点型数据类型答案:C语言提供了浮点型数据类型(float、double等),用来表示带小数部分的实数值。
浮点型数据可以表示较大或较小的数值,并具有一定的精度。
2.3 字符型数据类型答案:C语言提供了字符型数据类型(char),用来表示单个字符。
字符型数据可以用于表示各种字符(包括字母、数字、符号等)。
2.4 布尔型数据类型答案:C语言不直接支持布尔型数据类型,但可以使用整型数据类型来表示布尔值(0表示假、非零表示真)。
C语言程序设计习题答案(第三版)

C语言程序设计(第三版)习题答案习题一一、名词解释(1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)高级语言P2(5)汇编程序P3 (6)编译程序P4 (7)算法P5 (8)结构化程序设计方法P10二、简答题1. 设计程序时应遵循哪些基本原则?P4答:正确性、可靠性、简明性、有效性、可维护性、可移植性。
2. 算法具有哪些特点?答:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。
3. 算法的表示形式有哪几种?答:自然语言、伪代码、传统流程图、N-S流程图、计算机语言。
4. 结构化程序设计方法的三种基本结构是什么?答:顺序结构、选择结构和循环结构。
5. 传统流程图与N-S流程图最大的区别是什么?答:N-S流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。
三、用传统流程图或N-S流程图表示求解以下问题的算法。
1. 从键盘输入10个整数,求出其中的最小数并输出。
2. 求1+2+3+…+100的值。
3. 求10~50的所有素数之和。
4. 求下列分段函数的值。
四、请参照本章例题,编写一个简单的C 程序,输出以下三行信息。
**************************Yangtze University**************************#include <stdio.h>void main(){printf("**************************\n");printf(" Yangtze University\n");printf("**************************\n");}4X-1 (X ≤1) 5(X-1)+6 (1<X<5) 6-3X (X ≥5)习题二一、选择题1~10: B C D C D D B C A A11~20: D A C D B D B A C D二、填空题1.字母 L 或字母 l2. %c(或字符) 、 %d(或整数)3.在程序运行过程中,其值可以在一定的范围内变化的量4.'\0'5.小数形式、指数形式6.关键字、预定义标识符、用户标识符7.字母、数字、下划线、数字8. 189. 2 、 1 、 3010.双精度实数或double11.赋值、逗号、 20 、 20 、 20 、 412. 4 、 4习题三一、选择题1~10: B C C B C C C D C C注:第4题答案D为: 10 22↙33↙二、填空题1. printf 、 scanf2. h3."%5d"4.'\0'5. e 、 E6. 67. s 、 c8. *9. - 、 +10. i三、编程题1. 编写程序,从键盘输入一个以秒为单位的时间数,将其换算成几小时几分几秒,然后进行输出。
C语言程序设计教程第三版(李凤霞)习题答案

教材习题答案第一章习题一、单项选择题1. C2. B3. B4. C5. D6. A7. C8. A二、填空题1. 判断条件2. 面向过程编程3. 结构化4. 程序5. 面向对象的程序设计语言6. 基本功能操作、控制结构7. 有穷性8. 直到型循环结构9. 算法10.可读性11.模块化12.对问题的分解和模块的划分习题一、单项选择题1. B2. D3. C4. B5. A6. A7. B8.C二、填空题1. 主2. C编译系统3. 函数、函数4. 输入输出5. 头6. .OBJ7. 库函数8. 文本第三章习题一、单项选择题1. D2. B3. A5. C6. D7. D8. B9. B10.C11.A12.D13.C14.C15.C16.A17.C18.C19.C20.D21.A22.D23.D24.D,A25.D26.A27.B二、填空题1. 补码2. 30810-±~ ) 308 10 , 15 —6 2. 308 10 -±( ~ ) 308 10 , 1563.逻辑4. 单目,自右向左5. 函数调用6.a或b(题目有错,小括号后面的c<=98改成(c>=97&&c<=98)就可以得到所给的答案了)7.8.65,89第四章习题一、单项选择题1. D2. C3. D4. A5. D6. B7. A8. C9. B10.B二、填空题1.一2.5.1690003.(1)-200 2500(2)i=-200,j=2500(3)2500200=-=ji4.a=98,b=765.000000,c=4321.000000 5. 10025.811.89234,10025.81按Enter键)1.89234,100(按Tab键)25.81(按Tab键)1.892346.0,0,37.38.scanf(" %lf %lf %lf",&a,&b,&c);9.13 13.000000 13.00000010.b=a;a=c;c=b;a=a+b;c=c-b;(对于本题来说,后者的答案更好,不仅使a 与c的值进行交换而且能保持中间变量b的值不发生改变)第五章习题一、单项选择题1. D2. C3. B4. B5. D6. A7. B8. D二、填空题1.非零,零k= =02.k= =03.if(abs(x)>4) Printf(“%d”,x);elseprintf(“error!”);4.if(x%2==1&&( (x>=1)&&(x<=10)||(x>=200&&x<=210))printf("%d",x);5.k=1(原题最后一行漏了个d,如果认为原题正确,则输出k=%。
《C语言程序设计》第三版课后答案

1.5请参照本章例题,编写一个C程序,输出以下信息:************Very Goodj!************解:main(){printf(" ************ \n");printf("\n");printf(" Very Good! \n");printf("\n");printf(" ************\n");}1.6编写一个程序,输入a b c三个值,输出其中最大者。
解:main(){int a,b,c,max;printf("请输入三个数a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if(max<b)max=b;if(max<c)max=c;printf("最大数为:%d",max);}第三章3.3 请将下面各数用八进制数和十六进制数表示:(1)10 (2)32 (3)75 (4)-617(5)-111 (6)2483 (7)-28654 (8)21003解:十八十六(10)=(12)=(a)(32)=(40)=20(75)=(113)=4b(-617)=(176627)=fd97-111=177621=ff912483=4663=963-28654=110022=901221003=51013=520b3.5字符常量与字符串常量有什么区别?解:字符常量是一个字符,用单引号括起来。
字符串常量是由0个或若干个字符而成,用双引号把它们括起来,存储时自动在字符串最后加一个结束符号'\0'.3.6写出以下程序的运行结果:#include<stdio.h>void main(){char c1='a',c2='b',c3='c',c4='\101',c5='\116';printf("a%c b%c\tc%c\tabc\n",c1,c2,c3);printf("\t\b%c %c\n",c4,c5);解:程序的运行结果为:aabb cc abcA N3.7将"China"译成密码.密码规律:用原来的字母后面第4个字母代替原来的字母, 例如,字母"A"后面第4个字母是"E",用"E"代替"A".因此,"China"应译为"Glmre". 请编一程序,用赋初值的议程使c1,c2,c3,c4,c5分别变成'G','1','m','r','e',并输出.main(){char c1="C",c2="h",c3="i",c4='n',c5='a';c1+=4;c2+=4;c3+=4;c4+=4;c5+=4;printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5);}3.8例3.6能否改成如下:#include<stdio.h>void main(){int c1,c2;(原为 char c1,c2)c1=97;c2=98;printf("%c%c\n",c1,c2);printf("%d%d\n",c1,c2);}解:可以.因为在可输出的字符范围内,用整型和字符型作用相同. 3.9求下面算术表达式的值.(1)x+a%3*(int)(x+y)%2/4=2.5(x=2.5,a=7,y=4.7)(2)(float)(a+b)/2+(int)x%(int)y=3.5(设a=2,b=3,x=3.5,y=2.5)3.10写出下面程序的运行结果:#include<stdio.h>void main(){int i,j,m,n;i=8;j=10;m=++i;n=j++;printf("%d,%d,%d,%d\n",i,j,m,n);}解:结果: 9,11,9,10第4章4.4.a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1='a',c2='b'.想得到以下的输出格式和结果,请写出程序要求输出的结果如下:a= 3 b= 4 c= 5x=1.200000,y=2.400000,z=-3.600000x+y= 3.60 y+z=-1.20 z+x=-2.40u= 51274 n= 128765c1='a' or 97(ASCII)c2='B' or 98(ASCII)解:main(){int a,b,c;long int u,n;float x,y,z;char c1,c2;a=3;b=4;c=5;x=1.2;y=2.4;z=-3.6;u=51274;n=128765;c1='a';c2='b';printf("\n");printf("a=%2d b=%2d c=%2d\n",a,b,c);printf("x=%8.6f,y=%8.6f,z=%9.6f\n",x,y,z);printf("x+y=%5.2f y=z=%5.2f z+x=%5.2f\n",x+y,y+z,z+x); printf("u=%6ld n=%9ld\n",u,n);printf("c1='%c' or %d(ASCII)\n",c1,c2);printf("c2='%c' or %d(ASCII)\n",c2,c2);}4.5请写出下面程序的输出结果.结果:575 767.856400,-789.12396267.856400 ,-789.12396267.86,-789.12,67.856400,-789.123962,67.856400,-789.123962 6.785640e+001,-7.89e+002A,65,101,411234567,4553207,d68765535,17777,ffff,-1COMPUTER, COM4.6用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1='A',c2='a',问在键盘上如何输入?main(){int a,b;float x,y;char c1,c2;scanf("a=%d b=%d,&a,&b);scanf(" x=%f y=%e",&x,&y);scanf(" c1=%c c2=%c",&c1,&c2);}解:可按如下方式在键盘上输入:a=3 b=7x=8.5 y=71.82c1=A c2=a说明:在边疆使用一个或多个scnaf函数时,第一个输入行末尾输入的"回车"被第二个scanf函数吸收,因此在第二\三个scanf函数的双引号后设一个空格以抵消上行入的"回车".如果没有这个空格,按上面输入数据会出错,读者目前对此只留有一初步概念即可,以后再进一步深入理解.4.7用下面的scanf函数输入数据使a=10,b=20,c1='A',c2='a',x=1.5,y=-3.75,z=57.8,请问在键盘上如何输入数据?scanf("%5d%5d%c%c%f%f%*f %f",&a,&b,&c1,&c2,&y,&z);解:main(){int a,b;float x,y,z;char c1,c2;scanf("%5d%5d%c%c%f%f",&a,&b,&c1,&c2,&x,&y,&z);}运行时输入:10 20Aa1.5 -3.75 +1.5,67.8注解:按%5d格式的要求输入a与b时,要先键入三个空格,而后再打入10与20。
c程序设计第三版习题参考解答(全)

c程序设计第三版习题参考解答(全) C程序设计第三版习题参考解答本文为《C程序设计第三版习题参考解答》的全文内容。
为了更好地适应题目要求,文章将按照解答问题的方式进行分段,每个问题对应一个小节。
以下是各个问题的解答:第一章:C概述和程序设计基本原则1. 什么是计算机程序?计算机程序是一系列指令的集合,用于告诉计算机执行特定的任务。
它由一系列语句组成,每条语句都包含了计算机可以理解和执行的命令。
2. C语言的起源和发展历程是什么?C语言是由贝尔实验室的Dennis Ritchie于20世纪70年代初开发的一种通用高级编程语言。
C语言基于早期的B语言进行了扩展和改进,成为了应用广泛且高效的编程语言。
3. 编译和解释有什么区别?编译是将源代码一次性转换为机器语言的过程。
它将整个源代码文件编译成可执行文件,然后可以直接在计算机上运行。
解释是逐行解析源代码并立即执行的过程。
解释器逐行读取源代码并将其转换为机器代码,然后立即执行转换后的代码。
4. C程序的一般结构是什么样的?C程序的一般结构包括预处理指令、函数声明、全局变量声明、main函数以及其他函数的定义。
预处理指令用于包含头文件、定义宏等。
函数声明用于声明函数的名称和参数。
全局变量声明用于声明全局变量。
main函数是C程序的入口点,也是程序执行的起始位置。
第二章:C基本语法和数据类型1. C中的注释有哪些类型?在C中,注释分为单行注释和多行注释。
单行注释以"//"开头,多行注释以/*开头,以*/结尾。
2. 什么是变量?变量是在程序中用来存储数据的存储区域。
每个变量都有一个名称和一个数据类型,可以通过变量名来引用它所存储的数据。
3. C语言中的常量有哪些类型?C语言中的常量分为整型常量、实型常量、字符常量和字符串常量。
整型常量表示整数值,实型常量表示实数值,字符常量表示单个字符,字符串常量表示一串字符。
4. C语言中的运算符有哪些类型?C语言中的运算符包括算术运算符、关系运算符、逻辑运算符、赋值运算符、自增自减运算符等。
c程序设计第三版答案(全)

C语言程序设计第三版答案(全)很全的哦!!!1.5请参照本章例题,编写一个C程序,输出以下信息:**************************Very Good!**************************解:mian(){printf(“**************************”);printf(“\n”);printf(“Very Good!\n”);printf(“\n”);printf(“**************************”);}1.6 编写一个程序,输入a、b、c三个值,输出其中最大值。
解:mian(){int a,b,c,max;printf(“请输入三个数a,b,c:\n”);scanf(“%d,%d,%d”,&a,&b,&c);max=a;if(max<b)if(max<c)max=c;printf(“最大数为:“%d”,max);}第三章3.6写出以下程序运行的结果。
main(){char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);printf(“\t\b%c %c”,c4,c5);}解:aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabcAㄩN3.7 要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.例如,字母"A"后面第4个字母是"E"."E"代替"A"。
因此,"China"应译为"Glmre"。
请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。
C程序设计第三版课后习题答案全解

C程序设计第三版课后习题答案全解第一章介绍本章主要介绍了C程序设计的基本概念和语法规则。
C语言作为一种通用的编程语言,被广泛应用于各个领域的软件开发中。
在本章中,我们将回答C程序设计第三版书中第一章习题,并给出详细的解答。
1.1 选择题1. A2. B3. C4. A5. D1.2 填空题1. 编译器2. 源程序3. 高级语言4. 运行时错误5. 堆栈6. 弱类型检查1.3 简答题1. 运行时错误与逻辑错误之间的区别是什么?运行时错误是程序在运行过程中出现的错误,例如除以零、数组越界等。
而逻辑错误是程序的设计或者实现上的错误,导致程序运行的结果不符合预期。
2. 为什么C语言被广泛应用于系统编程?C语言具有高效、灵活和可移植等特点,使得它成为系统编程的首选语言。
C语言可以直接访问底层硬件,具有强大的指针操作能力,同时又具备高级语言的特点,可以进行模块化设计和复用。
3. C语言的运算符有哪些类别?C语言的运算符可以分为算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、条件运算符等。
1.4 编程题#include <stdio.h>int main() {int a = 5, b = 10;int c = a + b;printf("Sum is %d", c);return 0;}第二章数据类型本章主要讲解了C语言的数据类型及其使用方法。
数据类型是C程序中非常重要的概念,不同的数据类型可以存储不同范围和类型的数据。
在本章中,我们将回答C程序设计第三版书中第二章习题,并给出详细的解答。
2.1 选择题1. D2. A3. C4. B5. A2.2 填空题1. char2. 整型3. 浮点型4. double5. 短整型2.3 简答题1. 什么是数据类型?数据类型是一种确定数据存储和操作方式的分类。
C语言根据数据的性质将其分为不同的数据类型,以便于更有效地使用和管理数据。
C程序设计(第三版)习题答案(10章) 谭浩强著

C程序设计(第三版)习题答案(10章) 谭浩强著第十章指针10.1int swap(int*p1,int*p2){int p;p=*p1;*p1=*p2;*p2=p;}void main(){int n1,n2,n3;int*q1,*q2,*q3;scanf("%d %d %d",&n1,&n2,&n3);q1=&n1;q2=&n2;q3=&n3;if(n1>n2) swap(q1,q2);if(n1>n3) swap(q1,q3);if(n2>n3) swap(q2,q3);printf("%d %d %d\n",n1,n2,n3);}10.2main(){char *str1[20],*str2[20],*str3[20];char swap();scanf("%s",str1);scanf("%s",str2);scanf("%s",str3);if(strcmp(str1,str2)>0)swap(str1,str2); if(strcmp(str1,str3)>0)swap(str1,str3); if(strcmp(str2,str3)>0)swap(str2,str3); printf("%s\n%s\n%s\n",str1,str2,str3); }char swap(p1,p2)char *p1,*p2;{char *p[20];strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);}10.3main(){int number[10];input(number);max_min_value(number);output(number);}input(number)int number[10];{int i;for(i=0;i<10;i++)scanf("%d",&number[i]); }max_min_value(number)int number[10];{int *max,*min;int *p,*end;end=number+10;max=min=number;for(p=number+1;p<end;p++)if(*p>*max)max=p;else if(*p<*min)min=p;*p=number[0];number[0]=*min;*min=*p;*p=number[9];number[9]=*max;*max=*p;return;}output(number)int number[10];{int *p;for(p=number;p<number+9;p++) printf("%d,",*p);printf("%d\n",*p);}10.4main(){int number[20],n,m,i;scanf("%d",&n);scanf("%d",&m);for(i=0;i<n:i++)scanf("%d",&number[i]); move(number,n,m);for(i=0;i<n;i++)printf("%8d",number[i]); }move(array,n,m)int array[20],n,m;{int *p,end;end=*(array+n-1);for(p=array+n-1;p>array;p--) *p=*(p-1);*array=end;m--;if(m>0)move(array,n,m);}10.5#define nmax 50main(){int i,k,m,n,num[nmax],*p; scanf("%d",&n);p=num;for(i=0;i<n;i++)*(p+i)=i+1;i=k=m=0;while(m<n-1){if(*(p+i)!=0)k++;if(k==3){*(p+i)=0;k=0;m++;}i++;if(i==n)i=0;}while(*p==0)p++;printf("%d",*p);}10.6main(){int len;char *str[20];scanf("%s",str);len=length(str);printf("\nlen=%d\n",len); }length(p)char *p;{int n=0;while(*p!='\0'){n++;p++;}return(n);}10.7main(){int m;char *str1[20],*str2[20]; scanf("%s",str1);scanf("%d",&m);if(strlen(str1)<m)printf("error");else{copystr(str1,str2,m); printf("%s",str2);}}copystr(p1,p2,m)char *p1,*p2;int m;{int n=0;while(n<m-1){n++;p1++;}while(*p1!='\0'){*p2=*p1;p1++;p2++;}*p2='\0';}10.8#include"stdio.h"main(){int cle=0,sle=0,di=0,wsp=0,ot=0,i; char *p,s[20];for(i=0;i<20;i++)s[i]=0;i=0;while((s[i]=getchar())!='\n')i++; p=s;while(*p!='\n'){if(*p>='a'&&*p<='z')++sle;else if(*p>='A'&&*p<='Z')++cle;else if(*p==' ')++wsp;else if(*p>='0'&&*p<='9')++di;else++ot;p++;}printf("sle=%d,cle=%d,wsp=%d,di=%d,ot=%d\n",sle,cle,wsp,di,ot); }10.9main(){int a[3][3],*p,i;for(i=0;i<3;i++)scanf("%d,%d,%d",a[i][0],a[i][1],a[i][2]);p=a;move(p);for(i=0;i<3;i++)printf("%d %d %d\n",a[i][0],a[i][1],a[i][2]);}move(pointer)int *pointer;{int i,j,t;for(i=0;i<2;i++)for(j=i+1;j<3;j++){t=*(pointer+3*i+j);*(pointer+3*i+j)=*(pointer+3*j+i);*(pointer+3*j+i)=t;}}10.10main(){int a[5][5],*p,i,j;for(i=0;i<5;i++)for(j=0;j<5;j++)scanf("%d",&a[i][j]);p=a;change(p);for(i=0;i<5;i++){printf("\n");for(j=0;j<5;j++)printf("%8d",a[i][j]); }}change(p)int *p;{int i,j,change;int *pmax,*pmin;pmax=p;pmin=p;for(i=0;i<5;i++)for(j=0;j<5;j++){if(*pmax<*(p+5*i+j))pmax=p+5*i+j;if(*pmin>*(p+5*i+j))pmin=p+5*i+j;}change=*(p+12);*(p+12)=*pmax;*pmax=change;change=*p;*p=*pmin;*pmin=change;pmin=p+1;for(i=0;i<5;i++)for(j=0;j<5;j++)if(((p+5*i+j)!=p)&&(*pmin>*(p+5*i+j)))pmin=p+5*i+j;change=*(p+4);*(p+4)=*pmin;*pmin=change;pmin=p+1;for(i=0;i<5;i++)for(j=0;j<5;j++)if(((p+5*i+j)!=(p+4))&&((p+5*i+j)!=p)&&(*pmin>*(p+5*i+j))) pmin=p+5*i+j;change=*(p+20);*(p+20)=*pmin;*pmin=change;pmin=p+1;for(i=0;i<5;i++)for(j=0;j<5;j++)if(((p+5*i+j)!=p)&&((p+5*i+j)!=(p+4))&&((p+5*i+j)!=(p+20)) &&(*pmin>*(p+5*i+j)))pmin=p+5*i+j;change=*(p+24);*(p+24)=*pmin;*pmin=change;}10.11main(){int i;char *p,str[10][10];for(i=0;i<10;i++)scanf("%s",str[i]);p=str;sort(p);for(i=0;i<10;i++)printf("%s\n",str[i]);}sort(p)char *p;{int i,j;char s[10],*smax,*smin;for(i=0;i<10;i++){smax=p+10*i;for(j=i+1;j<10;j++){smin=p+10*j;if(strcmp(smax,smin)>0) {strcpy(s,smin);strcpy(smin,smax); strcpy(smax,s);}}}}10.12#define MAX 20main(){int i;char *pstr[10],str[10][MAX]; for(i=0;i<10;i++)pstr[i]=str[i];for(i=0;i<10;i++)scanf("%s",pstr[i]);sort(pstr);for(i=0;i<10;i++)printf("%s\n",pstr[i]);}sort(pstr)char *pstr[10];{int i,j;char *p;for(i=0;i<10;i++){for(j=i+1;j<10;j++){if(strcmp(*(pstr+i),*(pstr+j))>0) {p=*(pstr+i);*(pstr+i)=*(pstr+j);*(pstr+j)=p;}}}}10.13#include"math.h"main(){int n=20;float a,b,a1,b1,a2,b2,c,(*p)(),jiff(); scanf("%f,%f",&a,&b);scanf("%f,%f",&a1,&b1);scanf("%f,%f",&a2,&b2);p=sin;c=jiff(a,b,n,p);printf("sin=%f\n",c);p=cos;c=jiff(a1,b1,n,p);printf("cos=%f\n",c);p=exp;c=jiff(a2,b2,n,p);printf("exp=%f\n",c);}float jiff(a,b,n,p)float a,b,(*p)();int n;{int i;float x,f,h,area;h=(b-a)/n;x=a;area=0;for(i=1;i<=n;i++){x=x+h;area=area+(*p)(x)*h; }return(area);}10.14{int i,n,num[20];char *p;scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&num[i]); p=num;sort(p,n);for(i=0;i<n;i++)printf("%8d",num[i]); }sort(p,m)char *p;int m;{int i;char change,*p1,*p2;for(i=0;i<m/2;i++){p1=p+i;p2=p+(m-1-i);change=*p1;*p1=*p2;*p2=change;}}main(){int i,j,*pnum,num[4];float score[4][5],aver[4],*psco,*pave; char course[5][10],*pcou;pcou=course[0];for(i=0;i<5;i++)scanf("%s",pcou+10*i);printf("number");for(i=0;i<5;i++)printf(",%s",pcou+10*i);printf("\n");psco=score;pnum=num;for(i=0;i<4;i++){scanf("%d",pnum+i);for(j=0;j<5;j++)scanf(",%f",psco+5*i+j);}pave=aver;printf("\n");avsco(psco,pave);avcour1(pcou,psco);printf("\n");fali2(pcou,pnum,psco,pave); printf("\n");good(pcou,pnum,psco,pave); }avsco(psco,pave)float *psco,*pave;{int i,j;float sum,average;for(i=0;i<4;i++){sum=0;for(j=0;j<5;j+)sum+=(*(psco+5*i+j)); average=sum/5;*(pave+i)=average;}}avcour1(pcou,psco)char *pcou;float *psco;{int i;float sum,average1;sum=0;for(i=0;i<4;i++)sum+=(*(psco+5*i))average1=sum/4;printf("%s %5.2f\n",pcou,average1); }fali2(pcou,pnum,psco,pave)char *pcou;int *pnum;float *psco,*pave;{int i,j,k,label;printf("\nnumber\n");for(i=0;i<5;i++)printf("%-8s",pcou+10*i);printf("\naverage\n");for(i=0;i<4;i++){label=0;for(j=0;j<5;j++)if(*(psco+5*i+j)<60.0)label++;if(label>=2){printf("%-8d",*(pnum+i));for(k=0;k<5;k++)printf("%-8.2f",*(psco+5*i+k)); printf("%-8.2f",*(pave+i));}}}good(pcou,pnum,psco,pave)char *pcou;int *pnum;float *psco,*pave;{int i,j,k,label;printf("number");for(i=0;i<5;i++)printf("%-8s",pcou+10*i);printf("average");for(i=0;i<4;i++){label=0;for(j=0;j<5;j++)if(*(psco+5*i+j)>=85.0)label++;if((label>=5)||(*(pave+i)>=90)){printf("%-8d",*(pnum+i));for(k=0;k<5;k++)printf("%-8.2f",*(psco+5*i+k)); printf("%-8.2f",*(pave+i));}}}10.16#include"stdio.h"main(){char str[50],*pstr;int i,j,k,m,e10,digit,ndigit,a[10],*pa;gets(str);pstr=str;pa=a;ndigit=0;i=j=0;while(*(pstr+i)!='\0'){if((*(pstr+i)>='0')&&(*(pstr+i)<='9')) j++;else{if(j>0){digit=*(pstr+i-1)-48;k=1;while(k<j){e10=1;for(m=1;m<=k;m++)e10=e10*10;digit+=(*(pstr+i-1-k)-48)*e10; k++;}*pa=digit;ndigit++;pa++;j=0;}}i++;}if(j>0){digit=*(pstr+i-1)-48;k=1;while(k<j){e10=1;for(m=1;m<=k;m++)e10=e10*10;digit+=(*(pstr+i-1-k)-48)*e10; k++;}*pa=digit;ndigit++;j=0;}printf("ndigit=%d\n",ndigit);j=0;pa=a;for(j=0;j<ndigit;j++)printf("%d",*(pa+j));}10.17main(){int m;char str1[20],str2[20],*p1,*p2;scanf("%s",str1);scanf("%s",str2);p1=str1;p2=str2;m=strcmp(p1,p2);printf("%d\n",m);}strcmp(p1,p2)char *p1,*p2;{int i=0;while(*(p1+i)==*(p2+i))if(*(p+i++)=='\0')return(0);return(*(p1+i)-*(p2+i));}10.18main(){static char *mname[13]={"illeagl","January","February","March", "April","May","June","July","August","September","October", "November","December"};int n;scanf("%d",&n);if((n>=1)&&(n<=12))printf("%s\n",*(mname+n)); elseprintf("error");}10.20main(){int i;char **p,*pstr[5],str[5][10]; for(i=0;i<5;i++)pstr[i]=str[i];for(i=0;i<5;i++)scanf("%s",pstr[i]);p=pstr;sort(p);for(i=0;i<5;i++)printf("%s\n",pstr[i]);}sort(p)char **P;{int i,j;char *pchange;for(i=0;i<5;i++){for(j=i+1;j<5;j++){if(strcmp(*(p+i),*(p+j))>0) {pchange=*(p+i);*(p+i)=*(p+j);*(p+j)=pchange;}}}}10.21main(){int i,n,digit[20],**p,*pstr[20]; scanf("%d",&n);for(i=0;i<n;i++)pstr[i]=&digit[i];for(i=0;i<n;i++)scanf("%d",pstr[i]);p=pstr;sort(p,n);for(i=0;i<n;i++)printf("%d ",*pstr[i]);}sort(p,n)int **p,n;{int i,j,*pchange;for(i=0;i<n;i++){for(j=i+1;j<n;j++){if(**(p+i)>**(p+j)) {pchange=*(p+i); *(p+i)=*(p+j); *(p+j)=pchange; }}}}。
c语言课件(第三版) c答案

《C 程序设计》第三版——1—11章习题答案第一章1.5# include <stdio.h>void main(){printf("* * * * * * * * *\n Very good!\n* * * * * * * * *\n"); }1.6(法一)#include <stdio.h>main(){int a,b,c,max;scanf("%d,%d,%d",&a,&b,&c);max=(a>b)?a:b;max=(max>c)?max:c;printf("max=%d\n",max);}(法二)main(){int a,b,c,max;scanf("%d,%d,%d",&a,&b,&c);if(a>b&&a>c)max=a;else if (b>c)max=b;elsemax=c;printf("max=%d\n",max);}(法三)# include <stdio.h>void main(){int max(int x,int y,int z);int a,b,c,d;scanf("%d,%d,%d",&a,&b,&c);d=max(a,b,c);printf("max=%d\n",d);}int max(int x,int y,int z){int A,B;if(x>y) A=x;else A=y;if(z>A) B=z;else B=A;return(B);}第三章3.3(1)(10)10=(12)8=(a)16(2)(32)10=(40)8=(20)16(3)(75)10=(113)8=(4b)16(4)(-617)10=(176627)8=(fd97)16(5)(-111)10=(177621)8=(ff91)16(6)(2483)10=(4663)8=(963)16(7)(-28654)10=(110022)8=(9012)16(8)(21003)10=(51013)8=(520b)163.6aabb (8)cc (8)abc(7)AN3.7main(){char c1='C',c2='h',c3='i',c4='n',c5='a'; c1+=4, c2+=4, c3+=4, c4+=4, c5+=4;printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5);}3.8main(){int c1,c2;c1=97;c2=98;printf("%c %c",c1,c2);}3.9(1)=2.5(2)=3.53.109,11,9,103.12(1)24 (2)10 (3)60 (4)0 (5)0 (6)0第四章4.4main(){int a,b,c;long int u,n;float x,y,z;char c1,c2;a=3;b=4;c=5;x=1.2;y=2.4;z=-3.6;u=51274;n=128765;c1='a';c2='b';printf("\n");printf("a=%2d b=%2d c=%2d\n",a,b,c);printf("x=%8.6f,y=%8.6f,z=%9.6f\n",x,y,z);printf("x+y=%5.2f y+z=%5.2f z+x=%5.2f\n",x+y,y+z,z+x);printf("u=%6ld n=%9ld\n",u,n);printf("c1='%c'or %d(ASCII)\n",c1,c1);printf("c2='%c'or %d(ASCII)\n",c2,c2);}4.5575 767.856400,-789.12396267.856400,-789.12396267.86 -789.12,67.856400,-789.123962,67.856400,-789.123962 6.785640e+001,-7.89e+002A,65,101,411234567,4553207,d68765535,177777,ffff,-1COMPUTER, COM4.6a=3 b=7/x=8.5 y=71.82/c1=A c2=a/4.710 20Aa1.5 -3.75 +1.4,67.8/(空3)10(空3)20Aa1.5(空1)-3.75(空1)(随意输入一个数),67.8回车4.8main(){float pi,h,r,l,s,sq,sv,sz;pi=3.1415926;printf("input r,h\n");scanf("%f,%f",&r,&h);l=2*pi*r;s=r*r*pi;sq=4*pi*r*r;sv=4.0/3.0*pi*r*r*r;sz=pi*r*r*h;printf("l=%6.2f\n",l);printf("s=%6.2f\n",s);printf("sq=%6.2f\n",sq);printf("vq=%6.2f\n",sv);printf("vz=%6.2f\n",sz);}4.9main(){float c,f;scanf("%f",&f);c=(5.0/9.0)*(f-32);printf("c=%5.2f\n",c);}4.10#include"stdio.h"main(){char c1,c2;scanf("%c,%c",&c1,&c2);putchar(c1);putchar(c2);printf("\n");printf("%c%c\n",c1,c2);}第五章5.3(1)0 (2)1 (3)1 (4)0 (5)15.4main(){int a,b,c;scanf("%d,%d,%d",&a,&b,&c); if(a<b)if(b<c)printf("max=%d\n",c); elseprintf("max=%d\n",b); else if(a<c)printf("max=%d\n",c); elseprintf("max=%d\n",a); }main(){int a,b,c,temp,max;scanf("%d,%d,%d",&a,&b,&c); temp=(a>b)?a:b;max=(c>temp)?c:temp;printf("max=%d",max);}5.5main(){int x,y;scanf("%d",&x);if(x<1)y=x;else if(x<10)y=2*x-1;else y=3*x-11;printf("y=%d",y);}5.6main(){int score,temp,logic;char grade;logic=1;while(logic){scanf("%d",&score);if(score>=0&&score<=100)logic=0;}if(score==100)temp=9;elsetemp=(score-score%10)/10;switch(temp){case 9:grade='A';break;case 8:grade='B';break;case 7:grade='C';break;case 6:grade='D';break;case 5:case 4:case 3:case 2:case 1:case 0:grade='E';}printf"score=%d,grade=%c",score,grade);}5.7main(){long int num;int indiv,ten,hundred,thousand,ten_thousand,place;scanf("%ld",&num);if(num>9999) place=5;else if(num>999) place=4;else if(num>99) place=3;else if(num>9) place=2;else place=1;printf("place=%d\n",place);ten_thousand=num/10000;thousand=(num-ten_thousand*10000)/1000;hundred=(num-ten_thousand*10000-thousand*1000)/100;ten=(num-ten_thousand*10000-thousand*1000-hundred*100)/10; indiv=num-ten_thousand*10000-thousand*1000-hundred*100-ten*10;switch(place){case5:printf("%d,%d,%d,%d,%d\n",ten_thousand,thousand,hundred,ten,indiv); printf("%d,%d,%d,%d,%d\n",indiv,ten,hundred,thousand,ten_ thousand);break;case 4:printf("%d,%d,%d,%d\n",thousand,hundred,ten,indiv);printf("%d,%d,%d,%d\n",indiv,ten,hundred,thousand);break;case 3:printf("%d,%d,%d\n",hundred,ten,indiv);printf("%d,%d,%d\n",indiv,ten,hundred);break;case 2:printf("%d,%d\n",ten,indiv);printf("%d,%d\n",indiv,ten);break;case 1:printf("%d\n",indiv);printf("%d\n",indiv);}}5.8main(){long i;float bonus,bon1,bon2,bon4,bon6,bon10;bon1=100000*0.1;bon2=bon1+100000*0.075;bon4=bon2+200000*0.05;bon6=bon4+200000*0.03;bon10=bon6+400000*0.015;scanf("%ld",&i);if(i<=1e5)bonus=i*0.1;else if(i<=2e5)bonus=bon1+(i-100000)*0.075;else if(i<=4e5)bonus=bon2+(i-200000)*0.05;else if(i<=6e5)bonus=bon4+(i-400000)*0.03;else if(i<=1e6)bonus=bon6+(i-600000)*0.015;else bonus=bon10+(i-1000000)*0.01;printf("bonus=%10.2f",bonus);}main(){long i;float bonus,bon1,bon2,bon4,bon6,bon10;int branch;bon1=100000*0.1;bon2=bon1+100000*0.075;bon4=bon2+200000*0.05;bon6=bon4+200000*0.03;bon10=bon6+400000*0.015;scanf("%ld",&i);branch=i/100000;if(branch>10)branch=10;switch(branch){case 0:bonus=i*0.1;break;case 1:bonus=bon1+(i-100000)*0.075;break; case 2:case 3:bonus=bon2+(i-200000)*0.05;break; case 4:case 5:bonus=bon4+(i-400000)*0.03;break; case 6:case 7case 8:case 9:bonus=bon6+(i-600000)*0.015;break; case 10:bonus=bon10+(i-1000000)*0.01;}printf("bonus=%10.2f",bonus);}4.9main(){int t,a,b,c,d;scanf("%d,%d,%d,%d",&a,&b,&c,&d);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;c=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}printf("%d %d %d %d\n",a,b,c,d);}5.10main(){int h=10;float x,y,x0=2,y0=2,d1,d2,d3,d4;scanf("%f,%f",&x,&y);d1=(x-x0)*(x-x0)+(y-y0)*(y-y0);d2=(x-x0)*(x-x0)+(y+y0)*(y+y0);d3=(x+x0)*(x+x0)+(y-y0)*(y-y0);d4=(x+x0)*(x+x0)+(y+y0)*(y+y0);if(d1>1&&d2>1&&d3>1&&d4>1)h=0;printf("h=%d",h);}第六章循环控制6.1main(){int a,b,num1,num2,temp;scanf("%d,%d",&num1,&num2);if(num1<num2){temp=num1;num1=num2;num2=temp;}a=num1;b=num2;while(b!=0){temp=a%b;a=b;b=temp;}printf("%d\n",a);printf("%d\n",num1*num2/a);}6.2#include"stdio.h"main(){char c;int letters=0,space=0,digit=0,other=0;while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z') letters++;else if(c==' ')space++;else if(c>='0'&&c<='9')digit++;else other++;}printf("letters=%d\nspace=%d\ndigit=%d\nother=%d\n",letters,space,di git,other);}6.3main(){int a,n,count=1,sn=0,tn=0;scanf("%d,%d",&a,&n);while(count<=n){tn+=a;sn+=tn;a*=10;++count;}printf("a+aa+aaa+...=%d\n",sn);}6.4main(){float n,s=0,t=1;for(n=1;n<=20;n++){t*=n;s+=t;}printf("s=%e\n",s);}6.5main(){int N1=100,N2=50,N3=10;float k;float s1=0,s2=0,s3=0;for(k=1;k<=N1;k++)s1+=k;for(k=1;k<=N2;k++)s2+=k*k;for(k=1;k<=N3;k++)s3+=1/k;printf("s=%8.2f\n",s1+s2+s3);}6.6main(){int i,j,k,n;for(n=100;n<1000;n++){i=n/100;j=n/10-i*10;k=n%10;if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) printf("n=%d\n",n);}}6.7#define M 1000main(){int k0,k1,k2,k3,k4,k5,k6,k7,k8,k9;int i,j,n,s;for(j=2;j<=M;j++){n=0;s=j;for(i=1;i<j;i++){if((j%i)==0){n++;s=s-i;switch(n){case 1:k0=i;break;case 2:k1=i;break;case 3:k2=i;break;case 4:k3=i;break;case 5:k4=i;break;case 6:k5=i;break;case 7:k6=i;break;case 8:k7=i;break;case 9:k8=i;break;case 10:k9=i;break;}}}if(s==0){printf("j=%d\n",j);if(n>1)printf("%d,%d",k0,k1); if(n>2)printf(",%d",k2);if(n>3)printf(",%d",k3);if(n>4)printf(",%d",k4);if(n>5)printf(",%d",k5);if(n>6)printf(",%d",k6);if(n>7)printf(",%d",k7);if(n>8)printf(",%d",k8);if(n>9)printf(",%d\n",k9);}}}main(){static int k[10];int i,j,n,s;for(j=2;j<=1000;j++){n=-1;s=j;for(i=1;i<j;i++){if((j%i)==0){n++;s=s-i;k[n]=i;}}if(s==0){printf("j=%d\n",j); for(i=0;i<n;i++)printf("%d,",k[i]); printf("%d\n",k[n]); }}}6.8main(){int n,t,number=20;float a=2;b=1;s=0;for(n=1;n<=number;n++){s=s+a/b;t=a,a=a+b,b=t;}printf("s=%9.6f\n",s);}6.9main(){float sn=100.0,hn=sn/2;int n;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}printf("sn=%f\n",sn);printf("hn=%f\n",hn);}6.10main(){int day,x1,x2;day=9;x2=1;while(day>0){x1=(x2+1)*2;x2=x1;day--;}printf("x1=%d\n",x1);}6.11#include"math.h"main(){float a,xn0,xn1;scanf("%f",&a);xn0=a/2;xn1=(xn0+a/xn0)/2;do{xn0=xn1;xn1=(xn0+a/xn0)/2;}while(fabs(xn0-xn1)>=1e-5);printf("a=%5.2f\n,xn1=%8.2f\n",a,xn1); }6.12#include"math.h"main(){float x,x0,f,f1;x=1.5;do{x0=x;f=((2*x0-4)*x0+3)*x0-6;f1=(6*x0-8)*x0+3;x=x0-f/f1;}while(fabs(x-x0)>=1e-5);printf("x=%6.2f\n",x);}6.13#include"math.h"main(){float x0,x1,x2,fx0,fx1,fx2;do{scanf("%f,%f",&x1,&x2);fx1=x1*((2*x1-4)*x1+3)-6;fx2=x2*((2*x2-4)*x2+3)-6;}while(fx1*fx2>0);do{x0=(x1+x2)/2;fx0=x0*((2*x0-4)*x0+3)-6;if((fx0*fx1)<0){x2=x0;fx2=fx0;}else{x1=x0;fx1=fx0;}}while(fabs(fx0)>=1e-5);printf("x0=%6.2f\n",x0);}6.14main(){int i,j,k;for(i=0;i<=3;i++){for(j=0;j<=2-i;j++)printf(" ");for(k=0;k<=2*i;k++)printf("*");printf("\n");}for(i=0;i<=2;i++){for(j=0;j<=i;j++)printf(" ");for(k=0;k<=4-2*i;k++)printf("*");printf("\n");}}6.15main(){char i,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++){if(i!=j)for(k='x';k<='z';k++){if(i!=k&&j!=k){if(i!='x'&&k!='x'&&k!='z')printf("\na--%c\tb--%c\tc--%c\n",i,j,k); }}}}第七章数组7.1#include <math.h>#define N 101main(){ int i,j,line,a[N];for (i=2;i<N;i++) a[i]=i;for (i=2;i<sqrt(N);i++)for (j=i+1;j<N;j++){if(a[i]!=0 && a[j]!=0) if (a[j]%a[i]==0)a[j]=0; } printf("\n");for (i=2,line=0;i<N;i++){ if(a[i]!=0){ printf("%5d",a[i]); line++; }if(line==10){ printf("\n");line=0; }}}7.2#define N 10main(){int i,j,min,temp,a[N];for(i=0;i<N;i++)scanf("%d",&a[i]);for(i=0;i<N-1;i++){min=i;for(j=i+1;j<N;j++)if(a[min]>a[j])min=j; temp=a[i];a[i]=a[min];a[min]=temp;}for(i=0;i<N;i++)printf("%5d",a[i]);}7.3main(){float a[3][3],sum;int i,j;for(i=0;i<3;i++)for(j=0;j<3;j++){scanf("%f",&sum);a[i][j]=sum;}for(i=0;i<3;i++)sum=sum+a[i][i];printf("sum=%f",sum);}7.4main(){int a[11]={1,4,6,9,13,16,19,28,40,100}; int temp1,temp2,number, end,i,j;scanf("%d",&number);end=a[9];if(number>end) a[10]=number;else{for(i=0;i<10;i++){if(a[i]>number){temp1=a[i];a[i]=number;for(j=i+1;j<11;j++){temp2=a[j];a[j]=temp1;temp1=temp2;}break;}}}for(i=0;i<11;i++)printf("%6d",a[i]);}7.5#define N 5main(){int a[N]={8,6,5,4,1},i,temp;for(i=0;i<N/2;i++){temp=a[i];a[i]=a[N-i-1];a[N-i-1]=temp;}for(i=0;i<N;i++)printf("%4d",a[i]);}7.6#define N 11main(){int i,j,a[N][N];for(i=1;i<N;i++){a[i][i]=1;a[i][1]=1;}for(i=3;i<N;i++)for(j=2;j<i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=1;i<N;i++){for(j=1;j<=i;j++)printf("%6d",a[i][j]);printf("\n");}}7.7main(){int a[16][16],i,j,k,p,m,n;p=1;while(p==1){scanf("%d",&n);if((n!=0)&&(n<=15)&&(n%2!=0))p=0; }for(i=1;i<=n;i++)for(j=1;j<=n;j++)a[i][j]=0;j=n/2+1;a[1][j]=1;for(k=2;k<=n*n;k++){i=i-1;j=j+1;if((i<1)&&(j>n)){i=i+2;j=j-1;}else{if(i<1)i=n;if(j>n)j=1;}if(a[i][j]==0)a[i][j]=k;else{i=i+2;j=j-1;a[i][j]=k;}}for(i=1;i<=n;i++){for(j=1;j<=n;j++)printf("%3d",a[i][j]);printf("\n");}}7.8#define N 10#define M 10main(){int i,j,k,m,n,flag1,flag2,a[N][M],max,maxi,maxj; scanf("%d,%d",&n,&m);for(i=0;i<n;i++)for(j=0;j<m;j++)scanf("%d",&a[i][j]);flag2=0;for(i=0;i<n;i++){max=a[i][0];for(j=0;j<m;j++)if(max<a[i][j]){max=a[i][j];maxj=j;}for(k=0,flag1=1;k<n&&flag1;k++)if(max>a[k][maxj])flag1=0;if(flag1){ printf("\na[%d][%d]=%d\n",i,maxj,max);flag2=1;}}if(!flag2) printf("NOT");}7.9#include<stdio.h>#define N 15main(){int i,j,number,top,bott,min,loca,a[N],flag;char c;for(i=0;i<=N;i++)scanf("%d",&a[i]);flag=1;while(flag){scanf("%d",&number);loca=0;top=0;bott=N-1;if((number<a[0])||(number>a[N-1]))loca=-1;while((loca==0)&&(top<=bott)){min=(bott+top)/2;if(number==a[min]){loca=min;printf("number=%d,loca=%d\n",number,loca+1); }else if(number<a[min])bott=min-1;elsetop=min+1;}if(loca==0||loca==-1)printf("%d not in table\n",number);printf("continue Y/N or y/n\n");c=getchar();if(c=='N'||c=='n')flag=0;}}7.10main(){int i,j,uppn,lown,dign,span,othn;char text[3][80];uppn=lown=dign=span=othn=0;for(i=0;i<3;i++){gets(text[i]);for(j=0;j<80&&text[i][j]!='\0';j++){if(text[i][j]>='A'&&text[i][j]<='Z')uppn++;else if(text[i][j]>='a'&&text[i][j]<='z') lown++;else if(text[i][j]>='0'&&text[i][j]<='9') dign++;else if(text[i][j]==' ')span++;elseothn++;}}for(i=0;i<3;i++)printf("%s\n",text[i]);printf("uppn=%d\n",uppn);printf("lown=%d\n",lown);printf("dign=%d\n",dign);printf("span=%d\n",span);printf("othn=%d\n",othn);}7.11main(){static char a[5]={'*','*','*','*','*'};int i,j,k;char space=' ';for(i=0;i<=5;i++){printf("\n");for(j=1;j<=3*i;j++)printf("%1c",space);for(k=0;k<=5;k++)printf("%3c",a[k]);}}7.12#include<stdio.h>main(){int i,n;char ch[80],tran[80];gets(ch);i=0;while(ch[i]!='\0'){if((ch[i]>='A')&&(ch[i]<='Z'))tran[i]=26+64-ch[i]+1+64;else if((ch[i]>='a')&&(ch[i]<='z'))tran[i]=26+96-ch[i]+1+96;elsetran[i]=ch[i];i++;}n=i;for(i=0;i<n;i++)putchar(tran[i]);}7.13main(){char s1[80],s2[40];int i=0,j=0;scanf("%s",s1);scanf("%s",s2);while(s1[i]!='\0')i++;while(s2[j]!='\0')s1[i++]=s2[j++];s1[i]='\0';printf("s=%s\n",s1);}7.14#include<stdio.h>main(){int i,resu;char s1[100],s2[100];gets(s1);gets(s2);i=0;while((s1[i]==s2[i])&&(s1[i]!='\0'))i++;if(s1[i]=='\0'&&s2[i]=='\0')resu=0;elseresu=s1[i]-s2[i];printf("s1=%s,s2=%s,resu=%d\n",s1,s2,resu); }7.15#include"stdio.h"main(){char from[80],to[80];;int i;scanf("%s",from);for(i=0;i<=strlen(from);i++) to[i]=from[i];printf("%s\n",to);}第八章8.1hcf(u,v)int u,v;{int a,b,t,r;if(u>v){t=u;u=v;v=t;}a=u;b=v;while((r=b%a)!=0){b=a;a=r;}return(a);}lcd(u,v,h)int u,v,h;{return(u*v/h);}main(){int u,v,h,l;scanf("%d,%d",&u,&v);h=hcf(u,v);printf("H.C.F=%d\n",h);l=lcd(u,v,h);printf("L.C.D=%d\n",l);}8.2#include"math.h"float x1,x2,disc,p,q; greater_than_zero(a,b)float a,b;{x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);}equal_to_zero(a,b)flaot a,b;{x1=x2=-b/(2*a);}smaller_than_zero(a,b)float a,b;{p=-b/(2*a);q=sqrt(-disc)/(2*a);}main(){float a,b,c;scanf("%f,%f,%f",&a,&b,&c);disc=b*b-4*a*c;if(fabs(disc)<=1e-5){equal_to_zero(a,b);printf("x1=%5.2f\tx2=%5.2f\n",x1,x2);}else if(disc>0){greater_than_zero(a,b);printf("x1=%5.2f\tx2=%5.2f\n",x1,x2);}else{smaller_than_zero(a,b);printf("x1=%5.2f+%5.2fi\tx2=%5.2f-%5.2fi\n",p,q,p,q); }}8.3main(){int number;scanf("%d",&number);if(prime(number))printf("yes");elseprintf("no");}int prime(number)int number;{int flag=1,n;for(n=2;n<number/2&&flag==1;n++)if(number%n==0)flag=0;return(flag);}8.4#define N 3int array[N][N];convert(array)int array[3][3];{int i,j,t;for(i=0;i<N;i++)for(j=i+1;j<N;j++){t=array[i][j];array[i][j]=array[j][i];array[j][i]=t;}}main(){int i,j;for(i=0;i<N;i++)for(j=0;j<N;j++)scanf("%d",&array[i][j]);convert(array);for(i=0;i<N;i++){printf("\n");for(j=0;j<N;j++)printf("%5d",array[i][j]);}}8.5main(){char str[100];scanf("%s",str);inverse(str);printf("%s\n",str);}inverse(str)char str[];{char t;int i,j;for(i=0,j=strlen(str);i<strlen(str)/2;i++,j--) {t=str[i];str[i]=str[j-1];str[j-1]=t;}}8.6char concate(str1,str2,str)char str1[],str2[],str[];{int i,j;for(i=0;str1[i]!='\0';i++)str[i]=str1[i];for(j=0;str2[j]!='\0';j++)str[i+j]=str2[j];str[i+j]='\0';}main(){char s1[100],s2[100],s[100];scanf("%s",s1);scanf("%s",s2);concate(s1,s2,s);printf("\ns=%s",s);}8.7main(){char str[80],c[80];void cpy();gets(str);cpy(str,c);printf("\n%s\n",c);}void cpy(s,c)char s[],c[];{int i,j;for(i=0,j=0;s[i]!='\0';i++)if(s[i]=='a'||s[i]=='A'||s[i]=='e'||s[i]=='E'||s[i]=='i'|| s[i]=='I'||s[i]=='o'||s[i]=='O'||s[i]=='u'||s[i]=='U') {c[j]=s[i];j++;}c[j]='\0';}8.8main(){char str[80];scanf("%s",str);insert(str);}insert(str)char str[];{int i;for(i=strlen(str);i>0;i--){str[i*2]=str[i];str[i*2-1]=' ';}printf("%s\n",str);}8.9int alph,digit,space,others;main(){char text[80];gets(text);alph=0,digit=0,space=0,others=0;count(text);printf("\nalph=%d,digit=%d,space=%d,others=%d\n",alph,digit,space,ot hers);}count(str)char str[];{int i;for(i=0;str[i]!='\0';i++)if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))alph++;else if(str[i]>='0'&&str[i]<='9')digit++;else if(strcmp(str[i],' ')==0)space++;elseothers++;}8.10int alph(c)char c;{if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))return(1);elsereturn(0);}int longest(string)char string[];{int len=0,i,length=0,flag=1,place,point;for(i=0;i<=strlen(string);i++)if(alph(string[i]))if(flag){point=i;flag=0;}elselen++;else{flag=1;if(len>length){length=len;place=point;len=0;}}return(place);}main(){int i;char line[100];gets(line);for(i=longest(line);alph(line[i]);i++) printf("%c",line[i]);printf("\n");}8.11#define N 10char str[N];main(){int i,flag;for(flag=1;flag==1;){scanf("%s",str);if(strlen(str)>N)printf("input error");elseflag=0;}sort(str);for(i=0;i<N;i++)printf("%c",str[i]);}sort(str)char str[N];{int i,j;char t;for(j=1;j<N;j++)for(i=0;(i<N-j)&&(str[i]!='\0');i++)if(str[i]>str[i+1]){t=str[i];str[i]=str[i+1];str[i+1]=t;}}8.12#include<math.h>float solut(a,b,c,d)float a,b,c,d;{float x=1,x0,f,f1;do{x0=x;f=((a*x0+b)*x0+c)*x0+d;f1=(3*a*x0+2*b)*x0+c;x=x0-f/f1;}while(fabs(x-x0)>=1e-5);return(x);}main(){float a,b,c,d;scanf("%f,%f,%f,%f",&a,&b,&c,&d);printf("x=%10.7f\n",solut(a,b,c,d));}8.13main(){int x,n;float p();scanf("%d,%d",&n,&x);printf("P%d(%d)=%10.2f\n",n,x,p(n,x));}float p(tn,tx)int tn,tx;{if(tn==0)return(1);else if(tn==1)return(tx);elsereturn(((2*tn-1)*tx*p((tn-1),tx)-(tn-1)*p((tn-2),tx))/tn); }8.14#define N 10#define M 5float score[N][M];float a_stu[N],a_cor[M];main(){int i,j,r,c;float h;float s_diff();float highest();r=0;c=1;input_stu();avr_stu();avr_cor();printf("\n number class 1 2 3 4 5 avr"); for(i=0;i<N;i++){printf("\nNO%2d",i+1);for(j=0;j<M;j++)printf("%8.2f",score[i][j]);printf("%8.2f",a_stu[i]);}printf("\nclassavr");for(j=0;j<M;j++)printf("%8.2f",a_cor[j]);h=highest(&r,&c);printf("\n\n%8.2f %d %d\n",h,r,c); printf("\n %8.2f\n",s_diff());}input_stu(){int i,j;float x;for(i=0;i<N;i++){for(j=0;j<M;j++){scanf("%f",&x);score[i][j]=x;}}}avr_stu(){int i,j;float s;for(i=0;i<N;i++){for(j=0,s=0;j<M;j++)s+=score[i][j];a_stu[i]=s/5.0;}}avr_cor(){int i,j;float s;for(j=0;j<M;j++){for(i=0,s=0;i<N;i++)s+=score[i][j];a_cor[j]=s/(float)N;}}float highest(r,c)int *r,*c;{float high;int i,j;high=score[0][0];for(i=0;i<N;i++)for(j=0;j<M;j++)if(score[i][j]>high){high=score[i][j];*r=i+1;*c=j+1;}return(high);}float s_diff(){int i,j;float sumx=0.0,sumxn=0.0;for(i=0;i<N;i++){sumx+=a_stu[i]*a_stu[i];sumxn+=a_stu[i];}return(sumx/N-(sumxn/N)*(sumxn/N)); }8.15#include<stdio.h>#define N 10void input_e(num,name)int num[];char name[N][8];{int i;for(i=0;i<N;i++){scanf("%d",&num[i]);gets(name[i]);}}void sort(num,name)int num[];char name[N][8];{int i,j,min,temp1;char temp2[8];for(i=0;i<N-1;i++){min=i;for(j=i;j<N;j++)if(num[min]>num[j])min=j;temp1=num[i];num[i]=num[min];num[min]=temp1;strcpy(temp2,name[i]);strcpy(name[i],name[min]);strcpy(name[min],temp2);}for(i=0;i<N;i++)printf("\n%5d%10s",num[i],name[i]);}void search(n,num,name)int n,num[];char name[N][8];{int top,bott,min,loca;loca=0;top=0;bott=N-1;if((n<num[0])||(n>num[N-1]))loca=-1;while((loca==0)&&(top<=bott)){min=(bott+top)/2;if(n==num[min]){loca=min;printf("number=%d,name=%s\n",n,name[loca]); }else if(n<num[min])bott=min-1;elsetop=min+1;}if(loca==0||loca==-1)printf("number=%d is not in table\n",n);}main(){int num[N],number,flag,c,n;char name[N][8];input_e(num,name);sort(num,name);for(flag=1;flag;){scanf("%d",&number);search(number,num,name);printf("continue?Y/N!");c=getchar();if(c=='N'||c=='n')flag=0;}}8.16#include<stdio.h>#define MAX 1000main(){int c,i,flag,flag1;char t[MAX];i=0;flag=0;flag1=1;while((c=getchar())!='\0'&&i<MAX&&flag1){if(c>='0'&&c<='9'||c>='A'&&c<='F'||c>='a'&&c<='f') {flag=1;t[i++]=c;}else if(flag){t[i]='\0';printf("\nnumber=%d\n",htoi(t));printf("continue?");c=getchar();if(c=='n'||c=='N')flag1=0;else{flag=0;i=0;}}}}htoi(s)char s[];{int i,n;n=0;for(i=0;s[i]!='\0';i++){if(s[i]>='0'&&s[i]<='9')n=n*16+s[i]-'0';if(s[i]>='a'&&s[i]<='f')n=n*16+s[i]-'a'+10;if(s[i]>='A'&&s[i]<='F')n=n*16+s[i]-'A'+10;}return(n);}8.17#include<stdio.h>void convert(n)int n;{int i;if((i=n/10)!=0)convert(i);putchar(n%10+'0');}main(){int number;scanf("%d",&number);if(number<0){putchar('-');number=-number;}convert(number);}8.18main(){int year,month,day;int days;scanf("\n%d,%d,%d",&year,&month,&day); days=sum_day(month,day);if(leap(year)&&(month>=3))days+=1;。
c程序设计第三版习题参考解答(全)

C程序设计(第三版)课后习题参考解答第1章 C语言概述1.5 参照本章例题,编写一个C程序,输出以下信息:******************************Very Good!******************************解:main ( ){printf(“****************************** \n”);printf(“\n”);printf(“ Very Good! \n”);printf(“\n”);printf(“****************************** \n”);}1.6 写一个程序,输入a,b,c三个值,输出其中最大者。
解:main ( ){int a,b,c,max;printf(“请输入三个数a,b,c: \n”);scanf(“%d,%d,%d”,&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf(“最大数为:%d ”,max);}第2章程序的灵魂——算法2.1 什么叫结构化的算法?为什么要提倡结构化的算法?解:由一些基本结构顺序组成的算法称为结构化的算法。
由于在基本结构之间不存在非顺序的跳转,流程的转移只存在于一个基本结构范围之内,因而提高了算法的质量。
2.7 什么叫结构化程序设计?它的主要内容是什么?解:结构化程序就是用高级语言表示的结构化算法。
它的主要内容包括“自顶向下,逐步细化”的分析方法和“模块化设计”的解决方法,以及“结构化编码”的实现方法。
第3章数据类型、运算符与表达式3.4将以下三各整数分别赋给不同类型的变量,请画出赋值后数据在内存中的存储形式。
注:如果没有学过二进制和补码,此题可以不做。
解:各数据在内存中的存储形式如下表所示:变量的类型25 -2 32769int型00 (000011001)8 位111111111111111015100 … 001(溢出)14long型00 (000011001)24 11 (1110)3100... 0100 (001)16 14short型100 (000011001)8 111111111111111015100 … 001(溢出)14signed char(8位)100011001 11111110 00000001(溢出)unsigned int型00 (000011001)8 11 (110)15100 (001)14unsigned long型00 (000011001)24 11 (110)3100... 0100 (001)16 14unsigned short型00 (000011001)8 11 (110)15100 (001)8unsigned char型00011001 11111110 00000001其中int和short类型,其取值范围是-32768~32767。
C语言程序设计习题答案(第三版)

C语言程序设计(第三版)习题答案习题一一、名词解释(1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)高级语言P2(5)汇编程序P3 (6)编译程序P4 (7)算法P5 (8)结构化程序设计方法P10二、简答题1. 设计程序时应遵循哪些基本原则?P4答:正确性、可靠性、简明性、有效性、可维护性、可移植性。
2. 算法具有哪些特点?答:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。
3. 算法的表示形式有哪几种?答:自然语言、伪代码、传统流程图、N-S流程图、计算机语言。
4. 结构化程序设计方法的三种基本结构是什么?答:顺序结构、选择结构和循环结构。
5. 传统流程图与N-S流程图最大的区别是什么?答:N-S流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。
三、用传统流程图或N-S流程图表示求解以下问题的算法。
1. 从键盘输入10个整数,求出其中的最小数并输出。
2. 求1+2+3+…+100的值。
3. 求10~50的所有素数之和。
4. 求下列分段函数的值。
四、请参照本章例题,编写一个简单的C 程序,输出以下三行信息。
**************************Yangtze University**************************#include <stdio.h>void main(){printf("**************************\n");printf(" Yangtze University\n");printf("**************************\n");}4X-1 (X ≤1) 5(X-1)+6 (1<X<5) 6-3X (X ≥5)习题二一、选择题1~10: B C D C D D B C A A11~20: D A C D B D B A C D二、填空题1.字母 L 或字母 l2. %c(或字符) 、 %d(或整数)3.在程序运行过程中,其值可以在一定的范围内变化的量4.'\0'5.小数形式、指数形式6.关键字、预定义标识符、用户标识符7.字母、数字、下划线、数字8. 189. 2 、 1 、 3010.双精度实数或double11.赋值、逗号、 20 、 20 、 20 、 412. 4 、 4习题三一、选择题1~10: B C C B C C C D C C注:第4题答案D为: 10 22↙33↙二、填空题1. printf 、 scanf2. h3."%5d"4.'\0'5. e 、 E6. 67. s 、 c8. *9. - 、 +10. i三、编程题1. 编写程序,从键盘输入一个以秒为单位的时间数,将其换算成几小时几分几秒,然后进行输出。
《C语言程序设计教程》(第三版)李凤霞 主编——第二章习题答案

第二章:C程序的基本结构一、单项选择题1、以下不是C语言的特点的是________。
A)语言的表达能力B)语言定义严格 C)数据结构系统化 D)控制流程结构化2、TC编译系统提供了对C程序的编辑、编译、连接和运行环境,以下可以不在该环境下进行的环节是________。
A)编辑和编译 B)编译和连接 C)连接和运行D)编辑和运行3、以下不是二进制代码文件是________。
A)标准库文件 B)目标文件C)源程序文件 D)可执行文件4、下面个选项组中,均属于C语言关键字的一组是________。
A)auto,enum,include B)switch,typedef,continueC)signed,union,scanf D)if,struct,type5、下面四组字符串中,都可以用作C语言标识符的是________。
A)print B)I \am C)signed D)if_maf scanf 3mf ty_prmx_2d mx_ a.f x1#aMb6 AMB A&B 5XY6、以下不属于流程控制语句的是_________。
A)表达式语句 B)选择语句 C)循环语句 D)转移语句7、下面描述中,不正确的是________。
A)C语言的函数体由一系列语句和注释组成。
B)注释内容不能单独写在一行上。
C)C程序的函数说明部分包括对函数名、函数类型、形式参数等的定义和说明。
D)scanf和printf是标准库函数而不是输入和输出语句。
8、下面描述中,正确的是________。
A)主函数的花括号必须有,而子函数中的花括号是可有可无的。
B)一个C程序行只能写一个语句。
C)主函数是程序启动时的唯一入口。
D)函数体包含了函数说明部分。
二、填空题1、一个完整的C程序至少要有一个________函数。
(主函数)2、标准库函数不是C语言本身的组成部分,它是由__________提供的功能函数。
(编译系统)3、C语言是以________为基本单位、整个程序由________组成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
习题十
一、单选题
1~5 DDDCC
6~10 AABDB
11~14 CADC
二、填空题
1、34 12
2、ARRAY a,b,c;
3、1 3
4、a c
5、(*b).day=? b->day=?
5、分析下列程序执行结果。
#include “stdio.h”
main()
{static struct s1
{char c[4],*s;
s1={“abc”,”def”};
static struct s2
{char *cp;struct s1 ss1;
}s2={“ghi”,{“jkl”,”mno”}};
printf(“%c%c\n”,s1.c[0],*s1.s); /*output ab */
printf(“%s%s\n”,s1.c,s1.s); /*output abcdef */
printf(“%s%s\n”,s2.cp,s2.ss1.s); /*output ghimno */
printf(“%s%s\n”,++s2.cp,++s2.ss1.s); /* output hino */
}
6、以下程序的功能是:读入一行字符(如:a,...,y,z),按输入时的逆序建立一个链式的结点序列,即
先输入的位于链表尾(如下图),然后再按输入的相反顺序输出,并释放全部结点。
#define getnode(type)_________malloc(sizeof(type)) ( (struct node *))
main()
{struct node
{char info;
struct node *link;
}*top,*p;
char c;
top=NULL;
while((c=getchar())______________) (!='\n')
{p=getnode(struct node);
p->info=c;
p->link=top;
top=p;
}
while(top)
{_________________; (p=top)
top=top->link;
putchar(p->info);
free(p);
}
}
7、下面的函数将指针p2所指向的线性链表链接到p1所指向的的链表的末端。
假定p1所指向的链表非空。
#define NULL 0
struct link
{float a;
struct link *next;
};
concatenate(p1,p2)
struct list *p1,*p2;
{if(p1->next==NULL)
p1->next=p2;
else
concatenate(___________,p2); (p->next)
}
8、以下函数create用来建立一个带头结点的单项链表。
新产生的结点总是插入再链表的末尾。
单向链表
的头指针作为函数的返回值。
#include <stdio.h>
struct list
{char data;
struct list *list;
};
struct list *cteate()
{struct list *h,*p,*q;
char ch;
h=___________malloc(sizeof(struct list)); (struct list *)
p=q=h;
ch=getchar();
while(ch!='\n')
{p=____________malloc(sizeof(struct list)); (struct list *)
p->date=ch;
q->next=p;
q=p;
ch=getchar();
}
p->next='\0';
______________; (rerturn h)
}
三、编程题
1、成绩排序。
按学生的序号输入学生的成绩,按照分数由低到高的顺序输出学生的名次、该名次的分数、
相同名次的人数和学号;同名次的学号输出再同一行中,一行最多输出10 个学号。
#include "stdio.h"
struct student
{int n;
int mk;
}
main( )
{int i,j,k,count=0,no;
struct student stu[100],*s[100],*p;
printf("\nPleasse enter mark(if mark<0 is end) \n");
for(i=0;i<100;i++)
{ printf("No.%4d= =',i+1);
scanf("%d",&stu[i].mk);
s[i]=&stu[i];
stu[i].n=i+1;
if(stu[i].mk<=0)break;
for(j=0;j<I;j++)
for(k=j+1;k<=I;k++)
if(s[j]->mk<s[k]->mk)
{p=s[j];s[j]=s[k];s[k]=p;}
}
for(no=1,count=1,j=0;j<I;j++)
{if(s[j]->mk>s[k+1]->mk)
{printf("\nNo.%3d= =%4d%4d:",no,s[j]->mk,count);
for(k=j-count+1;k<=j;k++)
{ptintf("%3d",s[k]->n);
if((k-(j-count))%10= =0&&k!=j)
printf("\n ");
}
count=1;
no++;
}
else count++;
}
}
2、现在有教师(姓名、单位、住址、职称)和学生(姓名、班级、住址、入学成绩)的信息。
请在输入
10名教师和学生的信息后,按姓名进行排序,最后按排序后的顺序进行输出,对于教师要输出姓名、单位、住址和职称,对学生要输出姓名、班级、住址和入学成绩。
请编程实现。
/*p332_2.c*/
#include "string.h"
union dwbj
{char dw[20];
char bj[10];
};
union zcrxcj
{char zhich[10];
float rxcj;
};
struct inf
{int fl;/*0:teacher;1:student*/
char name[20];
union dwbj db;
char addr[30];
union zcrxcj zs;
};
main()
{int i,j;
struct inf info[10];
for(i=0;i<10;i++)
{printf("teacher:input 0;student:input 1\n");
scanf("%d",&info[i].fl);
printf("Input name of teacher or student:\n");
scanf("%s",info[i].name);
printf("Input dept of teacher or class of student:\n");
if(info[i].fl==0)scanf("%s",info[i].db.dw);
else scanf("%s",info[i].db.bj);
printf("Input address:\n");
scanf("%s",info[i].addr);
printf("job of teacher or suc of student\n");
if(info[i].fl==0)scanf("%s",info[i].zs.zhich);
else scanf("%f",&info[i].zs.rxcj);
}
for(i=0;i<10;i++)
{printf("%s,",info[i].name);
if(info[i].fl==0)printf("%s,",info[i].db.dw);
else printf("%s,",info[i].db.bj);
printf("%s,",info[i].addr);
if(info[i].fl==0)printf("%s\n",info[i].zs.zhich);
else printf("%f\n",info[i].zs.rxcj);
}
}。