C语言第三、四章作业题答案讲解
C语言教材第三章课后部分习题答案

C语言教材第三章课后部分习题答案( 第三版谭浩强)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’,并输出。
解:#include <stdio.h>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); }运行结果:密码是Glmre3.9求下面算术表达式的值。
(1)x+a%3*(int)(x+y)%2/4设x=2.5,a=7,y=4.7(2)(float)(a+b)/2+(int)x%(int)y设a=2,b=3,x=3.5,y=2.5(1)2.5(2)3.53.10写出程序运行的结果。
main(){int i,j,m,n;i=8;j=10;m=++i;n=j++;printf(“%d,%d,%d,%d”,i,j,m,n);}解:9,11,9,103.12写出下面表达式运算后a的值,设原来a=12。
第3章习题参考答案(c语言教材)

第3章课后习题参考答案一、选择题题号 1 2 3 4 5 6 7 8 9 10 答案 C B D A B A A C A A 题号11 12 13 14 15 16 17 18 19答案 A B D D B A B D C二、填空题1)12)20083)b4)2615)25 21 37三、编程题1.编写程序。
计算输出球的表面积S和体积V。
球半径r在程序运行时由键盘输入。
#include "stdio.h"#define PI 3.14159void main( ){float r, S, V;printf ("请输入圆的半径(r):") ;scanf("%f", &r ) ;S = 4 * PI * r * r ;V = ( 4.0/ 3.0) * PI * r * r * r ; //还可写成4/3.0或4.0/3; 但不能写成4/3,因为4/3值为1 printf ("r =%6.2f, S=%6.2f, V=%6.2f \n", r, S, V ) ;}2. 编写程序。
计算输出正方形外接圆的面积S。
正方形边长a在程序运行时由键盘输入。
#include "stdio.h"#include "math.h"#define PI 3.14159void main( ){float a, r, S;printf ("请输入正方形的边长(a):") ;scanf("%f", &a ) ;r = sqrt(2) * a / 2 ; //计算正方形外接圆的半径S = PI * r * r ; //计算正方形外接圆的面积printf ( "S=%6.2f \n", S ) ;}/*注:以上面积计算公式,也可使用:S=PI*a*a/2因为:S=PI*(sqrt(2)*a/2)* (sqrt(2)*a/2)=PI*a*a/2这样就不用调用求平方根函数sqrt()了。
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语言版)第三四章习题答案解析

第3章栈和队列习题1.选择题(1)若让元素1,2,3,4,5依次进栈,则出栈次序不可能出现在()种情况。
A.5,4,3,2,1 B.2,1,5,4,3 C.4,3,1,2,5 D.2,3,5,4,1(2)若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为()。
A.i B.n-i C.n-i+1 D.不确定(3)数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素个数的公式为()。
A.r-f B.(n+f-r)%n C.n+r-f D.(n+r-f)%n (4)链式栈结点为:(data,link),top指向栈顶.若想摘除栈顶结点,并将删除结点的值保存到x中,则应执行操作()。
A.x=top->data;top=top->link; B.top=top->link;x=top->link;C.x=top;top=top->link; D.x=top->link;(5)设有一个递归算法如下int fact(int n) { //n大于等于0if(n<=0) return 1;else return n*fact(n-1); } 则计算fact(n)需要调用该函数的次数为()。
A.n+1 B.n-1 C. nD. n+2(6)栈在()中有所应用。
A.递归调用 B.函数调用 C.表达式求值 D.前三个选项都有(7)为解决计算机主机与打印机间速度不匹配问题,通常设一个打印数据缓冲区。
主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。
该缓冲区的逻辑结构应该是()。
A.队列 B.栈 C.线性表 D.有序表(8)设栈S和队列Q的初始状态为空,元素e1、e2、e3、e4、e5和e6依次进入栈S,一个元素出栈后即进入Q,若6个元素出队的序列是e2、e4、e3、e6、e5和e1,则栈S的容量至少应该是()。
c语言《程序设计基础》课后习题参考答案与解析

《程序设计基础》习题参考答案与部分解析第1章 C 语言概述一、填空a) C源程序的基本单位是函数。
b) 一个C程序中至少应包括一个main函数。
c) 在C语言中,输出操作是有库函数printf( )函数完成。
二、单选题1、A2、C3、B解析:第1题答案:A 。
因为一个C程序总是从main函数开始执行的,而不论main函数在程序中的位置。
且到main函数结束。
第2题答案:C 。
因为main函数没有限制必须位于程序的最前面。
C程序书写自由,一行内可写几个语句。
在对一个C 程序进行编译的过程中,无法检查注释当中的拼写错误。
不过C语言本身并没有输入输出语句,输入输出是由函数完成的。
第3题答案:B。
因为一个C语言程序是由若干个函数组成的。
但至少包含一个main 函数,且main函数的位置不限。
三、编程题1、编写一个输出“Welcome to C!”信息的小程序。
解:程序如下#include “stdio.h”main( ){printf(“Welcome to C!”) ;}2、已知三角形的三边长分别为3,4,5,试用海轮公式编程求其面积。
海伦公式为:S△= ,其中s= (a+b+s)/2 ;解:程序如下#include “math.h”#include “stdio.h”main( ){int a , b , c ; /* a ,b,c 3个整型变量表示三角形的3条边。
*/float s ,s1 ; /* s1作为面积变量,s 作为中间变量是都应该是实形*/a=3 ; b= 4; c=5 ;s= (a+b+c)/2.0 ;s1= sqrt(s*(s-a)*(s-b)*(s-c)); /* sqrt函数完成开平方根功能。
*/printf(“area=%f\n”,s1);}第2章程序设计基础知识一、单选题1、C2、A3、C4、A5、C6、C7、D8、C9、D 10、A 11、D 12、A 13、C 14、C 15、B A16、B 17 D解析:1. 答案:C。
C语言课后习题参考答案

C语言课后习题参考答案第一章:基础知识问题1:C语言的发展历史及特点C语言是由贝尔实验室的肯·汤普逊和丹尼斯·里奇在20世纪70年代初开发的一种高级程序设计语言。
它以其简洁、高效和可移植性而闻名。
C语言被广泛应用于系统级编程、嵌入式系统和科学计算等领域,并成为其他编程语言的基础。
问题2:C语言的基本数据类型及其存储范围C语言的基本数据类型包括字符型(char)、整型(int)、浮点型(float)、双精度浮点型(double)和空类型(void)。
它们的存储范围如下:- char:-128 到 127 或 0 到 255- int:-32,768 到 32,767 或 0 到 65,535- float:3.4E-38 到 3.4E38- double:1.7E-308 到 1.7E308- void:无特定存储范围问题3:如何在C语言中输出语句?在C语言中,可以使用printf函数来输出语句。
它的基本语法为:```cprintf("要输出的内容");```问题4:定义变量的语法规则在C语言中,定义变量的语法规则如下:```c数据类型变量名;```例如,定义一个整型变量x:```cint x;```问题5:如何进行变量的赋值?变量的赋值可以使用赋值运算符(=)。
例如,将一个整型常量10赋值给变量x:```cx = 10;```第二章:控制结构问题1:if语句的语法结构if语句用于根据条件执行不同的代码块。
它的基本语法结构如下:```cif (条件) {// 条件为真时执行的代码}```问题2:switch语句的用法及语法结构switch语句用于根据不同的表达式值执行相应的代码块。
它的基本用法及语法结构如下:```cswitch (表达式) {case 值1:// 当表达式的值等于值1时执行的代码break;case 值2:// 当表达式的值等于值2时执行的代码break;default:// 当表达式的值与所有case都不匹配时执行的代码break;}```问题3:循环语句的分类及语法结构C语言中的循环语句包括for循环、while循环和do-while循环。
c语言程序设计第三章答案

c语言程序设计第三章答案第三章:运算符与表达式一、算术运算符在C语言中,算术运算符用于在表达式中执行各种数学运算。
常见的算术运算符有加法运算符(+)、减法运算符(-)、乘法运算符(*)和除法运算符(/)等。
1. 加法运算符(+)加法运算符用于将两个操作数相加,并返回它们的和。
例如,表达式a + b将返回a和b的和。
2. 减法运算符(-)减法运算符用于从第一个操作数中减去第二个操作数,并返回它们的差。
例如,表达式a - b将返回a和b的差。
3. 乘法运算符(*)乘法运算符用于将两个操作数相乘,并返回它们的积。
例如,表达式a * b将返回a和b的积。
4. 除法运算符(/)除法运算符用于将第一个操作数除以第二个操作数,并返回它们的商。
例如,表达式a / b将返回a除以b的商。
二、关系运算符关系运算符用于比较两个操作数并返回一个布尔值(真或假)。
常见的关系运算符有大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)和不等于(!=)等。
1. 大于运算符(>)大于运算符用于检查第一个操作数是否大于第二个操作数。
如果是,则返回真(1),否则返回假(0)。
例如,表达式a > b将返回真或假。
2. 小于运算符(<)小于运算符用于检查第一个操作数是否小于第二个操作数。
如果是,则返回真(1),否则返回假(0)。
例如,表达式a < b将返回真或假。
3. 大于等于运算符(>=)大于等于运算符用于检查第一个操作数是否大于或等于第二个操作数。
如果是,则返回真(1),否则返回假(0)。
例如,表达式a >= b 将返回真或假。
4. 小于等于运算符(<=)小于等于运算符用于检查第一个操作数是否小于或等于第二个操作数。
如果是,则返回真(1),否则返回假(0)。
例如,表达式a <= b 将返回真或假。
5. 等于运算符(==)等于运算符用于检查两个操作数是否相等。
c语言第3-4章练习题有答案

第3-4章练习题一、选择题1. 以下错误的字符串赋值或赋初值方式是:(A)char str1[]=”string”, str2[]=”12345678”;st r cpy(str2,str1);(B)char str[7]={‟s‟,‟t‟,‟r‟,‟i‟,‟n‟,‟g‟};(C)char str[10] ;str =”string”;(D)char *str; str=”string”;2. 数组定义中不正确的是:(A)int a[2][3]; (B)int b[][3]={0,1,2,3};(C)int c[100][100]={0}; (D)int d[3][]={{1,2},{1,2,3},{1,2,3,4}};3. 以下对一维数组a正确初始化的是:(A)int a[10]=(0,0,0,0,); (B)int a[10]={};(C)int a[10]={0}; (D)int a[10]=(10*2);4.以下选项中,不能正确赋值的是:(A)char s1[10];s1="Ctest"; (B)char s2[]={'C', 't', 'e', 's', 't'};(C)char s3[20]="Ctest"; (D)char *s4="Ctest\n"5.若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是:(A)i=*p; (B)*p=*&j; (C)i=&j; (D)i=**p;6. 下面各语句行中,不能正确进行字符串操作的语句行是:(A) char st[10]={"abcde"}; (B) char s[5]={'a','b','c','d','e'};(C) char *s; s="abcde"; (D) char *s; scanf("%s",s);7.设有如下的程序段,执行上面的程序段后,*(ptr+5)的值为:char str[ ]="Hello"; char *ptr; ptr=str;(A) 'o' (B) '\0' (C)不确定的值(D) 'o'的地址8. 请选出以下语句的输出结果printf("%d\n",strlen("\t\"\065\xff\n"));(A)5 (B)14 (C)8 (D)输出项不合法,无正常输出9.以下程序段给数组所有的元素输入数据,请选择正确答案填入。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
17.printf函数中用到格式符"%4s",其中数字4表示输出的字符串站用4列。如果字
符串长度大于4,则按原字符长从左向右全部输出;如果字符串长度小于4,则输出方
式为Co
A)从左起输出该字符串,右补空格
C)右对齐输出该字符,左补空格
18.以下C程序,正确的运行结果是 -
}
A)因输出格式不合法,输出出错信息
C)6,0,7,6
9•设有如下定义
int x=10,y=3,z;
则语句
B)6,0,6,102
D)6,0,5,7
prin tf("%d\n",z=(x%y,x/y));的输出结果是A。
A)3B)0
10.设有如下定义
int x=10,y=5,z;
则语句
C)4D)1
prin tf("%d\n",z=(x+=y,x/y));
B)按原字符长从左向右全部输出
D)输出错误信息
C—o
main()
{
long y=-34567; prin tf("y=%-8ld\n",y);
prin tf("y=%-08ld\n",y);
prin tf("y=%08ld\n",y);
prin tf("y=%+8ld\n",y); }
B)y=-34567
C)seanf("%d %f",&a,&x);
prin tf("\na+x=%6.1f',a+x);
D)seanf("%d %3.1f",&a,&x); prin tf("\na+x=%4.2f',a+x);
5.以下程序的输出结果是T一。
main()
{
int i=010,j=10,k=0x10;
prin tf("%d,%d,%d\n",i,j,k);
12.C语言中的空语句就是一个分号空操作。
13.复合语句是由一对一括起来的若干语句组成。
14.分析下面程序:
#in clude<stdio.h>
mai n()
{
int x=2,y,z;
x*=3+2;pri ntf("%d\n",x);协
x*=y=z=4;pri ntf("%d\n",x);
_40
x=y=z;pri ntf("%d\n",x);
#in clude<stdio.h> mai n() {char a; a='A'; prin tf("%d%c",a,a);
}
17.分析下面程序
mai n { int x=2,y,z; x*=3+2;pri ntf("%d\n",x); x*=y=z=4;pri ntf("%d\n",x); x=y=1;
B)scanf("%dy%d",&x,&y);a=getchar();b=getchar();c=getchar();
C)scanf("%d%d%c%c%c%c%c%c",&x,&y,&a,&a,&b,&b,&c,&c);
D)scanf("%d%d%c%c%c",&x,&y,&a,&b,&c);
16.若已知a=10,b=20,则表达式!a<b的值为一。
A)不予输出B)输出空格
C)照样输出D)输出不定值或0
2•在sea nf函数的格式控制中,格式说明的类型与输入的类型应该一一对应匹配。 如果类型不匹配,系统B。
A)不予பைடு நூலகம்收
B) 并不给出出错信息,但不可能得出正确信息数据
C)能接受正确输入
D)给出出错信息,不予接收输入
3•下列说法正确的是D—。
A) 输入项可以是一个实型常量,如seanf("%f",4.8);
void main(void)
{a=50.0;b=20.0;
prin tf("jia=%f\n",a+b);
prin tf("jia n=%f\n"a-b);
prin tf("che ng=%f\n",a*b);
prin tf("chu=%f\n",a/b);
}
将缺少的部分填在空白处。
16.下列程序的输出结果是65A
}
程序的输出结果是。
19.以下程序的输出结果为:.
mai n()
{ float a=3.14, b=3.14159;
10
40
2,0
3,0
3.140000,3.142。(03试题)
printf(“%5,.3f\n”,a,b); }
20.以下程序的输出结果为:—a回车。(04~05第二学期试题)
#include<stdio.h>
_4
x=(y=z);pri ntf("%d\n",x);}
程序的输出结果为。«
15.编制程序对实数a与b进行加,减,乘,除计算,要求显示如下结果。
jia=70.000000
jia n=30.000000
che ng=1000.000000
chu=2.5000000
程序:
#in clude<stdio.h>
D)scanf(“%4.3%3.2f”a1,a2);
22.以下程序的输出结果是:A。(往届试题)
main()
{ int1=012,j=12, k=0x12;
printf(“%d,%d,%\d”,lj”k);
A)10, 12, 18B)12,12, 12
C)10, 12, 12D)12,12, 18
23.以下程序的输出结果是:(注:■表示空格)D。(往届试题)
D)(x<=-10)||(x>=-5)&&(x<=0)||( x>=100)
}
A)2,03,0B)2,13,0C)2,02,1D)2,10,1
14.写出下面程序的输出结果C
main ()
{
int i,j;
i=20;j=(++i)+i;pri ntf("%d",j);
i=13;pri ntf("%d %d),i++,i);
}
A)42 14,13B)41 14,14C)42 13 13D)42 13 14
A)32B)42 C)22D)23 21.
根据定义和数据的输入方式,输入语句的正确形式为:A。(往届试题)
已有定义:float a1, a2;
数据的输入方式:4.523
3.52
A)scanf(“%f"&a1,&a2);
B)scanf(“%f%f", a1, a2);
C)scanf(“%4.3f%3.2f”&a1,&a2);
15.若有定义:int x,y;char a,b,c;并有以下输入数据(此处,<cr>代表换行符)
12<cr>
A B C<cr>
则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的正 确程序段是Co
A)scanf("x=%dy=%d",&x,&y);a=getchar();b=getchar();c=getchar();
z=x++-1;pri ntf("%d,%d\n",x,z); z+=-x++ +(++y);pri ntf("%d,%d",x,z); }
程序的输出结果是。
18.分析下面程序
mai n()
{
int x,y; x=16,y=(x++)+x; pri ntf("%d\n",y); x=15;pri ntf("%d,%d\n",++x,x); x=20,y=x-- +x;pri ntf("%d\n",y); x=13;pri ntf("%d,%d",x++,x);
B) 只有格式控制,没有输入项也能进行正确输入,如scanf("a=%d,b=%d");
C)当输入一个实型数据时,格式控制部分应规定小数点后的位数,如
scanf("%5.3f",&f);
D)当输入数据时,必须指明变量的地址,如scanf("%f",&f);
4•根据题目中已给出的数据的输入和输出形式,程序中输入/输出语句的正确是 一B
main ()
{pri ntf("%d\n",NULL);}
A)不确定的值(因变量无定义)B)0
C)-1D)1
8.以下程序的输出结果是—B一。
main()
{
D)10,10,16
D)11,11,16
mai n()
charc1='6',c2='O:
prin tf("%c,%c,%d,%d\n",c1,c2,c1-c2,c1+c2);
的输出结果是Do