c语言第六七章习题答案

合集下载

C语言程序设计课后各章节习题答案

C语言程序设计课后各章节习题答案
答include"math.h"
main()
{
float x,y,d;
printf("Input x,y:");
scanf("%f,%f",&x,&y);
d=sqrt((x-2)*(x-2)+(y-2)*(y-2));
if(d>1)printf(ntf("inside");
}
12有一函数
x-1 -5<x<0
y= x x=0
x+1 0<x<8
编写一程序,要求输入x的值,输出y的值。分别用不嵌套的if语句,嵌套的if语句,switch语句编写。
答使用不嵌套的if语句程序如下:
main()
{
int x,y;
printf("Input x:");
scanf("%d",&x);
答main()
{
int x,a,b,c;
printf("Input number:");
scanf("%d",&x);
a=x/100;/*变量a中记录x的百倍数字*/
b=x/10%10;/*变量b中记录x的十位数字*/
c=x%10;/*变量c中记录x的个位数字*/
if(a*a*a+b*b*b+c*c*c==x)
if(m==2)
d=28+f;
else
d=31-(m==4)+(m==6)+(m==9)+(m==11);
printf("%d-%d is %d days.\n",y,m,d);

C语言程序设计(第三版)谭浩强著 各章习题答疑

C语言程序设计(第三版)谭浩强著 各章习题答疑

以八、 /* 以八、十六进制输出 */
} ???? 是对应的带符号短整数。 输出结果是八进制整数 十六进制整数
2
3.9 计算某个表达式的值。 通用程序清单如下: stdio.h” #include ”stdio.h stdio.h void main() { ?????? x; 计算表达式值存入x x=( 表达式 );/* 计算表达式值存入x */ printf(”% printf( %?\n”,x); ,x); } ?????? 表达式对应的数据类型符(需事先判断) ? 表达式为整型,则为d 表达式为实型,则为f 3
第七章习题答疑(二)
折半查找法在排序数组中查找某个数。 上课时已有提示。 7.13 字符串连接(b[]中字符串连接到a[]中字符串后) 设:a[10]=”12 ,b[]=”abc 12”, abc” 12 abc (1)找到a串的’\0’的下标(i=2) ’ (2)j=0; 当型循环(b[j]!=’\0’) ’\ ’ a[i]=b[j],i++,j++ (3)a[i]=’\0’ \ 7.15 字符串复制(b[]中字符串复制到a[]中) 设:a[10]=”12”,b[]=”abc” (1)i=0; 当型循环(b[i]!=’\0’) a[i]=b[i],i++ (2)a[i]=’\0’ 7.9
18
第十章习题答疑(一)
输入3个整数,按照由小到大顺序输出。 int x,y,z,*px=&x,*py=&y,*pz=&x; 用以前的程序,其中的x、y、z换成*px、*py、*pz 10.3 输入10个整数存入一维数组a[10],将其中最小数与第1 个数交换,最大数与最后一个数交换。 要求编3个函数: 10 10 输入10个整数、交换、输出交换后的10个整数。 输入函数: void in(int *p,int n) 输出函数: void out(int *p,int n) 交换函数: void change(int *p,int n) 其中寻找最大最小数的方法: int *q,*max,*min; for (max=min=p,q=p+1;q<p+n;q++) { if(*max<*q) max=q; if(*min>*q) min=q; } 19 交换的方法:*p和*min,*(p+n-1)和*max 10.1

C 习题与答案

C  习题与答案

第一章习题一、选择填空1.下列各种高级语言中,()是面向对象的程序设计语言。

A.BASIC;B.PASCAL;C.C++D.Ada2.下列各种高级语言中,()是最早提出了对象的概念。

A.Algol60;B.Simula67;C.Smalltalk;D.C++3.下述面向对象抽象的原理中,()是不对的。

A.数据抽象;B.行为共享;C.进化;D.兼容;4.()不是面向对象系统所包含的要数。

A.重载;B.对象;C.类;D.继承;5.关于C++与C语言的关系的描述中,()是错误的。

A.C语言是C++的一个子集;B.C语言与C++是兼容的;C.C++对C语言进行了一些改进;D.C++和C语言都是面向对象的;6.下面关于对象概念的描述中,()是错误的。

A.对象就是C语言中的结构变量;B.对象代表着正在创建的系统中的一个实体;C.对象是一个状态和操作(或方法)的封装体;D.对象之间的信息传递是通过消息进行的;7.下面关于类概念的描述中,()是错误的。

A.类是抽象数据类型的实现;B.类是具有共同行为的若干对象的统一描述体;C.类是创建对象的样板;D.类就是C语言中的结构类型;8.C++对C语言作了很多改进,下列描述中()使得C语言发生了质变,即从面向过程变成为面向对象。

A.增加了一些新的运算符;B.允许函数重载,并允许设置缺省参数;C.规定函数说明必须用原型;D.引进了类和对象的概念;9.按照标识符的要求,()符号不能组成标识符。

A.连接符;B.下划线;C.大小写字母;D.数字字符;10.下列符号中,()不可作为分隔符。

A.,;B.:;C.?;D.;二、判断下列描述的正确性,对者划√,错者划×。

1.C++引进了引用的概念,对编程带来了很多方便。

Y2.C++允许使用友元,但是友元会破坏封装性。

Y3.C++中使用了新的注释符(//),C语言中注释符(/*…*/)不能在C++中使用。

X4.C++中为了减轻使用者的负担,与C语言相比较C++中减少了一些运算符。

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

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

C语⾔程序设计教程第六章课后习题参考答案P158 1求三个实数最⼤值#includefloat max(float,float,float);int main(){float a,b,c,m;printf("请输⼊三个实数:");scanf("%f %f %f",&a,&b,&c);printf("最⼤数为%f\n",max(a,b,c));return 0;}float max(float a,float b,float c){float t;if(a>b&&a>c)t=a;else if(b>a&&b>c)t=b;elset=c;return t;}P158 2求最⼤公约数最⼩公倍数#includeint fun1(int a,int b);int fun2(int a,int b);int main(){int a,b;printf("请输⼊两个整数:");scanf("%d %d",&a,&b);printf("最⼤公约数为:%d\n",fun1(a,b));int t,r;if(a{t=a;a=b;b=t;}while((r=(a%b))!=0) {a=b;b=r;}return b;}int fun2(int a,int b) {int n;n=(a*b)/fun1(a,b); return n;}P158 3求完全数#includevoid wan(int n); void main(){int n;for(n=1;n<1000;n++) wan(n);printf("\n");}void wan(int n){if(n%i==0)s=s+i;}if(n==s)printf("%d\t",n); }P158 4⽆暇素数#include#includeint nixvshu(int n);int isPrime(int n);int main(){int n,t;printf("⽆暇素数:\n");for(n=100;n<=999;n++) {t=nixvshu(n);if(isPrime(n)&&isPrime(t)) printf("%d\t",n);}printf("\n");return 0;}int nixvshu(int n){int x=0;while(n){x=x*10+n%10;n=n/10;}return x;int i;for(i=2;i<=sqrt(n);i++)if(n%i==0) return 0;return n;}P158 7递归函数#includeint Y(int n){if(n==0)return 0;if(n==1)return 1;if(n==2)return 2;elsereturn (Y(n-1)+Y(n-2)+Y(n-3)); } int main(){int n,k=0;for(n=0;n<=19;n++){printf("%d\t",Y(n));k++;if(k%5==0)printf("\n");}return 0;}P124 6分解质因数#include#includevoid fenjie(int );int main(){int n;printf("请输⼊⼀个正整数:"); scanf("%d",&n);if(isPrime(n)){printf("%d=1*%d\n",n,n);}else{fenjie(n);printf("\n");}return 0;}int isPrime(int n){int i;for(i=2;i<=sqrt(n);i++){if(n%i==0) return 0;}return 1;}int zhi(int n){int m;for(m=2;m<=n;m++){if(isPrime(m)&&(n%m==0)) break;void fenjie(int n){int m;printf("%d=%d",n,zhi(n));while(n>zhi(n)){m=zhi(n);n=n/m;printf("*%d",zhi(n));}}P47 1输出闰年#includeint f(int year);int main(){int year,k=0;for(year=1900;year<=2000;year++){if(f(year)){printf("%d\t",year);k++;if(k%5==0)printf("\n");}}return 0;}int f(int year){if((year%4==0&&year%100!=0)||(year%400==0)) return year;P47 2输出回⽂数#includeint fun(int n);int main(){int n,k=0;for(n=10;n<=2000;n++) {if(n == fun(n)){printf("%d\t",n);k++;if(k%5==0)printf("\n");}}return 0;}int fun(int n){int i=0;while(n>0){i=i*10+n%10;n=n/10;}return i;}P47 3进制转换#includevoid trans(int n,int base); int main()printf("请输⼊要转换的⼗进制数:"); scanf("%d",&n);printf("请输⼊转换的进制:"); scanf("%d",&base);trans(n,base);printf("\n");return 0;}(⽅法⼀)void trans(int n,int base){if(n){trans(n/base,base);if(n%base>=10)switch(n%base){case 10:printf("A");break;case 11:printf("B");break;case 12:printf("C");break;case 13:printf("D");break;case 14:printf("E");break;case 15:printf("F");break;}elseprintf("%d",n%base);}}(⽅法⼆)void trans(int n,int base){int r;char c;trans(n/base,base); r=n%base;if(r>=10)c='A'+r-10;elsec='0'+r;printf("%c",c);}}。

C语言第6-7章试卷有答案

C语言第6-7章试卷有答案

C语⾔第6-7章试卷有答案(6~7章)⼀、选择题1、能正确表⽰a和b同时为正或同时为负的逻辑表达式是A) (a>=0‖b>=0)&&(a<0‖b<0) B) (a>=0&&b>=0)&&(a<0&&b<0)C) (a+b>0)&&(a+b<=0) D) a*b>02、语句printf("a\bre\'hi\'y\\\bou\n");的输出结果是A) a\bre\'hi\'y\\\bou B) a\bre\'hi\'y\bou C) re'hi'you D) abre'hi'y\bou3、设有如下定义:int x=l,y=-1;,则语句:printf("%d\n",(x--&&++y));的输出结果是A) 1 B) 0 C) -1 D) 24、当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是A) c=b=a;B) (a=c) ‖(b=c) ;C) (a=c) &&(b=c);D)a=c=b;5、以下程序的输出结果是main( ){ int x=10,y=10,i;for(i=0;x>8;y=++i)printf("%d %d ",x--,y);}A) 10 1 9 2 B) 9 8 7 6 C) 10 9 9 0 D) 10 10 9 1 6、设有int x=11; 则表达式(x++ * 1/3) 的值是A) 3 B) 4 C) 11 D) 12 7、下列程序执⾏后的输出结果是main(){ char x=0xFFFF; printf("%d \n",x--); } A) -32767 B) FFFE C) -1 D)8、下列程序的输出结果是A) 3 B) 3.2 C) 0 D) 3.07main(){ double d=3.2; int x,y;x=1.2; y=(x+3.8)/5.0;printf("%d \n", d*y);}9、下列程序执⾏后的输出结果是(⼩数点后只写⼀位)main(){ double d; float f; long e; int i;i=f=e=d=20/3;printf("%d %ld %f %f \n", i,e,f,d);}A) 6 6 6.0 6.0 B) 6 6 6.7 6.7 C) 6 6 6.0 6.7 D) 6 6 6.7 6.010、设int x=1, y=1; 表达式(!x||y--)的值是A) 0 B) 1 C) 2 D) -111、以下循环体的执⾏次数是main(){ int i,j;for(i=0,j=1; i<=j+1; i+=2, j--) printf("%d \n",i);}A) 3 B) 2 C) 1 D) 0 12、以下叙述正确的是A) do-while语句构成的循环不能⽤其它语句构成的循环来代替。

《C语言程序设计》 课后习题答案 高等教育出版社

《C语言程序设计》 课后习题答案 高等教育出版社

《C语言程序设计》课后习题答案高等教育出版社《C语言程序设计》课后习题答案高等教育出版社第一章:C语言概述1. C语言的特点C语言是一种以处理底层任务和系统编程为目标的高级编程语言。

其特点包括语法简洁、执行效率高、可移植性强等。

第二章:C语言基本数据类型1. C语言中的基本数据类型C语言中的基本数据类型包括整型、字符型、浮点型等。

整型可以进一步细分为有符号整型和无符号整型。

第三章:C语言运算符1. C语言中的运算符C语言中常见的运算符包括算术运算符、赋值运算符、关系运算符、逻辑运算符等。

这些运算符用于执行各种数学和逻辑操作。

第四章:C语言控制语句1. C语言中的条件语句C语言提供了if语句和switch语句来实现条件判断。

if语句用于执行基于布尔表达式的条件分支,而switch语句用于根据不同的值执行不同的代码块。

第五章:C语言函数1. C语言中的函数定义和调用函数是C语言中的基本模块,用于封装可重用的代码。

函数定义包括函数返回类型、函数名、参数列表和函数体等部分。

第六章:C语言数组1. C语言中的数组定义和使用数组是一组相同类型的数据元素的集合。

C语言中可以使用数组来存储和操作大量数据。

第七章:C语言指针1. C语言中的指针概念指针是一种变量,它存储了内存地址。

通过指针,可以直接访问和修改对应内存地址中的数据。

第八章:C语言字符串1. C语言中的字符串操作字符串是由一系列字符组成的数据类型。

C语言通过字符数组来表示和操作字符串。

第九章:C语言结构体1. C语言中的结构体定义和使用结构体是一种自定义的复合数据类型,它可以包含多个不同类型的成员变量。

第十章:C语言文件操作1. C语言中的文件读写操作文件操作是一种重要的数据输入和输出方式。

C语言提供了一系列函数来实现文件的读写操作。

总结:通过解答以上习题,我们可以更好地掌握C语言的各个方面,提升我们的编程能力和解决问题的能力。

希望本文对读者有所帮助。

C语言程序设计-第三版-谭浩强主编第6—8章课后习题答案

C语言程序设计-第三版-谭浩强主编第6—8章课后习题答案

C语言程序设计-第三版-谭浩强主编第6—8章课后习题答案第六章循环语句6.1输入两个正数,求最大公约数和最小公倍数.#includevoidmain(){inta,b,num1,num2,temp;printf(\请输入两个正整数:\\n\canf(\if(num1temp=num1;num1=num2;num2=temp;}a=num1,b=num2;while(b!=0){temp=a%b;a=b;b=temp;}printf(\它们的最大公约数为:%d\\n\printf(\它们的最小公倍数为:%d\\n\}编译已通过6.2输入一行字符,分别统计出其中英文字母,空格,数字和其它字符的个数.解:#includevoidmain(){charc;intletter=0,pace=0,degit=0,other=0;printf(\请输入一行字符:\\n\while((c=getchar())!='\\n'){if(c>='a'&&c<='z'||c>'A'&&c<='Z')letter++;eleif(c=='')pace++;eleif(c>='0'&&c<='9')digit++;eleother++;}printf(\其中:字母数=%d空格数=%d数字数=%d其它字符数=%d\\n\digit,other);}6.3求(n)=a+aa+aaa++aaa之值,其中a是一个数字,n表示a的位数。

解:voidmain(){inta,n,count=1,n=0,tn=0;printf(\请输入a和n的值:\\n\canf(\printf(\while(count<=n){tn=tn+a;n=n+tn;a=a某10;++count;}printf(\\\n\}6.4求(即1+2!+3!+4!++20!)voidmain(){floatn,=0,t=1;for(n=1;n<=20;n++){t=t某n;=+t;}printf(\\\n\}阶乘利用递归,再求和:#includeuingnamepacetd;longFunc(intn){ if(1==n)returnn;if(n>1)returnn某Func(n-1);}main(){long=0;inti=1;while(i<=6){=+Func(i);i++;}cout<6.5求voidmain(){intk,N1=100,N2=50,N3=10;float1=0.0,2=0.0,3=0.0;for(k=1;k<=N1;k++)/某计算1到100的和某/{1=1+k;}for(k=1;k<=N2;k++)/某计算1到50各数平方和某/{2=2+k某k;}for(k=1;k<=N3;k++)/某计算1到10各数倒数之和某/{3=3+1.0/k;}printf(\总和=%8.2f\\n\}已通过intmain(){intk=1,i=11,j=51;float=0.0;while(k<=10){=+k+k某k+1.0/k;while(k==10&&i<=50){=+i+i某i;while(i=50&&j<=100){ =+j;j++;}i++;}k++;}}6.6所谓“水仙开数”是指一个3位数,其个位数字立方和等于该数本身。

第3、4、5、6、7章C语言设计 习题答案

第3、4、5、6、7章C语言设计 习题答案

第三章习题答案1.掌握算法必须要掌握的五个特性:a)有穷性。

算法执行步骤的次数有限,能在有限时间内完成。

b)确切性。

每一步操作的执行步骤、执行结果确定,不能有二义性。

c)有效性。

算法中的每一步操作都是可执行的,即算法的每一步都能通过手工或机器在有限时间内完成。

d)必须有零个或多个输入。

e)必须有一个或多个输出。

2.算法是指令的有限序列,是求解问题显式的一步一步进行的过程。

为程序编写提供依据。

程序是用C语言单词将算法表达出来的过程。

算法是程序的灵魂。

3.数据类型总体分为三类:a)对象类型。

对象类型的基本类型又分为整型、浮点型、字符型。

b)函数类型。

c)不完全类型。

4.整型可分为:a)有符号整数。

它又包括 short int、int、long int、long long int。

b)无符号整数。

它又包括unsigned short int、unsigned int、unsigned longint、unsigned long long int。

不同数据类型数据的值域范围不同。

5.合法的标识符有:scanf、x、x1、_y 、_y2x、printf、main合法标识符由英文字母、数字、下划线组成,且第一个字符只能是英文字母或下划线。

关键词不能成为合法标识符。

6.略7.8.变量名:x 数据对象:3存储地址:&x 存储单元:8(在VS2005中)9.0x13B1:十六进制int型字面值;3e3:十进制 int型字面值;‘d’:字符型字面值;“my university”:字符串型字面值;99:十进制int型字面值;023:八进制int型字面值;1.3e-4:double型浮点型字面值;33U:十进制unsigned int型字面值;034L:八进制long int型字面值;0x34UL:十六进制unsigned long int型字面值;30.23L:十进制long double型字面值;30.23F:十进制float型字面值;10.\?:?\’:’\”:”\\:\\233:表示八进制int型整数233\x2f:表示十六进制int型整数 2f。

C语言全部章节习题集参考答案

C语言全部章节习题集参考答案

第一章 C语言概述一、选择题:1、一个C程序的执行是从(A )。

A本程序的函数开始,到函数结束B本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C本程序的函数开始,到本程序文件的最后一个函数结束D本程序文件的第一个函数开始,到本程序函数结束2、在C 语言中,每个语句必须以(D )结束。

A. 回车符B. 冒号C. 逗号D. 分号3、C 语言规定:在一个源程序中,函数的位置(C )。

A. 必须在最开始B. 必须在系统调用的库函数的后面C. 可以任意D. 必须在最后4、一个C 语言程序是由(B )。

A. 一个主程序和若干子程序组成B. 函数组成C. 若干过程组成D. 若干子程序组成5、下列说法中错误的是( D )。

A. 主函数可以分为两个部分:主函数说明部分和主函数体B. 主函数可以调用任何非主函数的其他函数C. 任何非主函数可以调用其他任何非主函数D. 程序可以从任何非主函数开始执行6、用C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( C )。

A. 生成可执行目标文件B. 生成目标文件C. 输出运行结果D. 自动保存源文件二、填空题:1、C 语言只有32 个关键字和9 种控制语句。

2、每个源程序有且只有一个函数,系统总是从该函数开始执行C语言程序。

3、C 语言程序的注释可以出现在程序中的任何地方,它总是以\* 符号作为开始标记,以*/ 符号作为结束标记。

4、C 语言中,输入操作是由库函数完成的,输出操作是由库函数完成的。

5、系统默认的C 语言源程序文件的扩展名是,经过编译后生成的目标文件的扩展名是,经过连接后生成的可执行文件的扩展名是。

6、C 语言的标识符只能由字母、数字和下划线三种字符组成。

第三章数据类型、运算符和表达式一、选择题:1、以下选项中,不正确的C 语言浮点型常量是(C )。

A. 160.B. 0.12C. 2e4.2D. 0.02、以下选项中,(D )是不正确的C 语言字符型常量。

C语言程序设计_第三版_谭浩强主编第6—8章课后习题答案

C语言程序设计_第三版_谭浩强主编第6—8章课后习题答案
解:
void main()
{
int a,n,count=1,sn=0,tn=0;
printf("请输入a和n的值:\n");
scanf("%d,%d",&a,&n);
printf("a=%d n=%d \n",a,n);
while(count<=n)
{
tn=tn+a;
sn=sn+tn;
a=a*10;
int i,j,n,s;
for(j=2;j<=1000;j++)
{
n=-1;
s=j;
for(i=1;i<j;i++)
{
if((j%i)==0)
{
n++;
s=s-i;
k[n]=i;/*将每个因子赋给k0,k1...k9*/
}
}
if(s= =0)
{
printf("%d是一个完数,它的因子是:",j);
for(i=0;i<n;i++)
}
for(i=0;i<=2;i++)
{
for(j=0;j<=i;j++)
printf(" ");
for(k=0;k<=4-2*i;k++)
printf("*");
printf("\n");
}}
编译已通过
6.15乒乓比赛
#include <stdio.h>
void main()
{

C语言第六章答案及详解

C语言第六章答案及详解

第六章指针一、选择题1 答案:A分析:本题主要考指针赋值,n2=n1;是把n2的值赋给n1,故根据指针赋值的定义可知选A,即把q所指对象的值赋给p所指对象。

2 答案:B分析:本题主要考指针定义,因为p指向变量x,故输出其值的时候应该是x的值。

3 答案:C分析:本题主要考指针的定义和赋值,C前面是定义一个量a并赋值为10,后面定义一个指针,并把a的值赋给这个指针。

4 答案:C分析:本题主要考指针的定义及赋值,开始时使p指向a,q指向b,把它们的值交换,然后再显示。

故得正确答案C。

5 答案:C分析:本题主要考函数指针的定义,函数前面的*号表求返回值是指针类型,void表示返回无值弄的。

故选C。

6 答案:A分析:本题主要考的是指针的变量的赋值,在使用scanf()函数的时候,后面跟的是一个地址,由于pa本身保存的是地址,故选A7 答案:D分析:本题主要考的指针的赋值及指向指针的指针的赋值,根据定义知选D。

B的正确形式是**q=2;C的正确形式应该是q=&p。

8 答案:C分析:本题主要考的是全局变量和局部变量,以及指针的用法,第一个f(&a)的返回值是5,第二个返回值是2。

9 答案:A分析:本题主要考的是变量自加,指针传值,以及指针的赋值。

通过第二行a=b可知p1,p2指向的变量的值相同,都指向了b所指的对象,也是p2所指的对象’a’,由于(*a)++;是实现a所指对象的自加,故由’a’变成’b’,故最终选A。

10 答案:A分析:本题主考NULL,一般来说当我们把一个空值以整数的形式输出出来的时候,默认的情况是0。

11 答案:C分析:本题考的是指针变量的赋值,虽然p没有赋值,表示没有指向某个具体的对象,但事实上系统会让它随机的指向存储单元里的一个对象,那么它的返回值应该是所指存储单元中的值。

12 答案:B分析:本题主要考函数中参数变量的定义,在B中连续定义两个变量,这在函数中是不可以的。

C语言程序设计教程_李含光_郑关胜_清华大学出版社习题答案习题答案[完美打印版]

C语言程序设计教程_李含光_郑关胜_清华大学出版社习题答案习题答案[完美打印版]
5
void f3(float,float,float,float);int main() { float a,b,c,d; scanf("%f %f %f",&a,&b,&c); if(a==0) { printf(" 不 是 一 元 二 次 方 程 \n"); exit(0); } d=b*b-4*a*c; if(d>0) f1(a,b,c,d); else if(d==0) f2(a,b,c,d); else f3(a,b,c,d); return 0; } void f1(float a,float b,float c,float d){ float x1,x2; { x1=(-b+sqrt(d))/(2*a); x2=(-b-sqrt(d))/(2*a); printf("%.2f ,%.2f\n",x1,x2); } } void f2(float a,float b,float c,float d){ float x1,x2; { x1=-b/(2*a); x2=-b/(2*a); printf("%.2f ,%.2f\n",x1,x2); } }
3
{ 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) . #include<stdio.h> #include<math.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*f1<0) { b=x; f2=f; } else { a=x; f1=f; } }while(fabs(f)>=1e-6); printf("%6.2f\n",x); return 0; } (10) . #include<stdio.h>

C语言课后习题答案

C语言课后习题答案

第一章习题答案一、选择题1~5:BDCDA 6~10:DABBB 11~12:CC二、填空题1、main()2、函数首部,函数体3、函数4、编辑、编译、连接、运行5、.cpp、.obj、 .exe6、; 或分号三、编程题#include <stdio.h> /* 包含标准库的信息 */void main() /* 定义名为main 的函数,它不接受参数值 */{ /* main函数的语句都被括在花括号中 */printf("hello, world\n");/* main 函数调用库函数printf 以显示字符序列,其中\n代表换行符 */}第二章习题答案一、选择题1~5:CBABB 6~10:CDCDD 11~15:CADBC 16~20:BDAAD二、填空题1、整型,实型,字符型,枚举类型2、13、94、123535145、2,16、2,27、10 20 08、a=149、2,3,110、double第三章习题答案一、选择题1~5:CBBBC 6~10:DDDBB二、填空题1、控制语句,表达式语句,复合语句2、;3、{}4、15、a6、c:dec=120,oct=170,hex=78,ASCII=x7、32767,327678、10,A,109、3 310、(1) 123.456001(2) □□□□□□□ 123.456(3) 123.4560(4) 8765.456700(5) □□□□□□ 8765.457(6) 8765.4567(7) 8765.4567三、编程题1、参考答案:#include <stdio.h>void 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,c1);printf("c2='%c'or %d(ASCII)\n",c2,c2);}2、参考答案:#include <stdio.h>void main(){float a, b, c, t;printf("please input a,b,c:\n"); scanf ("%f, %f, %f", &a, &b, &c);t=(a+b+c)/3;printf ("averageof %6.2f、%6.2f and %6.2f is %6.2f\n",a,b,c,t);}3、参考答案:#include <stdio.h>main(){int R, d;float s;printf("请输入圆的半径");scanf("%d",&R);d=2*R;c=2*3.14159*R;printf("d=%d,c=%f\n",d,c);}4、参考答案:#include <stdio.h>void main(){int h, f, x, y; /* x为鸡的数量,y为兔的数量 */printf("请输入鸡兔的总头数h,总脚数f:");scanf("%d%d", &h, &f);x=(4*h-f)/2;y=(f-2*h)/2;printf("笼中有鸡%d 只,有兔%d只。

c语言 习题3,6,7章答案

c语言 习题3,6,7章答案

第3章程序流程控制习题答案 (1)第6章指针习题答案 (20)第7章结构体习题答案 (36)第3章程序流程控制习题答案一.选择题1.A 2.D 3.D 4.D 5.B 6.B 7.D 8.A9.D 10.A11.A12.C 13.A. 14.B. 15.B 16.C 17.A18.D 19.D 20.A21.D 22.C 23.C 24.A25.B 26.B 27.A28.D 29.D 30.A31.B 32.A33.C 34.D 35.A36.C 37.B 38.C 39.D 40.B41.C 42.C 43.C 44.C 45.C 46.A47.B 48.B 49.A50.D二.填空题【1】顺序结构【2】分支结构【3】 1 【4】0 【5】1.0 【6】1【7】-1 【8】65535 【9】3.540 【10】###a=26,b=13,c=19 【11】if(a<=b) {x=1; printf("#### x=%d\n",x);} else {y=2 ;printf("**** y=%d\n",y);} 【12】10 【13】dec:-1,oct:177777,hex:ffff,unsigned:65535 【14】1三.完善程序题【1】i%7= =0 【2】d=1.0、【3】k<=n 【4】x%i==0 【5】x>=0 【6】x<amin四.阅读程序题。

(1)-3 -3 6 (2)1,6,3,2,3 (3) 3 (4) passwarn (5) 11 12 (6 )abcDEF (7) a=13 y=13 (8) 17 (9) 4 (10 )*#*#*#****a=16 y=29****a=19 y=48五.编写程序题。

1.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?程序分析:可填在百位、十位、个位的数字都是1、2、3、4。

《C语言程序设计》第6章习题答案

《C语言程序设计》第6章习题答案

1、选择题(1)A(2)C(3)A(4)B(5)B(6)D(7)D(8)B(9)D(10)B2、填空题(1)a=10,b=20a=20,b=10(2)**pp=603、程序设计题(1)#include<stdio.h>char *month_name(int n);void main(){int n;printf("\nPlease enter 1 integer:");scanf("%d",&n);printf("%d month :%s\n",n,month_name(n));}char *month_name(int n){static char*name[]={"illegal month","Jan","Feb","Mar","Apr","May","Jun","July","Aug","Sept","Oct","Nov","Dec"};return ((n<1||n>12)?name[0]:name[n]);}(2)#include<stdio.h>#define N 10sort(int data[]){int i,j,min_a,temp;for(i=0;i<N;i++){min_a=i;for(j=i+1;j<N;j++)if(*(data+j)<*(data+min_a))min_a=j;if(min_a!=i){temp=*(data+min_a);*(data+min_a)=*(data+i);*(data+i)=temp;}}}main(){int i,j,data[N],temp;int min_a;printf("\nPlease input %d int:\n",N);for(i=0;i<N;i++)scanf("%d",&data[i]);sort(data);printf("After sorted:\n");for(i=0;i<N;i++)printf(" %d",data[i]);}(3)#include <stdlib.h>void reverse(char *c);void main(){char str[80];puts("Please enter 1 string\n");gets(str);reverse(str) ;puts("After reversed\n");puts(str);}void reverse(char *c){char *p,*q,temp;int size=0;for(p=c;*p!='\0';p++)size++;size=size/2;for(q=c,p--;q<c+size;q++,p--){temp=*q;*q=*p;*p=temp;}}(4)#include<stdio.h>#include<string.h>void sort(char *keyword[],int size);void print(char *keyword[],int size)void main(){char *keyword[]={"if","else","case","switch","do","whlie","for","break","continue"};sort(keyword,9);print(keyword,9);}void sort(char *keyword[],int size){int i,j,min_location;char *temp;for(i=0;i<size-1;i++){min_location=i;for(j=i+1;j<size;j++)if(strcmp(keyword[min_location],keyword[j])>0) min_location=j;if(min_location!=i){temp=keyword[i];keyword[i]=keyword[min_location];keyword[min_location]=temp;}}}void print(char *keyword[],int size){int i;for(i=0;i<size;i++)printf("\n%s",*(keyword+i));}(5)#include<stdio.h>void fun_char(char str1[],char str2[],char str3[]);void main(){char str1[80],str2[80],str3[80],c,i;printf("\nPlease enter 2 string:");scanf("%s%s",str1,str2);fun_char(str1,str2,str3);printf("Third string is %s.",str3);}void fun_char(char *str1,char *str2,char *str3){int i,j,k,flag;i=0,k=0;while(*(str1+i)!='\0'){j=0;flag=1;while(*(str2+j)!='\0'&&flag==1){if(*(str2+j)==*(str1+i)) flag=0;j++;}if(flag){*(str3+k)=*(str1+i); k++;}i++;}*(str3+k)='\0';}(6)#include<stdio.h>int count_word(char *str);void main(){char str1[80],c,res;puts("\nPlease enter a string:");gets(str1);printf("There are %d words in this sentence",count_word(str1)); }int count_word(char *str){int count ,flag;char *p;count=0;flag=0;p=str;while(*p!='\0'){if(*p==' ')flag=0;else if(flag==0){flag=1;count++;}p++;}return count;}(7)#include<stdio.h>#include<string.h>char *encrypt(char *string);char *decrypt(char *string);main(){char item[80];char *point;char *pEncrypted;char *pDecrype;printf("Please enter the string need to encrypt:\n");gets(item);point=item;pEncrypted=encrypt(point);printf("\nThe string after encrypted is:\n%s\n",pEncrypted); pDecrype=decrypt(pEncrypted);printf("\nThe string after decrypted is:\n%s\n",pDecrype);free(pEncrypted);free(pDecrype);}char *encrypt(char *string){char *q,*t;q=(char *)malloc(sizeof(char)*80);if(!q){printf("No place to malloc!");return 0;}t=q;while(*string!='\0'){*q=*string-2;string++;q++;}*q='\0';return t;}char *decrypt(char *string){char *q,*t;q=(char *)malloc(sizeof(char)*80); if(!q){printf("No place to malloc!");return 0;}t=q;while(*string!='\0'){*q=*string+2;string++;q++;}*q='\0';return t;}。

C语言课后习题答案

C语言课后习题答案

C语言课后习题答案5请参照本章例题,编写一个C程序,输出以下信息:**************************Very Good!**************************解:mian(){printf(“**************************”);printf(“\n”);printf(“Very Good!\n”);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<b)max=b;if(max<c)max=c;printf(“最大数为:“%d”,max);}第三章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’,并输出。

C语言程序设计》课后习题详细答案

C语言程序设计》课后习题详细答案

《全国计算机等级考试二级教程——C语言程序设计》习题分析与详细解答第一章程序设计基本概念习题分析与解答1.1 【参考答案】EXE1.2 【参考答案】[1].C [2].OBJ [3].EXE1.3 【参考答案】[1]顺序结构[2]选择结构[3]循环结构第二章C程序设计的初步知识习题分析与解答一、选择题2.1 【参考答案】B)2.2 【参考答案】D)2.3 【参考答案】B)2.4 【参考答案】A)2.5 【参考答案】C)2.6 【参考答案】A)2.7 【参考答案】B)2.8 【参考答案】B)2.9 【参考答案】D)2.10 【参考答案】C)2.11 【参考答案】B)2.12 【参考答案】B)2.13 【参考答案】A)二、填空题2.14 【参考答案】[1]11 [2]122.15 【参考答案】[1]4.2 [2]4.22.16 【参考答案】[1]{ [2]} [3]定义[4]执行2.17 【参考答案】[1]关键字[2]用户标识符2.18 【参考答案】[1]int [2]float [3]double2.19 【参考答案】float a1=1.0, a2=1.0;或float a1=1, a2=1;(系统将自动把1转换为1.0)2.20 【参考答案】存储单元2.21 【参考答案】 3.52.22 【参考答案】[1]a*b/c [2]a/c*b [3]b/c*a2.23 【参考答案】把10赋给变量s2.24 【参考答案】[1]位[2]1位二进制数据(0或1)2.25 【参考答案】[1]8 [2]127 [3]01111111 [4]-128 [ 5 ] 10000000 2.26 【参考答案】[1]32767 [2]-32768 [3]10000000000000002.27 【参考答案】[1]十[2]八[3]十六三、上机改错题2.28 【分析与解答】第1行的错误:(1) include是一个程序行,因此在此行的最后不应当有分号(;)。

C语言-习题集参考答案全部

C语言-习题集参考答案全部

目录- 1 -目录第一章C语言基础知识参考答案 ................................................................................ - 2 - 第二章顺序结构参考答案.......................................................................................... - 5 - 第三章选择结构参考答案.............................................................................................. - 7 - 第四章循环结构参考答案............................................................................................ - 11 - 第五章函数参考答案................................................................................................ - 15 - 第六章指针参考答案.................................................................................................... - 18 - 第七章一维数组参考答案............................................................................................ - 21 - 第八章二维数组参考答案.......................................................................................... - 28 - 第九章字符串参考答案.......................................................................................... - 31 - 第十章对C语言的深入讨论参考答案 ....................................................................... - 33 - 第十一章结构体与共用体参考答案............................................................................ - 34 - 第十二章文件参考答案........................................................................................ - 35 -全国计算机等级考试二级教程C 语言习题集参考答案- 2 - 第一章C语言基础知识参考答案一,选择题1 C2 D3 A4 C5 A6 D7 C 分析:C答案以数字开头了8 D 分析:int 是关键字9 C 10 D 11 B12 D 分析:Visual C++6.0中int类型的变量占的字节数为4。

《C语言程序设计(第五版)》习题答案

《C语言程序设计(第五版)》习题答案

《C语⾔程序设计(第五版)》习题答案各章习题参考答案第1章习题参考答案1. 简述C程序的结构特点。

答:(1) ⼀个C语⾔源程序由⼀个或多个源⽂件组成。

每个源⽂件由⼀个或多个函数构成,其中有且仅有⼀个主函数(main函数)。

(2) ⼀个函数由函数⾸部(即函数的第⼀⾏)和函数体(即函数⾸部下⾯的⼤括号内的部分)组成。

函数⾸部包括函数类型、函数名和放在圆括号内的若⼲个参数。

函数体由声明部分和执⾏部分组成。

(3) C程序书写格式⾃由,⼀⾏内可以写多条语句,⼀个语句也可以分写在多⾏中,每个语句必须以分号结尾。

(4)程序的注释内容放在“/*”和“*/之”间,在‘/’和‘*’之间不允许有空格;注释部分允许出现在程序中的任何位置处。

2. 分析例1.3程序的结构。

答:下⾯是例1.3的程序,它的结构是:有且只有⼀个主函数main以及若⼲个其它函数,还有⼀个被主函数调⽤的sumab函数。

函数有⾸部,包括类型和名称,⾸部下的⼤括号中有变量定义、输⼊、计算和输出等语句。

#includeint sumab (int x, int y); /*函数声明*/int main () /*主函数*/{ int a,b,sum; /*定义变量*/printf("请输⼊变量a与b的值:"); /*提⽰信息*/scanf ("%d %d", &a, &b); /*输⼊变量a和b的值*/sum=sumab(a,b); /*调⽤sumab函数*/printf("a与b的和等于%d", sum);/*输出sum的值*/return 0;}int sumab (int x, int y) /*定义sumab函数,并定义形参x、y */{ int z;z=x+y;return z;}3. 分别编写完成如下任务的程序,然后上机编译、连接并运⾏。

(1) 输出两⾏字符,第1⾏是“The computer is our good friends!”,第2⾏是“We learnC language.”。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
for(i=0;i<N;i++)
scanf("%d",&a[i]);
for(i=0;i<N;i++)
{
s=1;
for(j=0;j<N-1-i;j++)
if(a[j]>a[j+1])
{
s=0;
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
if(s==1) break;/*无反序则跳出*/
}
for(i=0;i<N;i++)
printf("%d ",a[i]);
printf("\n");
}
6.3
#include <stdio.h>
#define N 10
gets(ch);
l=strlen(ch);
for(i=0;i<l;i++)
{
n=(long)(ch[i]-48);/*将字符形式的整数转换成整型*/
j=l-i-1;
while(j>0)/*整数每位乘以其位权*/
{
n*=10;
j--;
}
num+=n;
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
i++;
j--;
}
for(k=0;k<N;k++)
printf("%d ",a[k]);
printf("\n");
}
6.6
#include <stdio.h>
#define N 4
a[i]=num;
break;
}
}
printf("插入后的序列:");
for(i=0;i<=N;i++)
printf("%5d",a[i]);
printf("\n");
}
6.4
#include <stdio.h>
void main()
{
int a,x,y,b,i=0;
maxj=j; /*将最大数所在的列号存放在maxj中*/
}
flag=1;/*先架设是鞍点,以flag为1代表*/
for(k=0;k<N;k++)
if(max>a[k][maxj])/*将最大数和其同列元素相比*/
{
flag=0;/*若max不是同列最小,表示不是鞍点,令flag为0*/
第六章:数组
6.1
(1) 1
2
(2) 7 15 3 4 5 2
6.2
#include <stdio.h>
#define N 100
void main()
{
int i,j,s,temp;
int a[N];
printf("请输入100个整数:");
int length,temp,i;
gets(p);
length=strlen(p);
i=0;
if(length%2==0)/*用temp做循环计数器*/
{
temp=length/2;/*字符串为偶数时,循环次数为串长一半*/
void main()
{
int i,j,num;
int a[N+1]={1,4,6,9,13,16,19,28,40,100};
printf("原序列:");
for(i=0;i<N;i++)
printf("%5d",a[i]);
printf("\n");
}
printf("%ld",num);
}
6.9
#include<stdio.h>
#include<string.h>
#define N 10
#define M 10
void main()
{
char ch1[N],ch2[N],ch3[N]={0};
int len1,len2,k=0,i,j;
}
else
{
temp=length/2+1;/*字符串为奇数时,循环次数为串长一半的整数部分加一*/
}
while(temp>=0)
{
if(p[i]!=p[length-1-i])/*字符串对称字符不等*/
for(k=2;k<=n*n;k++)
{
பைடு நூலகம் i=i-1;
j=j+1;
if((i<1)&&(j>n))
{
i=i+2;
j=j-1;
}
else
{
if(i<1) i=n;
if(j>n) j=1;
}
printf("%c",num[i]+55);
else
printf("%d",num[i]);
}
printf("\n");
}
6.5
#include <stdio.h>
#define N 10
void main()
{
int i=0,j=N-1,k,t;
int a[N];
for(k=0;k<N;k++)
printf("无鞍点!");
}
6.7
#include <stdio.h>
void main()
{
int i,j,k,p,n,a[16][16];
p=1;
while(p==1)/*要求阶数在1到15之间的奇数*/
{
printf("请输入n的大小(0<n<16):");
scanf("%d",&a[k]);
while(i<j)
{
while((a[i]<0)&&(i<j)) i++; /*找到左边大于0的数*/
while((a[j]>=0)&&(i<j)) j--; /*找到右边小于0的数*/
if(i<j) /*交换*/
printf("请输入%d选票票值:\n",N);
for(i=0;i<N;i++)
scanf("%d",&vote[i]);
for(i=0;i<N;i++)
{
if(vote[i]<1||vote[i]>4)/*选票值不在1至4之间,废票inva增1*/
{
inva++;
len2=strlen(ch1);
for(i=0;i<len1;i++)
for(j=0;j<len2;j++)
if(ch1[i]==ch2[j])/*有相等的元素则存入新数组中*/
{
ch3[k]=ch1[i];
k++;
}
{
printf("字符串不是回文!\n");
break;/*不是回文,跳出循环*/
{
max=a[i][0];/*开始时假设a[i][0]最大*/
maxj=0; /*将列号0赋给maxj保存*/
for(j=0;j<M;j++)/*找出第i行的最大数*/
if(a[i][j]>max)
{
max=a[i][j];/*将本行的最大数存放在max中*/
long n=1,num=0;
printf("请输入一个%d个元素内的无重复字符的字符串:",N);
gets(ch1);
printf("请再输入一个%d个元素内的无重复字符的字符串:",M);
gets(ch2);
len1=strlen(ch1);/*获得两字符串的长度*/
printf("\n");
}
}
6.8
#include<stdio.h>
#include<string.h>
#define N 10
void main()
{
char ch[N];
int l,i,j;
long n=1,num=0;
printf("请输入一个%d个元素内的整数字符串:",N);
printf("两字符串的交集是:\n");
puts(ch3);
} 6.10
#include<stdio.h>
#define N 10
void main()
{
int vote[N];
int i,inva=0,num1=0,num2=0,num3=0,num4=0;
相关文档
最新文档