C语言C语言 谭浩强版(第三版) 课后答案
- 格式:pdf
- 大小:13.12 KB
- 文档页数:5
C语言程序设计第三版谭浩强课后习题答案完整版在C语言程序设计学习过程中,谭浩强的《C语言程序设计第三版》是一本经典教材,对于提高学生的编程能力和理解C语言的应用具有重要的作用。
然而,学习过程中遇到的习题往往让学生感到困惑,因此,本文将为大家提供C语言程序设计第三版谭浩强课后习题的完整答案,帮助大家更好地理解和掌握C语言的编程技巧。
第一章习题1-1:```c#include <stdio.h>int main(){printf("Hello, World!\n");return 0;}```习题1-2:```c#include <stdio.h>int main(){printf("天\n地\n人\n"); return 0;}```习题1-3:```c#include <stdio.h>int main(){printf(" *\n");printf(" * *\n");printf(" * *\n");printf(" * *\n");printf(" * *\n");printf("***\n");return 0;}```习题1-4:```c#include <stdio.h>int main(){int height, width, area;height = 8;width = 10;area = height * width;printf("长方形的面积为:%d\n", area); return 0;}```第二章习题2-1:```c#include <stdio.h>int main(){int radius;float pi = 3.14159;printf("请输入半径:");scanf("%d", &radius);float area = pi * radius * radius;printf("圆的面积为:%f\n", area); return 0;}```习题2-2:```c#include <stdio.h>int main(){int length, width, area;printf("请输入长方形的长度:"); scanf("%d", &length);printf("请输入长方形的宽度:");scanf("%d", &width);area = length * width;printf("长方形的面积为:%d\n", area);return 0;}```习题2-3:```c#include <stdio.h>int main(){int num1, num2, num3, sum;printf("请输入三个整数,用空格隔开:"); scanf("%d %d %d", &num1, &num2, &num3); sum = num1 + num2 + num3;printf("三个整数的和为:%d\n", sum);return 0;}习题2-4:```c#include <stdio.h>int main(){int high, price;printf("请输入身高(厘米):"); scanf("%d", &high);price = (high - 100) * 0.9;printf("标准体重为:%d\n", price); return 0;}```第三章习题3-1:```c#include <stdio.h>int main()int i, j;for (i = 1; i <= 9; i++){for (j = 1; j <= i; j++){printf("%d*%d=%2d ", j, i, i * j); }printf("\n");}return 0;}```习题3-2:```c#include <stdio.h>int main(){int n, sum = 0, i;printf("请输入一个整数:");scanf("%d", &n);for (i = 1; i <= n; i++){sum += i;}printf("1到%d的和为:%d\n", n, sum); return 0;}```习题3-3:```c#include <stdio.h>int main(){int n, i;printf("请输入一个整数:");scanf("%d", &n);for (i = 2; i < n; i++){if (n % i == 0){break;}}if (i == n){printf("%d是素数。
1.5#include <stdio.h>void main(){printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");printf(" Very good! \n");printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");}1.6#include <stdio.h>void main(){float max(float x,float y,float z);float a,b,c;printf("请分别输入a,b,c:\n");scanf("%f,%f,%f",&a,&b,&c);printf("max=%f",max(a,b,c));}float max(float x,float y,float z){float m,n;m=x>y? x: y;n=m>z? m: z;return(n);}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);}3.9.1#include <stdio.h>void main(){double x=2.5,y=4.7,z;int a=7;z=x+a%3*(int)(x+y)%2/4;printf("该表达式的值为:%f",z);}3.9.2#include <stdio.h>void main(){int a=2,b=3;float x=3.5,y=2.5,z;z=(float)(a+b)/2+(int)x%(int)y;printf("该表达式的值为:%f",z);}4.5#include <stdio.h>void main(){int a=5,b=7;double 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",n,n,n);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");}4.6#include <stdio.h>void main(){int a,b;float x,y;char c1,c2;scanf("a=%d b=%d",&a,&b); scanf(" %f %e",&x,&y); scanf(" %c %c",&c1,&c2);}4.7#include<stdio.h>void main(){int a,b;float x,y,z;char c1,c2;scanf("%5d%5d",&a,&b); scanf("%f%f%*f%f",&x,&y,&z); scanf("%c%c",&c1,&c2);}4.8#include <stdio.h>#define pi 3.14void main(){float r,h,l,s1,s2,v1,v2;printf("请输入r,h的值:\n"); scanf("%f,%f",&r,&h);l=2*pi*r;s1=pi*r*r;s2=4*s1;v1=4/3*pi*r*r*r;v2=s1*h;printf("圆周长为:%.2f\n",l); printf("圆面积为:%.2f\n",s1); printf("圆球表面积为:%.2f\n",s2); printf("圆球体积为:%.2f\n",v1); printf("圆柱体积为:%.2f\n",v2); }5.5 #include <stdio.h>void main(){float x,y;printf("请输入x的值:\n");scanf("%f",&x);if(x<1)y=x;elseif(x>=1&&x<10)y=2*x-1;elsey=3*x-11;printf("x与y的值分别为:\n%f,%f",x,y); printf("\n");}5.6 #include <stdio.h>void main(){float b;int a;printf("请输入该同学的成绩:\n");scanf("%f",&b);while (b<0||b>100){printf("输入有误,请重新输入:\n");scanf("%f",&b);}a= int(b/10);if(a<6) a=5;switch(a){case 10:case 9: printf("该同学为等级:A");break;case 8: printf("该同学为等级:B");break;case 7: printf("该同学为等级:C");break;case 6: printf("该同学为等级:D");break;case 5: printf("该同学为等级:E");break;}}#include <stdio.h>#include <math.h>void main(){int x,y,m,n,i=1,j=0;printf("请给出一个不多于5位的正整数:\n");scanf("%d",&x);while(x<=0||x>=100000){ printf("输入有误\n请给出一个不多于5位的正整数:\n");scanf("%d",&x);}for(n=0;n<5;n++){y=int(x/pow(10,n));if(y>0&&y<10)m=n+1;}printf("它是%d位数\n",m);printf("从高到低位依次为\n");do{printf(" %d",int(x/pow(10,m-i))%10);i++;}while(m-i>=0);printf("\n逆序输出为\n");do{printf(" %d",int(x/pow(10,j))%10);j++;}while(j-m<0);printf("\n");}6.1输入两个正整数m和n,求其最大公约数和最小公倍数。
谭浩强c语言第三版课后习题答案谭浩强教授的《C程序设计》第三版是一本广受欢迎的C语言教材,其课后习题也是很多学习者检验学习成果的重要方式。
以下是部分课后习题的答案,供参考:第一章:C语言概述1. C语言的特点是什么?- C语言具有高级语言的特点,同时具有低级语言的许多功能。
- C语言具有丰富的运算符和数据类型。
- C语言具有结构化编程的特点。
- C语言具有很好的移植性。
2. C语言的主要应用领域有哪些?- 系统软件开发。
- 嵌入式系统开发。
- 应用软件的开发。
第二章:数据类型及其运算1. C语言中的基本数据类型有哪些?- 整型(int)- 浮点型(float, double)- 字符型(char)2. 什么是算术运算符?- 加(+)、减(-)、乘(*)、除(/)、模(%)第三章:简单的输入输出1. C语言中标准输入输出函数有哪些?- `printf()` 用于格式化输出。
- `scanf()` 用于格式化输入。
2. 如何使用`printf()`函数进行输出?- 使用`printf()`函数时,需要在括号内提供格式字符串,格式字符串中可以包含转义序列和格式说明符。
第四章:分支结构1. C语言中的条件语句有哪些?- `if`语句- `if...else`语句- `switch`语句2. 如何使用`if`语句实现分支?- 使用`if`语句时,首先需要一个条件表达式,如果条件为真,则执行`if`语句块内的代码。
第五章:循环控制1. C语言中的循环语句有哪些?- `for`循环- `while`循环- `do...while`循环2. 如何使用`for`循环?- `for`循环需要三个部分:初始化表达式、条件表达式和迭代表达式。
第六章:数组1. 数组的基本概念是什么?- 数组是一种数据结构,可以存储固定大小的同类型元素集合。
2. 如何声明一个数组?- 使用数组类型和数组名来声明,例如:`int arr[10];`第七章:指针1. 什么是指针?- 指针是一种变量,它存储了另一个变量的内存地址。
c语言程序设计第三版谭浩强课后习题及答案C语言程序设计是一门基础而重要的编程课程,谭浩强教授的《C语言程序设计》第三版是许多高校计算机专业学生的必修教材。
课后习题是检验学生对课程内容掌握程度的重要手段,以下是部分习题及答案的示例。
# 第一章:C语言概述习题1:简述C语言的特点。
答案: C语言是一种结构化编程语言,具有以下特点:1. 简洁、紧凑、贴近硬件。
2. 丰富的运算符和数据类型。
3. 具有结构化控制语句。
4. 支持模块化程序设计。
5. 可移植性好。
习题2:为什么说C语言具有“高级语言”的特点?答案: C语言被称为高级语言,因为它:1. 抽象了机器语言的复杂性。
2. 允许使用变量名代替内存地址。
3. 提供了丰富的控制结构和数据类型。
4. 支持高级的编程概念,如函数、数组和指针。
# 第二章:数据类型、运算符和表达式习题3:写出C语言中的基本数据类型。
答案: C语言中的基本数据类型包括:- 整型:`int`- 浮点型:`float` 和 `double`- 字符型:`char`习题4:解释赋值运算符的右结合性。
答案:赋值运算符的右结合性意味着当多个赋值运算符出现在同一个表达式中时,它们将从右向左进行计算。
例如,在表达式 `a = b = c;` 中,首先计算 `b = c`,然后将结果赋值给 `a`。
# 第三章:控制语句习题5:描述if语句的基本用法。
答案: if语句用于基于条件执行代码块。
基本语法如下:```cif (条件) {// 条件为真时执行的代码} else {// 条件为假时执行的代码}```其中条件是一个表达式,如果其值为真(非零),则执行if块中的代码;如果为假(零),则执行else块中的代码。
习题6:举例说明for循环的使用。
答案: for循环用于重复执行一段代码,直到给定条件不再满足。
基本语法如下:```cfor (初始化表达式;条件表达式;更新表达式) {// 循环体}```例如,打印0到9的数字:```cfor (int i = 0; i < 10; i++) {printf("%d ", i);}```以上是部分习题及答案的示例。
C语言程序设计第三版谭浩强课后习题答案完整版第一章请参照本章例题,编写一个C程序,输出以下信息:**************************Very Good!**************************解:mian(){printf( “**************************”);printf( “n”);printf( “Very Good!n”);printf( “n”);printf( “**************************”);}编写一个程序,输入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)max=b;if(max<c)max=c;printf(“最大数为:“ %d” ,max);}第三章写出以下程序运行的结果。
main(){charc1=’a’,c2= ’b’,c3= ’c’,c4= ’101’,c5= ’116’;printf( “a%cb%c n”,c1,c2,c3);printf( “b%c %c”,c4,c5);}解:aa ㄩ bb ㄩㄩㄩ cc ㄩㄩㄩㄩㄩㄩabcAㄩ N要将 "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语言设计课后习题答案(谭浩强第三版)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,104.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.1239626.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语言。
课后答案对于学习者来说是一个重要的参考资源,可以帮助他们检验自己的学习成果和理解程度。
以下是一些C程序设计第三版谭浩强课后答案的示例,这些答案涵盖了书中的部分习题,以供读者参考:1. 习题1.3:编写一个C程序,输入两个整数,输出它们的和。
答案:```c#include <stdio.h>int main() {int a, b, sum;printf("请输入两个整数:");scanf("%d %d", &a, &b);sum = a + b;printf("它们的和是:%d\n", sum);return 0;}```2. 习题2.4:使用if语句判断一个数是正数、负数还是零。
答案:```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (num > 0) {printf("这是一个正数。
\n");} else if (num < 0) {printf("这是一个负数。
\n");} else {printf("这是一个零。
\n");}return 0;}```3. 习题3.5:编写一个程序,计算并输出1到100的累加和。
答案:```c#include <stdio.h>int main() {int i, sum = 0;for (i = 1; i <= 100; i++) {sum += i;}printf("1到100的累加和是:%d\n", sum);return 0;}```4. 习题4.7:使用switch语句实现一个简单的计算器程序。
C语⾔程序设计第三版谭浩强课后习题答案完整版C语⾔程序设计第三版谭浩强课后习题答案完整版第⼀章1.5请参照本章例题,编写⼀个C程序,输出以下信息:**************************值,输出其中最⼤值。
解:mian(){int a,b,c,max;printf(“请输⼊三个数a,b,c:\n”);scanf(“%d,%d,%d”,&a,&b,&c);max=a;if(maxmax=b;if(maxmax=c;\1aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabc Aㄩ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\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.5设量。
(1)a+=a (2) a-=2 (3) a*=2+3 (4)a/=a+a(5) a%=(n%=2),n的值等于5(6)a+=a-=a*=a解:(1) 24 (2) 10 (3) 60 (4) 0 (5) 0 (6) 0第四章4.4若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a ’,c2=c1=c2=printf("a=%2d b=%2dc=%2d\n",a,b,c);printf("x=%f,y=%f,z=%f\n",x,y,z); printf("x+y=%5.2fy+z=%5.2fz+x=%5.2f\n",x+y,y+z,z+x);printf("u=%6ld n=%9ld\n",u,n);printf("%s %s %d%s\n","c1=’a’","or",c1,"(ASCII)");printf("%s %s %d%s\n","c2=’a’","or",c2,"(ASCII)"); }ˊA ˊ,;); 4.8设圆半径r=1.5,圆柱⾼h=3,求圆周长、圆⾯积、圆球表⾯积、圆球体积、圆柱体积。
本文由月飞鸟888贡献 doc文档可能在WAP端浏览体验不佳。
建议您优先选择TXT,或下载源文件到本机查看。
C 语言 谭浩强版 课后答案 C 程序设计(第三版)[谭浩强著]课后题答案 1.5 请参照本章例题,编写一个 C 程序,输出以下信息: ************************** Very 解: main() {printf(“**************************”); printf(“\n”); printf(“Very 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 Good!\n”); Good! ************************** 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); } 运行结果: 密码是 Glmre 3.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.5 3.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,10 3.12 写出下面表达式运算后 a 的值,设原来 a=12。
设 a 和 n 都已定义为整型变量。
(1)a+=a (2) a-=2 (3) a*=2+3 (4)a/=a+a (5) a%=(n%=2),n 的值等于 5 (6)a+=a-=a*=a 解: (1) 24 第四章 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=_5 x=1.200000,y=2.400000,z=-3.600000 x+y=_3.600_ _y+z=-1.20_ _z+x=-2.40 c1=ˊaˊ_or_97(ASCII) c2=ˊbˊ_or_98(ASCII) main() (2) 10 (3) 60 (4) 0 (5) 0 (6) 0 {int a=3,b=4,c=5; long int u=51274,n=128765; float x=1.2,y=2.4,z=3.6; char c1=’a’,c2=’b’; printf("a=%2d b=%2d c=%2d\n",a,b,c); printf("x=%f,y=%f,z=%f\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("%s %s %d%s\n","c1=’a’","or",c1,"(ASCII)"); printf("%s %s %d%s\n","c2=’a’","or",c2,"(ASCII)"); } 4.7 用 scanf 下面的函数输入数据,使 a=3,b=7,x=8.5,y=71.82,c1=ˊAˊ,c2=ˊaˊ,问在键盘上如 何输入? main() { int a,b;float x,y;char c1c2; scanf("a=%d_b=%d",&a,&b); scanf("_x=%f_y=%e",&x,&y); scanf("_c1=%c_c2=%c",&c1,&c2); } a=3_b=7 _x=8.5_y=71.82 _c1=A_c2=a 4.8 设圆半径 r=1.5,圆柱高 h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。
用 scanf 输 入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。
请编程序。
main() {float r,h,C1,Sa,Sb,Va,Vb; scanf("%f,%f",&r,&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("C1=%.2f\n",C1); printf("Sa=%.2f\nSb=%.2f\nVa=%.2f\nVb=%.2f\n",Sa,Sb,Va,Vb); } 4.9 输入一个华氏温度,要求输出摄氏温度。
公式为 c=5(F-32)/9 输出要求有文字说明,取位 2 小数。
main() {float F,c; scanf("%f",&F); c=5*(F-32)/9; printf("c=%.2f",c); } 4.10 编程序,用 getchar 函数读入两个字符给 c1、c2,然后分别用函数和函数输出这两个字符。
并思考 以下问题:(1)变量 c1、c2 应定义为字符型或整形?抑二者皆可?(2)要求输出 c1 和 c2 值的 ASCII 码,应如何处理?用 putchar 函数还是 printf 函数?(3)整形变量与字符变量是否在任何情况下都可以 互相代替?如: char 与 int c1,c2; 是否无条件的等价? #include"stdio.h" main() {char c1,c2; c1=getchar();c2=getchar(); putchar(c1);putchar(’\n’);putchar(c2);putchar(’\n’); } #include"stdio.h" main() {char c1,c2; c1=getchar();c2=getchar(); printf("c1=%d c2=%d\n",c1,c2); printf("c1=%c c2=%c\n",c1,c2); } 第五章 5.1 什么是算术运算?什么是关系运算?什么是逻辑运算? 解:略。
5.2 C 语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”? 解:设有一个逻辑表达式,若其结果为“真”,则以 1 表示;若其结果为“假”,则以 0 表示。
但是判断 一个逻辑量的值时,以 0 代表“真”,以非 0 代表“假”。
例如 3&&5 的值为“真”,系统给出 3&&5 的值 为 1。
5.3 写出下面各逻辑表达式的值。
设 a=3,b=4,c=5。
(1) a+b>c&&b==c (2) a||b+c&&b-c (3) !(a>b)&&!c||1 (4) !(x=a)&&(y=b)&&0 (5) !(a+b)+c-1&&b+c/2 解: (1) 0 (2) 1 (3) 1 (4) 0 (5) 1 c1,c2; 5.4 有 3 个整数 a、b、c,由键盘输入,输出其中最大的数。
解: 方法一 #include main() { int a,b,c; printf("请输入 3 个整数:"); scanf("%d,%d,%d",&a,&b,&c); if(a main() { int a,b,c,temp,max; printf("请输入 3 个整数:"); scanf("%d,%d,%d",&a,&b,&c); temp=(a>b)?a:b; max=(temp>c)?temp:c; printf("3 个整数的最大数是%d\n”,max); } 5.5 有一函数: 写一程序,输入 x 值,输出 y 值。
解: #include main() {int x,y; printf("输入 x:"); scanf("%d",&x); if(x<1) { y=x; printf("x=%3d, y=x=%d\n",x,y); } else if (x<10) { y=2*x-1; printf("x=%3d, y=2*x-1=%d\n",x,y); } else { y=3*x-11; printf("x=%3d, y=3*x-11=%d\n",x,y); } } 5.6 给一个百分制成绩,要求输出等级’A’、’B’、’C’、’D’、’E’。
90 分以上为’A’,80 ̄90 分为’B’,70 ̄79 分为’C’,60 分以下为’D’。
解: 程序如下: #include main() { float score; char grade; case 2: printf("请输入学生成绩:"); scanf("%f",&score); while(score>100||(score<0) { printf("\n 输入有误,请重新输入:"); scanf("%f",&score); } switch((int)(score/10)) { case 10: 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 1: case 0: grade=’E’; } printf("成绩是%5.1f,相应的等级是%c。
\n",score,grade); } 说明: 对输入的数据进行检查, 如小于 0 或大于 100, 要求重新输入。
(int)(score/10)的作用是将 (score/10) 的值进行强制类型转换,得到一个整型值。
5.7 给定一个不多于 5 位的正整数,要求:① 求它是几位数;② 分别打印出每一位数字;③ 按逆序打印 出各位数字。
例如原数为 321,应输出 123。
解: #include main() { long int num; int indiv,ten,hundred,thousand,ten_thousand,place; printf("请输入一个整数(0 ̄99999):"); 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/1000%10; hundred=num/100%10; ten=num%100/10; indiv=num%10; switch(place) { case 5: printf("%d,%d,%d,%d,%d",ten_thousand,thousand,hundred,ten,indiv); printf("\n 反序数字为;"); printf("%d%d%d%d%d\n",indiv,ten,hundred,thousand,ten_thousand); break; case 4: printf("%d,%d,%d,%d",thousand,hundred,ten,indiv); printf("\n 反序数字为:"); printf("%d%d%d%d\n",indiv,ten,hundred,thousand); break; case 3: printf("%d,%d,%d",hundred,ten,indiv); printf("\n 反序数字为:"); printf("%d%d%d\n",indiv,ten,hundred); break; case 2: printf("%d,%d",ten,indiv); printf("\n 反序数字为:"); printf("%d%d\n",indiv,ten); break; case 1: printf("%d",indiv); printf("\n 反序数字为:"); printf("%d\n",indiv); break; } } 5.8 企业发放的奖金根据利润提成。