C语言程序设计案例教程(程立倩 主编)课本练习答案 模块五

合集下载

C语言程序设计案例教程习题参考答案人大版

C语言程序设计案例教程习题参考答案人大版

第1章 C语言概述训练习题参考答案一、选择题1.C2.C3.C4.B5.B6.D7.B8.C9.B 10.A11.C 12.A 13.A二、填空题1、Noname.c2、 main()函数3、/*和*/4、scanf()和printf()5、源文件.c 目标文件.obj 可执行文件.exe6、分号;7、语句8、ALT+F59、编译连接10、函数首部和函数体第二章数据的表现形式训练题参考答案一、选择题1.D) 2.D) 3.D) 4.A) 5.B)6.B) 7.B) 8.D) 9.B) 10.B)11.A) 12.C) 13.A) 14.A) 15.D)16.C) 17.A) 18.D) 19.D) 20.C) 21.B) 22.C)二、填空题1、单引号 1 双引号由0个或若干个字符字符串结束标志‘\0’2、0x4b 01130165 11761 0x3d3、324、7 85、自动转换强制转换6、6、37、%d %u %f %e %c %s8、字母数字下划线9、4 810、65 B11单引号双引号12、优先级结合性13、256 -214、3315、016、-117、6553518、319、FFCC20、-128~127 正整数负整数第3章运算符与表达式训练习题参考答案一、选择题1.C2.A3.B4.A5.B6.B7.B8.A9.D 10. D 11.A 12.C 13.C 14.C 15.C 16.C 17.A 18.B 19.D 20.C 21.A 22.A 23.D 24.A 25.C 26.B 27.B 28.A 29.C 30.A31.A 32.D 33.D 34.D 35.A 36.A 37.D二、填空题1. a=4,i=52. p=15,q=24,i=8,j=83. a=-6i=6b=-5j=64. 123535145. a=2,b=2,k=26. a=4,b=17. 1008. 19. a=97b=98c=97d=9810. 211.10 612.(x>20&&x<30)||x<-10013. 114. 1015. -1616. 语法错误17. 118. 019. 0 020. 36 1E 01111021. 5第4章数据的输入和输出训练习题参考答案一、选择题1、C2、A3、A4、B5、C6、C7、B8、A9、D 10、B11、B 12、B 13、D 14、A 15、B16、D 17、C 18、A 19、D 20、C21、C 22、B 23、C 24、A 25、C26、A 27、B 28、A 29、D 30、C 31、C二、填空题1、 a=1,b=22、 5.0,4,c=33、 04、 35、 2.16、 6.67、 x+=1;8、 2619、 1610、 -311、 i=10,j=2012、 b13、 6第5章程序流程的控制训练习题参考答案一、选择题1、D2、A3、A4、B5、C6、D7、B8、C9、B 10、B11、A 12、C 13、B 14、B 15、D16、D 17、A 18、B 19、A 20、D21、A 22、A 23、B 24、B 25、C 26、C二、填空题1、 b = i + 12、 i<10i % 3 != 03、 184、 1.0/(i*i)5、 06、 527、 89218、 x9、 510、 1711、 X12、 /i 或 *1.0/i 或 *1/i *(1.0/i) 或 /(double)I13、 1 3 214、 615、 -ffun(10)三、编程题1. 输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。

c语言程序设计第五版习题答案解析

c语言程序设计第五版习题答案解析

习题解析与答案第1章C语言概述一.简答题1.概述C语言的主要特点。

【解答】(1)语言简洁、紧凑,使用方便、灵活。

(2)数据类型丰富,表达能力强。

(3)运算符多样。

C语言中的运算符包含的范围非常广泛。

(4)具有结构化的控制语句。

如if…else语句、while语句、do while语句、switch 语句、for语句。

(5)允许直接访问物理地址。

C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。

(6)所生成的目标代码质量高,可移植性好。

2.构成C语言程序的基本单位是什么?它由哪几部分组成?【解答】函数是构成C语言程序的基本单位。

一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。

3.C语言程序的运行一般要经过哪几个步骤?【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。

二.运行程序写结果1.输入下面程序并运行。

main(){int a1,a2,x;a1=100;a2=50;x=a1-a2;printf(″x=%d\n″,x);}【解答】运行结果为:x=502.输入下面程序并运行。

main(){int a1,a2,x;a1=10;a2=20;x=a1*a2;printf(″a1=%d,a2=%d\n″,a1,a2);printf(″x=%d\n″,x);}【解答】运行结果为:a1=10,a2=20x=2003.输入下面程序并运行。

#include <stdio.h>main(){printf("******\n");printf(" *****\n");printf(" ****\n");printf(" ***\n");printf(" **\n");printf(" *\n");}【解答】运行结果为:*********************思考:可以修改程序,使之输出平行四边形,等腰三角形等图形。

c语言程序设计第五版习题答案

c语言程序设计第五版习题答案

c语言程序设计第五版习题答案Prepared on 24 November 2020习题解析与答案第1章C语言概述一.简答题1.概述C语言的主要特点。

【解答】(1)语言简洁、紧凑,使用方便、灵活。

(2)数据类型丰富,表达能力强。

(3)运算符多样。

C语言中的运算符包含的范围非常广泛。

(4)具有结构化的控制语句。

如if…else语句、while语句、dowhile语句、switch语句、for语句。

(5)允许直接访问物理地址。

C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。

(6)所生成的目标代码质量高,可移植性好。

2.构成C语言程序的基本单位是什么它由哪几部分组成【解答】函数是构成C语言程序的基本单位。

一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。

3.C语言程序的运行一般要经过哪几个步骤【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。

二.运行程序写结果1.输入下面程序并运行。

main(){inta1,a2,x;a1=100;a2=50;x=a1-a2;printf(″x=%d\n″,x);}【解答】运行结果为:x=502.输入下面程序并运行。

main(){inta1,a2,x;a1=10;a2=20;x=a1*a2;printf(″a1=%d,a2=%d\n″,a1,a2);printf(″x=%d\n″,x);}【解答】运行结果为:a1=10,a2=20x=200三.编程题1.参照本章例题,编写一个C程序,用于显示如下信息:*************************IloveCprograms!*************************【分析与提示】①要有文件包含语句#include<>。

C语言中没有数据的输入、输出等功能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf 等来实现的。

C语言程序设计(科学出版社)第5章 课后习题参考答案

C语言程序设计(科学出版社)第5章 课后习题参考答案

第5章习题参考答案2填空题(1)32(2)4(3)str1[7]= '\0';(4)for(i=0;i<6;i++) gets(a[i]);(5)strcpy(web, "");(6)int *p=a;(7)5(8)1(9)*(p+6)或*(s+6)4程序阅读题(1)6(2)str(3)60(4)bcdefgacdefgabdefgabc(5)a1e25程序填空题(1)# include <math.h> scanf("%f", &a[i]) s=0; x=a[0] fabs(a[i]-s) (2)scanf("%d",&n) a[i][i]=1 a[i-1][j-1] printf("\n")(3)b[i]!='\0' strcpy puts(b)(4)p=a[0]; 或p=&a[0][0]; *p六、编程题1、使用数组和指针2种方法来处理。

方法一(使用数组)#include <stdio.h>void main(){ int i=0,a[10],t;printf("Enter the 10 number=\n");for(i=0; i<10; i++)scanf("%d",&a[i]);for(i=0;i<5;i++){ t=a[i];a[i]=a[9-i];a[9-i]=t;}for(i=0; i<10; i++)printf("%d ",a[i]);printf("\n");}方法二(使用指针)#include <stdio.h>void main(){ int i=0,a[10],t,*p,*q;printf("Enter the 10 number=\n");for(p=a; p<a+10; p++)scanf("%d",p);p=a;q=a+9;for(;p<q;p++,q--){ t=*p;*p=*q;*q=t;}for(p=a; p<a+10; p++)printf("%d ",*p);printf("\n");}2、方法一(使用数组)#include <stdio.h>main(){int i, j, t, n, a[11]={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};for(i=0;i<10;i++)printf("%d ", a[i]);printf("\n");printf("Enter the Move n=?");scanf("%d", &n);for(i=1; i<=n; i++){t=a[10];for(j=9;j>=0;j--) a[j+1]=a[j];a[0]=t;}for(i=0; i<=10; i++)printf("%d ", a[i]);getch();}方法二(使用指针)#include <stdio.h>void main(){ int i,t, n, a[11]={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10},*p=a;for(;p<a+11;p++)printf("%d ", *p);printf("\n");printf("Enter the Move n=?");scanf("%d", &n);for(i=1; i<=n; i++){p=a+10;t=*p;for(;p>a;p--) *p=*(p-1);*p=t;}for(p=a;p<a+11;p++)printf("%d ", *p);}3、#include <stdio.h>#include <stdlib.h>main(){int a[100], b[100], i, j, p, n=0, t;randomize();for(i=0; i<100; i++){a[i]=random(100);if(a[i]%2==0) b[n++]=a[i]; }for(i=0; i<n-1; i++){p=i;for(j=i+1; j<n; j++)if(b[j]>b[p]) p=j;t=b[p]; b[p]=b[i]; b[i]=t; }for(i=0; i<n; i++){printf("%d ", b[i]);if(i%10==9) printf("\n"); }getch();}4、#include <stdio.h>#include <stdlib.h>#define N 50main(){int a[N], i, j,p,t; randomize();for(i=0; i<N; i++){a[i]=random(100);for(j=0;j<i;j++)if(a[i]==a[j]){ i--;break;}}for(i=0; i<N-1; i++){p=i;for(j=i+1; j<N; j++)if(a[j]>a[p]) p=j;t=a[p]; a[p]=a[i]; a[i]=t;}for(i=0; i<N; i++){printf("%d ", a[i]);if(i%10==9) printf("\n");}}5、#include <stdio.h>#define N 10void main(){int i;float a[N],s=0.0,x0=0.0;for(i=0;i<N;i++){ scanf("%f",&a[i]);x0+=a[i];}x0/=N;for(i=0;i<N;i++)s+=(a[i]-x0)*(a[i]-x0);printf("%10.6f", s);}6、#define N 4#define M 3void main(){ int i,j,sum,a[N][M+1],max,p;printf("input score\n");for(i=0;i<N;i++) /*i代表学生序号*/{ sum=0; /*每位学生成绩输入前,其总成绩赋初值0*/ for(j=0;j<M;j++) /*j代表课程代号*/{ scanf("%d",&a[i][j]); /*输入第i号学生第j门课程的成绩*/ sum=sum+a[i][j]; /*累加求总成绩*/}a[i][M]=sum; /*求第i个学生的总成绩放到a[i][M]*/ }max=a[0][M];p=0;for(i=1;i<N;i++) /*查找总成绩最高的学生*/if(a[i][M]>max) p=i;printf("No.%d Total score:%d\n",p+1,a[p][M]);}7、#include <stdio.h>void main(){int a[5][6];int i, j, mi, mj;for(i=0; i<5; i++)for(j=0; j<6; j++){printf("input a[%d][%d]:", i, j);scanf("%d", &a[i][j]);}mi=0; mj=0;for(i=0; i<5; i++){for(j=0; j<6; j++){if(a[i][j]<a[mi][mj]) { mi=i; mj=j; }printf("%d ",a[i][j]);}printf("\n");}printf("min=%d ",a[mi][mj]);}8、#include <stdio.h>#include <math.h>void main(){float a[5][6];int i, j, max;printf("Enter array a=?\n" );for(i=0; i<5; i++)for(j=0; j<6; j++)scanf("%f", &a[i][j]);for(i=0; i<5; i++){ max=a[i][0];for(j=0; j<6; j++) /*查找第i行中绝对值最大的元素*/if(fabs(a[i][j])>fabs(max)) max=a[i][j];for(j=0; j<6; j++) /*第i行中所有元素除以绝对值最大的元素*/{ a[i][j]=a[i][j]/max;printf("%8.4", a[i][j]);}printf(" -----max =%8.4\n",max);}}9、#include <stdio.h>#include <string.h>#define N 20main(){char str[N][15],st[15],*p=st;int i, j;for(i=0; i<N; i++)scanf("%s", str[i]);for(i=0; i<N; i++)for(j=0; j<N-i-1; j++)if(strcmp(str[j],str[j+1])>0){strcpy(p,str[j]);strcpy(str[j],str[j+1]);strcpy(str[j+1],p);}for(i=0; i<N; i++)printf("%s\n", str[i]);}10、程序如下:#include <stdio.h>main(){int a[10], b[10], t;int n=0, m=0, i, j, f;printf("Input Array a, end with –1:");scanf("%d", &t);while(n<10 && t!=-1){ a[n++]=t; scanf("%d", &t); }printf("Input Array b, end with –1:");scanf("%d", &t);while(m<10 && t!=-1){ b[m++]=t; scanf("%d", &t); }for(i=0; i<n; i++) /* 打印只在数组a中出现的元素*/{f=1;for(j=0; j<m; j++)if(a[i]==b[j]) {f=0; break;}if(f) printf("%d", a[i]);}for(i=0; i<m; i++) /* 打印只在数组b中出现的元素*/{f=1;for(j=0; j<n; j++)if(b[i]==a[j]) {f=0; break;}if(f) printf("%d", b[i]);}}11、#include <stdio.h>main(){char str[81];int i=-1;printf("Input:");scanf("%s", str);while(++i<80 && str[i]!= '\0')if(str[i]== '$') str[i]= 'S';puts(str);}12、#include <stdio.h>void main(){ char x[80],y[26]; int i,j,ny=0;gets(x);for(i=0;x[i]!='\0';i++)if(x[i]>='A'&&x[i]<='Z') {for(j=0;j<ny;j++)if(y[j]==x[i]) break;if(j==ny) { y[ny]=x[i]; ny++; }}for(i=0;i<ny;i++)printf("%c ",y[i]);printf("\n");}13、#include <stdio.h>void main(){ int m, bin[32],j;scanf("%d",&m);for(j=0;m!=0;j++){bin[j]= m%2;m=m/2;}for(;j!=0;j--)printf("%d", bin[j-1] );}14、#include <stdio.h>#include <string.h>#include <ctype.h>void main(){ char s[80];int i=0;gets(s);while(s[i]!='\0')if(isdigit(s[i])) strcpy (s+i,s+i+1);else i++;puts(s);}15、void main(){int a,b,c;int *p1,*p2,*p3,*t;printf("\nPlease input three integers:\n"); scanf("%d,%d,%d",&a,&b,&c);p1=&a,p2=&b,p3=&c;if(*p1>*p2)t=p1,p1=p2,p2=t;if(*p1>*p3)t=p1,p1=p3,p3=t;if(*p2>*p3)t=p2,p2=p3,p3=t;printf("new order:\n");printf("%d,%d,%d",*p1,*p2,*p3);}16、void main(){char st[80],ss[20],sp[20],*a=st,*b=ss,*t=sp; int i,n,m,p=-1;printf("\nPlease input two string:\n");gets(a);gets(b);n=strlen(a);m=strlen(b);for(i=0;i<=n-m+1;i++){a=st+i;strncpy(t,a,m); /*将字符指针a指向的字符串取前m个字符复制到t所指的字符串中*/if(strcmp(b,t)==0){p=i;break;}}if(p==-1)printf("%d",p);elseprintf("%d",p+1); /*因数组下标从0开始,所以输出p+1*/getch();}17、#include <string.h>void main(){char st[80],*p=st,ch;printf("Enter a string\n");gets(p);while(*p!='\0'){ ch=*p;if(ch>='A' && ch<='Z')ch='A'+('Z'-ch);else if(ch>='a' && ch<='z')ch='a'+('z'-ch);*p=ch; /*转换后的字符替换原字符*/p++; /*指针指向下一个字符*/} /*指针指向字符串首字符*/p=st;puts(p);getch();}18、#include <string.h>void main(){char st[80],*p=st,ch;long k=0;printf("Enter a string\n");gets(p);strupr(p);while(*p!='\0'){ ch=*p;if(ch>='0' && ch<='9' || ch>='A' && ch<='F')p++;elsestrcpy(p,p+1); /*滤去所有的非十六进制字符*/ }p=st;while(*p!='\0') /*将十六制数转换成十进数*/{ ch=*p;if(ch>='0' && ch<='9' )k=16*k+(ch-'0');else if(ch>='A' && ch<='F')k=16*k+(10+ch-'A');p++;}printf("%ld\n",k);}。

C语言程序设计(第3版)第5章习题参考答案

C语言程序设计(第3版)第5章习题参考答案
printf(" 1: input 2:find 3:sort \n");
printf(" 4: insert 5:delete 6:exit \n");
while(1)
{ printf("\nplease input a menu option:");
scanf("%d",&iMenu);
switch(iMenu)
break;
case 4: printf("\nplease input the data to be inserted:");
scanf("%d",&iInsert);
for(i=0;i<10;i++)
{
if(iInsert>iScore[i])
{
iFlag=i;
break;
}
}
for(i=10;i>iFlag;i--)
{
if(iScore[j]<iScore[j+1])
{
iTemp = iScore[j];
iScore[j] = iScore[j+1];
iScore[j+1] = iTemp;
}
}
}
printf("\nthe sorted datas :");
for(i=0;i<10;i++)
printf("%d ",iScore[i]);
printf("%d\t",s[i][0]);
for(j=1;j<=i;j++)

C程序设计(第五版)-第6章利用数组处理批量数据课后习题答案

C程序设计(第五版)-第6章利用数组处理批量数据课后习题答案

C程序设计(第五版)-第6章利⽤数组处理批量数据课后习题答案1.⽤筛选法求100质数⼜称素数。

⼀个⼤于1的⾃然数,除了1和它⾃⾝外,不能被其他⾃然数整除的数叫做质数;否则称为合数(规定1既不是质数也不是合数)先解释⼀下筛选法的步骤:<1> 先将1挖掉(因为1不是素数)。

<2> ⽤2去除它后⾯的各个数,把能被2整除的数挖掉,即把2的倍数挖掉。

<3> ⽤3去除它后⾯的各数,把3的倍数挖掉。

<4> 分别⽤5…各数作为除数去除这些数以后的各数。

上述操作需要⼀个很⼤的容器去装载所有数的集合,只要满⾜上述条件,即2的倍数⼤于1的全部置0,3的倍数⼤于1的全部置0,4的倍数⼤于1的全部置0……⼀直到这个数据集合的末尾,这样⼀来不为0的数就是素数了,然后按下标在⾥⾯进⾏查找就好了1#include <stdio.h>2#include <windows.h>3int main()4{5printf("------------------\n");6int i, j, k, a[100];7// 先给100个数赋值8for (i = 0; i < 100; i++)9{10a[i] = i + 1;11}1213// 1不是质数也不是合数14a[0] = 0;1516for (i = 0; i < 100; i++)17{18for (j = i + 1; j < 100; j++)19{20// 把后⾯的数能整除前⾯的数赋值为021if (a[i] != 0 && a[j] != 0)22{23if (a[j] % a[i] == 0)24{25a[j] = 0; //把不是素数的都赋值为026}27}28}29}3031// 打印质数,每10个换⾏32for (i = 0; i < 100; i++)33{34if (k % 10 == 0)35{36printf("\n");37}38if (a[i] != 0)39{40printf("%d ", a[i]);41k++;42}43}4445return 0;46}2.⽤选择法对101#include <stdio.h>2#include <windows.h>3int main()4{5printf("请输⼊10个数:\n");6int minIndex, temp, a[10];78for (int i = 0; i < 10; i++)9{10scanf("%d", &a[i]);11}1213for (int i = 0; i < 10; i++)14{15minIndex = i;16for (int j = i + 1; j < 10; j++)17{18if (a[j] <= a[minIndex])19{20minIndex = j;21}22}2324temp = a[i];25a[i] = a[minIndex];26a[minIndex] = temp;27}2829printf("排序后结果:\n");3031for (int i = 0; i < 10; i++)32{33printf("%d ", a[i]);34}35return 0;36}3.求⼀个3*31#include <stdio.h>2#include <windows.h>3int main()4{5printf("请输⼊元素:\n");6int x, y, z, a[3][3];7for (int i = 0; i < 3; i++)8{9for (int j = 0; j < 3; j++)10{11scanf("%d", &a[i][j]);12}13}14printf("输出刚刚输⼊的元素:\n");15for (int i = 0; i <= 2; i++)16{17for (int j = 0; j <= 2; j++)18{19printf("%d\t", a[i][j]);20}2122printf("\n");23}24printf("\n");25// 计算对⾓线的合26for (int i = 0; i < 3; i++)27{28x += a[i][i];29}3031for (int i = 0, j = 2; i < 3; i++, j--)32{33y += a[i][j];34}35z = x + y;36printf("左上到右下对⾓线的合:%d\n", x); 37printf("右上到左下对⾓线的合:%d\n", y); 38printf("两条对⾓线之合:%d\n", z);39// 结果40// 请输⼊元素:41// 1 2 3 4 5 6 7 8 942// 输出刚刚输⼊的元素:43// 1 2 344// 4 5 645// 7 8 94647// 左上到右下对⾓线的合:1548// 右上到左下对⾓线的合:3149// 两条对⾓线之合:4650return 0;51}4.1#include <stdio.h>2#include <windows.h>3int main()4{5printf("------------------\n");6int t, x, a[5] = {1, 2, 4, 5, 6};78printf("请输⼊需要插⼊的数字:\n");9scanf("%d", &x);10for (int i = 0; i < 5; i++)11{12if (x < a[i])13{14t = a[i];15a[i] = x;16x = t;17}18printf("%3d", a[i]);19}20printf("%3d", x);2122return 0;23}5.讲⼀个数组的值按逆序重新存放。

C程序设计第五章课后习题答案

C程序设计第五章课后习题答案

循环结构程序设计P115 5.1 用while计算1至100的合.#include<stdio.h>int main(){int i=1,sum=0;while(i<=100) //对于需要运算的值,要么在运算前可以赋值,要么一开始要指定.{sum=sum+i;i++;}printf("The sum is %d .\n",sum);return 0;}P117 5.2 用do-while来做1至100的合.#include<stdio.h>int main(){int i=1,sum=0;do// do-while可以做的事,用while都可以做到.{ //do-while先做一次执行,再判断条件,而while却是先做一个条件,再执行.sum=sum+i;i++;}while(i<=100);printf("The sum is %d .\n",sum);return 0;}P118 5.3 比较do-while与while的差别.#include<stdio.h>{int i,sum=0;printf("Please input a number :");scanf("%d",&i); //输入10以内,正常,11的话,则sum仍然是0.while(i<=10){sum=sum+i;i++;}printf("The sum of 1-10 is %d .\n",sum);return 0;}#include<stdio.h>int main(){int i,sum=0;printf("Please input a number :");scanf("%d",&i); //输入10以内,结果一样.输入11的话,先做操作,所以sum=11.do{sum=sum+i;i++;}while(i<=10); //此重点在于理解二者的差别.printf("The sum of 1-10 is %d .\n",sum);return 0;}P126 5.4 break的例子.#include<stdio.h>int main(){int i,b=0,a,c;for(i=0;i<=1000;i++){printf("Please input amount :"); //循环体内套有输出语句以及跳出语句.scanf("%d",&a);b=b+a;if(b>=100)break; //break是用于跳出循环,对if无效,对while for switch 这一类.}}c=b/i;printf("conut is %d , aver is %d ",i+1,c); //注意%号后的形式,否则可能输出错误.return 0;}P127 5.5 continue的例子.#include<stdio.h>int main(){int i;for(i=1;i<20;i++){if(i%3!=0){continue; //跳过本次I,执行下一个i.}printf("%d ",i);}printf("\n");return 0;}P128 5.6 形成一个4*5的矩阵.#include<stdio.h>int main(){int i,j,a=0; //没有给初值,会出现警告: 使用了未初始化的局部变量“a”.for(i=1;i<=4;i++){for(j=1;j<=5;j++,a++) // a用来控制换行.{if(a%5==0){printf("\n");}printf("%d\t",i*j);}}printf("\n");return 0;}P131 5.7 用一个交错的式子求哌的近似值.#include<stdio.h>#include<math.h>int main() //四分之哌等于(1)-(1/3)+(1/5)-(1/7)+(1/9)-(1/11).{float s=1,n=1,m,sum=0,t;for(m=1;;m=m+2) //不确定哪项才会小于等于十的负六次方,所以不指定,无限下去.{ //不指定第二项,执行语句中应该有控制跳出的句子,否则死循环.t=(s)*(n/m); //这是第一项,s是符号,if(fabs(t)<=1e-6) //应该写在这里,题目要求这一项不累加进去.{break;}sum=sum+t; //因为累加项在这里,所以,一旦跳出就不会累加进来了.s=s*(-1); //变号一次.}printf("四分之一哌的值是%f.\n",sum);printf("一个完整哌的值是%f.\n",sum*4);return 0;}//下面这段小代码用来验证关于数值型数据类型的关系.去掉注释,可运行.//如果出现类似值为全1或是全零的话,一般可以考虑数据类型赋值或是定义错了的问题.//#include <stdio.h> //这是关于int float double三者关复杂关系的,乱啊,如果看不懂,可以通过实验自己明白来.////int main() //在C语言中,1.0认为是实数,即是double型,所以,如果你把它用float输出的话,会有警告:警告 1 warning C4305: “=”: 从“double”到“float”截断.//{// float m,a,b,c; //一旦定义了是这种类型的话,输出或是赋值的时候只能扩展不能截断,意思就是能变成double型,不能变成int型啦.而且后面的赋值会跟着它变成相应的类型.比如下面的m=1,其实得到的是m=1.0.// int d,e,f;// m=1;// a=1.0/3;// b=1/3;// c=m/3;// d=1.0;// e=1/4;// f=1.0/4;// printf("%lf(float用double的%lf来输出是可以的.)\n%f\n%f\n%f\n",m,a,b,c); //不管上面定义什么,这边写的输出类型是什么,就按相应的类型输出,有可能会出错,所以建议按定义的类型来输出.当然扩展的是不会错的,截断的是会错的,比如float可以用%lf来输出,而不能用%d来输出.// printf("%d\n%d\n%d\n",d,e,f); //但是,不相应的int型不可以用%f来输出的.因为int float就不同种类,一个是整数,一个是小数,float double同样是有小数点的!!!!// return 0;//}#include<stdio.h>int main() //这个就是著名的Fibonacci(费波那契数列问题){int f1=1,f2=1,f3,i;printf("%12d\n%12d\n",f1,f2);for(i=1;i<=38;i++) //注意,这是个基础问题,(i=1;i<=5;i++)这里其实进行了次运算,因为有f1,f2,要求有个,所以要有个.要么写<=38,要么写<39,边界问题一定要注意,不可以太随意!!!!{f3=f1+f2;printf("%12d\n",f3); //这个问题同样适用于"一对兔子一个月生一对"的问题.,f1=f2; //f1=f1+f2;此时它们各是,所以,现在的f1是.f2=f3; //f2=f2+f1;此时的f1已经是最先二者之和了.可以不用到f3.}return 0;}#include<stdio.h>#include<math.h>int main(){double num;int i;printf("Please input a number :");scanf("%lf",&num); //因为sqrt要求是浮点型,那就给它浮点型,需要时再强制转换.for(i=2;i<=sqrt(num);i++) //这边是<=号没错.{if((int)num%i==0) //如果在这期间有任何一个可以为零的话,则不是素数.{break; //当然跳出.}} //执行到这里的时候,i=5,已经变成了!!if(i<=sqrt(num)){printf("Not %d",(int)num);}else//如上所述,i=5,超出了求根的值,所以是素数.{printf("Yes %d",(int)num);}return 0;}P137 5.10 求100至200间的素数.#include<stdio.h>//不解释,HOHO>>>>...#include<math.h>int main(){double j;int i,k=0;for(j=100;j<=200;j++){for(i=2;i<=sqrt(j);i++){if((int)j%i==0){break;}}k=k+1; //这里是布局的开头.学习一下,有助逻辑.if(i<=sqrt(j)){printf("Not %d ",(int)j);if(k%5==0) //5个换一次行.{printf("\n");}}else{printf("Yes %d ",(int)j);if(k%5==0){printf("\n");}}}return 0;}P139 5.11 密码转换.#include<stdio.h>int main(){char c;c=getchar();while(c!='\n') //这也可以用数组来实现.{if((c>='a'&&c<='z')||(c>='A'&&c<='Z')){if((c>='w'&&c<='z')||(c>='W'&&c<='Z')){c=c-22;}else{c=c+4;}printf("%c",c);c=getchar(); //套在循环里,依次得到字母,而while中判断回车为结束.}}printf("\n"); //这是布局问题.return 0;}P140 0.3 最大公约数和最小公倍数.#include<stdio.h>//最大公约数用累除法,除到无余数时的被除数是最大公约数.main (){int m, n, c, d;int gcd(); //这是最大公约数的缩写,此处调用函数,可以不写里面的实参.int lcm(); //这是最小公倍数的缩写,此处调用函数,可以不写里面的实参.printf("Please input two number :\n");scanf("%d %d",&m,&n);c=gcd(m,n); //c获取最大公约数d=lcm(m,n); //d获取最小公倍数printf("The GCD of %d and %d is : %d !\n", m, n, c);printf("The LCM of %d and %d is : %d !\n", m, n, d);return 0;}int gcd(int x, int y) //最大公约数Greatest Common Divisor{int temp;while(x%y!=0){temp=y; //y在下一轮中作为除数,即是下一轮中的X,所以先闪一边去.y=x%y; //x,y的余数作为下一轮中的Y,由x%y来取得.x=temp; //刚才temp中存储了y的值,现在拿出来作为下一轮中的X使用.}return y; //这是每一轮中的被除数,按原理来,这就是最大公约数,即累除法的原理. }int lcm(int x, int y) //最小公倍数Lowest Common Multiple{int i, temp;if(x<y) //此段代码结果是保证二者大的数在X上,小的数在Y上.即小于号降序.{ //以下为经典三行码,实现两个数的互换.temp=x;x=y;y=temp;}for(i=1; i<=y; i++) //设定一个区间,从1至大的数之间的循环.{if(!((x*i)%y)) //此式子如有余数,加上"!"号,会是假,则不返回,进行下一轮.{ //如此往复,直到取模无余数,那么小的数X乘以区间当前的I值,就是最小公倍数.return x*i;}}}P140 0.4 判断一串输入的字符.#include<stdio.h>int main(){char ch;int a=0,b=0,c=0,d=0,e=0;printf("Please input the string\n");while((ch=getchar())!='\n') //直到回车.{if(ch<='z'&&ch>='a'){a++;}else if(ch==' '){c++;}else if(ch<58&&ch>47){d++;}else if(ch<='Z'&&ch>='A'){b++;}else{e++;}}printf("大写%d 小写%d 空格%d 数字%d 其它%d\n",a,b,c,d,e);}#include<stdio.h>//不理解时可以百度或是谷歌更多的信息.int main() //想办法既快速做完,又要消化理解!!!{int temp,i,a,n,sum=0; //主逻辑,友好性暂时放松.scanf("%d %d",&a,&n); //a是数字,n是要乘的个数.temp=a; //先把第一阶的值存起来.for(i=0;i<n;i++){sum=sum+a;printf("%d + ",a); //事关布局.a=a*10+temp; //重点是每次乘,然后加上上一个数.}printf("= %d .",sum);return 0;}P140 0.6 1!+2!+3!+4!.....的值. #include<stdio.h>int main() //1!+2!+3!+4!.....{int i,j,k,sum=0,m=1;scanf("%d",&k); //比如设定为,值为.for(i=1;i<=k;i++) //第一层循环,指定到.{for(j=1;j<=i;j++) //第二层循环,指定至当前数.{m=m*j;} //到此是阶乘的结构.sum=sum+m;m=1;}printf("%d",sum); //完全不理解时,搜索并参考.return 0; //尝试自己做,第一次做出来就是自己的东西了. }#include<stdio.h>int main(){int a,b;double c,asum=0,bsum=0,csum=0;for(a=1;a<=100;a++) //三个块分别注释验证结果.{asum=asum+a;}for(b=1;b<=50;b++) //在VS运行中,注意*.cpp为C++语言.{bsum=bsum+b*b; //为了避免语言差别,请注意文件名为*.c.}for(c=1;c<=10;c++) //c作浮点运算,所以定义在double类型中.{csum=csum+1/c;}printf("%lf",asum+bsum+csum);return 0;}PP#include<stdio.h>#include<math.h>int main(){int j,k,s[6],x=100,y,sum=0;for(j=153;j<=154;j++){for(k=2;k>=0;k--){s[k]=j%(int)pow(10,k+1)/(int)pow(10,k);y=pow(s[k],3);sum+=y;printf("%d-%d--%d\t",k,s[k],j);}printf("%d\n",sum);}return 0;}P140 0.8 水仙花数.//#include <stdio.h> //一步步的发现问题.////int main() //在%和/号之间,以前pow.以后再做.//{// int i,j,k,a,b,c,sum=0; //这里逻辑对,算出来却错了.// for(i=2;i<=4;i++) //计算机在想什么,看来它的大脑难以模拟.// {// for(j=pow(10,i);j<=pow(10,i+1)-1;j++) //我不完全明白它遵守的逻辑. // {// for(k=0;k<=i;k++)// {// sum+=pow((j%pow(10,i+1)/pow(10,i)),3);// }// if(sum==j)// {// printf("%d 是水仙花数!\n",j);// }// sum=0;// }// }// return 0;//} //为什么还是无法实现?!#include<stdio.h>#include<math.h>int main(){int a,b,c,i,sum=0; //这里只计算三位数的.for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;sum+=a*a*a+b*b*b+c*c*c;if(sum==i){printf("%d 是水仙花数.\n",i);}sum=0;}return 0;}P141 0.9 完数.#include<stdio.h>int main(){int i,j,r;for(i=1;i<=1000;i++) //零是个临界值,不能包括它.{r=0; //每次清零重来.类似水仙中的sum.for(j=1;j<i;j++){if(i%j==0) //除得尽即是因子.{r=r+j; //然后累加进去.}}if(r==i) //若相等.{printf("%d 是完数.\n",i);}}return 0;}P141 0.10 2/1+3/2+5/3+8/5+13/8…#include<stdio.h>int main() //10.007051{double i,a=2,b=1,c,s=0; //a是分子,b是分母.for(i=0;i<6;i++) //二十可以用户指定.{s+=a/b; //中间储值变量.c=a+b;b=a;a=c;}printf("%lf\n",s);return 0;}#include<stdio.h>int main() //从一百开始,减一半再自加两次,下降一次,反弹一次.{double sum=100,high=100,up,donw,i;for(i=1;i<10;i++) //不管指定到哪个数,都不会超过三百.{up=high/2;donw=up;high=donw; //自咬尾巴问题.sum+=donw*2;}printf("%lf %lf\n",donw,sum);return 0;}P141 0.12 猴子吃桃子.#include<stdio.h>int main() //从一百开始,减一半再自加两次,下降一次,反弹一次.{int i,sum=1;for(i=1;i<=10;i++) //临界要清楚,结果要与手算的前几个实例相匹配.{printf("倒数第%d天还剩有%d个桃子.\n",i,sum);sum=(sum+1)*2;}//printf("%d\n",sum);return 0;}#include<stdio.h>#include<conio.h>main() //只关注左半部分.右半部分无视空格.{int i,j,k,m=6; //m可指定,指定中心点位置.可任意奇偶.for(i=1;i<=m;i++) //上半部分.其实也是正三角.{for(j=1;j<=m-i;j++) //一到中心点前i个位置填充空格.printf(" ");for(k=1;k<2*i;k++) //空格后向前填充星号的个数.是奇数.一,三,五... printf("*");printf("\n");}for(i=m-1;i>0;i--) //下半部分.其实也是倒三角.{ //减一是因为行数问题.这是中心行以下的.for(j=m-1;j>=i;j--)printf(" ");for(k=1;k<2*i;k++)printf("*");printf("\n");}getch(); //用户反应后结束.但,没必要.}。

c语言程序设计第五版习题答案

c语言程序设计第五版习题答案

c语言程序设计第五版习题答案习题解析与答案第1章C语言概述一.简答题1.概述C语言的主要特点。

【解答】语言简洁、紧凑,使用方便、灵活。

数据类型丰富,表达能力强。

运算符多样。

C语言中的运算符包含的范围非常广泛。

具有结构化的控制语句。

如ifelse语句、while语句、do while语句、switch语句、for语句。

允许直接访问物理地址。

C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。

所生成的目标代码质量高,可移植性好。

2.构成C语言程序的基本单位是什么它哪几部分组成【解答】函数是构成C语言程序的基本单位。

一个完整的C程序一般文件包含、宏定义、函数说明、变量和一个或若干个函数组成。

3.C语言程序的运行一般要经过哪几个步骤?【解答】xx;编译;连接,生成EXE文件;执行。

二.运行程序写结果1.输入下面程序并运行。

main {int a1,a2,x; a1=100; a2=50; x=a1-a2;printf; }【解答】运行结果为:x=50 2.输入下面程序并运行。

main {int a1,a2,x; a1=10; a2=20; x=a1*a2;printf; printf;}【解答】运行结果为:a1=10,a2=20 x=2001三.编程题1.参照本章例题,编写一个C程序,用于显示如下信息: *************************I love C programs! ************************* 【分析与提示】①要有文件包含语句#include 。

C语言中没有数据的输入、输出等功能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf等来实现的。

这些函数的说明都包括在文件中。

②main是主函数的名称。

用{}括起来的内容是函数体,函数体若干条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束。

③注意显示的信息有三行,所以要用到换行符“\\n”。

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

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

C语言程序设计教程第五章课后习题参考答案一、选择题1. B2. A3. C4. B5. D二、填空题1. while2. binary3. 164. 35. continue6. global三、判断题1. 错误2. 正确3. 错误4. 错误5. 正确四、编程题1.```c#include<stdio.h>int main() {int num;printf("请输入一个整数:"); scanf("%d", &num);if (num % 2 == 0) {printf("%d是偶数\n", num); } else {printf("%d是奇数\n", num); }return 0;}```2.```c#include<stdio.h>int main() {int num1, num2;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);printf("%d与%d的和为%d\n", num1, num2, num1 + num2); return 0;}```3.```c#include<stdio.h>int isPrime(int num) {int i;if (num <= 1)return 0;for (i = 2; i <= num / 2; i++) {if (num % i == 0) {return 0;}}return 1;}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (isPrime(num)) {printf("%d是素数\n", num); } else {printf("%d不是素数\n", num); }return 0;}```4.```c#include<stdio.h>int factorial(int num) {int i, result = 1;for (i = 1; i <= num; i++) {result *= i;}return result;}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);printf("%d的阶乘为%d\n", num, factorial(num)); return 0;}```五、简答题1. C语言逻辑与运算符(&&)短路特性是什么?答:C语言逻辑与运算符(&&)具有短路特性,即在进行逻辑与运算时,如果前一个表达式的值为假(0),则后面的表达式将不会被计算,整个逻辑与表达式的值直接为假(0)。

c语音设计第五版习题答案

c语音设计第五版习题答案

c语音设计第五版习题答案C语言设计第五版习题答案C语言是一门广泛应用于计算机编程领域的高级编程语言,它简洁、高效,被广泛用于各种软件开发和系统编程任务中。

而《C语言设计第五版》是一本经典的C语言教材,它深入浅出地介绍了C语言的基础知识和编程技巧。

在学习过程中,习题是巩固知识和提高编程能力的重要途径。

下面将为大家提供一些《C语言设计第五版》习题的参考答案。

1. 以下代码的输出结果是什么?```c#include <stdio.h>int main() {int a = 10;int b = 5;if (a > b) {printf("a is greater than b\n");} else {printf("b is greater than a\n");}return 0;}答案:输出结果是"a is greater than b"。

因为a的值为10,b的值为5,所以a 大于b,满足if条件,输出"a is greater than b"。

2. 编写一个函数,计算两个整数的最大公约数。

```c#include <stdio.h>int gcd(int a, int b) {int temp;while (b != 0) {temp = a % b;a = b;b = temp;}return a;}int main() {int a, b;printf("Enter two integers: ");scanf("%d %d", &a, &b);printf("The greatest common divisor is: %d\n", gcd(a, b));return 0;}```答案:这段代码定义了一个名为`gcd`的函数,使用欧几里得算法计算两个整数的最大公约数。

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

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

"C语言程序设计教程"课后题答案第一章一选择题1.A2.B3.C4.D5.B6.C二.填空题1.程序2.算法3.main或主4.编译5.编译6. .obj7.库函数8.文本或ASCII码三、编程题1.参考代码如下:#include <stdio.h>void main(){printf("金\n木\n水\n火\n土\n");}2. 参考代码如下:#include <stdio.h>void main(){ int a,b;scanf("%d%d",&a,&b);printf("%d+%d=%d\n",a,b,a+b);printf("%d-%d=%d\n",a,b,a-b);printf("%d*%d=%d\n",a,b,a*b);printf("%d/%d=%d\n",a,b,a/b);}3. 参考代码如下:#include <stdio.h>void main(){float a,b,h,s;scanf("%f%f%f",&a,&b,&h);s=(a+b)*h/2;printf("s=%f\n",s);}第二章一选择题答案及分析:1.B,略2.A,-8在存中是以补码〔设两个字节〕形式存储的3.A,C语言有32个关键字〔参见课本第18页〕,且C语言标识符是区分大小写字母的4.A,略5.D,八进制数据中不能出现数码86.B,字符常量应该用单引号括起来,答案D超出了ASCII取值围〔ASCII的取值围为[0,255]〕7.C,该字符串中转义字符有三个:\\、 \22和 \n,普通字符有三个:a、 ,和0,所以字符串长度为68.C,略9.D,C语言没有read函数和%D格式符号,且scanf函数第二个形参为地址列表10.B,根据题意,scanf函数输入数据时分隔符号不应该是逗号,应该是空格或回车符,且输入数据时分一行或几行均可11.A,scanf函数中不允许出现%8.4,%6.2和%8这样的格式符号12.C,既要保证5位小数位,还得保证整数位不变,这样数据12345.67800用10列不能完全显示出来,按C语言规定,12345.67800原样输出13.B,printf函数中格式符号%d,%o,%*表示对应的整型数据分别按十进制,八进制和十六进制输出14.C,按C语言规定,scanf函数形参双引号中,如果包含非格式符号,在输入数据时要求原样输入二.填空题答案及分析:1.int float double〔略〕2.65,89 ,printf函数中如果格式符号是%d,则输出相应字符的ASCII十进制数值3.a=98,b=765.000000,c=4321.000000,scanf函数中的格式符号%2d%3f%4f,表示将键盘输入的数据9876543210按2,3,4位分割,然后再分别赋给变量a,b,c4.scanf("%lf%lf%lf",&a,&b,&c); double类型的变量对应的格式符号是%lf三、编程题1. 参考代码如下:#include <stdio.h>void main(){int a=97;printf("%c\n",a);printf("%d\n",a);printf("%o\n",a);printf("%*\n",a);}程序分析:通过printf函数中不同的格式符号,即%c〔字符〕,%d〔十进制〕,%o〔八进制〕,%*〔十六进制〕输出相应的值。

c语言程序设计第五版习题答案

c语言程序设计第五版习题答案

习题解析与答案第1章C语言概述一.简答题1.概述C语言的主要特点。

【解答】(1)语言简洁、紧凑,使用方便、灵活。

(((switch ((231main(){int a1,a2,x;a1=100;a2=50;x=a1-a2;printf(″x=%d\n″,x);}【解答】运行结果为:x=502.输入下面程序并运行。

main(){int a1,a2,x;a1=10;a2=20;x=a1*a2;printf(″a1=%d,a2=%d\n″,a1,a2);printf(″x=%d\n″,x);}【解答】运行结果为:a1=10,a2=20x=2003.输入下面程序并运行。

#include <stdio.h>1数据的输入、输出都是通过调用系统提供的库函数scanf和printf等来实现的。

这些函数的说明都包括在stdio.h文件中。

②main是主函数的名称。

用{}括起来的内容是函数体,函数体由若干条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束。

③注意显示的信息有三行,所以要用到换行符“\n”。

参考代码:#include <stdio.h>main(){printf("************************\n");printf(" I love C programs! \n");printf("************************\n");}第2章数据类型及其运算一.简答题1.C语言中的数据类型主要有哪几类?21个3变化。

的内存单元中。

其类别包含整形常量、浮点常量、字符常量、字符串常量和枚举常量。

整形常量又分为十进制整形常量、八进制整形常量、十六进制整形常量。

浮点常量分成十进制形式和指数形式。

C语言中的,字符常量是用单括号括起来的一个字符或是字符序列,而字符串常量是用一对双括号括起来的零个或者多个字符组成的序列。

c语言程序设计第五版习题答案

c语言程序设计第五版习题答案
intc;
c=a*b;
printf(‘%d’,c);
}
【答案】错误的地方有3处:(1)第2行关键字应该小写;(2)定义b时前面应该用逗号;(3)打印语句的格式应该用双引号括起来。
正确的程序如下:
#include<>
voidmain()
{
inta=6,b=8;
intc;
c=a*b;
printf("%d",c);
常用结论:
(1)在C语言中,字符数据可以按其ASCII代码值参加整数运算。由于英文字母在ASCII代码表中是按顺序排列的,所以在计算’o’+3代表的字母时,可从字符’o’其顺序向后取3个字母,该字母是“r”。
(2)从ASCII代码表可以看出“小写字母”-“对应大写字母”的结果是32,因此可推算出如下等式:大写字母的ASCII值+32=对应小写字母的ASCII值;小写字母的ASCII值-32=对应大写字母的ASCII值。
}
2.请修改下列程序,使其能够正确运行。
#include<>
voidmain();
{
floatf=;
charc=”c”;
printf(“%d\n”,int(f%3));
printf(“%c”,c);
}
【答案】错误的地方有3处:(1)第2行main();不应该有分号;(2)定义charc=”c”;
时,字符常量应该用单引号;(3)打印语句printf(“%d\n”,int(f%3));的格式有错,应该在f前的int用括号括起来,因为实型数据不能执行取余运算。
a1=10;
a2=20;
x=a1*a2;
printf(″a1=%d,a2=%d\n″,a1,a2);

c语言程序设计第五版习题答案

c语言程序设计第五版习题答案
printf("************************\n");
}
第2章数据类型及其运算
一.简答题
1.C语言中的数据类型主要有哪几类
【解答】短整型(short int)
整型整型(int)
长整型(long int)
基本类型字符型(char)单精度(float)
实型(浮点型)
双精度(double)
int a=6;b=8;
int c;
c=a*b;
printf(‘%d’,c);
}
【答案】错误的地方有3处:(1)第2行关键字应该小写;(2)定义b时前面应该用逗号;(3)打印语句的格式应该用双引号括起来。
正确的程序如下:
#include <>
void main()
{
int a=6,b=8;
int c;
5.下面哪些是不合法的常量说明不合法的理由。
123,,0892,’M’,’\n’,0xabc,,”Morning”,【解答】非法常量有:
0892——含有非八进制数字8和9
——非法指数形式浮点常量:规定e后面的指数必须为整数。
6.下面对变量定义的语句哪些不正确为什么请改正。
(1)char c1,int a2;(2)INT a,b; FLOAT x,y;(3)a,b:char;
4.简述指针、变量的指针、变量的值、指针变量与指针变量的值的含义是什么
【解答】C语言中将地址又称为“指针”。一个变量所分配的内存空间首字节地址,称为该变量的指针(地址),变量的值就被放入所分配的地址单元中。地址一旦被分配,就不会再改变,所以,指针是一个常量。既然是常量就可以把它赋给一个变量。用来存放指针的变量,被称为指针变量。一个指针变量的值是变量的地址,一个指针变量可以被赋予不同的指针值。

《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.”。

c语言程序设计第五版习题答案

c语言程序设计第五版习题答案

习题解析与答案第1章C语言概述一.简答题1.概述C语言的主要特点。

【解答】(1)语言简洁、紧凑,使用方便、灵活。

(2)数据类型丰富,表达能力强。

(3)运算符多样。

C语言中的运算符包含的范围非常广泛。

(4)具有结构化的控制语句。

如if…else语句、while语句、do while语句、switch 语句、for语句。

(5)允许直接访问物理地址。

C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。

(6)所生成的目标代码质量高,可移植性好。

2.构成C语言程序的基本单位是什么?它由哪几部分组成?【解答】函数是构成C语言程序的基本单位。

一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。

3.C语言程序的运行一般要经过哪几个步骤?【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。

二.运行程序写结果1.输入下面程序并运行。

main(){int a1,a2,x;a1=100;a2=50;x=a1-a2;printf(″x=%d\n″,x);}【解答】运行结果为:x=502.输入下面程序并运行。

main(){int a1,a2,x;a1=10;a2=20;x=a1*a2;printf(″a1=%d,a2=%d\n″,a1,a2);printf(″x=%d\n″,x);}【解答】运行结果为:a1=10,a2=20x=200三.编程题1.参照本章例题,编写一个C程序,用于显示如下信息:*************************I love C programs!*************************【分析与提示】①要有文件包含语句#include <stdio.h>。

C语言中没有数据的输入、输出等功能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf等来实现的。

这些函数的说明都包括在stdio.h文件中。

②main是主函数的名称。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档