C语言程序设计第二版第四章第七章课后答案
c语言程序设计教程第二版课后习题答案
c语言程序设计教程第二版课后习题答案C语言程序设计教程第二版课后习题答案在学习编程的过程中,课后习题是检验自己理解和掌握程度的重要方式。
对于C语言程序设计教程第二版的学习者来说,课后习题的答案是必不可少的。
本文将为大家提供C语言程序设计教程第二版课后习题的答案,希望能够帮助大家更好地学习和理解C语言编程。
第一章:C语言概述1. C语言的起源可以追溯到1972年,由丹尼斯·里奇(Dennis Ritchie)在贝尔实验室开发。
2. C语言的特点包括语法简洁、执行效率高、可移植性强等。
3. C语言的应用领域广泛,包括操作系统、嵌入式系统、游戏开发等。
第二章:C语言基础1. C语言的基本数据类型包括整型、浮点型、字符型和指针型。
2. 整型数据可以分为有符号整型和无符号整型。
3. C语言中的运算符包括算术运算符、关系运算符、逻辑运算符等。
第三章:控制结构1. C语言中的控制结构包括顺序结构、选择结构和循环结构。
2. 选择结构包括if语句、switch语句等。
3. 循环结构包括while循环、do-while循环和for循环等。
第四章:数组和字符串1. 数组是一种存储相同类型数据的集合。
2. 字符串是由字符组成的字符数组。
3. C语言中的字符串处理函数包括strcpy、strcmp、strlen等。
第五章:函数1. 函数是一段完成特定任务的代码块。
2. 函数可以返回值,也可以不返回值。
3. 函数的参数可以是值传递或地址传递。
第六章:指针1. 指针是一个变量,存储的是内存地址。
2. 指针变量可以指向其他变量或函数。
3. 指针的运算包括指针的加法、减法和比较等。
第七章:结构体和共用体1. 结构体是一种自定义的数据类型,可以包含多个不同类型的成员变量。
2. 共用体是一种特殊的结构体,所有成员变量共用同一块内存空间。
3. 结构体和共用体可以嵌套使用。
第八章:文件操作1. 文件操作包括打开文件、读写文件和关闭文件等步骤。
c语言课后答案
《C程序设计》课外作业及参考答案说明:(1)章节顺序按照PowerPoint电子教案;(2)教材上的作业注明了章节和题号;(3)所用教材是《C程序设计(第二版)》谭浩强清华大学出版社;第一章C语言概述1.1 简答题:写出C语言的主要特点(教材习题1.1)。
1.2填空题:1.C语言与操作系统并称“栾生兄弟”。
2.C语言俗称为形式。
3.C源程序文件经过处理后产生目标文件,目标文件经处理后生成可执行文件。
1.3 单项选择题1. 以下说法中正确的是。
(A)C语言程序总是从第一个定义的函数开始执行(B)在C语言程序中,要调用的函数必须在main函数中定义(C)C语言程序总是main函数开始(D)C语言程序中的main函数必须放在程序的开始部分2. 以下正确的C标识符是。
(A)_125 (B)C# (C)C++ (D)A$1.4 多项选择题1. 以下关于C语言的说法中,错误的是。
(A)俗称为“低级语言的高级形式”,因此功能简单(B)不是结构化程序设计语言(C)可能直接访问内存(D)语法限制不严2. 以下标识符属于C语言关键字的有。
(A)integer (B)else (C)include (D)while第二章C语言基本数据类型、变量、常量与表达式2.1简答题1.求下面算术表达式的值。
(教材习题3.9)a)x+a%3*(int)(x+y)%2/4设x=2.5, a=7, y=4.7b)(float)(a+b)/2+(int)x%(int)y设a=2, b=3, x=3.5, y=2.52.写出下面程序的运行结果。
(教材习题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);}3.写出下面表达式运算后a的值,设原来a=12。
设a和n已定义为整型变量。
(教材习题3.12)a)a+=a b) a-=2 c) a*=2+3b)d) a/=a+a e) a%=(n%=2), n的值等于5 f) a+=a-=a*=a4.C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”?2.2 填空题1. 写出下面各逻辑表达式的值。
c语言程序设计教程第二版课后习题答案
c语言程序设计教程第二版课后习题答案【篇一:c语言程序设计教程_李含光_郑关胜_清华大学出版社习题答案习题答案[完美打印版]】1.单项选择题(1)a (2)c(3)d (4)c (5)b 2.填空题(1)函数(2)主函数(main)(3)printf() , scanf()第2章习题参考答案1.单项选择题1-5 cbccc 6-10 cdcdc 11-13 dbb 2.填空题(1)1(2)26 (3)6 , 4 , 2 (4)10 , 6(5)3.000000 (6)双精度(double)(7)9 (8)字母,数字,下划线(9)13.700000 (10)11(11)((m/10)%10)*100+(m/100)*10+m%10(12)0 (13)10 ,9 ,11(15)(x0y0)||(x0z0)||(y0||z0)(16)double (17)x==0(18)sqrt(fabs(a-b))/(3*(a+b))(19)sqrt((x*x+y*y)/(a+b))第3章习题参考答案1.单项选择题1-5 cccdd 6-10 bcdbc11-15 bcbbb16 a 2.填空题(1)用;表示结束(2){ }(3)y=x0?1:x==0?0:-1(4)y%4==0y%100!=0||y%400==0(5)上面未配对(6)default 标号(7)while , do while , for(8)do while(9)本次(10)本层 3.阅读程序,指出结果(1)yes(2)*(3)abother(4)28 70(5)2,0(6)8(7)36 (8)1(9)3,1,-1,3,1,-1(10)a=12 ,y=12(11)i=6,k=4 (12)1,-2 4.程序填空(1)x:y , u:z(2)m=n , m!=0,m=m/10(3)teps , t*n/(2*n+1) , printf(“%lf\n”,2*s) (4)m%5==0 ,printf(“%d\n”,k) (5)cx=getchar() , cx!=front , cx(6)double s=0, 1.0/k , %lf (7)s=0 , sgmin, 5.编程题(1). #include stdio.h int main() {double x,y; scanf(%lf,x); if(x1) y=x;else if(x=1.0x10) y=2*x-11; elsey=3*x-11;printf(%lf\n,y); return 0; } (2).#include stdio.h int main() {double x,y,z,min;scanf(%lf%lf%lf,x,y,z); if(xy) min=y; else min=x; if(minz)min=z;printf(min=%lf\n,min); return 0; } (3).#include stdio.h int main() {int y,m,d,flag,s=0,w,i;scanf(%d%d%d,y,m,d);flag=(y%4==0y%100!=0||y%400==0);w=((y-1)*365+(y-1)/4-(y-1)/100+(y-1)/400)%7;for(i=1;i=m;i++) {switch(i) {case 1:s=d;break; case 2:s=31+d;break; case 3:s=59+d;break; case 4:s=90+d;break; case 5:s=120+d;break; case6:s=151+d;break; case 7:s=181+d;break; case8:s=212+d;break; case 9:s=243+d;break; case10:s=273+d;break; case 11:s=304+d;break; case12:s=334+d;break;} }s=(w+s)%7; if(s==0)printf(星期日\n); elseprintf(星期%d\n,s); return 0; }(4).#include stdio.h int main() {float p,r;scanf(%f,p); if(p=10) r=p*0.1;else if(p10p=20) r=10*0.1+(p-10)*0.075; else if(p20p=40)r=10*0.1+10*0.075+(p-20)*0.05; else if(p40p=60)r=10*0.1+10*0.075+20*0.05+(p-40)*0.03;else if(p60p=100)r=10*0.1+10*0.075+20*0.05+20*0.03+(p-60)*0.015; else if(p100)r=10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(p-100)*0.01; printf(%f\n,r); return 0; } (5).#include stdio.h int main() {char c;while((c=getchar())!=\n) {if(c=ac=z) c=c-32; putchar(c);}return 0; } (6).#includestdio.h int main() {int m,k=2;printf(输入一个正整数:\n); scanf(%d,m); while(km) if(m%k==0) {printf(%4d,k); m=m/k; } else k++;printf(%4d\n,m); return 0; } (7).#includestdio.h int main() {int a,n,s=0,p=0,i;scanf(%d %d,n,a); for(i=1;i=n;i++) {p=p*10+a; s=s+p; }printf(%d\n,s); return 0; } (8).#includestdio.h int main(){int i,j,k;for(i=1;i=9;i++) for(j=0;j=9;j++) for(k=0;k=9;k++)printf(%5d,100*i+10*j+k); return 0; }(9).#includestdio.h #includemath.h int main() {float a=-10,b=10,x,f1,f2,f; f1=(((2*a-4)*a+3)*a)-6; f2=(((2*b-4)*b+3)*b)-6; do {x=(a+b)/2;f=(((2*x-4)*x+3)*x)-6; if(f*f10) { b=x; f2=f; } else { a=x;f1=f; }}while(fabs(f)=1e-6); printf(%6.2f\n,x); return 0; }(10).#includestdio.h#includemath.h int main() {int n=2;double eps,t,s=0,x;scanf(%lf %lf,x,eps); t=x; s=t;while(fabs(t)=eps) {t=-t*(2*n-3)*x*x/(2*n-2); s=s+t/(2*n); n++; }printf(%d,%lf\n,n,s); return 0; }(11).#includestdio.h int main() {unsigned long s,t=0,p=1; scanf(%u,s); while(s!=0) {if((s%10)%2!=0) {t=t+(s%10)*p; p=p*10; }s=s/10; }printf(%u\n,t); return 0; }第4章习题参考答案1.单项选择题1-5 dddbd 6-10 badcd 11-14 bdab 2.填空题(1)2(2)嵌套,递归(3)全局变量,局部变量,静态变量,动态变量(4)auto , static , register , extern (5)外部变量(6)编译,运行 3.阅读程序,指出结果(1)15(2)5(3)5,4,3 (4)i=5 i=2 i=2 i=4 i=2(5)求水仙花数(6)-5*5*5(7)30 (8)0 10 1 11 2 124.程序填空(1)float fun(float , float) , x+y,x-y, z+y,z-y (2)x , x*x+1 (3)s=0 , a=a+b 5.编程题(1).while(s!=0) #includestdio.h { unsigned int fun(unsigned int);p=p+s%10; int main() s=s/10; { } unsigned int s; return p; scanf(%u,s); } printf(%u\n,fun(s)); (2). return 0;#includestdio.h } #includestdlib.h unsigned int fun(unsignedint s) #includemath.h { void f1(float,float,float,float); unsigned int p=0; void f2(float,float,float,float);【篇二:《c语言程序设计》课后习题答案(第四版)谭浩强】t>1.1什么是计算机程序11.2什么是计算机语言11.3c语言的发展及其特点31.4最简单的c语言程序51.4.1最简单的c语言程序举例61.4.2c语言程序的结构101.5运行c程序的步骤与方法121.6程序设计的任务141-5 #include stdio.hint main ( ){ printf (**************************\n\n);printf( very good!\n\n);printf (**************************\n);return 0;}1-6#include stdio.hint main(){int a,b,c,max;printf(please input a,b,c:\n);scanf(%d,%d,%d,a,b,c);max=a;if (maxb)max=b;if (maxc)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.hint 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.hint 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程序设计语言 (第二版) 课后答案第四章
Exercise 4-1Write the function strrindex(s,t) , which returns the position of the rightmost occurrence of t in s , or -1 if there is none.#include<stdio.h>#define MAXLINE 1000int getline(char line[], int max);int find_the_situaion(char t[],char s[]);int count(char v[]);void main(){char target[MAXLINE];char line[MAXLINE];while (getline(line, MAXLINE) > 0){printf("%d", find_the_situaion(line, target));}}int getline(char s[], int lim) {int c, i;i = 0;while (--lim > 0 && (c = getchar()) != EOF && c != '\n')s[i++] = c;if (c == '\n')s[i++] = c;s[i] = '\0';return i;}int find_the_situaion(char t[], char s[]){int i, j, k;int b = count(s);int c = count(t);for (i = 0; s[i] != '\0'; i++){for (j = i, k = 0; t[k] != '\0' && s[j] == t[k]; j++,k++);if(k==b+1){return c - i - b;}}return -1;}int count(char v[]){int a = 0;if (v[a]!='\0'){a++;}return a;}Exercise 4-2Extend atof to handle scientific notation of the form 123.45e-6 where a floating-point number may be followed by e or E and an optionally signed exponent.Exercise 4-3Given the basic framework, it's straightforward to extend the calculator. Add the modulus ( % ) operator and provisions for negative numbers.#include<stdlib.h>#include"pch.h"#include<iostream>#define MAXOP 100#define NUMBER'0'#define TRUE 1;int Getop(char[]);int getch(void);double pop(void);void push(double f);void ungetch(int c);int main(void){int type;double op2;char s[MAXOP];int flag = TRUE;while ((type = Getop(s)) != EOF){switch (type){case'%':op2 = pop();if (op2)push(fmod(pop(), op2));elseprintf("\nError: Division by zero!");break;}}return EXIT_SUCCESS;}int Getop(char s[]){#define PERIOD'.'int i = 0;int c;int next;while ((s[0] = c = getch()) == ' ' || c == '\t') ;s[1] = '\0';if (!isdigit(c) && c != PERIOD && c != '-')return c;if (c == '-'){next = getch();if (!isdigit(next) && next != PERIOD){return c;}c = next;}else{c = getch();}while (isdigit(s[++i] = c))c = getch();if (c == PERIOD)while (isdigit(s[++i] = c = getch()));s[i] = '\0';if (c != EOF)ungetch(c);return NUMBER;}#define MAXVAL 100int sp = 0;double val[MAXVAL];double pop(void){ if (sp > 0)return val[--sp];else{printf("error: stack empty\n");return 0.0;}}void push(double f){if (sp < MAXVAL)val[sp++] = f;elseprintf("error: stack full, can't push %g\n", f);}#define BUFSIZE 100char buf[BUFSIZE];int bufp = 0;int getch(void){return (bufp > 0) ? buf[--bufp] : getchar();}void ungetch(int c){if (bufp >= BUFSIZE)printf("ungetch: too many characters\n");elsebuf[bufp++] = c;}Exercise 4-4Add commands to print the top element of the stack without popping, to duplicate it, and to swap the top two elements. Add a command to clear the stack.#include"pch.h"#include<stdlib.h>#include<stdio.h>#include<ctype.h>#include<math.h>#define MAXOP 100#define NUMBER 0#define TRUE 1#define FALSE 0int Getop(char s[]);void push(double val);double pop(void);void showTop(void);void duplicate(void);void swapItems(void);void clearStack();int main(void){int type;double op2;char s[MAXOP];int flag = TRUE;while ((type = Getop(s)) != EOF){switch (type){case NUMBER:push(atof(s));break;case'+':push(pop() + pop());break;case'*':push(pop() * pop());break;case'-':op2 = pop();push(pop() - op2);break;case'/':op2 = pop();if (op2)push(pop() / op2);elseprintf("\n出现错误!");break;case'%':op2 = pop();if (op2)push(fmod(pop(), op2));elseprintf("\n出现错误!");break;case'?':showTop();break;case'#':duplicate();break;case'~':swapItems();break;case'!':clearStack();case'\n':printf("\n\t%.8g\n", pop());break;default:printf("\nError: 不清楚的指令 %s.\n", s);break;}}return EXIT_SUCCESS;}#define MAXVAL 100int sp = 0;double val[MAXVAL];void push(double f){if (sp < MAXVAL)val[sp++] = f;elseprintf("\n出现错误 %g\n", f);}double pop(void){if (sp > 0)return val[--sp];else{printf("\n出现错误\n");return 0.0;}}void showTop(void){if (sp > 0)printf("Top of stack contains: %8g\n", val[sp - 1]);elseprintf("The stack is empty!\n");}void duplicate(void){double temp = pop();push(temp);push(temp);}void swapItems(void){double item1 = pop();double item2 = pop();push(item1);push(item2);}void clearStack(void){sp = 0;}int getch(void);void unGetch(int);int Getop(char s[]){int i = 0;int c;int next;while ((s[0] = c = getch()) == ' ' || c == '\t') ;s[1] = '\0';if (!isdigit(c) && c != '.' && c != '-')return c;if (c == '-'){next = getch();if (!isdigit(next) && next != '.'){return c;}c = next;}elsec = getch();while (isdigit(s[++i] = c))c = getch();if (c == '.')while (isdigit(s[++i] = c = getch()));s[i] = '\0';if (c != EOF)unGetch(c);return NUMBER;}#define BUFSIZE 100char buf[BUFSIZE];int bufp = 0;int getch(void){return (bufp > 0) ? buf[--bufp] : getchar();}void unGetch(int c){if (bufp >= BUFSIZE)printf("\n出现错误\n");elsebuf[bufp++] = c;}Exercise 4-5Add access to library functions like sin , exp , and pow . See <math.h> in Appendix B, Section 4.#include<stdlib.h>#include<stdio.h>#include<ctype.h>#include<math.h>#include<string.h>#define MAXOP 100#define NUMBER 0#define IDENTIFIER 1#define TRUE 1#define FALSE 0int Getop(char s[]);void push(double val);double pop(void);void showTop(void);void duplicate(void);void swapItems(void);void clearStack();void dealWithName(char s[]);int main(void){int type;double op2;char s[MAXOP];int flag = TRUE;while ((type = Getop(s)) != EOF){switch (type){case NUMBER:push(atof(s));break;case IDENTIFIER:dealWithName(s);break;case'+':push(pop() + pop());break;case'*':push(pop() * pop());break;case'-':op2 = pop();push(pop() - op2);break;case'/':op2 = pop();if (op2)push(pop() / op2);elseprintf("\nError: division by zero!");break;case'%':op2 = pop();if (op2)push(fmod(pop(), op2));elseprintf("\nError: division by zero!");break;case'?':showTop();break;case'#':duplicate();break;case'~':swapItems();break;case'!':clearStack();case'\n':printf("\n\t%.8g\n", pop());break;default:printf("\nError: unknown command %s.\n", s);break;}}return EXIT_SUCCESS;}#define MAXVAL 100int sp = 0;double val[MAXVAL];void push(double f){if (sp < MAXVAL)val[sp++] = f;elseprintf("\nError: stack full can't push %g\n", f);}double pop(void){if (sp > 0)return val[--sp];else{printf("\nError: stack empty\n");return 0.0;}}void showTop(void){if (sp > 0)printf("Top of stack contains: %8g\n", val[sp - 1]);elseprintf("The stack is empty!\n");}void duplicate(void){double temp = pop();push(temp);push(temp);}void swapItems(void)double item1 = pop();double item2 = pop();push(item1);push(item2);}void clearStack(void){sp = 0;}void dealWithName(char s[]){double op2;if (0 == strcmp(s, "sin"))push(sin(pop()));else if (0 == strcmp(s, "cos"))push(cos(pop()));else if (0 == strcmp(s, "exp"))push(exp(pop()));else if (!strcmp(s, "pow")){op2 = pop();push(pow(pop(), op2));}elseprintf("%s is not a supported function.\n", s); }int getch(void);void unGetch(int);int Getop(char s[]){int i = 0;int c;int next;while ((s[0] = c = getch()) == ' ' || c == '\t') ;s[1] = '\0';if (isalpha(c)){i = 0;while (isalpha(s[i++] = c))c = getch();s[i - 1] = '\0';if (c != EOF)unGetch(c);return IDENTIFIER;}if (!isdigit(c) && c != '.' && c != '-') return c;if (c == '-'){next = getch();if (!isdigit(next) && next != '.'){return c;}c = next;}elsec = getch();while (isdigit(s[++i] = c))c = getch();if (c == '.')while (isdigit(s[++i] = c = getch()));s[i] = '\0';if (c != EOF)unGetch(c);return NUMBER;}#define BUFSIZE 100char buf[BUFSIZE];int bufp = 0;int getch(void)return (bufp > 0) ? buf[--bufp] : getchar();}void unGetch(int c){if (bufp >= BUFSIZE)printf("\nUnGetch: too many characters\n");elsebuf[bufp++] = c;}Exercise 4-6Add commands for handling variables. (It's easy to provide twenty-six variables with single-letter names.) Add a variable for the most recently printed value.#include<stdlib.h>#include<stdio.h>#include<ctype.h>#include<math.h>#include<string.h>#define MAXOP 100#define NUMBER 0/* 4-6 these are new for this exercise*/#define IDENTIFIER 1#define ENDSTRING 2/* 4-6 end of new stuff */#define TRUE 1#define FALSE 0#define MAX_ID_LEN 32#define MAXVARS 30struct varType {char name[MAX_ID_LEN];double val;};int Getop(char s[]);void push(double val);double pop(void);void showTop(void);void duplicate(void);void swapItems(void);void clearStacks(struct varType var[]);void dealWithName(char s[], struct varType var[]);void dealWithVar(char s[], struct varType var[]);int pos = 0;struct varType last;int main(void){int type;double op2;char s[MAXOP];struct varType var[MAXVARS];clearStacks(var);while ((type = Getop(s)) != EOF){switch (type){case NUMBER:push(atof(s));break;case IDENTIFIER:dealWithName(s, var);break;case'+':push(pop() + pop());break;case'*':push(pop() * pop());break;case'-':op2 = pop();push(pop() - op2);break;case'/':op2 = pop();if (op2)push(pop() / op2);elseprintf("\nError: division by zero!");break;case'%':op2 = pop();if (op2)push(fmod(pop(), op2));elseprintf("\nError: division by zero!");break;case'?':showTop();break;case'#':duplicate();break;case'~':swapItems();break;case'!':clearStacks(var);break;case'\n':printf("\n\t%.8g\n", pop());break;/* 4-6 this is new for this program */case ENDSTRING:break;case'=':pop();var[pos].val = pop();last.val = var[pos].val;push(last.val);break;case'<':printf("The last variable used was: %s (value == %g)\n",, last.val);break;/* 4-6 End of new stuff */default:printf("\nError: unknown command %s.\n", s);break;}}return EXIT_SUCCESS;}#define MAXVAL 100int sp = 0;double val[MAXVAL];void push(double f){if (sp < MAXVAL)val[sp++] = f;elseprintf("\nError: stack full can't push %g\n", f);}double pop(void){if (sp > 0){return val[--sp];}else{printf("\nError: stack empty\n");return 0.0;}}void showTop(void){if (sp > 0)printf("Top of stack contains: %8g\n", val[sp - 1]);elseprintf("The stack is empty!\n");}void duplicate(void){double temp = pop();push(temp);push(temp);}void swapItems(void){double item1 = pop();double item2 = pop();push(item1);push(item2);}void clearStacks(struct varType var[]){int i;sp = 0;for (i = 0; i < MAXVARS; ++i){var[i].name[0] = '\0';var[i].val = 0.0;}}void dealWithName(char s[], struct varType var[]){double op2;if (!strcmp(s, "sin"))push(sin(pop()));else if (!strcmp(s, "cos"))push(cos(pop()));else if (!strcmp(s, "exp"))push(exp(pop()));else if (!strcmp(s, "pow")){op2 = pop();push(pow(pop(), op2));}else{dealWithVar(s, var);}}void dealWithVar(char s[], struct varType var[]){int i = 0;while (var[i].name[0] != '\0' && i < MAXVARS - 1) {if (!strcmp(s, var[i].name)){strcpy(, s);last.val = var[i].val;push(var[i].val);pos = i;return;}i++;}strcpy(var[i].name, s);strcpy(, s);push(var[i].val);pos = i;}int getch(void);void unGetch(int);int Getop(char s[]){int i = 0;int c;int next;while ((s[0] = c = getch()) == ' ' || c == '\t') {;}s[1] = '\0';if (isalpha(c)){i = 0;while (isalpha(s[i++] = c)){c = getch();}s[i - 1] = '\0';if (c != EOF)unGetch(c);return IDENTIFIER;}if (!isdigit(c) && c != '.' && c != '-'){if ('=' == c && '\n' == (next = getch())){unGetch('\0');return c;}if ('\0' == c)return ENDSTRING;return c;}if (c == '-'){next = getch();if (!isdigit(next) && next != '.'){return c;}c = next;}else{c = getch();}while (isdigit(s[++i] = c)){c = getch();}if (c == '.'){while (isdigit(s[++i] = c = getch()));}s[i] = '\0';if (c != EOF)unGetch(c);return NUMBER;}#define BUFSIZE 100int buf[BUFSIZE];int bufp = 0;int getch(void){return (bufp > 0) ? buf[--bufp] : getchar();}void unGetch(int c){if (bufp >= BUFSIZE)printf("\nUnGetch: too many characters\n");elsebuf[bufp++] = c;}Exercise 4-7Write a routine ungets(s) that will push back an entire string onto the input. Should ungets know about buf and bufp , or should it just use ungetch ?#include"pch.h"#include<string.h>#include<stdio.h>#define BUFSIZE 100char buf[BUFSIZE];int bufp = 0;int getch(void){return (bufp > 0) ? buf[--bufp] : getchar();}void ungetch(int c){if (bufp >= BUFSIZE)printf("ungetch: too many characters\n");elsebuf[bufp++] = c;}void ungets(const char *s){size_t i = strlen(s);while (i > 0)ungetch(s[--i]);}int main(void){char s="Hello";int c;ungets(s);while ((c = getch()) != EOF)putchar(c);return 0;}Exercise 4-8Suppose there will never be more than one character of pushback. Modify getch and ungetch accordingly.#include<stdio.h>#include"pch.h"int buf = EOF;#define EOF -1;int getch(void){int temp;if (buf != EOF){temp = buf;buf = EOF;}else {temp = getchar();}return temp;}void ungetch(int c){if (buf != EOF)printf("ungetch: too many characters\n");elsebuf = c;}int main(void){int c;while ((c = getch()) != EOF) {if (c == '/') {putchar(c);if ((c = getch()) == '*') {ungetch('!');}}putchar(c);}return 0;}Exercise 4-9Our getch and ungetch do not handle a pushed-back EOF correctly. Decide what their properties ought to be if an EOF is pushed back, and then implement your design.#include<stdio.h>#define BUFSIZE 100int buf[BUFSIZE];int bufp = 0;int getch(void){return (bufp > 0) ? buf[--bufp] : getchar();}void ungetch(int c){if (bufp >= BUFSIZE)printf("ungetch: too many characters \n");elsebuf[bufp++] = c;}Exercise 4-10#include<stdio.h>#include<ctype.h>#define MAXLINE 100#define NUMBER'0'int getline(char line[], int limit);int li = 0;char line[MAXLINE];int getop(char s[]){int c, i;if (line[li] == '\0')if (getline(line, MAXLINE) == 0)return EOF;elseli = 0;while ((s[0] = c = line[li++]) == ' ' || c == '\t');s[1] = '\0';if (!isdigit(c) && c != '.')return c;i = 0;if (isdigit(c))while (isdigit(s[++i] = c = line[li++]));if (c == '.')while (isdigit(s[++i] = c = line[li++]));s[i] = '\0';li--;return NUMBER;}Exercise 4-11Modify getop so that it doesn't need to use ungetch. Hint: use an internal static variable.int getop(char *s){int c;static int buf = EOF;if (buf == EOF || buf == ' ' || buf == '/t')while ((*s = c = getch()) == ' ' || c == '/t');else*s = c = buf;buf = EOF;*(s + 1) = '/0';if (!isdigit(c) && c != '.')return c; /* not a number */if (isdigit(c)) /* collect integer part */while (isdigit(*++s = c = getch()));if (c == '.') /* collect fraction part */while (isdigit(*++s = c = getch()));*++s = '/0';buf = c;return NUMBER;}Exercise 4-12Adapt the ideas of printd to write a recursive version of atoi ; that is, convert an integer into a string by calling a recursive routine. #include"pch.h"#include<iostream>#include<stdio.h>#include<stdlib.h>char *utoa(unsigned value, char *digits, int base){char *s, *p;s = "0123456789abcdefghijklmnopqrstuvwxyz";if (base == 0)base = 10;if (digits == NULL || base < 2 || base > 36)return NULL;if (value < (unsigned)base) {digits[0] = s[value];digits[1] = '\0';}else {for (p = utoa(value / ((unsigned)base), digits, base);*p;p++);utoa(value % ((unsigned)base), p, base);}return digits;}char *itoa(int value, char *digits, int base){char *d;unsigned u;d = digits;if (base == 0)base = 10;if (digits == NULL || base < 2 || base > 36)return NULL;if (value < 0) {*d++ = '-';u = -value;}elseu = value;utoa(u, d, base);return digits;}Exercise 4-13Write a recursive version of the function reverse(s) , which reverses the string s in place.#include"pch.h"#include<iostream>#include<stdio.h>#include<stdlib.h>static void swap(char *a, char *b, size_t n){while (n--) {*a ^= *b;*b ^= *a;*a ^= *b;a++;b++;}}void my_memrev(char *s, size_t n){switch (n) {case 0:case 1:break;case 2:case 3:swap(s, s + n - 1, 1);break;default:my_memrev(s, n / 2);my_memrev(s + ((n + 1) / 2), n / 2);swap(s, s + ((n + 1) / 2), n / 2);break;}}void reverse(char *s){char *p;for (p = s; *p; p++);my_memrev(s, (size_t)(p - s));}。
c 语言程序设计教程第二版课后习题答案
c 语言程序设计教程第二版课后习题答案C语言程序设计教程第二版课后习题答案C语言是一种广泛使用的计算机编程语言,它在软件开发领域有着广泛的应用。
对于初学者来说,学习C语言程序设计是一个重要的基础。
《C语言程序设计教程》是一本经典的教材,第二版的习题更加丰富多样,有助于学生巩固所学的知识。
本文将为大家提供《C语言程序设计教程第二版》课后习题的答案,希望能够帮助大家更好地理解和掌握C语言编程。
第一章:C语言概述1. 答案略第二章:C语言基础1. 答案略第三章:运算符和表达式1. 答案略第四章:选择结构1. 答案略第五章:循环结构1. 答案略第六章:数组1. 答案略第七章:函数1. 答案略第八章:指针1. 答案略第九章:字符串1. 答案略第十章:结构体1. 答案略第十一章:文件操作1. 答案略第十二章:位运算1. 答案略以上是《C语言程序设计教程第二版》课后习题的答案。
这些答案只是供参考,可以帮助学生更好地理解和掌握C语言的编程技巧。
然而,作为学习者,我们不能仅仅依赖答案,更重要的是理解其中的原理和思想。
通过自己的思考和实践,才能真正掌握C语言的编程能力。
在学习C语言的过程中,我们还可以通过参考其他资料和教程来进一步提高自己的编程水平。
除了课后习题,我们还可以尝试编写一些小项目,锻炼自己的实际操作能力。
同时,多与他人交流和讨论,互相学习和进步也是非常重要的。
总之,C语言程序设计是一门非常有用的技能,掌握它可以为我们的职业发展和学术研究提供很多帮助。
通过学习《C语言程序设计教程第二版》课后习题的答案,我们可以更好地理解和掌握C语言编程的基础知识。
希望大家在学习过程中能够坚持不懈,不断提高自己的编程能力。
c语言程序设计课后习题答案第7章
#include<stdio.h>main(){int a[10],n,sum=0,i;float ave;printf("enter n:\n");scanf("%d",&n);printf("enter %d ge zheng shu:\n",n);for(i=0;i<n;i++){scanf("%d",&a[i]);sum=sum+a[i];}ave=1.0*sum/n;printf("ave=%.2f\n",ave);}/*练习7-2*/#include<stdio.h>main(){int a[10],n,i;printf("enter n:\n");scanf("%d",&n);printf("enter %d ge zheng shu:\n",n);for(i=0;i<n;i++){printf("第%d个:\n",i+1);scanf("%d",&a[i]);printf("倒序:\n");while(a[i]!=0){printf("%d",a[i]%10);a[i]=a[i]/10;}printf("\n");}}#include<stdio.h>main(){int a[5],x,i,k=0;printf("enter 5 ge zheng shu:\n");for(i=0;i<5;i++)scanf("%d",&a[i]);printf("enter x:\n");scanf("%d",&x);for(i=0;i<5;i++)if(a[i]==x){printf("xia biao wei : %d\n",i);k=1;}if(k==0)printf("Not Found\n");}/*练习7-4*/#include<stdio.h>main(){int a[10],n,i,k=0,x,max;printf("enter n:\n");scanf("%d",&n);printf("enter %d ge zheng shu:\n",n);for(i=0;i<n;i++)scanf("%d",&a[i]);max=a[0];for(i=1;i<=n-1;i++)if(max<a[i]){max=a[i];k=i;}printf("max=%d xia biao=%d",max,k);x=a[n-1];a[n-1]=a[k];a[k]=x;printf("\n");for(i=0;i<n;i++)printf(" %d ",a[i]);printf("\n");}/*练习7-11*/#include<stdio.h>main(){char str[80];int i,j,count=0;printf("输入一个以回车符结束的字符串:\n");i=0;while((str[i]=getchar())!='\n')i++;str[i]='\0';printf("再输入一个字符:\n");str[80]=getchar();for(j=0;j<=i-1;j++)if(str[80]==str[j])count++;printf("%c字符在字符串中出现的次数为:%d\n",str[80],count);for(j=0;j<=i-1;j++)putchar(str[j]);printf("\n");}/*习题七1*/#include<stdio.h>main(){int x,y,n,a[10],i,min,max;printf("输入n:\n");scanf("%d",&n);printf("输入%d个整数:\n",n);for(i=0;i<n;i++)scanf("%d",&a[i]);min=0;for(i=1;i<n;i++)if(a[min]>a[i])min=i;max=0;for(i=1;i<n;i++)if(a[max]<a[i])max=i;x=a[min];a[min]=a[0];a[0]=x;y=a[max];a[max]=a[n-1];a[n-1]=y;for(i=0;i<n;i++)printf("%4d",a[i]);printf("\n");}/*习题七2*/#include<stdio.h>main(){int x,n,a[10],i,j,max;printf("输入n:\n");scanf("%d",&n);printf("输入%d个整数:\n",n);for(i=0;i<n;i++)scanf("%d",&a[i]);for(i=1;i<n;i++){ max=i-1;for(j=i;j<n;j++)if(a[max]<a[j])max=j;x=a[max];a[max]=a[i-1];a[i-1]=x;}for(i=0;i<n;i++)printf("%4d",a[i]);printf("\n");}/*习题七4*/#include<stdio.h>main(){int m,n,a[6][6],i,j,b[6]={0};printf("输入m:\n");scanf("%d",&m);printf("输入n:\n");scanf("%d",&n);printf("输入%d和%d的矩阵:\n",m,n);for(i=0;i<m;i++){for(j=0;j<n;j++){scanf("%d",&a[i][j]);b[i]=b[i]+a[i][j];}}printf("shu chu:\n");for(i=0;i<m;i++){for(j=0;j<n;j++)printf(" %d",a[i][j]);printf("\n");}printf("shu chu hang he :\n");for(i=0;i<m;i++)printf("%4d",b[i]);printf("\n");}/*习题7.6*/#include<stdio.h>main(){char str[80];int i,j;printf("输入一个以回车符结束的字符串:\n");i=0;while((str[i]=getchar())!='\n')i++;printf("倒序输出:\n");for(j=i-1;j>=0;j--)putchar(str[j]);printf("\n");}/*新7.6*/#include<stdio.h>main(){int a[10],i,n;printf("输入整数n:\n");scanf("%d",&n);printf("输入%d个整数:\n",n);for(i=0;i<n;i++){scanf("%d",&a[i]);}printf("倒序输出:\n");for(i=0;i<n;i++){printf("%5d",a[n-1-i]);}printf("\n");}/*习题7.7*/#include<stdio.h>main(){char str[80];int i,j,count=0;printf("输入一个以回车符结束的字符串:\n");i=0;while((str[i]=getchar())!='\n')i++;printf("输出其中的大写辅音字母:\n");for(j=0;j<=i-1;j++)if(str[j]>='B'&&str[j]<='Z'&&str[j]!='E'&&str[j]!='I'&&str[j]!='O'&&str[j]!='U'){putchar(str[j]);count++;}printf("\n");printf("大写辅音字母数量为:%d\n",count);}/*习题7.8*/#include<stdio.h>main(){char str[80];int i,j,count=0;printf("输入一个以回车符结束的字符串:\n");i=0;while((str[i]=getchar())!='\n')i++;printf("输出相应交换后的字符串:\n");for(j=0;j<=i-1;j++)if(str[j]>='A'&&str[j]<='Z')str[j]=155-str[j];for(j=0;j<=i-1;j++)putchar(str[j]);printf("\n");}上文已完。
c程序设计第二版习题答案
c程序设计第二版习题答案C程序设计第二版习题答案第一章:C语言概述1. 描述C语言的特点。
- C语言是一种结构化编程语言,以其高效性、灵活性和可移植性而闻名。
它支持过程式编程和低级内存操作,适合编写系统软件、操作系统和嵌入式系统。
2. 解释C语言的编译过程。
- C语言的编译过程通常包括预处理、编译、汇编和链接四个步骤。
预处理阶段处理宏定义和条件编译指令,编译阶段将源代码转换为汇编代码,汇编阶段将汇编代码转换为目标代码,链接阶段将目标代码与库函数链接生成可执行文件。
第二章:数据类型、运算符和表达式1. 列举C语言的基本数据类型。
- C语言的基本数据类型包括整型(int)、字符型(char)、浮点型(float和double)以及枚举型(enum)。
2. 说明赋值运算符的用法。
- 赋值运算符(=)用于将一个值赋给一个变量。
例如,`a = 5;`表示将整数5赋给变量a。
第三章:控制语句1. 描述if语句的语法结构。
- if语句的基本语法是:`if (条件) { 语句; }`。
如果条件为真,则执行花括号内的语句。
2. 解释while循环的工作原理。
- while循环在每次迭代之前都会检查条件是否为真。
如果条件为真,循环体内的语句将被执行,然后再次检查条件。
这个过程会一直重复,直到条件为假。
第四章:函数1. 函数的定义和声明。
- 函数定义是创建函数的主体,包括函数名、参数列表和函数体。
函数声明是告诉编译器函数的原型,包括函数名、返回类型和参数列表。
2. 函数的调用过程。
- 函数调用包括函数名和参数列表。
调用时,实际参数的值将传递给形式参数,函数执行完毕后,返回值(如果有的话)将返回给调用者。
第五章:数组和指针1. 数组的基本概念。
- 数组是一种数据结构,可以存储固定大小的同类型元素的集合。
数组的元素可以通过索引访问。
2. 指针的用途。
- 指针用于存储内存地址,可以直接操作内存。
指针可以指向基本数据类型、数组、结构体等。
c语言程序设计教程第二版课后习题答案
c语言程序设计教程第二版课后习题答案【篇一:c语言程序设计教程_李含光_郑关胜_清华大学出版社习题答案习题答案[完美打印版]】1.单项选择题(1)a (2)c(3)d (4)c (5)b 2.填空题(1)函数(2)主函数(main)(3)printf() , scanf()第2章习题参考答案1.单项选择题1-5 cbccc 6-10 cdcdc 11-13 dbb 2.填空题(1)1(2)26 (3)6 , 4 , 2 (4)10 , 6(5)3.000000 (6)双精度(double)(7)9 (8)字母,数字,下划线(9)13.700000 (10)11(11)((m/10)%10)*100+(m/100)*10+m%10(12)0 (13)10 ,9 ,11(15)(x0y0)||(x0z0)||(y0||z0)(16)double (17)x==0(18)sqrt(fabs(a-b))/(3*(a+b))(19)sqrt((x*x+y*y)/(a+b))第3章习题参考答案1.单项选择题1-5 cccdd 6-10 bcdbc11-15 bcbbb16 a 2.填空题(1)用;表示结束(2){ }(3)y=x0?1:x==0?0:-1(4)y%4==0y%100!=0||y%400==0(5)上面未配对(6)default 标号(7)while , do while , for(8)do while(9)本次(10)本层 3.阅读程序,指出结果(1)yes(2)*(3)abother(4)28 70(5)2,0(6)8(7)36 (8)1(9)3,1,-1,3,1,-1(10)a=12 ,y=12(11)i=6,k=4 (12)1,-2 4.程序填空(1)x:y , u:z(2)m=n , m!=0,m=m/10(3)teps , t*n/(2*n+1) , printf(“%lf\n”,2*s) (4)m%5==0 ,printf(“%d\n”,k) (5)cx=getchar() , cx!=front , cx(6)double s=0, 1.0/k , %lf (7)s=0 , sgmin, 5.编程题(1). #include stdio.h int main() {double x,y; scanf(%lf,x); if(x1) y=x;else if(x=1.0x10) y=2*x-11; elsey=3*x-11;printf(%lf\n,y); return 0; } (2).#include stdio.h int main() {double x,y,z,min;scanf(%lf%lf%lf,x,y,z); if(xy) min=y; else min=x; if(minz)min=z;printf(min=%lf\n,min); return 0; } (3).#include stdio.h int main() {int y,m,d,flag,s=0,w,i;scanf(%d%d%d,y,m,d);flag=(y%4==0y%100!=0||y%400==0);w=((y-1)*365+(y-1)/4-(y-1)/100+(y-1)/400)%7;for(i=1;i=m;i++) {switch(i) {case 1:s=d;break; case 2:s=31+d;break; case 3:s=59+d;break; case 4:s=90+d;break; case 5:s=120+d;break; case6:s=151+d;break; case 7:s=181+d;break; case8:s=212+d;break; case 9:s=243+d;break; case10:s=273+d;break; case 11:s=304+d;break; case12:s=334+d;break;} }s=(w+s)%7; if(s==0)printf(星期日\n); elseprintf(星期%d\n,s); return 0; }(4).#include stdio.h int main() {float p,r;scanf(%f,p); if(p=10) r=p*0.1;else if(p10p=20) r=10*0.1+(p-10)*0.075; else if(p20p=40)r=10*0.1+10*0.075+(p-20)*0.05; else if(p40p=60)r=10*0.1+10*0.075+20*0.05+(p-40)*0.03;else if(p60p=100)r=10*0.1+10*0.075+20*0.05+20*0.03+(p-60)*0.015; else if(p100)r=10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(p-100)*0.01; printf(%f\n,r); return 0; } (5).#include stdio.h int main() {char c;while((c=getchar())!=\n) {if(c=ac=z) c=c-32; putchar(c);}return 0; } (6).#includestdio.h int main() {int m,k=2;printf(输入一个正整数:\n); scanf(%d,m); while(km) if(m%k==0) {printf(%4d,k); m=m/k; } else k++;printf(%4d\n,m); return 0; } (7).#includestdio.h int main() {int a,n,s=0,p=0,i;scanf(%d %d,n,a); for(i=1;i=n;i++) {p=p*10+a; s=s+p; }printf(%d\n,s); return 0; } (8).#includestdio.h int main(){int i,j,k;for(i=1;i=9;i++) for(j=0;j=9;j++) for(k=0;k=9;k++)printf(%5d,100*i+10*j+k); return 0; }(9).#includestdio.h #includemath.h int main() {float a=-10,b=10,x,f1,f2,f; f1=(((2*a-4)*a+3)*a)-6; f2=(((2*b-4)*b+3)*b)-6; do {x=(a+b)/2;f=(((2*x-4)*x+3)*x)-6; if(f*f10) { b=x; f2=f; } else { a=x;f1=f; }}while(fabs(f)=1e-6); printf(%6.2f\n,x); return 0; }(10).#includestdio.h#includemath.h int main() {int n=2;double eps,t,s=0,x;scanf(%lf %lf,x,eps); t=x; s=t;while(fabs(t)=eps) {t=-t*(2*n-3)*x*x/(2*n-2); s=s+t/(2*n); n++; }printf(%d,%lf\n,n,s); return 0; }(11).#includestdio.h int main() {unsigned long s,t=0,p=1; scanf(%u,s); while(s!=0) {if((s%10)%2!=0) {t=t+(s%10)*p; p=p*10; }s=s/10; }printf(%u\n,t); return 0; }第4章习题参考答案1.单项选择题1-5 dddbd 6-10 badcd 11-14 bdab 2.填空题(1)2(2)嵌套,递归(3)全局变量,局部变量,静态变量,动态变量(4)auto , static , register , extern (5)外部变量(6)编译,运行 3.阅读程序,指出结果(1)15(2)5(3)5,4,3 (4)i=5 i=2 i=2 i=4 i=2(5)求水仙花数(6)-5*5*5(7)30 (8)0 10 1 11 2 124.程序填空(1)float fun(float , float) , x+y,x-y, z+y,z-y (2)x , x*x+1 (3)s=0 , a=a+b 5.编程题(1).while(s!=0) #includestdio.h { unsigned int fun(unsigned int);p=p+s%10; int main() s=s/10; { } unsigned int s; return p; scanf(%u,s); } printf(%u\n,fun(s)); (2). return 0;#includestdio.h } #includestdlib.h unsigned int fun(unsignedint s) #includemath.h { void f1(float,float,float,float); unsigned int p=0; void f2(float,float,float,float);【篇二:《c语言程序设计》课后习题答案(第四版)谭浩强】t>1.1什么是计算机程序11.2什么是计算机语言11.3c语言的发展及其特点31.4最简单的c语言程序51.4.1最简单的c语言程序举例61.4.2c语言程序的结构101.5运行c程序的步骤与方法121.6程序设计的任务141-5 #include stdio.hint main ( ){ printf (**************************\n\n);printf( very good!\n\n);printf (**************************\n);return 0;}1-6#include stdio.hint main(){int a,b,c,max;printf(please input a,b,c:\n);scanf(%d,%d,%d,a,b,c);max=a;if (maxb)max=b;if (maxc)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.hint 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.hint 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语言程序设计教程 第七章 课后习题参考答案
for(i=0;i<N;i++)
{
printf("%4d",a[i]);
}
bubble_sort(a,N);
printf("\n");
}
void bubble_sort(int a[],int n)
{
int i,j,tmp;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
for(i=0;i<n/2;i++)
{
t=a[i];
a[i]=a[n-1-i];
a[n-1-i]=t;
}
for(i=0;i<n;i++)
{
printf("%-4d",a[i]);
}
}
P1985对称矩阵
#include<stdio.h>
void print(int a[][3],int rows,int cols);
int a[M][N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int i,j,m=0,n=0;
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
for(i=0;i<M;i++)
m++;
《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语言程序设计课后习题答案
C语言程序设计(第2版)课后习题答案第一章1.请参照本章例题,编写一个C程序,输出以下信息:**************************V ery good!**************************解:#include<stdio.h>void main(){printf(“**************************”);printf(“\n”);printf(“V ery good!\n”);printf(“\n”);printf(“**************************”);}2.编写一个C程序,输入a、b、c三个值,输出其中最大值。
解:#include<stdio.h>void 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);}第二章1.假如我国国民生产总值的年增长率为10%,计算10年后我国国民生产总值与现在相比增长多少百分比。
计算公式为P=(1+r)^n,r为年增长率;n为年数;P为与现在相比的百分比。
解:#include<stdio.h>#include<math.h>void main(){double P, r=0.1, n=10;P=pow((1+r), n);printf(“%lf\n”, P);}3.请编程序将“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语言课程第二版甘勇课本第四章课后题答案PPT展示
•
• • •
printf("place input a digit:");
scanf("%lf",&x); for(i=1;i<=20;i++)
•
• }
return 0;
•
• • •
{
a=(2*i-1); x1=(pow(x,a)+0.00001)*1.0; y1=1.0; for(j=1;j<=a;j++) {
(10) 学生成绩等级;
• • • • • • • • • • • • • • • • #include<stdio.h> • scanf("%lf",&max); #include<math.h> • int main(void) • printf("place input students score:"); { • int i,n; • while(scanf("%lf",&score),score>=0) double score,max; • { printf("place input students amount:"); • if(max<score) scanf("%d",&n); • max=score; if(n==0) • } { • } max=0; • loop: printf("max=%.1f\n",max); goto loop; • return 0; } • } if(n>0) { printf("place input the first student score:");
c 语言程序设计教程第二版课后习题答案
c 语言程序设计教程第二版课后习题答案C语言程序设计教程第二版课后习题答案在学习C语言程序设计的过程中,课后习题是巩固知识、提高编程能力的重要环节。
本文将为大家总结C语言程序设计教程第二版课后习题的答案,希望对大家的学习有所帮助。
第一章课后习题答案1.1 编写一个C程序,输出"Hello, World!"。
```c#include <stdio.h>int main() {printf("Hello, World!\n");return 0;}```1.2 编写一个C程序,计算并输出5的阶乘。
```c#include <stdio.h>int main() {int i, fact = 1;for (i = 1; i <= 5; i++) {fact *= i;}printf("5的阶乘为%d\n", fact);return 0;}```1.3 编写一个C程序,输入一个整数n,计算并输出1到n的和。
```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;}```第二章课后习题答案2.1 编写一个C程序,输入一个整数n,计算并输出n的平方。
```c#include <stdio.h>int main() {int n;printf("请输入一个整数:");scanf("%d", &n);printf("%d的平方为%d\n", n, n * n);return 0;}```2.2 编写一个C程序,输入一个整数n,判断并输出n是奇数还是偶数。
c语言程序设计苏小红第二版课后答案
c语言程序设计苏小红第二版课后答案C语言作为一门古老而强大的编程语言,至今仍然在各个领域中发挥着重要作用。
苏小红教授的《C语言程序设计》第二版是一本广受好评的教材,它不仅系统地介绍了C语言的基础知识,还通过丰富的实例和练习题帮助读者加深理解。
以下是该书部分课后习题的答案解析,以供参考。
第一章:C语言概述1. 问题:C语言的特点是什么?答案:C语言的特点包括简洁高效、结构化、可移植性高、丰富的运算符、数据类型丰富等。
2. 问题:C语言的发展历程是怎样的?答案:C语言起源于20世纪70年代,由丹尼斯·里奇(Dennis Ritchie)在贝尔实验室开发,最初用于UNIX操作系统的编写。
随着UNIX的流行,C语言也逐渐被广泛使用。
第二章:数据类型、运算符和表达式1. 问题:C语言中的基本数据类型有哪些?答案:C语言中的基本数据类型包括整型(int)、字符型(char)、浮点型(float和double)等。
2. 问题:算术运算符有哪些?答案:算术运算符包括加(+)、减(-)、乘(*)、除(/)和模运算(%)。
第三章:控制语句1. 问题:if语句的基本形式是什么?答案:if语句的基本形式是:```cif (条件) {// 条件为真时执行的代码} else {// 条件为假时执行的代码}```2. 问题:for循环的一般形式是什么?答案:for循环的一般形式是:```cfor (初始化表达式; 条件表达式; 迭代表达式) {// 循环体}```第四章:数组1. 问题:一维数组的声明方式是什么?答案:一维数组的声明方式是:```c类型数组名[数组大小];```2. 问题:如何使用数组?答案:使用数组时,可以通过数组名和索引来访问数组元素,例如: ```cint arr[10];arr[0] = 1; // 给数组的第一个元素赋值```第五章:函数1. 问题:函数的定义包括哪些部分?答案:函数的定义包括返回类型、函数名、参数列表和函数体。
c语言程序设计教程第二版课后习题答案
c语言程序设计教程第二版课后习题答案第一章:C语言基础1. 以下为C语言的特点:- C语言是一种结构化编程语言,可以通过模块化的方式构建复杂的程序。
- C语言具有较高的可移植性,可以在不同的操作系统和硬件平台上运行。
- C语言提供了丰富的库函数,方便开发者进行程序开发。
- C语言对指针的支持较好,可以进行底层的内存操作。
2. C语言中的标识符规则:- 标识符由字母、数字和下划线组成,且第一个字符不能是数字。
- 标识符区分大小写,因此变量名"num"和"Num"是不同的。
- 标识符不能与关键字重名,如"if"、 "for"等。
- 标识符长度一般不超过32个字符。
3. 在C语言中,预处理指令的作用是在程序编译之前对代码进行处理,包括宏展开、文件包含等。
预处理指令以"#"开头,常见的预处理指令有:- #include:用于包含头文件,将头文件中的内容插入到当前文件中。
- #define:用于定义宏,将宏名称替换为指定的值或代码片段。
- #ifdef、#ifndef、#endif:用于条件编译,根据条件是否成立来选择性地编译代码。
4. C语言中的数据类型分为基本数据类型和派生数据类型两种。
基本数据类型包括整型、浮点型、字符型和布尔型,派生数据类型包括数组、指针、结构体和共用体。
5. C语言中的运算符主要分为算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符等。
算术运算符用于执行加减乘除等基本算术操作,关系运算符用于比较两个值的大小关系,逻辑运算符用于组合多个条件的判断结果,位运算符用于对二进制位进行操作,赋值运算符用于将右侧的值赋给左侧的变量。
第二章:C语言程序结构1. C语言程序结构由函数、语句和注释组成。
每个C语言程序至少包含一个main()函数,作为程序的入口。
2. 以下为C语言程序的基本结构:```c#include <stdio.h>int main() {// 程序代码return 0;}```3. C语言中的控制语句包括条件语句和循环语句。
C语言程序设计(第2版)-- 课后题答案
《C语言程序设计能力教程(第二版)》课后作业及实训题参考答案第1章进入C语言程序世界二、1. I love China!printf("we are students.\n")2. 6项目实训题参考答案1.编写一个C程序,输出以下信息:* * * * * * * * * * * * * * * * * * * *I am a student!* * * * * * * * * * * * * * * * * * * *main(){ printf("********************\n");printf(" I am a student!\n ");printf("********************\n");}2.已知立方体的长、宽、高分别是10cm、20cm、15cm,编写程序,求立方体体积。
解:main(){int a,b,c,v;a=10;b=20;c=15;v=a*b*c;printf("v=%d",v);}本程序运行结果为:v=3000第2章编制C程序的基础知识一选择题C B A B A C C二操作题,2,-8,23.000000,2.500000,-8.0000002. ABC DEFGHwhy is 21+35 equal 523.3 14 32 31 24. aa bb cc abcA N项目实训题1.定义一个符号常量M为5和一个变量n值为2,把它们的乘积输出。
#define M 5main(){ int n,c;n=2; c=M*n;printf("%d\n",c); }2.编程求下面算术表达式的值。
(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。
C语言程序设计(第2版)-- 课后题答案.
《C语言程序设计能力教程(第二版)》课后作业及实训题参考答案第1章进入C语言程序世界二、1. I love China!printf("we are students.\n")2. 6项目实训题参考答案1.编写一个C程序,输出以下信息:* * * * * * * * * * * * * * * * * * * *I am a student!* * * * * * * * * * * * * * * * * * * *main(){ printf("********************\n");printf(" I am a student!\n ");printf("********************\n");}2.已知立方体的长、宽、高分别是10cm、20cm、15cm,编写程序,求立方体体积。
解:main(){int a,b,c,v;a=10;b=20;c=15;v=a*b*c;printf("v=%d",v);}本程序运行结果为:v=3000第2章编制C程序的基础知识一选择题C B A B A C C二操作题,2,-8,23.000000,2.500000,-8.0000002. ABC DEFGHwhy is 21+35 equal 523.3 14 32 31 24. aa bb cc abcA N项目实训题1.定义一个符号常量M为5和一个变量n值为2,把它们的乘积输出。
#define M 5main(){ int n,c;n=2; c=M*n;printf("%d\n",c); }2.编程求下面算术表达式的值。
(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。
C语言程序设计教程(第2版)课后习题答案(完美版)
C语言程序设计教程(第二版)课后习题答案第一章C语言程序设计概述-习题答案1算法的描述有哪些基本方法?答1、自然语言2、专用工具2 C语言程序的基本结构是怎样的?举一个例子说明。
答1、C语言程序由函数构成;2、“/*”与“*/”之间的内容构成C语言程序的注释部分;3、用预处理命令#include、#define可以包含有关文件或预定义信息;4、大小写字母在C语言中是有区别的;5、除main()函数和标准库函数外,用户也可以自己编写函数,应用程序一般由多个函数组成,这些函数指定实际所需要做的工作。
3 C语言有什么特点?答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()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程序是由若干个函数构成的,其中有且只能有一个___函数。
(由李凤霞老师提供)《C语言程序设计教程(第二版)》北理工李凤霞版习题答案
李凤霞老师保留本文档的所有权利。
教材习题答案第一章 习题 一、单项选择题 1. C 2. B 3. B 4. C 5. D 6. A 7. C 8. A 二、填空题1. 判断条件2. 面向过程编程3. 结构化4. 程序5. 面向对象的程序设计语言6. 基本功能操作、控制结构7. 有穷性8. 直到型循环结构9. 算法 10.可读性 11.模块化 12.对问题的分解和模块的划分第二章 习题 一 、单项选择题 1. B 2. D 3. C 4. B 5. A 6. A 7. B 8.C 二、填空题1. 主2. C 编译系统3. 函数、函数4. 输入输出5. 头6. .OBJ7. 库函数8. 文本第三章 习题 一、单项选择题 1. D 2. B 3. A 4. C 5. C 6. D 7. D 8. B 9. B 10.C 11.A 12.D 13.C 14.C 15.C 16.A 17.C 18.C 19.C 20.D 21.A 22.D 23.D 24.D,A 25.D 26.A 27.B 二、填空题1. 补码2. 30810-±(~)30810,15—6 2. 30810-±(~)30810,15—63. 逻辑4. 单目,自右向左5. 函数调用6. a 或b (题目有错,小括号后面的c<=98改成(c>=97&&c<=98)就可以得到所给的答案了)7. 18. 65,89第四章 习题 一、单项选择题 1. D 2. C 3. D 4. A 5. D6. B7. A8. C9. B 10.B二、填空题 1. 一 ; 2. 5.1690003. (1)-200 2500 (2)i=-200,j=2500 (3) 2500200=-=j i4. a=98,b=765.000000,c=4321.0000005.100 25.81 1.89234 ,100 25.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. D 2. C 3. B 4. B 5. D 6. A 7. B 8. D 二、填空题1. 非零,零2. k= =0 2. 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=%。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
scanf("%f",&r);
if(r>=0)
{ s = 3.14*r*r;
c = 2*3.14*r;
printf("s = %f, c = %f\n",s,c);
}
else
printf("you input number is error!");
}
9
vБайду номын сангаасid main()
{int n;
printf("please input the number:");
scanf("%d",&n);
if(n>=100 && n <= 999)
printf("%d%d%d",n%10,(n/10)%10,n/100);
else
printf("you input number is error!");
scanf("%ld",&num);
for(i=0;i<=size-2;i++)
{
if(a[i].sid==num)
{ found=0;
printf("%ld: %s",num,a[i].name);
break;
}
}
if(found)printf("\n\nNO this sid!!!");
getch();
scanf("%ld,%s",&worker[size].sid,worker[size].name);
size++;
}while(worker[size-1].sid!=0);
return worker;
}
void paixu(struct work a[])
{
int i,j,k;long t;char v[15];
if((year%400==0)||(year%4==0&&year%100!=0))
temp=1;
if(month==2)
{ if(temp)printf("%d year %d month have 29 ",year,month);
else printf("%d year %d month have 28 ",year,month);
}
7、
#include<stdio.h>
void list()
{int i,j;
for(i=1;i<=9;i++)
{ for(j=1;j<=i;j++)
printf("%d*%d=%d ",i,j,i*j);
printf("\n");
}
}
void main()
{list();}
8、
#include<stdio.h>
getch();
}
9、#include<stdio.h>
void main()
{ float x,y,m=0,n=0;
scanf("%f,%f",&x,&y);
n=(x-2)*(x-2);
m=(y-2)*(y-2);
if((m+n)<=1)
printf("(%.3f,%.3f)In the yuan",x,y);
scanf("%d,%d",&x,&y);
while((i*y)<=x)
{ if(x==(i*y)) {temp1=1;break;}
temp2=i; i++; }
if(temp1)
printf("%d / %d = %d",x,y,i);
else
printf("%d / %d---> shang=%d,yushu=%d",x,y,temp2,x-y*temp2);
s+=t;
j=j*j;
}
return s;
}
main()
{
float s1=0,s2=0,s3=0,s4=0,x=5.6;int n=7;
s1=f(x,n);
s2=f(x+2.3,n);
s3=f(x-3.2,n+3);
s4=s1/(s2+s3);
printf("%f",s4);
getch();
}
习题7
#include<stdio.h>
#define max 100
void main()
4: ***a=25,b=14,c=16***
5: 37
6: if(a<=b) printf("1");
else printf("2");
7、
#include<stdio.h>
void main()
{ char a,b,t1,t2;
scanf("%c,%c",&a,&b);
t1=a>b?a:b;
t2=a<b?a:b;
}
else if(month%2==0)
printf("%d year %d month have 30 ",year,month);
else printf("%d year %d month have 31 ",year,month);
getch();
}
11、switch(a/10)
{ case 5:m=4;break;
printf("%d<--->%d ",i,j);
}
}
9、
#include<stdio.h>
#define max 100
struct work
{
long sid;
char name[15];
}worker[max];
int size=0;
struct work *set_list()
{
do
{
printf("\n\nPlease input (sid,name): ");
}
float chengfang(float x,int n)
{
float s=1;int i;
for(i=1;i<=n;i++)
s=s*x;
return s;
}
float f(float x,int n)
{
float s=1,t=0;int i=1,j=-1;
for(i=1;i<=n;i++)
{
t=j*chengfang(x,2*i)/jiecheng(2*i);
1:(1)D(2)A(3)D(4)B(5)D
2:(1)1 5 4 46 7 82 34(2)6333
3:(1)a[8]=data; k>=0 a[k]=temp break k<=8
(2) "%s" str[i]<='Z' c[str[i]+26-'a']++ i+'a'
4、/*题目:求一组成绩的平均分数以及高于平均分的成绩。*/
if((t1-t2)%2==0)printf("%c,%c",a+1,b+1);
else
printf("%c,%c",a-1,b-1);
getch();
}
8、#include<stdio.h>
void main()
{ int temp1=0,temp2=0,x,y,i=1;
printf("Please input (x,y): ");
f=1;
else
f=n*fac(n-1);
return f;
}
void main()
{int m,n;long f;
printf("Please input (m,n): ");
scanf("%ld,%ld",&m,&n);
f=fac(n+m)+fac(n);
printf("\n\nfibonacci=%ld",f);
y=x;
else if(x>0&&x<8)
y=x+1;
printf("%d",y);
getch();
}
方法二:
#include<stdio.h>
void main()
{ int x,y;
scanf("%d",&x);
if(x<8&&x>-5)
if(x==0)y=x;
{
float x,y,t;
printf("Enter two number (x,y): ");
int he(int n)
{int i,s=0;
for(i=1;i<n;i++)
if(n%i==0)s+=i;
return s;