C语言课后练习题答案第五章
C语言程序设计 (何钦铭 颜晖 著) 高等教育出版社第五章 课后答案

{
double e,x,cos;
printf("Enter two numbers e and x :"); /*输入两个数e,x */
scanf("%lf%lf",&e,&x);
cos=funcos(e,x); /*调用函数funcos */
printf("The result of cos(%lf) is %lf.\n",x,cos);
printf("sign(%lf)=%d\n",x,y); /*输出x的符号*/
}
int sign(double x) /*定义函数sign */
{
int y;
if(x>0)y=1;
else if(x==0)y=0;
else y=-1;
return y;
}
练习5-2
#include <stdio.h>
#include <stdio.h>
int even(int n); /*声明函数even */
void main()
{
int num,sum=0;
printf("Enter the first number :"); /*输入第一个数*/
scanf("%d",&num);
while(num>0)
{
{
int i,j;
for(i=1;i<=n;i++) /*共n行金字塔*/
{
for(j=1;j<=n-i;j++)printf(" "); /*输出每行左边的空格*/
《C语言程序设计教程》第三版课后习题参考答案

《C语言程序设计教程》第三版课后习题参考答案C语言程序设计教程第三版课后习题参考答案第一章:C语言概述1.1 C语言的特点答案:C语言是一种通用的、面向过程的程序设计语言,具有高效、简洁、灵活等特点。
它提供了丰富的程序设计元素和功能,适用于各种不同的应用领域。
1.2 C语言程序的基本结构答案:C语言程序由预处理指令、函数声明、函数定义、变量声明和语句组成。
其中,预处理指令用来引入头文件或定义宏,函数声明用来声明函数的名称和参数,函数定义用来实现函数的功能,变量声明用来声明变量的类型和名称,语句用来表达具体的计算过程。
1.3 C语言的数据类型答案:C语言提供了多种数据类型,包括基本类型(整型、浮点型、字符型等)和派生类型(数组、指针、结构体等)。
每种数据类型在内存中占据一定的存储空间,并具有特定的取值范围和操作规则。
1.4 C语言的运算符和表达式答案:C语言支持各种运算符和表达式,例如算术运算符(+、-、*、/等)、关系运算符(>、<、==等)、逻辑运算符(&&、||、!等)等。
通过运算符和表达式可以进行各种数值计算和逻辑判断。
第二章:基本数据类型与运算2.1 整型数据类型答案:C语言提供了不同长度的整型数据类型,包括有符号整型(int、long等)和无符号整型(unsigned int、unsigned long等)。
整型数据类型可以表示整数值,并具有不同的取值范围。
2.2 浮点型数据类型答案:C语言提供了浮点型数据类型(float、double等),用来表示带小数部分的实数值。
浮点型数据可以表示较大或较小的数值,并具有一定的精度。
2.3 字符型数据类型答案:C语言提供了字符型数据类型(char),用来表示单个字符。
字符型数据可以用于表示各种字符(包括字母、数字、符号等)。
2.4 布尔型数据类型答案:C语言不直接支持布尔型数据类型,但可以使用整型数据类型来表示布尔值(0表示假、非零表示真)。
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章习题参考答案

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语言程序设计教程 第五章 课后习题参考答案

k++;
if(k%5==0)
printf("\n");
f1=f2;
f2=f;
}
printf("\n");
return 0;
}
P124 3统计一个整数的位数
#include<stdio.h>
int main()
{
int n,k=0;
printf("请输入n的值:");
int main()
{
int x,y,z,i=0;
for(x=1;x<=20;x++)
{
for(y=1;y<=33;y++)
{
for(z=3;z<=99;z=z+3)
{
if((5*x+3*y+z/3==100)&&(x+y+z==100))
i++;
}
}
}
printf("共有%d种买法:\n",i);
c语言程序设计教程第五章课后习题参考答案
P1242古典问题:兔子总数(斐波那契数列)
#include<stdio.h>
int main()
{
int f1=1,f2=1,f,i,k=0;
printf("%d\t %d\t",f1,f2);
k=k+2;
for(i=3;i<=20;i++)
{
f=f1+f2;
do
{
printf("请输入第%d个整数x=",i);
C语言第五章习题带答案

练习5-1答案一、选择题1.合法的数组说明语句是( B )。
A.int a[]="string"; B.int a[]={0,1,2,3,4,5};C.char a="string"; D.char a[5]={'0', '1', '2', '3', '4', '5'}; 2.以下对一维整型数组a的说明正确的是( D )。
A.int a(10); B.int n=10, a[n]; C.int n; D.#define SIZE 10scanf("%d", &n); int a[SIZE];int a[n];3.已知:int a[10];,则对a数组元素的正确引用是( D )。
A.a[10] B.a[3.5] C.a(5) D.a[10-10]4.以下对一维数组a进行正确初始化的语句是( C )。
A.int a[10]=(0, 0, 0, 0, 0); B.int a[10]={};C.int a[]={0}; D.int a[2]={10, 9, 8};5.对以下说明语句的正确理解是( B )。
int a[10]={6, 7, 8, 9, 10};A.将5个初值依次赋给a[1]至a[5]B.将5个初值依次赋给a[0]至a[4]C.将5个初值依次赋给a[6]至a[10]D.因为数组长度与初值的个数不相同,所以此语句不正确二、填空题6.求所有不超过200的N值,N的平方是具有对称性质的回文数。
所谓回文数就是将一个数从左到右与从右到左读都是一样的,例如:34543和1234321都是回文数。
例如:满足题意要求的数有:N=1,11*11=121;N=111,111*111=12321。
#include <stdio.h>main(){int m[16], n, i, t, count=0;long a, k;printf("Result is:\n");for (n=10; n<200; n++){ k=0;t=1;a=n*n;for (i=1; a!=0; i++){ ①;a/=10;}for (; i>1; i--){ k+=m[i-1]*t;②;}if ( ③) printf("%2d:%10d %10d\n", ++count, n, n*n);}}则①为( m[i]=a%10; )、②为( t*=10; )、③为( k==n*n )。
C语言第五章习题带答案
练习5-1答案一、选择题1.合法得数组说明语句就是( B )。
A.int a[]="string";B.int a[]={0,1,2,3,4,5};C.char a="string";D.char a[5]={'0', '1', '2', '3', '4', '5'};2.以下对一维整型数组a得说明正确得就是( D )。
A.int a(10);B.int n=10, a[n];C.int n;D.#define SIZE 10scanf("%d", &n); int a[SIZE];int a[n];3.已知:int a[10];,则对a数组元素得正确引用就是( D )。
A.a[10]B.a[3、5]C.a(5)D.a[10-10]4.以下对一维数组a进行正确初始化得语句就是( C )。
A.int a[10]=(0, 0, 0, 0, 0);B.int a[10]={};C.int a[]={0};D.int a[2]={10, 9, 8};5.对以下说明语句得正确理解就是( B )。
int a[10]={6, 7, 8, 9, 10};A.将5个初值依次赋给a[1]至a[5]B.将5个初值依次赋给a[0]至a[4]C.将5个初值依次赋给a[6]至a[10]D.因为数组长度与初值得个数不相同,所以此语句不正确二、填空题6.求所有不超过200得N值,N得平方就是具有对称性质得回文数。
所谓回文数就就是将一个数从左到右与从右到左读都就是一样得,例如:34543与1234321都就是回文数。
例如:满足题意要求得数有:N=1,11*11=121;N=111,111*111=12321。
#include <stdio、h>main(){int m[16], n, i, t, count=0;long a, k;printf("Result is:\n");for (n=10; n<200; n++){ k=0;t=1;a=n*n;for (i=1; a!=0; i++){ ①;a/=10;}for (; i>1; i--){ k+=m[i-1]*t;②;}if ( ③) printf("%2d:%10d %10d\n", ++count, n, n*n);}}则①为( m[i]=a%10; )、②为( t*=10; )、③为( k==n*n )。
C语言第五章习题及答案
第五章习题答案一、选择题1) 有以下程序#include <stdio.h>main(){ int n=2,k=0;while(k++&&n++>2);printf("%d %d\n",k,n);}程序运行后的输出结果是A)0 2 B)1 3 C)5 7 D)1 22)有以下程序:main(){ int k=5;while(--k) printf("%d",k-=3);printf("\n");}执行后的输出结果是()。
A)1 B)2 C)4 D)死循环3)有以下程序#include<stdio.h>main(){int y=10;while(y--);printf(”y=%d\n”,y);}程序执行后的输出结果是A)y=0 B)y= -1 C)y=1 D)while构成无限循环4) 若变量已正确定义,有以下程序段i=0;do printf("%d,",i);while(i++);printf("%d\n",i)其输出结果是A)0,0 B)0,1 C)1,1 D)程序进入无限循环5)有以下程序:main(){ int i;for(i=1;i<=40;i++){ if(i++%5==0)if(++i%8==0) printf("%d",i); }printf("\n");}执行后的输出结果是()。
A)5 B)24 C)32 D)406) 有以下程序#includes <stdio.h>main(){ int a=1,b=2;for(;a<8;a++) {b+=a; a+=2;}printf ("%d,%d\n",a,b);}程序运行后的输出结果是(A)9,18 (B)8,11 (C)7,11 (D)10,147) 有以下程序#include<stdio.h>main(){int y=9;for( ; y>0;y--)if(y%3= =0) printf("%d",--y);}程序的运行结果是A)741 B)963 C)852 D)8754218) 一下程序段中的变量已正确定义for(i=0;i<4;i++,j++)for(k=1;k<3;k++); printf("*");程序段的输出结果是A)******** B)**** C)** D)*9) 有以下程序#iinclude <stdio.h>main(){ int i,j;for(i=3; i>=1; i--){ for (j=1;j<=2;j++) printf(“%d”,i+j);printf(“\n”);}}程序的运行结果是()A) 2 3 4 B) 4 3 2 C) 2 3 D) 4 53 4 5 5 4 3 3 4 3 44 5 2 3 答案:D 10)有以下程序main(){int i,j;for(i=1;i<4;i++){for(j=i;j<4;j++) printf(“%d*%d=%d “,i,j,i*j);printf(“\n”);}}程序运行后的输出结果是A) 1*1=1 1*2=2 1*3=3 B) 1*1=1 1*2=2 1*3=32*1=2 2*2=4 2*2=4 2*3=63*1=3 3*3=9C) 1*1=1 D) 1*1=11*2=2 2*2=4 2*1=2 2*2=41*3=3 2*3=6 3*3=9 3*1=3 3*2=6 3*3=911) 有以下程序#include<stdio.h>main(){int i,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++) m=m%j;printf("%d\n",m);}程序的运行结果是A)0 B)1 C)2 D)312) 有以下程序#include <stdio.h>main(){ int i=5;do{ if (i%3= =1)if (i%5= =2){printf(“*%d”,i); break; }i++;}while(i!=0);printf(“\n”);}程序的运行结果是A)*7 B)*3*5 C) *5 D)*2*6 答案:A13) 有以下程序#include <stdio.h>main(){ int c=0,k;for(k=1;k<3;k++)switch(k){ default:c+=k;case 2:c++;break;case 4:c+=2;break;}printf("%d\n",c);}程序运行后的输出结果是A)3 B)5 C)7 D)914) 设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是A)n=0;while((ch=getchar())!='\n')n++;B)n=0;while(getchar()!='\n')n++;C)for(n=0;getchar()!='\n';n++);D)n=0;for(ch=getchar();ch!='\n';n++);15)有以下程序#includemain(){int a=1,b=2;while(a<6){b+=a;a+=2;b%二10;}printf(”%d,%d\n”,a,b);}程序运行后的输出结果是A)5,11 B)7,1 C)7,11 D)6,116) 要求通过while循环不断读入字符,当读入字母N时结束循环。
C语言第五章课后答案
#include <stdio.h>void main(){int p,r,n,m,temp;printf("请输入两个正整数n,m:");scanf("%d,%d,",&n,&m);if (n<m){temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}printf("它们的最大公约数为:%d\n",n);printf("它们的最小公约数为:%d\n",p/n);}#include <stdio.h>void main(){char c;int letters=0,space=0,digit=0,other=0;printf("请输入一行字符:\n");while((c=getchar())!='\n'){if (c>='a' && c<='z' || c>='A' && c<='Z')letters++;else if (c==' ')space++;else if (c>='0' && c<='9')digit++;elseother++;}printf("字母数:%d\n空格数:%d\n数字数:%d\n其它字符数:%d\n",letters,space,digit,other); }#include <stdio.h>void main(){int a,n,i=1,sn=0,tn=0;printf("a,n=:");scanf("%d,%d",&a,&n);while (i<=n){tn=tn+a; /*赋值后的tn为i个a组成数的值*/sn=sn+tn; /*赋值后的sn为多项式前i项之和*/a=a*10;++i;}printf("a+aa+aaa+...=%d\n",sn);}#include <stdio.h>void main(){double s=0,t=1;int n;for (n=1;n<=20;n++){t=t*n;s=s+t;}printf("1!+2!+...+20!=%22.15e\n",s);}#include <stdio.h>void main(){int n1=100,n2=50,n3=10;double k,s1=0,s2=0,s3=0;for (k=1;k<=n1;k++) /*计算1到100的和*/{s1=s1+k;}for (k=1;k<=n2;k++) /*计算1到50各数的平方和*/ {s2=s2+k*k;}for (k=1;k<=n3;k++) /*计算1到10的各倒数和*/{s3=s3+1/k;}printf("sum=%15.6f\n",s1+s2+s3);}#include <stdio.h>void main(){int i,j,k,n;printf("parcissus numbers are ");for (n=100;n<1000;n++){j=n/10-i*10;k=n%10;if (n==i*i*i + j*j*j + k*k*k)printf("%d ",n);}printf("\n");}#define M 1000 /*定义寻找范围*/#include <stdio.h>void main(){int k1,k2,k3,k4,k5,k6,k7,k8,k9,k10;int i,a,n,s;for (a=2;a<=M;a++) /* a是2-1000之间的整数,检查它是否完数*/{n=0; /* n用来累计a的因子的个数*/s=a; /* s用来存放尚未求出的因子之和,开始时等于a */for (i=1;i<a;i++) /* 检查i是否a的因子*/if (a%i==0) /* 如果i是a的因子*/{n++; /* n加1,表示新找到一个因子*/s=s-i; /* s减去已找到的因子,s的新值是尚未求出的因子之和*/ switch(n) /* 将找到的因子赋给k1...k9,或k10 */{case 1:k1=i; break; /* 找出的笫1个因子赋给k1 */case 2:k2=i; break; /* 找出的笫2个因子赋给k2 */case 3:k3=i; break; /* 找出的笫3个因子赋给k3 */case 4:k4=i; break; /* 找出的笫4个因子赋给k4 */case 5:k5=i; break; /* 找出的笫5个因子赋给k5 */case 6:k6=i; break; /* 找出的笫6个因子赋给k6 */case 7:k7=i; break; /* 找出的笫7个因子赋给k7 */case 8:k8=i; break; /* 找出的笫8个因子赋给k8 */case 9:k9=i; break; /*找出的笫9个因子赋给k9 */case 10:k10=i; break; /* 找出的笫10个因子赋给k10 */}}{printf("%d ,Its factors are ",a);if (n>1) printf("%d,%d",k1,k2); /* n>1表示a至少有2个因子*/if (n>2) printf(",%d",k3); /* n>2表示至少有3个因子,故应再输出一个因子*/if (n>3) printf(",%d",k4); /* n>3表示至少有4个因子,故应再输出一个因子*/if (n>4) printf(",%d",k5); /* 以下类似*/if (n>5) printf(",%d",k6);if (n>6) printf(",%d",k7);if (n>7) printf(",%d",k8);if (n>8) printf(",%d",k9);if (n>9) printf(",%d",k10);printf("\n");}}}#include <stdio.h>void main(){int m,s,i;for (m=2;m<1000;m++){s=0;for (i=1;i<m;i++)if ((m%i)==0) s=s+i;if(s==m){printf("%d,its factors are ",m);for (i=1;i<m;i++)if (m%i==0) printf("%d ",i);printf("\n");}}}#include <stdio.h>void main(){int i,n=20;double a=2,b=1,s=0,t;for (i=1;i<=n;i++){s=s+a/b;t=a,a=a+b,b=t;}printf("sum=%16.10f\n",s);}#include <stdio.h>void main(){double sn=100,hn=sn/2;int n;for (n=2;n<=10;n++){sn=sn+2*hn; /*第n次落地时共经过的米数*/hn=hn/2; /*第n次反跳高度*/}printf("第10次落地时共经过%f米\n",sn);printf("第10次反弹%f米\n",hn);}#include <stdio.h>void main(){int day,x1,x2;day=9;x2=1;while(day>0){x1=(x2+1)*2; /*第1天的桃子数是第2天桃子数加1后的2倍.*/ x2=x1;day--;}printf("total=%d\n",x1);}#include <stdio.h>#include <math.h>void main(){float a,x0,x1;printf("enter a positive number:");scanf("%f",&a);x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);printf("The square root of %5.2f is %8.5f\n",a,x1);}#include <stdio.h>#include <math.h>void main(){double x1,x0,f,f1;x1=1.5;do{x0=x1;f=((2*x0-4)*x0+3)*x0-6;f1=(6*x0-8)*x0+3;x1=x0-f/f1;}while(fabs(x1-x0)>=1e-5);printf("The root of equation is %5.2f\n",x1); }#include <stdio.h>#include <math.h>void main(){float x0,x1,x2,fx0,fx1,fx2;do{printf("enter x1 & x2:");scanf("%f,%f",&x1,&x2);fx1=x1*((2*x1-4)*x1+3)-6;fx2=x2*((2*x2-4)*x2+3)-6;}while(fx1*fx2>0);do{x0=(x1+x2)/2;fx0=x0*((2*x0-4)*x0+3)-6;if ((fx0*fx1)<0){x2=x0;fx2=fx0;}else{x1=x0;fx1=fx0;}}while(fabs (fx0)>=1e-5);printf("x=%6.2f\n",x0);}#include <stdio.h>void main(){int i,j,k;for (i=0;i<=3;i++){for (j=0;j<=2-i;j++)printf(" ");for (k=0;k<=2*i;k++)printf("*");printf("\n");}for (i=0;i<=2;i++){for (j=0;j<=i;j++)printf(" ");for (k=0;k<=4-2*i;k++)printf("*");printf("\n");}}#include <stdio.h>void main(){char i,j,k; /*是a的对手;j是b的对手;k是c的对手*/ for (i='x';i<='z';i++)for (j='x';j<='z';j++)if (i!=j)for (k='x';k<='z';k++)if (i!=k && j!=k)if (i!='x' && k!='x' && k!='z')printf("A--%c\nB--%c\nC--%c\n",i,j,k);}。
C语言第五章课后答案
}
xt5-5
#include <stdio.h>
int main()
{
int a,n,i=1,sn=0,tn=0;
printf("a,n=:");
scanf("%d,%d",&a,&n);
while (i<=n)
{
tn=tn+a; /*赋值后的tn为i个a组成数的值*/
sn=sn+tn; /*赋值后的sn为多项式前i项之和*/
if (n>8) printf(",%d",k9);
if (n>9) printf(",%d",k10);
printf("\n");
}
}
return 0;
}
xt5-9-2
#include <stdio.h>
int main()
{int m,s,i;
for (m=2;m<1000;m++)
{s=0;
for (i=1;i<m;i++)
count++; // count累加1
}
pi=pi*4; //多项式的和pi乘以4,才是π的近似值
printf("pi=%10.8f\n",pi); //输出π的近似值
printf("count=%d\n",count); //输出循环次数
return 0;
}
xt5-3
#include <stdio.h>
{x0=x1;
x1=(x0+a/x0)/2;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
作业四:简单程序设计
1.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。
如果字符串长度大于5,则输出按方式(B);如果字符串长度小于5,则输出按方式(C)。
(5分)(重要)
A) 从左起输出该字符串,右补空格B) 按原字符长从左向右全部输出
C) 右对齐输出该字符串,左补空格D) 输出错误信息
2.阅读以下程序,当输入数据的形式为:25,13,10<CR>(注:<CR>表示回车),则正确的输出结果为(D)。
(5分)
main()
{ int x,y,z;
scanf(“%d%d%d”,&x,&y,&z);要和这里一样
printf(“x+y+z=%d\n”,x+y+z);
}
…
A) x+y+z=48 B) x+y+z=35 C) x+z=35 D) 不确定值
3.根据下面的程序及数据的输入和输出形式,程序中输入数据的正确形式应该为(WXY)。
(5分)
main()
{ char ch1,ch2,ch3;
scanf(“%c%c%c”,&ch1,&ch2,&ch3);
printf(“%c%c%c”,ch1,ch2,ch3);
}
4.以下的输出结果是(x=1,y=2*sum*=3
10 Squard is : 100)。
(5分)
main()
·
{ int x=1,y=2;
printf(“x=%d y=%d * sum * =%d\n”,x,y,x+y);
printf(“10 Squared is : %d\n”,10*10);
}
5.若a=3,b=4,c=5,x=,y=,z=,u=51274,n=128765,c1=’a’,c2=’b’,想得到以下的输出格式和结果,请写出程序(包括定义变量类型和设计输出)。
要求输出的结果如下:(20分)
a= 3 b= 4 c= 5
x=,y=,z=
x+y= y+z= z+x=
u= 51274 n= 128765
c1=’a’ or 97(ascll)
>
c2=’b’ or 98(ascll)
main()
{ int a=3,b=4,c=5;
float x=,y=,z=;
unsigned u=51274;
long n=128765;
char c1=’a’,c2=’b’;
printf(“a=%d b=%d c=%d\n”,a,b,c);
printf(“x=%f ,y=%f, z=%f\n”,x,y,z);
printf(“x+y=% y+z=%.2f z+x=%.2f\n”,x+y,y+z,z+x);!
printf(“u=%u n=%9ld \n”,u,n);
printf(“c1=’%c’or %d (asc11) \n”,c1,c1);
printf(“c2=’%c’or %d (asc11) \n”,c2,c2);
}
6.请写出下面程序的输出结果。
(20分)
main()
{ int a=5,b=7;
flat x=,y=;
char c='A';
long n=1234567;
-
unsigned u=65535;
printf("%d%d\n",a,b);
printf("%3d%3d\n",a,b);
printf("%-10f,%-10f\n",x,y);
printf("%f,%f\n",x,y);
printf("%,%,%4f,%4f,%3f,%3f\n",x,y,x,y,x,y);
printf("%e,%\n",x,y);
printf("%c,%d,%o,%x\n",c,c,c,c);
printf("%u,%o,%x,%d,",u,u,u,u);
printf("%s,%\n" ,"COMPUTER","COMPUTER");
!
}
57
5 7
,
,
, , ,, ,
,
A,65,101,41
65535,177777,ffff,-1,COMPUTER, __COM
7.用下面的scanf函数输入数据,使a=3,b=7,x=,y=,c1='A',c2='a',问在键盘上如何输入(10分)
[
Main()
{int a,b;
float x,y;
char c1,c2;
scanf("a=%d b=%d",&a,&b);
scanf("%f %e",&x,&y);
scanf(" %c %c",&c1,&c2);
printf("a=%d,b%d,x=%f,y=%f,c1=%d,c2=%c\n",a,b,x,y,c1,c2;
}
a=3_b=用下面的scanf函数输入数据,使a=10,b=20,c1='A',c2='a',x=,
]
y=-3,75,z=,问在键盘上如何输入数据(10分)
Scanf("%5d%d%c%c%f%f*f,%f",&a,&b,&c1,&c2,&x,&y,&z);
解:
main()
{
int a,b;float x,y,z;
char c1,c2;
scanf("%5d%5d%c%c%f%f*f,%f",&a,&b,&c1.&c2,&x,&y,&z);
printf("a=%d,b=%d,c1=5c,c2=%c,x=%6,.2f,y=,,z=\n"),a,b,c1,c2,x.,y,z);
}
-
设圆的半径R=,圆柱高H=3,求圆周长.面积.球表面积.球体积.圆柱体积.用scanf输入数据,输入数据,输出计算结果,输出时要求文字说明,取小数点后2位数字.请编程序。
(20分)
#define Pi
#include””
main()
{ float l,s, qs,qv ,ys,r,h;
Scanf(:%f,%f”,&r,&h);
l=2*Pi*r;
s=Pi*r*r;
qs=4*Pi*r*r;
qv=3*Pi*r*r*r;
ys=2*Pi*r*r+2*Pi*r*h;
printf(“l=%.2f,s=%.2f,qs=%.2f,qv=%.2f,ys=%.2f\n”,l,s,qs,qv,ys); }。