C语言程序设计教程 课后习题参考答案



《C语言程序设计教程 课后习题参考答案》由会员分享,可在线阅读,更多相关《C语言程序设计教程 课后习题参考答案(38页珍藏版)》请在装配图网上搜索。
1、《C语言程序设计教程》 课后习题参考答案 习题1 1. (1)编译、链接 .exe (2)函数 主函数(或main函数) (3)编辑 编译 链接 2. (1)-(5):DDBBC (6)-(10):ABBBC 3. (1)答:C语言简洁、紧凑,使用方便、灵活;C语言是高级语言,同时具备了低级语言的特征;C语言是结构化程序设计语言,具有结构化的程序控制语句;C语言有各种各样的数据类型;C语言可移植性好;生成目标代码质量高,程序执行效率高。 (2)编辑、编译、链接、执行 (3)一个C程序由一或多个函数组成,一函数若干条语句构成,每条语句的末
2、尾必须以分号结束。
(4)标识符,关键字,运算符,分隔符,常量,注释符等
4. 从键盘输入一个双精度小数,打印出它的余弦值。
#include
3、 0 1 0 1 1 0
(5)-9 9 8
(6)1)20 2)8 3)70 4)0 5)0 6)0
4.
(1)
#include
4、
#include
5、 double result = (-2 * a + ( 4*a – b )/( 2*a + b ) )/( (a - 4*b)/(a + b) ); printf(“%lf\n”, result); } 习题3 1. (1)D(2)AD(3)C(4)B(5)A (6)-(10):BDACB 2. (1)3.141593,3.1416,3.142 (2)c=K (3)| 123.46|,|123 | (4)x= 1.23,y= 50.00 (5)0 3. (1)scanf(%f”, c); 改为:scanf(“%f”, &c);
6、 f = (9/5)*c+32; 改为:f = (9.0/5)*c + 32; printf(“摄氏温度%f度相当于华氏温度%f度”, &c, &f); 改为: printf(“摄氏温度%f度相当于华氏温度%f度”, c, f); (2) 补充定义:int h; h = 500/60 改为: h = 500 / 60; m = 500% 60 改为: m = 500%60; printf(“500分钟是%d小时%d分钟,”&h, &m); 改为: printf(“500分钟是%d小时%d分钟” , h, m); 4. (1) #in
7、clude
8、 tmp;
printf(“After swap: x=%c, y=%c\n”, x, y);
}
(3)
#include 9、 10、= z; z = t; }
printf(“%d %d %d\n”, x, y ,z);
}
(2)
#include 11、等\n”);
else if( score >= 60 )
printf(“及格\n”);
else
printf(“不及格\n”);
}
(3)
#include 12、数
printf(“%d\n”, g); //各位上的数值
}
else if ( n < 100 ) //两位数
{
printf(“%d\n”, 2);//位数
printf(“%d %d\n”, g,s);
}
else if ( n < 1000 ) //三位数
{
printf(“%d\n”, 3);//位数
printf(“%d %d %d\n”, g, s, b);
}
else if ( n < 10000 ) //四位数
{
printf(“%d\n”, 4);//位数
printf(“%d %d 13、%d %d\n”, g, s, b, q);
}
}
(4)
#include 14、printf(“能被5和7整除\n”);
else if( n%3==0 || n%5==0 || n%7==0 )
{
if( n%3==0 )
printf(“能被3整除\n”);
else if( n%5==0 )
printf(“能被5整除\n”);
else
printf(“能被7整除\n”);
}
else
printf(“不能被3、5、7中任一个数整除\n”);
}
(5)
#include 15、桑塔纳
double xiali = 2.1; //每公里价格
double fukang = 2.4;
double sangtana = 2.7;
double distance; //距离
double totalMoney;//总的收费
printf("请输入您乘坐的车型:1代表夏利;2代表富康;3代表桑塔纳:");
scanf("%d", &carType);
printf("请输入您乘车的总路程:");
scanf("%lf", &distance);
if( carType == 1)//夏利
{
if( distance < 3 16、 )
totalMoney = 7.0;
else
totalMoney = 7 + xiali * (distance – 3);
}
else if( carType == 2 ) //富康
{
if( distance < 3 )
totalMoney = 8.0;
else
totalMoney = 8 + fukang * (distance – 3);
}
else if( carType == 3 ) //富康
{
if( distance < 3 )
totalMoney = 9.0;
17、 else
totalMoney = 9 + sangtana * (distance – 3);
}
printf("(四舍五入)您的车费为:%.0lf\n", totalMoney );
}
(6)
#include 18、= c || c==a )
printf(“等腰三角形\n”);
else
printf(“一般三角形\n”);
}
else
printf(“不能构成三角形\n”);
}
第5章
1. (1)C(2)C(3)K=36(4)C(5)B
2.
(1) 3次
(2) x>=1 && x<=10 || x>=200&&x<210
(3) e == 0
(4) 6次
(5) 10
3.
(1) 20,10
(2) 16,0
(3) 7BAB4BAB1BC
(4) ABABABC
(5) ******
***** 19、*
******
******
4.
(1) a != b
(2) n / 10
(3) scanf(“%d”, &a);
5. (3) 行 int fac = 1, sum = 0;
6.
(1)
#include 20、alpha++;
else if( ch>=’0’ && ch<=’9’)
digit++;
else if( ‘ ‘ == ch )
space++;
else
other++;
}
printf(“%d %d %d %d\n”, alpha, digit, space, other );
}
(2)
#include 21、20*m20+10*m10 == 100 )
printf(“%d, %d\n”, m20, m10 );
}
}
(3)
#include 22、
main( )
{
int row, spaceCount,starCount;
int n;
scanf("%d", &n);
for( row = 1; row <= n; ++row)
{
for( spaceCount = 1; spaceCount <= n - row ; ++ spaceCount)
printf(" "); //打印出某行上星号前的空格
for( starCount = 1; starCount <= 2* row - 1; ++starCount )
printf("*"); //打印出某行上 23、的所有星号
printf("\n"); //换行
}
//打印下半部分
for(row=1; row 24、5)
#include 25、
printf("%d%d%d%d\n", q,b,s,g);
}
第6章
1.
(1)无返回值
(2)double 2
(3)无限循环(死循环)
(4)result = 720
2.
(1)
#include 26、 for(col=1; col<=row; col++)
printf("#");
printf("\n");
}
}
(2)
#include 27、("@");
printf("\n");
}
}
(3)
#include 28、, &nowm, &nowd);
age= yearOld(by,bm,bd,nowy,nowm,nowd);
printf("age=%d\n", age);
}
int yearOld(int byear, int bmonth, int bday, int nyear, int nmonth, int nday)
{
int age;
age = nyear - byear;
if( nmonth 29、;
}
(4)
#include 30、int n;
scanf("%d", &n);
printf("%.0lf\n", sumfac( n ) );
}
double sumfac( int n )
{
double f=1.0, s = 0.0;
int i;
for(i=1;i<=n; i++)
{
f *= i;
s += f;
}
return f;
}
(6)
#include 31、intf("%d\n", gcd(m ,n) );
}
int gcd(int m, int n)
{
int t,r;
if( m < n )
{ t = m; m= n; n = t; }
r = m % n;
while( r )
{
m = n;
n = r;
r = m % n;
}
return n;
}
(7)
#include 32、"%d%d", &m, &n);
printf("%d\n", lcm(m ,n) );
}
int gcd(int m, int n)
{
int t,r;
if( m < n )
{ t = m; m= n; n = t; }
r = m % n;
while( r )
{
m = n;
n = r;
r = m % n;
}
return n;
}
int lcm(int m, int n)
{
return m*n/gcd(m,n);
}
(8)
#include 33、e mypower(double x, int y);
main( )
{
double x;
int y;
scanf("%lf%d", &x, &y);
printf("%lf\n", mypower(x,y) );
}
double mypower(double x, int y)
{
int i;
double f=1.0;
for(i=1; i<=y; i++)
f *= x;
return f;
}
第7章
1.
(1)6 (2)5 (3)不能
(4)int a[3][2]={{1,2}, {3,4}, 34、 {5,6} };
(5)6 9
(6)abc G
2.
(1)
#include 35、的元素为:\n”);
for( i=0; i<10; i++)
printf(“%5d”, array[i]);
printf(“\n”);
return 0;
}
void reverse( int a[ ], int n )
{
int i;
int tmp;
for( i=0; i 36、lude 37、}
(3)
#include 38、s2[ ])
{
int i, j=0;
for(i=0; i 39、ar str2[ ] )
{
int i=0,j=0;
while( str1[i] != '\0' )
{
if( str1[i]>='a'&&str1[i]<='z' )
{
str2[j] = str1[i];
j++;
}
i++;
}
str2[j] = '\0';
return j;
}
(5)
#include 40、 = getchar( );
deleteAll( s, ch );
puts( s );
}
void deleteAll( char str[ ], char ch)
{
int i, j;
i = 0;
j = 0;
while( str[i] )
{
if( str[i] != ch )
{
str[j++] = str[i];
}
i++;
}
str[j] = '\0';
}
(6)
#include 41、1, char ch2);
main( )
{
char s[100], c1, c2;
gets( s );
c1 = getchar( );
c2 = getchar( );
replaceAll( s, c1, c2 );
puts( s );
}
void replaceAll(char str[ ], int ch1, char ch2)
{
int i;
i = 0;
while( str[i] )
{
if( str[i] == ch1 )
str[i] = ch2;
i++;
}
}
(7)
# 42、include 43、个元素下标,使cc指向最后一个元素
for( ; cc>=0; cc-- ) //输出转换后的二进制数
printf(“%d”, array[cc]);
printf(“\n”);
return 0;
}
int transformToBin( int dnum, int bin[ ] )
{
int count = 0;
while ( dnum ) //当dnum还未转换完毕
{
bin[count++] = dnum % 2; //余数保留到数组对应元素中
dnum /= 2; //数本身除2
44、
}
return count;
}
(8)
#include 45、回退一个元素下标,使cc指向最后一个元素
for( ; cc>=0; cc-- ) //输出转换后的进制数
printf("%c", array[cc]);
printf("\n");
return 0;
}
int transformToHex( int dnum, char hex[ ] )
{
int count = 0;
int t;
while ( dnum ) //当dnum还未转换完毕
{
t = dnum % 16;
if( t < 10 )
hex[count] = t+'0'; //余数保留到 46、数组对应元素中
else
hex[count] = t-10+'A';
count++;
dnum /= 16; //数本身除16
}
return count;
}
(9)
#include 47、ol);
void getMaxEveryRow(int a[][N], int row, int col, int y[]);
main( )
{
int arr[M][N], y[M]={0};
int i;
generate(arr, M, N);
display(arr, M, N);
getMaxEveryRow(arr,M,N,y);
//输出最大值
for(i=0; i 48、int col )
{
int i,j;
srand( time(NULL) );
for(i=0; i 49、nt a[][N], int row, int col,int y[])
{
int i,j;
for(i=0; i 50、 ][N], int row, int col );
void display( int a[][N], int row, int col);
void getMinEveryCol(int a[][N], int row, int col);
main( )
{
int arr[M][N];
int i;
generate(arr, M, N);
display(arr, M, N);
getMinEveryCol(arr,M,N);
//输出最小值
for(i=0; i 51、ntf("\n");
}
void generate( int a[ ][N], int row, int col )
{
int i,j;
srand( time(NULL) );
for(i=1; i 52、[j]);
printf("\n");
}
}
void getMinEveryCol(int a[][N], int row, int col)
{
int i,j;
for(i=0; i 53、(5)return (6)递归
(7)求 1!+2!+3!+4!+5!
(8)注意全局变量和局部变量的区别
2.
(1)
#include 54、 sqrt( x*x+y*y );
}
(2)
#include 55、ong s;
if( hour < 6 )
{
s = second+minute*60+hour*60*60;
}
else
{
s = 60-second+(60-minute-1)*60+(12-hour-1)*60*60;
}
return s;
}
(3)
#include 56、
}
int fun( int n )
{
int i;
for(i=2; i 57、if( count % 10 == 0 )
printf("\n");
}
printf("\n");
}
int fun( int n )
{
int i;
for(i=2; i 58、nc(n) );
}
int func( int n )
{
if ( 1 == n )
return 3;
return 2*func(n-1)-1;
}
(6)
#include 59、
return m;
return gcd(n, m%n);
}
第9章
1.
(1)xyzNKT
(2)bcdefgh
(3)4,4
(4)qponmzyx
(5)abcCD
(6)0
2.
(1)
#include 60、f("%d ", a[i]);
printf("\n");
}
void reverse( int *p, int n)
{
int *q;
int t;
q = p + n - 1;
while( p < q )
{
t = *p;
*p = *q;
*q = t;
p++;
q--;
}
}
(2)
#include 61、
reverseStr(s);
puts(s);
}
void reverseStr( char *str )
{
char *pEnd,t;
pEnd = str + strlen(str) - 1;
while( str < pEnd )
{
t = *str;
*str = *pEnd;
*pEnd = t;
str++;
pEnd--;
}
}
(3)
#include 62、1,2,3,4,5,6,7,8,9, 10};
int b[10], count,i;
count=copyTo(a,10,b);
for(i=0; i 63、++ = *ps1;
}
}
return ps2 - s2;
}
(4)
#include 64、
{
*str2++=*str1;
}
str1++;
}
*str2 = '\0';
}
(5)
#include 65、
if( *str != ch )
*p++ = *str;
str++;
}
*p = '\0';
}
(6)
#include 66、 c2 = getchar( );
replaceAll(s,c1, c2);
puts(s);
}
void replaceAll( char *str, char ch1, char ch2)
{
while( *str )
{
if( *str == ch1 )
{
*str = ch2;
}
str++;
}
}
(7)
#include
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。