C语言程序设计教程 清华大学出版社 陈明主编 第4章答案
C语言程序设计教程课后习题答案
C语言程序设计教程课后习题答案第一章C语言程序设计概述-习题答案1算法的描述有哪些基本方法?答1、自然语言2、专用工具2C语言程序的基本结构是怎样的?举一个例子说明。
答1、C语言程序由函数构成;2、“/*”与“*/”之间的内容构成C语言程序的注释部分;3、用预处理命令#include、#define可以包含有关文件或预定义信息;4、大小写字母在C语言中是有区别的;5、除main()函数和标准库函数外,用户也可以自己编写函数,应用程序一般由多个函数组成,这些函数指定实际所需要做的工作。
3C语言有什么特点?答1、具有结构语言的特点,程序之间很容易实现段的共享;2、主要结构成分为函数,函数可以在程序中被定义完成独立的任务,独立地编译代码,以实现程序的模块化;3、运算符丰富,包含的范围很广;4、数据类型丰富;5、允许直接访问物理地址,即可直接对硬件进行损伤,实现汇编语言的大部分功能;6、限制不太严格,程序设计自由度大,这样使C语言能够减少对程序员的束缚;7、生成的目标代码质量,程序执行效率高,同时C语言编写的程序的可移植性好。
4★指出合法与不合法的标识符命名。
答AB12--√ leed_3-- a*b2--× 8stu--× D.K.Jon--× EF3_3--√ PAS--√ if--×XYZ43K2--√ AVE#XY--× _762--√ #_DT5--× C.D--×5说明下列Turbo C热键的功能。
答F2:源文件存盘 F10:调用主菜单 F4:程序运行到光标所在行(用于调试程序)Ctrl+F9:编译并链接成可执行文件 Alt+F5:将窗口切换到 DOS 下,查看程序运行结果。
6说明下列Turbo C方式下输入并运行下列程序,记录下运行结果。
①main(){printf("********************\n");printf(" welcome you \n");printf(" very good \n);printf("********************\n");}②main(){ int a,b,c,t;printf("please input three numbers;");scanf("%d,%d,%d",&a,&b,&c); /*教材S是错误的*/t=max(max(a,b),c);printf("max number is:%d\n",t);}int max(int x, int y){ int z;if(x>y)z=x;else z=y;return(z);}答运行结果:********************welcome youvery good********************运行结果:please input three numbers;3,1,4 /*左侧下划线内容为键盘输入*/max number is:47一个C程序是由若干个函数构成的,其中有且只能有一个___函数。
高级程序语言设计 清华大学出版社 第4章参考答案
第四章一、单选题二、填空题1.122.-850, 2, 03.k=pk4.3575. 26.257.308.a*b*c*d*9. 5 3 3 510.12334三、编程题1.【分析与解答】(1)对于字符的输入要使用while循环,只是要注意,循环的终止条件是:等于‟\n‟。
(2)在while循环体中,用if条件来判断是否为数字字符,若是,就使对应的元素增1;if中的条件表达式可用C的库函数:isdigit(ch),这时要在程序前加:#include <ctype.h>行;也可用:ch>=‟0‟&&ch<=‟9‟。
(3)若用num数组元素来进行统计,当ch中是数字“0”时,使num[0]增1、当ch中是数字“1”时,使num[1]增1…,num的下标表达式可用:ch-…0‟。
(4)注意,在定义数组时,数组的大小应符合使用的要求。
在利用数组元素作为计数器时,不要忘记首先应该给数组元素赋0值。
(5)总结:通过本题的编程,要求掌握利用数组元素作为计数器的基本算法。
#include "stdio.h"void main(){int num[10]={0},i;char ch;scanf("%c",&ch);while(ch!='\n'){if(ch>='0' && ch<='9')num[ch-'0']++;scanf("%c",&ch);}for(i=0; i<10; i++)printf("The count of %d is:%d\n",i,num[i]);}2.【分析与解答】(1)使用while循环输入学生成绩,循环条件是a>=0.0 && a<=100 && n<1000;当输入的数不在0到100之间,或者输入的成绩个数超过1000个,则停止输入;(2)在while循环内,将输入的数累加到sum中,同时赋给数组元素x[n];(3)求出平均值,ave= sum/n;(4)使用for循环for (i=0;i<n;i++) if(x[i]<ave) printf ("%f\n",x[i]);判断数组中的数如果小于平均值就输出。
清华大学 c语言课本习题参考答案
第1章习题一、选择题1、A2、D3、C4、D5、B6、C7、C8、B9、B 10、A二、填空题1、一,函数体2、main(主),main(主)3、编译,目标4、.c,.obj,.exe5、缩进,无影响,/* */三、程序分析题1、*****************Very good!*****************2、a=12,b=5a=17,b=223、r= 5.50,s=95.033098四、编程题1.用printf()函数在屏幕上输出自己的班级、学号、姓名。
#include"stdio.h"void main(){printf("班级:BX1109\n");printf("学号:111003530901\n");printf("姓名:王孟荣\n");}2.从键盘输入两个整数,计算它们的和、差、积、商,并在屏幕上输出结果。
#include<stdio.h>void main(){int x,y,a,b,c;float d;printf("Please Input Two Integers:\n");scanf("%d%d",&x,&y);a=x+y;b=x-y;c=x*y;d=1.0*x/y;printf("a=%d\nb=%d\nc=%d\nd=%f\n",a,b,c,d);}第2章习题一、选择题1~5 BCDCD6~10 DBBCA二、填空题1.单精度浮点型、双精度浮点型、字符型2.03.x%10*10+x/104.5.55.5.7 206.sin(sqrt(x*x))/(a*b)7.,8.1111011 173 7B9.3 310.3三、程序分析题1.7,8,102.1,33. 5 F4.(int)i=12, 12.505. 461579112四、编程题1.编写程序,求表达式c=21%9-(float)a+4/b*b的值,假设表达式中a和b 的值分别由键盘输入。
《C语言程序设计》第二版(谭浩强)-4-7章课后习题答案-清华大学出版社
《C语言程序设计》第二版(谭浩强)-4-7章课后习题答案-清华大学出版社4-5原题:打印出下题的结果main(){int a=5,b=7;float x=67.8564,y=-789.124;char c='A';long n=1234567;unsigned u=65535;printf("%d%d\n",a,b);printf("%3d%3d\n",a,b);printf("%f,%f\n",x,y);printf("%-10f,%-10f\n",x,y);printf("%8.2f,%8.2f,%4f,%4f,%3f,%3f\n",x,y,x,y,x,y);printf("%e,%10.2e\n",x,y);printf("%c,%d,%o,%x\n",c,c,c,c);printf("%ld,%lo,%x\n",n,n,n);printf("%u,%o,%x,%d\n",u,u,u,u);printf("%s,%5.3s\n","COMPUTER","COMPUTER");}结果:575 767.856400,-789.12402367.856400 ,-789.12402367.86, -789.12,67.856400,-789.124023,67.856400,-789.1240236.78564e+01, -7.9e+02A,65,101,411234567,4553207,d68765535,177777,ffff,-1COMPUTER, COM4-6原题:用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1='A',c2='a'。
C语言程序设计项目教程课后参考答案
2.选择题
(1)C(2)C(3)D(4)B(5)D(6)A
3.程序设计题
(1)#include <stdio.h>
voidmain()
{
printf(“*”);
printf(“**”);
printf(“***”);
printf(“**”);
printf(“*”);
1.
int fun(int x,int y)
{
char c;
switch(c=getchar())
{
case '+':return x+y;break;
case '*':return x*y;break;
default:printf("输入的符号不对!");
}
}
2.
#include<string.h>
void main()
{
char c;
c=getchar();
putchar(c-1);
putchar(c);
putchar(c+1);
}
(2)#include<stdio.h>
void main()
{
int score1,score2,score3,score4,sum;
float avr;
scanf("%d,%d,%d,%d",&score1,&score2,&score3,&score4);
int min,row2,column2;
for (i=0;i<4;i++)
《C语言程序设计》课件 《C语言程序设计》参考答案
《C语言程序设计》教材参考答案包括各单元:一.随堂练习二.本章自测第1章一.随堂练习【随堂练习1-1】1.根据上述示例模仿编程,输入正方形的边长,计算其面积。
#include <stdio.h>void main( ){ int a,s; //数据准备,边长a,面积sprintf("请输入正方形的边长:");scanf("%d",&a); //数据输入s=a*a; //数据计算printf("该正方形的面积为:%d.\n",s);}【随堂练习1-2】1.下面哪些标识符属于合法的用户自定义标识符:Main、void、_num、my$、a*、N4、3m、a-2答:合法的用户自定义标识符是:Main、_num、N42.结合【例1.2】指出程序代码中所用到的标识符哪些是关键字,哪些是预定义标识符,哪些是用户自定义标识符。
答:关键字:void、int预定义标识符:include、main、printf、scanf用户自定义标识符:a、b、c3.分析【例1.2】中函数的结构,包括函数首部(函数返回值类型、函数名、形式参数)、函数体语句(说明语句、可执行语句)。
答:函数首部:void main( ),其中函数返回值类型为void、函数名为main、形式参数无;函数体语句:{}内的语句为函数体,其中:说明语句为int a,b,c;,其余为可执行语句。
【随堂练习1-3】1.在VC++6.0环境中完成【例1.2】程序开发过程。
(略)2.查阅【例1.2】所对应的工程文件夹,了解相关文件的含义。
工程文件夹中:.CPP:用C/C++语言编写的源代码文件。
.DSP:VC开发环境生成的工程文件,VC4及以前版本使用MAK文件来定义工程。
项目文件,文本格式。
.DSW:VC开发环境生成的WorkSpace文件,用来把多个工程组织到一个WorkSpace中。
C语言程序设计基础教程课后习题答案(清华大学出版社于延编)自己做欢迎校正
四、编程题 1.从键盘上输入 5 个整数, 输出最大值(要求至少用 两种方法编程)。 ① #include<stdio.h> #include<stdlib.h> int max(int *a){ int b,i; b=a[0]; for(i=1;i<5;i++) if(b<a[i]) b=a[i]; return b; } int main(){ int i,a[5]; for(i=0;i<5;i++) scanf("%d",&a[i]); printf("最大值为:%d\n",max(a)); system("pause"); }
flag=1; n+=i; //将约数累加到 n 中 } } return n; //是这个数本身时返回值为 n } int main() { int m; scanf("%d",&m); printf("真约数之和=%d\n",f(m)); system("pause");}
4.设计算法求出 10000 以内所有孪生素数对。
if(i==j) printf("%5d",i);
c语言程序设计基础教程课后答案
c语言程序设计基础教程课后答案C语言程序设计基础教程课后答案第一章:C语言概述1. 简述C语言的特点。
- C语言是一种结构化编程语言,具有高效、灵活、功能强大等特点。
- 它支持多种编程范式,如过程式编程、结构化编程、面向对象编程等。
- C语言具有较低的抽象级别,接近硬件,因此执行效率较高。
2. C语言的发展历史。
- C语言在1972年由丹尼斯·里奇(Dennis Ritchie)在贝尔实验室开发。
- 它最初是作为UNIX操作系统的系统编程语言而设计的。
第二章:C语言环境和基本语法1. 如何设置C语言的开发环境?- 选择一个C语言编译器,如GCC、MSVC等。
- 安装编译器并配置环境变量,以便在命令行中直接调用编译器。
2. C语言的基本语法结构是什么?- C语言的基本结构包括预处理指令、函数定义、变量声明和语句。
第三章:数据类型、运算符和表达式1. C语言中的基本数据类型有哪些?- 整型(int)、字符型(char)、浮点型(float和double)等。
2. 运算符的分类及其用法。
- 算术运算符:+、-、*、/、%等。
- 赋值运算符:=、+=、-=等。
- 比较运算符:==、!=、>、<等。
- 逻辑运算符:&&、||、!等。
第四章:控制语句1. 条件语句的用法。
- if语句用于基于条件执行代码块。
- switch语句用于多条件选择。
2. 循环语句的用法。
- while循环用于在满足条件时重复执行代码块。
- for循环用于已知迭代次数的循环。
- do-while循环先执行代码块再判断条件。
第五章:数组和字符串1. 数组的基本概念和使用。
- 数组是相同数据类型的元素集合,存储在连续的内存位置。
- 声明数组:int arr[10]; 表示一个包含10个整数的数组。
2. 字符串的表示和操作。
- 在C语言中,字符串是以空字符('\0')结尾的字符数组。
- 使用标准库函数如strcpy、strlen等操作字符串。
《C语言程序设计》清华大学出版社课后答案
习题 9一.选择题1. A2. A3. A4. A5.B6.C二编程题9.2 编写一函数,判断N×N矩阵是否为上三角阵。
上三角阵是指不含主对角线,下半三角都是0的矩阵。
#include <stdio.h>int fun(int x[][3],int n){int flag=1,i,j;for(i=1;i<n;i++)for(j=0;j<i;j++)if(x[i][j]!=0){flag=0;break;}return flag;}void main(){int a[3][3]={{1,4,5},{0,2,6},{0,0,3}};int result=fun(a,3);if(result==1)printf("此矩阵是上三角矩阵!\n");elseprintf("此矩阵不是上三角矩阵!\n");}9.3 有一个字符串,包含n个字符,将字符串从第i 个字符到第j个字符间的字符逆置。
程序代码:#include <stdio.h>#include <string.h>void invertsub(char *str,int i,int j){char *p,*q,c;int n=0;p=q=str;if(str==NULL)printf("str is NULL!\n");else if(i<=0||j>strlen(str))printf("i and j value error!\n");else {while(*p!='\0'&&n!=i-1){ p++;n++; }q=p;while(*q!='\0'&&n!=j-1){q++;n++;}while(p<q){c=*p;*p++=*q;*q--=c;}}}void main(){char str[]="abcdefg";printf("%s\n",str);invertsub(str,2,5);printf("%s\n",str);}9.4 题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数.程序源代码:main(){int number[20],n,m,i;printf("the total numbers is:");scanf("%d",&n);printf("back m:");scanf("%d",&m);for(i=0;i<n-1;i++)scanf("%d,",&number[i]);scanf("%d",&number[n-1]);move(number,n,m);for(i=0;i<n-1;i++)printf("%d,",number[i]);printf("%d",number[n-1]);}move(array,n,m)int n,m,array[20];{int *p,array_end;array_end=*(array+n-1);for(p=array+n-1;p>array;p--)*p=*(p-1);*array=array_end;m--;if(m>0) move(array,n,m);}9.5 输入n个整数,将最小数与第一个数对换,把最大数与最后一个数对换程序源代码:main(){int number[10];input(number);max_min(number);output(number);}input(number)int number[10];{int i;for(i=0;i<9;i++)scanf("%d,",&number[i]);scanf("%d",&number[9]);}max_min(array)int array[10];{int *max,*min,k,l;int *p,*arr_end;arr_end=array+10;max=min=array;for(p=array+1;p<arr_end;p++)if(*p>*max) max=p;else if(*p<*min) min=p;k=*max;l=*min;*p=array[0];array[0]=l;l=*p;*p=array[9];array[9]=k;k=*p;return;}output(array)int array[10];{ int *p;for(p=array;p<array+9;p++)printf("%d,",*p);printf("%d\n",array[9]);}9.6 输入n个字符串,按由小到大顺序输出。
C语言课后题答案【陈明晰 主编】
#include"stdio.h"
main()
{ float x,y;
scanf("%f",&x);
if(x<0.0) y=0.0;
else if((x<5.0)&&(x!=2.0))
y=1.0/(x+2.0);
else if(x<10.0) y=1.0/x;
else y=10.0;
printf("%f\n",y);
k=(a++<=0)&&(!(b--<=0));
printf("%d%d%d%\n",k,a,b);}
A.0 0 3B.0 1 2C.1 0 3D.1 1 2
8.为表示关系x≥y≥z,应使用C语言表达式( A )。
A.(x>=y)&&(y>=z)B.(x>=y)AND(y>=z)
C.(x>=y>=z)D.(x>=y)&(y>=z)
8.设x、y为int型变量,且x=1,y=2,则表达式1.0+x/y的值为1.0。
9.设整型变量x、y、z均为5,则:
①执行x-=y-z后,x的值为5。
②执行x%=y+z后,x的值为5。
10.数学式的C语言表达式为a/b*c)。
三、简答题
1.字符常量与字符串常量有什么区别?
2.对于Turbo C系统来说,char型变量与int型变量在内存中存储数据的区别是什么?
A.fB.e(E)C.g(G)D.x
10.若float num=123.456,以%+10.4d的格式输出,结果正确的是(B)
C语言程序设计教程清华大学出版社陈明主编第5章答案
/* 文件路径名:ex5_1_2\main.c */#include <stdio.h > intmain(voi/*标准输入/出头文件*/ /* 主函数 main () */ /*定义字符数组*/ /* s 自加2 */ /* 输出 s[0] *//*返回值0,返回操作系统*/执行后的结果是 _________ 。
A )输出字符a 的ASCII 码 C )输出字符cB )输出字符c 的ASCII 码 D )程序出错第5章习题解答、选择题i 以下叙述中错误的是 ____________ 。
A ) 对于double 类型数组,不可以直接用数组名对数组进行整体输入或输出B ) 数组名代表的是数组所占存储区的首地址,其值不可改变C ) 在程序执行中,当数组元素的下标超出所定义的下标范围时,系统将给出“下标越 界”的出错信息D )可以通过赋初值的方式确定数组元素的个数解析:对于double 类型数组,不能直接用数组名对数组进行整体输入或输出。
所以选项 A 的说法是正确的。
数组名代表数组所占内存区的首地址, 是一个固定指针,其值不可改变,因此选项B 也是正确的。
在C 语言一维数组定义时可以不指定数组长度, 由赋初值的初值个数决定数组的长度。
因此选项D 也是正确的。
C 语言程序在执行时,不检查数组元素的下标是否越界,如果出现越界,可能会引起系统死机,因此选项C 不正确。
答案:C2•有以下程序:解析:数组s[]的首地址值s 是不可改变的,故该程序编译时会出错。
答案:D 3•有以下程序:/* 文件路径名:ex5_1_3\main.c */ #include <stdio.h> /* 标准输入/出头文件 */ int main(void)/* 主函数 main() */{int a[10] = {1,2, 3, 4, 5, 6, 7, 8, 9, 10}, *p = &a[3], *q = p + 2; /* 定义数组及变量*//* 文件路径名:ex5_1_4\main.c */ #include <stdio.h> void Sort(int a[], int n) {int i, j, t;for (i = 0; i < n - 1; i++)for (j = i + 1; j < n; j++)if (a[i] < a[j]){ t = a[i]; a[i] = a[j]; a[j] = t; } }int main(void)/*标准输入/出头文件*//*将a 中元素从大到小进行排序 *//*定义变量*//* 主函数 main() *//* 输出 a[i] *//*换行*/ /*返回值0,返回操作系统*/ printf("%d\n", *p + *q); /* 输出 *p + *q 之值 */ return 0; /*返回值0,返回操作系统*/}程序运行后的输出结果是 _________ 。
程序设计基础教程(c语言版)课后答案
z习题解答目录1.2 习题解答 (3)1.2.1 选择题 (3)1.2.2 填空题 (3)1.2.3 编程题 (4)2.2 习题解答 (5)2.2.1 选择题 (5)2.2.2 填空题 (7)2.2.3 编程题 (8)3.2 习题解答 (11)3.2.1 选择题 (11)3.2.2 填空题 (12)3.2.3 编程题 (12)4.2 习题解答 (15)4.2.1 选择题 (15)4.2.2 填空题 (17)4.2.3 编程题 (18)5.2 习题解答 (29)5.2.1 选择题 (29)5.2.2 填空题 (31)5.2.3 编程题 (33)6.2 习题解答 (37)6.2.1 选择题 (37)6.2.2 填空题 (41)6.2.3 编程题 (43)7.2 习题解答 (67)7.2.1 选择题 (67)7.2.2 填空题 (68)7.2.3 编程题 (68)21.2 习题解答1.2.1 选择题1、B【分析】在一个C程序中必须有且只能有一个main函数,而且main函数可以在任何地方出现.2、C【分析】C 语言中合法以的标识符组成为:字母,数字,下划线,且数字不能打头,亦不能为关键字。
A中,-sub 不合法。
B 中4d不合法。
D 中void 为关键字。
3、【分析】4、C【分析】转义字符中,第一个\”输出“,第二\\输出\,第三个\b退格,把前一个\去掉了,第四个\’输出’,第五个\t跳格,第六个\”输出”,第七个\n输出换行。
5、C【分析】本题将10进制17,分别按8、16进制输出。
8的进制21=2*8+1*1=17(10, 16制11=1*16+1*1=17(10)1.2.2 填空题1、主【分析】一个C源程序中至少包括一个主函数,其他函数没有限制。
2、双引号。
【分析】两种写法都是允许的,使用尖括号表示在包含文件目录中去查找(包含目录是由用户在设置环境时设置的),而不在源文件目录去查找.使用双引号则表示首先在当前的源文件目录中查找,若未找到才到包含目录中去查找。
c语言程序设计答案(清华大学出版社)
c语言程序设计答案(清华大学出版社)C语言程序设计是一门基础而重要的计算机编程课程,它不仅教授编程语言的语法和结构,更培养了解决问题的逻辑思维能力。
《C语言程序设计》一书由清华大学出版社出版,是众多高校计算机专业学生的必读教材。
以下是该书的一些答案解析,以帮助学生更好地理解和掌握C 语言的相关知识。
第一章:C语言概述- C语言的特点:C语言是一种结构化语言,具有高效、灵活、功能强大等特点。
- C语言的发展历史:C语言由丹尼斯·里奇在20世纪70年代初期开发,最初用于UNIX操作系统。
第二章:数据类型、运算符和表达式- 基本数据类型:包括整型(int)、字符型(char)、浮点型(float和double)。
- 运算符:包括算术运算符、关系运算符、逻辑运算符、位运算符等。
- 表达式:由常量、变量、运算符和函数调用组成的组合,用于计算和赋值。
第三章:控制语句- 顺序结构:程序按照代码的顺序执行。
- 选择结构:使用`if`、`switch`等语句进行条件判断。
- 循环结构:使用`for`、`while`、`do-while`等语句进行重复执行。
第四章:数组- 一维数组:连续存储的相同类型元素集合。
- 二维数组:可以看作是一维数组的集合。
- 数组的初始化:可以使用花括号进行初始化。
第五章:函数- 函数的定义:使用`return`类型和函数名定义。
- 函数的调用:通过函数名和参数列表调用。
- 递归函数:函数内部调用自身。
第六章:指针- 指针变量:存储变量地址的变量。
- 指针的运算:包括地址运算和指针的自增自减。
- 指针与数组:指针可以方便地访问数组元素。
第七章:结构体与联合体- 结构体:可以包含不同类型的数据成员。
- 联合体:所有成员共享同一块内存空间。
第八章:预处理指令- 宏定义:使用`#define`定义常量或宏。
- 文件包含:使用`#include`引入头文件。
第九章:位运算- 位运算符:包括位与(&)、位或(|)、位非(~)、位异或(^)等。
《C语言程序设计》课后习题答案(第四版)
第1章程序设计和C语言11.1什么是计算机程序11.2什么是计算机语言11.3C语言的发展及其特点31.4最简单的C语言程序51.4.1最简单的C语言程序举例61.4.2C语言程序的结构101.5运行C程序的步骤与方法121.6程序设计的任务141-5 #include <stdio.h>int main ( ){ printf ("**************************\n\n");printf(" Very Good!\n\n");printf ("**************************\n");return 0;}1-6#include <stdio.h>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max); return 0;}第2章算法——程序的灵魂162.1什么是算法162.2简单的算法举例172.3算法的特性212.4怎样表示一个算法222.4.1用自然语言表示算法222.4.2用流程图表示算法222.4.3三种基本结构和改进的流程图262.4.4用N S流程图表示算法282.4.5用伪代码表示算法312.4.6用计算机语言表示算法322.5结构化程序设计方法34习题36第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例373.2数据的表现形式及其运算393.2.1常量和变量393.2.2数据类型423.2.3整型数据443.2.4字符型数据473.2.5浮点型数据493.2.6怎样确定常量的类型513.2.7运算符和表达式523.3C语句573.3.1C语句的作用和分类573.3.2最基本的语句——赋值语句593.4数据的输入输出653.4.1输入输出举例653.4.2有关数据输入输出的概念673.4.3用printf函数输出数据683.4.4用scanf函数输入数据753.4.5字符数据的输入输出78习题823-1 #include <stdio.h>#include <math.h>int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <stdio.h>#include <math.h>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。
C语言程序设计 (第四版) 清华大学出版 答案
p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期
p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次
r=0.1;
n=10;
p=pow(1+r,n);
printf("p=%f\n",p);
return 0;
}
Xt3-4(1)
#include <stdio.h>
int main()
{int c1,c2;
c1=197;
c2=198;
printf("c1=%c,c2=%c\n",c1,c2);
printf("c1=%d,c2=%d\n",c1,c2);
return 0;
}
Xt3-4(2)
#include <stdio.h>
int main()
{int a,b;
float x,y;
char c1,c2;
scanf("a=%d b=%d",&a,&b);
scanf("%f %e",&x,&y);
int main()
{
int a,b,c;
printf("请输入三个整数:");
scanf("%d,%d,%d",&a,&b,&c);
if (a<b)
《C语言程序设计》(清华大学出版社)书后习题参考答案
第一步部分简单程序设计P55.课堂实践(1)#include<stdio.h>main(){printf(“**********\n”); printf(“**********\n”); printf(“**********\n”);}(2)#include<stdio.h>main<> /*main()*/{printf(“Hello,World.\n);}P95.课堂实践(1)#include<stdio.h>main(){char a=116,b=119,temp;printf(“a=%c,b=%c\n”,a,b); temp=a;a=b;b=temp;printf(“a=%c,b=%c\n”,a,b); }(2)功能:交换x,y的值;#include<stdio.h> main(){ int x,y;x=5; y=10;x=x+y;y=x-y;x=x-y;printf(“%d,%d”,x,y);}(3)c:dec=120,oct=170,hex=78,ASCLL=x 4、输出内容向左靠齐12123.14159260000000000000000000000000 3.14159260000000000000000000000000P115.课堂实践(1)①3.0-(3.0*4)/(4+2)#include<stdio.h>main(){ float x;x=3.0-(3.0*4)/(4+2);printf(“%f”,x);}②1/2*(2*3+2/(2*2*2))#include<stdio.h>main(){ float x;x=1/2*(2*3+2/(2*2*2));printf(“%f”,x);}(2)%(3)B(4)#include<stdio. h>main{x,y,z;/*没有数据类型*/x+y=5;/*赋值表达式左边不能是表达式,应为一个变量*/printf("x+y=,z=",x,y,z);/*没有输入格式符*/}P135.课堂实践(1)-14(2)(1)x=4,8 (2)8,8(3)#include<stdio.h>mian(){ int x=10;printf(“当x变量的初值为%d时,进行+=运算后的结果为%d”,x,x+=x);printf(“当x变量的初值为%d时,进行-=运算后的结果为%d”,x,x-=x);printf(“当x变量的初值为%d时,进行*=运算后的结果为%d”,x,x*=x);printf(“当x变量的初值为%d时,进行/=运算后的结果为%d”,x,x/=x);}P13习题一、1、C2、C3、A 二、5,-46,12,20P185.课堂实践(1)#include<stdio.h> main(){ int x,y;scanf(“%d%d”,&x,&y); if(x>y)printf(“x>y”); else if(x<y)printf(“x<y”); elseprintf(“x=y”);}(2)#include<stdio.h> main(){ int x,y;scanf(“%d”,&x);if(x>0) y=1;if(x==0) y=0;if(x<0) y= -1;printf(%d”,y);}P215.课堂实践(1)C (2)B (3)B (4)0.500000 (5)不能:#include<stdio.h>main( ){int x,y,z,max;if(z>y){if(z>x)max=z;else max=x;}else if (y>x)max=y;else max=x;printf("\nmax=%d ",max);}P23 略P24习题一、1、D 2、D 3、C 4、D 5、B 6、B 7、B二、1、y%2==0 2、&& || !3、(x>2&&x<3)||(x<-10)4、(ch>=’A’&&ch<=’z’)ch=ch-32;5、1,06、F三、1、#include<stdio.h>main(){int a;scanf("%d",&a);if(a%5==0&&a%7==0)printf("yes");else printf("no");}2、#include<stdio.h>main(){int m;scanf("qingshuru:%d",&m);if((m%4==0&&m%100!=0)||m%400==0)printf("%d shirunnian",m);else printf("%d bushirunnian",m);}3、#include<stdio.h>#include<math.h>main(){ floata,b,c,dise,x1,x2,realpart,imagpart;scanf(“%f%f%f”,&a,&b,&c);printf(“The equation”);if(fabs(a)<=0)printf(“is not a quadratic\n”);else{ dise=b*b-4*a*c;if(dise<=0)printf(“has two aqualroots:%8.4f\n”,-b/(2*a));elseif(dise>0){ x1=(-b+sprt(disc))/(2*a);x2=(-b-sprt(disc))/(2*a);printf(“has distinct real roots:%8.4f and%8.4f\n”,x1,x2);}else{realpart=-b/(2*a);imagpart=sqrt(-disc)/(2*a);printf(“has complex roots:\n”);printf(“%8.4f+%8.4f\n”,realpart,im agpart);printf(“%8.4f-%8.4f\n”,realpart,imagpart);}P285、课堂实践(1)#include<stdio.h>main( ){int key;char ch;printf("*****\n");scanf("%d",&key);printf("????????:\n");while((ch=getchar())!='\n')(ch-key)>122?putchar(ch+122-33-key): ((ch-key)<33?putchar(ch-122-key):putchar (ch-key));}(2)#include<stdio.h>main(){ int i; /*i没有赋值*/int i=1;printf(“output ten numbers:\n”);while(i<=10)printf(“%3d”);/*没有输出参数*/ {printf(“%3d”,i);i++; /*应加{}组成复合语句*/ i++;}}P304. 课堂实践(1)#include<stdio.h>main(){ int a,s=0;do{ scanf(“%d”,&a);s+=a;}while(a!=-1);printf(“%d”,s);}(2)#include<stdio.h>main(){ int a,b,r,t,maxB;scanf(“%d%d”,&a,&b);if(a<b){ t=a;a=b;b=t;}r=a%b;while(r!=0){ a=b;b=r;r=a%b;}maxB=b;printf(“maxB is %d”,maxB);}P336. 课堂实践(1)4(2)①#include<stdio.h>main(){int i,j;printf("**九九乘法表**");for(i=1;i<10;i++){ for(j=1;j<=i;j++)printf("%d*%d=%d\t",j,i,i*j);printf("\n");}}②#include<stdio.h>main() {int i=1,j;while(i<10){ j=1;while(j<=i){ printf("%d*%d=%d\t",j,i,i*j);j++;}printf("\n");i++;}}③#include<stdio.h>main(){int i=1,j;do{ j=1;do{ printf("%d*%d=%d\t",j,i,i*j);j++;}while(j<=i);printf("\n");i++;}while(i<10);}(3)#include<stdio.h>main(){ int x;scanf("%d",&x);while(x>0){ printf("%d",x%10);x/=10;prtntf(" ");}}P33习题【参考答案】一、1、D 2、C 3、A 4、A 5、D 6、C 7、D 8、D 9、C 10、B二、1、36 2、3 4、1 3 5、 i<=10 if(j%6!=0)三、1、#include<stdio.h>main(){int a,sum=0;for(a=1;a<=100;a++)if(a%2==1)sum=sum+a;printf("%d",sum);}2、#include<stdio.h> main(){ int i,j,s;int t;int k[100];for(i=1;i<=1000;i++) {s=0;t=0;for(j=1;j<i;j++)if(i%j==0){s+=j;k[t++]=j;}if(i==s){printf("%d shiwanshou %d=",i,i);for(;t>0;)if(t>1)printf("%d+",k[--t]);else printf("%d",k[--t]);printf("\n");}}3、#include<stdio.h>main(){ int y,t=0;for(y=1008;y<=2008;y++)if(y%4==0&&y%100!=0||y%400==0) { printf(“%d\t”,y);t++;if(t%5==0)printf(“\n”);}}4、#include<stdio.h>main(){ int t,i,x,max,min;scanf(“%d”,&t);max=min=t;for(i=1;i<10;i++){scanf(“%d”,&x);if(max<=x)max=x;if(min>=x)min=x;}printf(“%d\t%d\n”,max,min);}5、#include<stdio.h>main(){ int i,j,p;for(i=1;i<=4;i++){ for(p=1;p<=i;p++)printf(“”);for(j=7;j>=2*i-1;j--)printf(“*”); printf(“\n”);}}P395.课堂实践(1)float compare (float a,b,c) {float k;if (a>=b){ k=a;if(a>=c)k=a;elsek=c;}else{k=b;if(b<=c)k=c;return k;}}(2)最大公约数:int zxgys (int m,n){int i,j,k;if(m>=n)k=n;elsek=m;for(i=1;i<=k;i++){if(m%i==0&&n%i==0) j=i;}return j;}最小公倍数:int zdgbs (int a,int b) {int x,y,k;if(a>=b)k=a;elsek=b;for(x=a*b;x>=k;x- -){if(x%a==0&&x%b==0)y=x;}return y;}P41 课堂实践(1)#include<stdio.h>float zhouchang (float x) {float l;l=2*3.14*x;return l;} float mianji (float y){float s;s=3.14*y*y;return s;}voide main (){float r;scanf("%f",&r);float m,n;m=zhopuchang (r);n=mianji (r);printf("m=%f\nn=%f\n",m,n); }(2)float add (float x,float y) {Float z;Z=x+y;Return z;}float sub(float h,float k) {float w;w=h-k;return w;}float mul(float m,n){float i;i=m*n;return i;}float div(float e,f) {float g;g=e/f;return g;}void main(){float p,g;scanf("%f%f",&p,&g); char a;lscanf("%c",&a);float j;if(a=='+'){j=add(p,g);}else if(a=='-'){j=sub(p,g)}else if (a=='*'){j=mul(p,g)}else if (a=='/'){j=div(p,g)}printf("'%f",5);}P43习题一.选择1.B 2.D 3.D 4.A 5.C 6.B 7.B 8.B 9.A 10.D 二.填空1.函数首部和函数体2.void add; float add;3.1,1,14. 1,2,3;5. break; scanf(“%c”,&ch);6. x=4 y=9 z=57.first:14 ,4 ,12second:26 ,4 ,12third:26 ,3 ,68. a+b=99. 810. 125三.1.#include<stdio.h>#include<math.h>fun (int x,int y){int m;m=x-y;m=abs(m);return m;}2. void deb (int x){int i;for(i=2;i<=x;i++){if(x%i==0)break;}if(i>=x)printf("%d is su shu\n",x);}3. 略第二部分程序设计算法示例P676.(1)#include<stdio.h>main(){int b,m,l;for(b=1;b<20;b++){for(m=1;m<33;m++){l=100-m-b;if(5*b+3*m+l/3==100)printf("%d%d%d\n",b,m,l)}}}(2) #include<stdio.h> main(){int a,b,c,d;for(a=1;a<10;a++){for(b=1;b<20;b++){ for(c=1;c<50;c++){d=40-a-b-c;if(10*a+5*b+2*c+d==100) printf("%d,%d,%d,%d\n",a,b,c,d);}}}}P705.(1)#include<stdio.h>main(){int a,b,c;c=2;for(a=2;a<=3;a++){if(a==c)continue;b=6-a-c;if(b==c)continue;if(a==3)printf("a与z是对手\n");if(b==1)printf("b与x是对手\n");printf("c与y是对手\n");}}5.(2)#include<stdio.h>main (){int d=5;int a,b,c,e,f,g;for(a=1;a<=7;a++){if(a==d)continue;for(b=1;b<=7;b++){if(b==a||b==d)continue;for(c=1;c<=7;c++) {if(c==a||c==b||c==d)continue;for(e=1;e<=7;e++){if(e==a||e==b||e==c||e==d)continue;for(f=1;f<=7;f++){ if(f==e||f==d||f==c||f==b||f==a) continue;g=(23-a-b-c-e-f);if(g==f||g==e||g==d||g==c||g==b||g==a) continue;}}}}}printf("a=%d\nb=%d\nc=%d\nd=%d\ne=%d \nf=%d\ng=%d\n",a,b,c,d,e,f,g);}5.(3) 略P71习题一、1. B2. D3. C4.C,D二.1.2*x+4*y==90;2.14三.1.#include<stdio.h>main (){int a,b,c;for(a=1;a<=9;a++){for(b=0;b<=9;b++){for(c=0;c<=9;c++){if(a*a*a+b*b*b+c*c*c==100*a+10*b+c) printf("%d%d%d\n",a,b,c);}}}}2#include<stdio.h>main (){int bh,mh,lh;for(bh=1;bh<=40;bh++){for(mh=1;mh<=50;mh++){lh=100-bh-mh;if(3*bh+2*mh+lh/2) printf("bh=%d\nmh=%d\nlh=%d\n");}}}P755.#include<stdio.h>main (){float x1,x2;x1=1.5;x2=(x1+1/x1)/2;while(x1=x2){x1=x2;x2=(x1+1/x1)/2;}printf("%f",x2);}P765.(1)略5.(2)#include<stdio.h>main (){int day=1;int x1=0,x=0;float j;while(x1<100){x=day*2;day++;x1+=x;}j=x1*0.8/(day-=1);printf("%f",j);}P76习题一1.(1)B(2)D2. (1)C (2)A二1.(1)x1==0(2) x/0.5-22.sum%4==0三略P80.5、课堂实践#include <stdio.h>void main(){ long int f1,f2;int i;f1=1; f2=1;for(i=1;i<=20;i++){printf(“%4ld %4ld”,f1,f2); if(i%2==0) printf(“\n”);f1=f1+f2; f2=f2+f1;} }P81.5、课堂实践#include <stdio.h>#include <math.h>int s(int a,int b){ int g;if( b= =0)g=1;elseg=pow(a,b);return(g);}main(){ int x,y,m;Scanf(“%d,%d”,&x,&y);m=s(x,y);printf(“%d”,m);}P81.习题一、1、(1) age(n-1)+2 (2)age(n)2、计算Fibonacci数列第7项元素 k=13二、略P85.略P93.5、课堂实践(1) D (2) C (3) C (4)D(5)#include <stdio.h>main(){ int a[5],s[5];int i;for(i=0;i<5;i++)scanf(“%d”,&a[i]);for(i=0;i<5;i++){ s[i]=a[i]+5;printf(“%d”,s[i]);}}P96.5、课堂实践(1)#include <stdio.h>void main(){ inta[10]={265,301,751,129,937,863,742,694,7 6,438};int i,j,t;for(j=0;j<9;j++)for(i=0;i<9-j;i++)if(a[i]>a[i+1]){ t=a[i];a[i]=a[i+1];a[i+1]=t;}for(i=0;i<10;i++)printf(“%d ”,a[i]);}(2).补充直接插入排序原理。
《C语言程序设计》课后习题答案第四版
《C语言程序设计》课后习题答案第四版C语言程序设计课后习题答案第四版第一章基本概念和语法1.以下是一些基本概念和语法的习题答案:1.1 基本概念1.1.1 C语言是一种高级程序设计语言,最初由贝尔实验室的丹尼斯·里奇(Dennis Ritchie)于1972年开发。
1.1.2 C语言具有跨平台性,能够在多个操作系统上运行。
1.1.3 C语言程序是由函数构成的,每个程序都至少包含一个main函数。
1.2 数据类型和变量1.2.1 C语言中的基本数据类型包括整型(int)、浮点型(float)、字符型(char)和布尔型(bool)等。
1.2.2 变量是用来存储数据的内存位置,它们需要在使用前进行声明。
1.3 运算符和表达式1.3.1 运算符用来执行各种运算操作,例如加减乘除和逻辑运算等。
1.3.2 表达式由变量、常量和运算符组成,用来进行数据计算和逻辑判断。
1.4 控制语句1.4.1 if语句用于条件判断,根据条件的真假来选择执行不同的代码块。
1.4.2 for循环语句用于重复执行某段代码,可以设定循环次数或者循环条件。
1.4.3 switch语句用于多条件选择,根据不同的条件执行相应的代码块。
第二章数组和字符串2.以下是关于数组和字符串的习题答案:2.1 数组2.1.1 数组是一种用来存储多个相同类型数据的数据结构。
2.1.2 数组可以通过索引访问和修改其中的元素,索引从0开始。
2.1.3 数组的长度是固定的,声明时需指定数组的大小。
2.2 字符串2.2.1 字符串是由字符组成的数组,以空字符'\0'结尾。
2.2.2 字符串可以通过数组或者指针方式进行操作。
2.2.3 C语言提供了许多用于处理字符串的函数,例如strcpy、strcmp和strlen等。
第三章函数和指针3.以下是有关函数和指针的习题答案:3.1 函数3.1.1 函数是一段可重复调用的代码块,用于执行特定的任务。
清华大学出版社 C语言课程设计(第4版) 课后答案道
第一章概述1-1简述计算机程序设计语言的发展历程。
解:迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C语言是一种面向对象的编程语言,也属于高级语言。
1-2面向对象的编程语言有哪些特点?解:面向对象的编程语言与以往各种编程语言有根本的不同,它设计的出发点就是为了能更直接的描述客观世界中存在的事物以及它们之间的关系。
面向对象的编程语言将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征),形成类。
通过类的继承与多态可以很方便地实现代码重用,大大缩短了软件开发周期,并使得软件风格统一。
因此,面向对象的编程语言使程序能够比较直接地反问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。
C语言是目前应用最广的面向对象的编程语言。
1-3什么是结构化程序设计方法?这种方法有哪些优点和缺点?解:结构化程序设计的思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模块;各模块之间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。
结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。
虽然结构化程序设计方法具有很多的优点,但它仍是一种面向过程的程序设计方法,它把数据和处理数据的过程分离为相互独立的实体。
当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。
由于图形用户界面的应用,程序运行由顺序运行演变为事件驱动,使得软件使用起来越来越方便,但开发起来却越来越困难,对这种软件的功能很难用过程来描述和实现,使用面向过程的方法来开发和维护都将非常困难。
1-4什么是对象?什么是面向对象方法?这种方法有哪些特点?解:从一般意义上讲,对象是现实世界中一个实际存在的事物,它可以是有形的,也可以是无形的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4章习题解答一、选择题1.在C语言中,函数返回值的类型最终取决于A)函数定义时的函数首部所说明的函数类型B)return语句中表达式值的类型C)调用函数时主调函数所传递的实参类型D)函数定义时形参的类型解析:函数返回值类型最终取决于定义函数时所定义的函数类型。
答案:A2.设函数Fun()的定义形式为:void Fun(char ch, float x){}则以下对函数Fun()的调用语句中,正确的是。
A)Fun("abc", 3.0); B)t = Fun('D', 16.5);C)Fun('65', 2.8); D)Fun(32, 32);解析:选项A中"abc"是字符串,与形参不匹配:由于Fun函数的返回值类型为void,所以选项B中进行了赋值操作是不正确的;在选项C中,'65'是不合法的字符形式,单引号中应该是单个字符。
只有选项D才是合法的函数调用形式。
答案:D3.有以下程序:/* 文件路径名:ex4_1_3\main.c */#include <stdio.h> /* 标准输入/输出头文件*/int f1(int x, int y) { return x > y ? x : y; }int f2(int x, int y) { return x > y ? y : x; }int main(void) /* 主函数main() */{int a = 4, b = 3, c = 5, d = 2, e, f, g; /* 定义变量*/e = f2(f1(a, b), f1(c, d));f = f1(f2(a, b), f2(c, d));/* 调用函数*/g = a + b + c + d - e - f; /* 算术运算*/printf("%d,%d,%d\n", e, f, g); /* 输出e,f,g */return 0; /* 返回值0, 返回操作系统*/}程序运行后的输出结果是。
A)4,3,7 B)3,4,7 C)5,2,7 D)2,5,7解析:函数f1用于求两个数中的最大数,而函数f2用于求两个数中的最小数。
因此有:e=f2(f1(a,b),f1(c,d))=f2(f1(4,3),f1(5,2))= f2(4,5)=4;f=f1(f2(a,b),f2(c,d)) =f1(f2(4,3),f2(5,2)) =f1(3,2)=3;g=a+b+c+d-e-f=4+3+5+2-4-3=7。
答案:A4.若函数调用时的实参为变量,以下关于函数形参和实参的叙述中正确的是。
A)函数的实参和其对应的形参共占同一存储单元B)形参只是形式上的存在,不会占用具体存储单元C)同名的实参和形参占同一存储单元D)函数的形参和实参分别占用不同的存储单元解析:在C语言中,函数的形参和实参是分别占用不同的存储单元的,因此,选项D是正确的。
答案:D5.有以下程序:/* 文件路径名:e4_1_5\main.c */#include <stdio.h> /* 标准输入/输出头文件*/int a = 1; /* 全局变量*/int f(int c) /* 定义函数*/{static int a = 2; /* 静态变量*/c++; /* c自加1 */return (a++) + c; /* 返回函数值*/}int main(void) /* 主函数main() */{int i, k = 0; /* 定义变量*/for (i = 0; i < 2; i++){ int a = 3; k += f(a); } /* 循环调用f()函数*/k += a; /* 将全局变量a的值加到k */printf("%d\n", k); /* 输出k */return 0; /* 返回值0, 返回操作系统*/}程序的运行结果是。
A)14 B)15 C)16 D)17解析:题中“static int a=2”定义了一个static局部变量,编译程序为其生成永久存储单元,在调用函数f()时,值一直都保存着,在主函数中,for循环进行两次,第一次循环得f(3)=2+3+1=6,从而k+=f(3)=6,第二次循环由于static局部变量a变成了3,从而f(3)=3+3+1= 7,故k+=f(3)=13,最后执行k+=a时,此时a的值为全局变量,其值为1,所以k的值为14,选项A是正确的。
答案:A6.有以下程序:/* 文件路径名:e4_1_6\main.c */#include <stdio.h> /* 标准输入/输出头文件*/int a = 4; /* 全局变量*/int f(int n) /* 定义函数*/{int t = 0; /* 局部变量*/static int a = 5; /* 静态变量*/if (n % 2) {int a = 6; t += a++; }else { int a = 7; t += a++; }return t + a++; /* 返回函数值*/}int main(void) /* 主函数main() */{int s = a, i; /* 定义变量*/for (i = 0; i < 2; i++) s += f(i); /* 循环调用f()函数*/printf("%d\n", s); /* 输出s */return 0; /* 返回值0, 返回操作系统*/}程序运行后的输出结果是。
A)24 B)28 C)32 D)36解析:main()函数在开始时,s=a=4,其中的a为全局变量。
第1次循环时,i=0,f(i)=f(0),将0传递给形参n,首先执行if语句中的条件“n%2”;条件为假,则执行else下的复合语句“{ int a = 7; t += a++; }”,可知t=0+7=7,使用return 返回t=7+(a++)=7+5=12,a运算完后自增1,变为6,这里的a为函数f()内,复合语句之外的a,返回主函数后s=4+12=16。
第2次循环时,当i=1时,f(i)=f(1),将1传递给形参n,首先执行if语句中的条件“n%2”;条件为真,则执行if下的得合语句“{ int a = 6; t += a++; }”,可知t=0+6=6,使用return返回t=6+(a++)=6+6=12,这里的a为函数f()内,复合语句之外的a,返回主函数后s=16+12=28。
答案:B7.有以下程序:/* 文件路径名:e4_1_7\main.c */#include <stdio.h> /* 标准输入/输出头文件*/Fun(int x, int y){static int m = 0, i = 2; /* 静态变量*/i += m + 1; m = i + x + y; /* 对静态变量作赋值运算*/return m; /* 返回函数值*/}int main(void) /* 主函数main() */{int j = 1, m = 1, k; /* 定义变量*/k = Fun(j, m); /* 调用函数Fun() */printf("%d,", k); /* 输出k */k = Fun(j, m); /* 调用函数Fun() */printf("%d\n", k); /* 输出k */return 0; /* 返回值0, 返回操作系统*/}执行后的输出结果是。
A)5,5 B)5,11 C)11,11 D)11,5解析:在第1次调用Fun()函数时,x=1,y=1,函数Fun()的静态变量i=2+0+1=3,m=3+1+1=5,返回m=5。
在第2次调用Fun()函数时,x=1,y=1,函数Fun()的静态变量i=3+5+1=9,m=9+1+1=11,返回m=11。
答案:B8.在一个C源程序文件中所定义的全局变量,其作用域为。
A)所在文件的全部范围B)所在程序的全部范围C)所在函数的全部范围D)由具体定义位置和extern说明来决定范围解析:全局变量的作用域不但从具体定义位置开始,直到文件结束为止,而且还可用extern声明来扩大作用域围,所以此选项D正确。
答案:D9.在C语言中,函数的隐含存储类别是。
A)auto B)static C)extern D)无存储类别解析:C语言规定,函数的隐含存储类别为外部类型,即extern类型,允许其他文件中的函数调用。
答案:C10.有以下程序:/* 文件路径名:ex4_1_10\main.c */#include <stdio.h> /* 标准输入/输出头文件*/int Fun(int x){if (x == 0 || x == 1) return 3; /* 递归结束*/else return x - Fun(x - 2); /* 递归调用*/}int main(void) /* 主函数main() */{printf("%d\n", Fun(7)); /* 输了Fun(7) */return 0; /* 返回值0, 返回操作系统*/}执行后的输出结果是。
A)7 B)3 C)2 D)0解析:x=7,通过递归调用Fun()函数后得到Fun(7)= 7-Fun(5)= 7-(5-Fun(3)) =2+3-Fun(1)=2。
答案:C*11.下面选项中不属于面向对象程序设计特征的是。
A)继承性B)多态性C)类比性D)封装性解析:面向对象技术有三个重要特性:封装性、继承性和多态性;而类比性不属于面向对象的特征。
答案:C12.对于一个正常运行的C程序,以下叙述中正确的是。
A)程序的执行总是从main函数开始,在main函数结束B)程序的执行总是从程序的第一个函数开始,在main函数结束C)程序的执行总是从main函数开始,在程序的最后一个函数中结束D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束解析:C程序的执行总是从main函数开始,完成对其他函数的调用后返回到main函数,最后由main函数结束整个程序。
一个C源程序有且公有一个main函数。
答案:A二、填空题1.以下程序中,函数Fun()的功能是计算x2-2x+6,主函数中将调用Fun()函数计算:y1 = (x+8)2-2(x+8)+6y2=sin2(x)-2sin(x)+6请填空。
/* 文件路径名:e4_2_1\main.c */#include <stdio.h> /* 标准输入/输出头文件*/#include <math.h> /* 数学函数首部文件*/double Fun(double x) { return x*x - 2 * x + 6; }int main(void) /* 主函数main() */{double x, y1, y2; /* 定义变量*/printf("输入x:"); /* 输入提示*/scanf("%lf", &x); /* 输入x */y1 = Fun( 【1】); /* 调用函数Fun() */y2 = Fun( 【2】); /* 调用函数Fun() */printf("y1=%lf, y2=%lf\n", y1, y2); /* 输出y1,y2 */return 0; /* 返回值0, 返回操作系统*/}解析:函数的一般调用形式为:函数名(实在参数表),在调用时将实参的值赋给形参,实参可以是常量、变量或表达式。