高教c语言程序设计版课后编程题答案.docx

上传人:b****7 文档编号:8805908 上传时间:2023-02-01 格式:DOCX 页数:39 大小:26.28KB
下载 相关 举报
高教c语言程序设计版课后编程题答案.docx_第1页
第1页 / 共39页
高教c语言程序设计版课后编程题答案.docx_第2页
第2页 / 共39页
高教c语言程序设计版课后编程题答案.docx_第3页
第3页 / 共39页
高教c语言程序设计版课后编程题答案.docx_第4页
第4页 / 共39页
高教c语言程序设计版课后编程题答案.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

高教c语言程序设计版课后编程题答案.docx

《高教c语言程序设计版课后编程题答案.docx》由会员分享,可在线阅读,更多相关《高教c语言程序设计版课后编程题答案.docx(39页珍藏版)》请在冰豆网上搜索。

高教c语言程序设计版课后编程题答案.docx

高教c语言程序设计版课后编程题答案

第三章顺序结构

3.30 编写程序,把560分钟换算成用小时和分钟表示,然后进行输出。

※程序如下※

main( )

 int hour,minute; 

 hour=560/60; 

 minute=560%60; 

 printf("hour=%d,minute=%d",hour,minute);

}

3.31 编写程序,输入两个整数:

1500和350,求出它们的商数和余数并进行输出。

※程序如下※

#include

main( )

 int num1,num2,i,j; /* 定义变量 i-商,j-余数 */

 printf("input num1 and num2:

\n"); 

 scanf("%d%d",&num1,&num2); 

 i=n 

}

3.32 编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数点后一位数,

 对小数点后第二位数进行四舍五入,最后输出结果。

※程序如下※

main( )

 double a,b,c,average=0; 

 printf("input a,b,c(double):

\n"); 

 scanf("%lf%lf%lf",&a,&b,&c); 

 average=(a+b+c)/3; 

 average=average*10; 

 average=average+0.5; 

 average=(int)average; 

 average=average/10; 

 printf("average=%lf",average);

}

3.33 编写程序,读入三个整数给a,b,c,然后交换它们中的数,把a中原来的值给b,

 把b中原来的值给c,把c中的值给a。

※程序如下※

main( )

 int a,b,c,t=0; 

 printf("input a b c:

\n"); 

 scanf("%d%d%d",&a,&b,&c); 

 t=c;c=b;b=a;a=t; 

 printf("a=%d b=%d c=%d",a,b,c);

}

第四章选择结构

4.21 当a>0时,请将以下语句改写成switch语句。

 if( a<30 ) m=1;

 else if( a<40 ) m=2;

 else if( a<50 ) m=3;

 else if( a<60 ) m=4;

 else m=5;

※程序如下※

main()

{

 int a;

 printf("Enter a:

\n");

 scanf("%d",&a);

 switch(a/10)

 {

 case 0:

 case 1:

 case 2:

 printf("m=1"); break ;

 case 3:

 printf("m=2"); break ; 

 case 4:

 printf("m=3"); break ;

 case 5:

 printf("m=4"); break ;

 default:

 printf("m=5"); 

 }

}

4.22 编写程序,输入一位学生的生日(年:

y0、月:

m0、日:

d0);并输入当前的日

 期(年:

y1、月:

m1、日:

d1);输出该生的实足年龄。

※程序如下※ 这道题仅做参考!

系统不一样无法运行!

main( )

 int y0,y1,m0,m1,d0,d1,age=0; 

 printf("Your Birthday(yyyy-mm-dd):

\n"); 

 scanf("%d-%d-%d",&y0,&m0,&d0); 

 printf("Current Date(yyyy-mm-dd):

\n"); 

 scanf("%d-%d-%d",&y1,&m1,&d1); 

 if(d1

 if(m1

 age=y1-y0; 

 printf("\nAge=%d",age); 

}

4.23 编写程序,输入一个整数,打印出它是奇数还是偶数。

※程序如下※

main( )

 int i; 

 printf("input a integer:

\n"); 

 scanf("%d",&i); 

 if(i%2==0) /*条件判断*/ 

 printf("%d is a even",i); 

 else 

 printf("%d is a odd",i);

}

——————————————————————————————————

4.24 编写程序,输入a、b、c三个数,打印出最大者。

※程序如下※

main( )

 int a,b,c,max = 0; 

 printf("input (int)a b and c:

\n"); 

 scanf("%d%d%d",&a,&b,&c); 

 max = a; 

 if(max

 if(max

 printf("max=%d",max);

}

——————————————————————————————————

4.25 有一函数:

编写一程序,要求输入x的值,输出y的值。

分别

 

(1)不嵌套的if语句 

(2)嵌套的if语句

 (3)if_else语句 (4)switch语句

※程序如下※

源程序一:

(1)不嵌套的if语句

main( )

 float x; 

 printf("input x:

\n"); 

 scanf("%f",&x); 

 if(x>-5&&x<0) 

 printf("y=%f",x); 

 if(x==0) 

 printf("y=%f",x-1); 

 if(x>0&&x<10) 

 printf("y=%f",x+1); 

 if(x<=-5||x>=10)

 printf("input error");

}

源程序二:

(2)嵌套的if语句

main( )

 float x; 

 printf("input x:

\n"); 

 scanf("%f",&x); 

 if(x>-5&&x<10) 

 { 

 if(x==0) printf("y=%f",x-1); 

 if(x<0) printf("y=%f",x); 

 if(x>0) printf("y=%f",x+1); 

 } 

 if(x<=-5||x>=10)

 printf("input error");

}

源程序三:

(3)if_else语句

main( )

 float x; 

 printf("input x:

\n"); 

 scanf("%f",&x); 

 if(x>-5&&x<10) 

 if(x<0) 

 printf("y=%f",x-1); 

 else if(x==0) 

 printf("y=%f",x); 

 else 

 printf("y=%f",x+1); 

 else 

 printf("input error");

}

源程序四:

(4)switch语句

*/

main()

{

 int flag;

 float x;

 printf("Enter x:

\n");

 scanf("%f",&x);

 if(x>-5 &&x<0) flag=-1;

 if(x==0) flag=0;

 if(x>0 &&x<10) flag=1;

 switch(flag)

 {

 case -1:

 printf("y=%f",x); break;

 case 0:

 printf("y=%f",x-1); break;

 case 1:

 printf("y=%f",x+1); break;

 } 

}/*

第五章循环结构

三、编程题

5.17 编写程序,求1-3+5-7+...-99+101的值。

※程序如下※

main()

{

 int i,sum=0,s=1;

 for(i=1; i<=101;i+=2) 

 {

 sum=sum+i*s;

 s=-s; /*控制符号交替变换*/

 }

 printf("sum=%d",sum);

}

5.18 编写程序,求e的值,e=1+1/1!

+1/2!

+1/3!

+1/4!

+...+1/n!

 

(1)用for循环,计算前50项

 

(2)用while循环,要求直至最后一项的值小于1e-4。

※程序如下※

源程序一:

(1)用for循环实现

main( )

 int i,n; 

 double sum=1,t=1; 

 printf("input n:

\n"); 

 scanf("%d",&n); 

 for(i=1;i<=n;i++) 

 { 

 t=t*i; /* 实现阶乘*/

 sum=sum+1/t; 

 } 

 printf("e=%lf",sum);

}

源程序二:

(2)用while循环实现

#include

main( )

 int i; 

 doubel sum=1,t=1; 

 while(fabs(1.0/t)>1e-4) /* fabs求浮点型数据的绝对值 */

 { 

 t=t*i; 

 sum=sum+1/t; 

 i++; 

 } 

 printf("e=%lf",sum);

}

5.19 编写程序,输出从公元1000年至2000年所有闰年的年号 每输出3个年号换一行。

 判断公元年是否闰年的条件是:

 

(1)公元年数如能被4整除,而不能被100整除,则是闰年。

 

(2)公元年数能被400整除也是闰年。

※程序如下※

main( )

 int i,j=0; 

 for(i=1000;i<=2000;i++) 

 { 

 if((i%4==0)&&(i%100!

=0)||(i%400==0)) /* 判断是否是闰年的条件 */

 { 

 printf("&d ",i); 

 j++; 

 if(j%3==0) /* 控制换行 */ 

 printf("\n"); 

 } 

 }

}

5.20 编写程序,打印以下图形:

*

        ***

      *****

      *******

       *****

        ***

*

※程序如下※

#include

main( )

 int i,j; 

 for(i=1;i<=7;i++) /*控制行数*/ 

 { 

 for(j=1;j<=7;j++) /*控制星数*/ 

 { 

 if((j<=fabs(4-i))||(j>7-fabs(4-i))) 

 printf(" "); 

 else 

 printf("*") 

 } 

 printf("\n"); 

 }

}

#include

#include

main()

{inti,j,k;

for(i=-3;i<=abs(i);i++)

{for(j=0;j<=abs(i);j++)printf(“”);

for(k=0;k<=7-abs(i);k++)printf(“*”);

printf(“\n”);

}

}

第六章字符型数据

6.21 请编写程序,输入一行字符(用回车结束),输出每个字符以及与之对应的ASCII代码值,每行输出三队.

※程序如下※

#include

main( )

 int i=0; 

 char ch; 

 while((ch=getchar( ))!

='\n') 

 { 

 printf("%4c%4d",ch,ch); 

 i++; 

 if(i%3==0) 

 printf("\n"); 

 }

}

6.21 请编写程序,输入一行数字字符(用EOF结束),每个数字字符的前后都有空格。

 请编程,把这一行中的数字转换成一个整数。

例如,若输入:

 2 4 8 3  (代表Enter键)

 则输出整数:

2483

※程序如下※

#include

main()

{

 char ch;

 while((ch=getchar())!

=EOF)

 {

 if(ch==' ')

 continue;

 else 

 printf("%c",ch);

 }

}

6.22 请编写程序统计输入的行数,输入用EOF结束输入。

※程序如下※

#include

main()

{

 char ch;

 int i=0;

 while((ch=getchar())!

=EOF)

 {

 if(ch=='\n') i++;

 }

 printf("%d",i);

}

6.23 请编写程序统计输入的一行中小写字母的个数。

※程序如下※

#include

main()

{

 int i=0;

 char ch;

 while((ch=getchar())!

='\n')

 {

 if((ch>='a')&&(ch<='z'))

 i++;

 }

 printf("%d",i);

}

6.24 请编写输出以下图案的程序,图案的行数由输入的值确定。

 A

 BBB

 CCCCC

 DDDDDDD

 EEEEEEEEE

※程序如下※

#include

main()

{

 int i,j,k,n;

 printf("Enter n(integer):

\n");

 scanf("%d",&n);

 for(i=1;i<=n;i++)

 {

 for(j=n;j>i;j--)

 printf(" ");

 for(k=1;k<=2*i-1;k++)

 printf("%c",64+i);

 printf("\n");

 }

第七章函数

7.14 以下fun函数用以判断n是否是素数,fun函数中有逻辑错,请调试改正。

 fun(int n)

 {

 int k,yes;

 for(k=2;k<=n/2;k++)

 if(n%k==0) return yes=0;

 return yes=1;

 }

※正确答案是:

fun(int n)

{

int k,yes=1;

for(k=2;k<=n/2;k++)

if(n%k==0) return yes=0;

return yes;

}

main()

{

int n,yes;

printf("Enter n (int):

\n");

scanf("%d",&n);

yes=fun(n);

if(yes==1)printf("%d is a prime",n);

else printf("%d is not a prime",n);

7.15 编写函数 int mymod(int a, int b)用以求a被b除之后的余数。

※程序如下※

#include

int mymod( int a, int b )

{

 int remainder;

 remainder=a%b;

 return remainder;

}

main()

{

 int a,b;

 printf("Enter a b (int):

\n");

 scanf("%d%d",&a,&b);

 printf("余数=%d",mymod(a,b));

7.16 编写程序求:

1-1/2+1/3-1/4+1/5-1/6+1/7-...1/n

※程序如下※

main()

{

 int n;

 float a;

 float sum(int n); 

 scanf("%d",&n);

 a=sum(n);

 printf("%10.5f",a);

}

float sum(int n)

 float s=0; 

 int i,t=1;

 for(i=1;i

 { 

 s=s+1/i*t; 

 t=-t; 

 }

 return s;

7.17 编写函数,根据整型形参m的值,计算如下公式的值。

 t=1-1/(2 x 2)-1/(3 x 3)-...-1/(m x m)

 例如:

若m=5,则应输出0.536389。

※程序如下※

main()

{

 float t=1;

 float f2(int);

int i,m;

 scanf("%d",&m);

 for(i=2;i<=m;i++)

 t=t-f2(i);

 printf("t=%f",t);

}

float f2(int m)

{

 float s;

 s=1.0/(m*m);

 return s;

7.18 编写函数用以求表达式x2-5x+4,x作为参数传给函数,调用此函数求:

 y1=22-5*2+4

 y2=(x+15)2-5*(x+15)+4

 y3=sin2x-5*sinx+4

※程序如下※

#include

#include

float fun(float x)

{

 float y;

 y=pow(x,2)-5*x+4;

 return y;

}

main()

{

 float x,y1,y2,y3;

 clrscr();

 printf("Enter x:

\n");

 scanf("%f",&x);

 

 y1=fun

(2);

 y2=fun((x+15));

 y3=fun(sin(x)); 

 printf("y1=%f\ny2=%f\ny3=%f\n",y1,y2,y3);

第八章地址和指针

8.17 请编写函数,其功能是对传送过来的两个浮点数求出和值与差值,并通过形参传

 送回调用函数。

※程序如下※

#include

sum_sub(float a,float b,float *sum, float *sub)

{

 *sum=a+b;

 *sub=a-b;

}

main()

{

 float a,b,sum,sub; /*定义变量sum求和,变量sub求差*/

 printf("Enter a b (float):

\n");

 scanf("%f%f",&a,&b);

 sum_sub(a,b,&sum,&sub); 

 printf("sum=%f,sub=%f",sum,sub);

8.18 请编写函数,对传送过来的三个数选出最大和最小数,并通过形参传回调用函数。

※程序如下※

#include

max_min(double a,double b,double c,double *max,double *min)

{

 *max = a ; /* 假定a的值为最大,把a值赋给指针变量*max */

 if(*max

 if(*max

 *min = a ; /* 假定a的值为最小,把a值赋给指针变量*min */

 if(*min>b) *min = b;

 if(*min>c) *min = c;

}

main()

{

 double a,b,c,max,min;

 printf("Enter a b c (double):

\n");

 scanf("%lf%lf%lf",&a,&b,&c);

 max_min(a,b,c,&max,&min);

 printf("max=%lf,min=%lf",max,min);

第九章函数

9.27 输入一行数字字符,请用数组元素作为计数器来统计每个数字字符的个数.用下标为

 0元素统计字符"1"的个数,下标为1的元素统计字符"2"的个数,...

※程序如下※

#include

void count(int a[])

{

 int i;

 char ch;

 while((ch=getchar())!

='\n')

 for(i=0;i<10;i++)

 if(i==ch-'0')

 if(i==0)

 a[9]++;

 else

 a[i-1]++;

}

main( )

{

 int i,a[10]={0};

 count(a);

 for(i=0;i<10;i++)

 printf("a[%d]=%d\n",i,a);

9.28 编写函数,对具有10个整数的数组进行如下操作:

从第n个元素开始直到最后一个元

 素,依次向前移动一个位置.输出移动后的结果. 

※程序如下※

fun (int a[],int n)

{

 int i;

 for(i=n;i<9;i++)

 a=a[i+1];

}

main()

{

 int a[10]={0,1,2,3,4,5,6,7,8,9},n,i;

 scanf("%d",&n);

 fun(a,n);

 for(i=0;i<9;i++)

 printf("%d ",a);

}

9.29 编写函数把数组中所有奇数放在另一个数组中返回.

※程序如下※

#include

#include

int fun(int a[],int b[])

{

 int i,j=0;

 for(i=0;i<10;i++)

 if(a%2==1)

 b[j++]=a;

 return

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1