c语言第四章练习题答案

合集下载

c语言第四章练习题答案

c语言第四章练习题答案

c语言第四章练习题答案习题四4.5编程判断输入整数的正负性和奇偶性。

流程图如图4-1。

#includemain(){int m;scanf("%d", &m); /*输入一个整数*/if (m >= 0) /*是否为正数*/{if (m%2 == 0) /*是正数,且能被2整除,是正偶数*/{printf("%d is a positive even\n", m);}else /*不能被2整除,是正奇数*/{printf("%d is a positive odd\n", m);}}/*if(m>=0)结束*/else{if (m % 2 == 0){printf("%d is a negative even\n", m); /*是负偶数*/}else{printf("%d is a negative odd\n", m); /*是负奇数*/}} }程序运行结果如下:第一次运行:6↙6 is a positive even第二次运行:-7↙6 is a negative odd4.6编程计算分段函数:1x x e y e -??=??-?000x x x >=<,输入x ,打印出y 值。

流程图如图4-2。

#include#includemain(){int x;double y;scanf("%d", &x); /* 输入一个整数*/if (x > 0){y = exp(-x); /*如果大于0,计算y=exp(-x)的值 */else if (x == 0){y = 1; /*x=0,则y=1*/}else{y = -exp(x); /*x<0,则y=-exp(x)*/` }printf("y=%f\n", y);}程序运行结果如下:第一次运行:4↙y=0.018316第二次运行:0↙y=1.000000第三次运行:-4↙y=-0.0183164.7输入三角形的三条边a,b,c ,判断它们能否构成三角形,若能则指出是何种三角形:等腰三角形、直角三角形、一般三角形。

C 课后习题答案第四章

C  课后习题答案第四章
case 'b' : cout << '$' ; break ;
case 'c' : cout << '*' ; break ;
case 'd' : continue ;
}
cout << '#' << endl ;
}
}
答案:
$#
*#
*#
%
7.#include <iostream.h>
void main()
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
int isPrime(int);
void createAry(int[], int);
void outAry(const int[], int);
void main()
cout << f( a, 3, 3 ) << endl ;
}
int f( int a[][3], int row, int col )
{int i, j, t=1 ;
for( i=0; i<row; i ++ )
for( j=0; j<col; j++ )
{a[i][j] ++ ;
if( i == j ) t*= a[i][j] ;
}
void createAry(int a[], int n)
{ srand( time(0) );

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

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

1、选择题(1)C(2)D(3)B(4)D(5)C(6)B(7)B(8)C(9)A(10)C(11)C(12)B 2、填空题(1)①int men[10] ;②float step[4]={1.9,-2.33,0,20.6};③_int grid[4][10] ;(2)①int m[10]={9,4,7,49,32,-5};②0 9③scanf("%d",m[1]);④m[0] =39;⑤m[0] =a[3]+a[5];(3)①3 ②5 ③8 ④8 ⑤9 ⑥12 ⑦9(4)①int a[10]={9,4,12,8,2,10,7,5,1,3}; ②0 9 ③8 8(5)103、程序填空题(1)array[20]20&array[i ]20max=array[i];min=array[i];sum+array[i];sum/20(2)-5.77000021(3)ABCDEFGHIJKLEFGHIJKLABFDEFGHIJKLABFDEFGHI4、程序设计题(1)#define SIZE 100#include<stdio.h>void main(){int a[SIZE+1],i,j;for(i=2;i<=100;i++)a[i]=i;for(i=2;i<=100;i++)for(j=i+1;j<=100;j++)if(a[i]!=0&&a[j]%a[i]==0)a[j]=0;printf("\n");j=0;for(i=2;i<=100;i++){if(a[i]!=0){printf("%-4d",a[i]);j++;}if(j==10){j=0;printf("\n");}}}(2)#define S 14#include"stdio.h"void main(){int a[S][S],i,j,n;printf("please enter n:");scanf("%d",&n);for(i=1;i<=n;i++){a[i][i]=1;a[i][1]=1;}for(i=3;i<=n;i++)for(j=2;j<i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];for(i=1;i<=n;i++){for(j=1;j<=n-i;j++)printf(" ");for(j=1;j<=i;j++)printf(" %3d",a[i][j]);printf("\n");}}(3)#define SIZE 80#include<stdio.h>void main(){char str1[SIZE+SIZE],str2[SIZE];int i,j;puts("Please enter 2 string:");scanf("%s",str1);scanf("%s",str2);i=0;while(str1[i]!='\0')i++;j=0;while(str2[j]!='\0'){str1[i]=str2[j];i++;j++;}str1[i]='\0';printf("%s\n",str1);}(4)#define SIZE 80#include<stdio.h>#include<string.h>void main(){char string[SIZE];int len,i,j,flag;long number;puts("Please enter a digital string:");scanf("%s",string);len=strlen(string);if(string[0]=='-'){flag=-1;i=1;}else{flag=1;i=0;}number=string[i]-'0';for(i++;i<len;i++)number=number*10+(string[i]-'0');number=flag*number;printf("%d\n",number);}(5)#define SIZE 40#include<stdio.h>void main(){int m,n,i,j;float price[SIZE],sum;printf("\nPlease input M and N:");scanf("%d%d",&m,&n);m=m-n;printf("Please input %d price :",n);sum=0;for(i=0;i<n;i++){scanf("%f",&price[i]);sum=sum+price[i];}printf("Aver are %10.2f.",sum/n);while(m>0){for(i=0;i<n-1;i++)price[i]=price[i+1];printf("\nPlease input one price:"); scanf("%f",&price[n-1]);m--;sum=0;for(i=0;i<n;i++){sum=sum+price[i];}printf("Aber are %10.2f",sum/n);}}。

C语言程序设计教程第四章练习题解析

C语言程序设计教程第四章练习题解析
4对:在C++中在复合语句中定义变量为合法,但在C语言中就是非法得
12、C语言程序得基本单位就是( )、
A.程序行
B、语句
C、函数
D、字符
答案:C
解析:函数就是C语言程序得基本单位
13、C语言中决定函数返回值得类型得就是()、
A、return语句中得表达式类型
B、调用函数得主调函数类型
C。调用函数时临时
intd=1;
intfun(intp)
{
staticintd=5;
d+=p;
printf("%d ",d);
return d;
}
voidmain()

ﻩint a=3;
ﻩprintf("%d \n",fun(a+fun(d)));

A.699
B、66 9
C、61515
D、6 615
答案:C
解析:首先调用fun(d),将全局变量d=1带入,此时fun()函数内得静态局部变量d得值就是1,d+=p后d得值就是6,输出d得值,返回d得值;
A、当调用时,会调用内部函数
B、当调用时,会调用外部函数
C.当调用时,会调用两次,先调用内部函数再调用外部函数
D、都不调用,会报错
答案:A
解析:当内部函数与外部函数重名时,会优先调用内部函数
6、在C语言中,声明外部函数需要添加得关键字就是()
A、extern
B、static
C、this
D.auto
答案:A

ﻩintd=5;
ﻩd+=p++;
ﻩprintf(”%d”,d);
}

《C语言程序设计》教材习题答案第4章

《C语言程序设计》教材习题答案第4章
scanf("%d",&n);
if(++n<10) printf("%d\n",n);
else printf("%d\n",--n);
}
3、若a、b、c1、c2、x、y均是整形变量,正确的switch语句是D
switch(a-b)
{default:y=a*b;break;
case 3:
case 10:y=a-b;break;
{
day+=a[ai][i];
}
day+=d;
printf("这是该年的弟%d天\n",day);
}
7、输入一个字符,判断输入字符的种类,即区分空格、回车、数字字符、英文字母和其他字符(要求分别用if…else if和switch语句编写)。
#include<stdio.h>
void main()
{
else x=6;
else x=7;
12、有如下程序段
int a=14,b=15,x;
char c='A';
x=(a&&b)&&(c<'B');
执行该程序段后,x的值为D 1
13、有如下程序段
int score=5;
switch(score)
{
case 5:printf("very good!");
case 4:printf("Good!");
default:printf("data error!");
}
程序输出结果为D Very good! Good! Data error!

C语言第4章和第7章习题答案

C语言第4章和第7章习题答案

第4章习题答案:1. 编写一个程序,输入一个三角形的三条边,若能构成一个直角三角形,则输出相应的提示信息。

(1).程序分析:若两条边的平方和等于第三条边的平方,则构成一个直角三角形。

(2).程序源代码:#include<stdio.h>void main(){float a,b,c;printf(“输入a,b,c:”);scanf(“%f,%f,%f”,&a,&b,&c);if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)printf(“构成一个直角三角形\n”);}2.输入4个整数,要求按大小顺序输出。

#include<stdio.h>void main(){int t,a,b,c,d;printf("请输入4个整数:");scanf("%d,%d,%d,%d",&a,&b,&c,&d);printf("\na=%d,b=%d,c=%d,d=%d\n",a,b,c,d);if(a<b) {t=a;a=b;b=t;}if(a<c) {t=a;a=c;c=t;}if(a<d) {t=a;a=d;d=t;}if(b<c) {t=b;b=c;c=t;}if(b<d) {t=b;b=d;d=t;}if(c<d) {t=c;c=d;d=t;}printf("排序结果如下:\n");printf("%d,%d,%d,%d\n",a,b,c,d);}3.设计一个程序,判断一个整数是否是素数。

#include<stdio.h>#include<math.h>void main(){int i,m,k;printf("please input an integer:");scanf("%d",&m);k=(int)sqrt(m);for(i=2;i<=k;i++)if(m%i==0) break;if(i>k) printf("%d is a prime.\n",m);else printf("%d is not a prime.\n",m);}4.输入某年某月某日,判断这一天是这一年的第几天。

C语言程序设计第四版第四章答案谭浩强.doc

C语言程序设计第四版第四章答案谭浩强.doc
break;
case 3: printf( * *%d,%d,%d "9hundred9ten9indiv);
printf(n\n反序数字为:”);
printf(H%d%d%d\nM,indiv,ten,hundred);
break;
case 2: printf(n%d,%dH,ten,indiv);
解:计算利润时,要特别注意不同利润的不同提成比例。例如,利润为15万元,其中有10万元按10%的比例提成,另外5万元则按7.5%提成。
(1)用if语句编程序。
#include <stdio.h>
main()
{long i;
float bonus,bonl^bon2^bon4^bon6^bonl0;
bonl=100000*0.1;
printf(M\n反序数字为:”);
printf(fl%d%d\nf\indiv,ten);
break;
case 1: printf(n%dn,indiv);
printf(M\n反序数字为:”);
printf(H%d\nM,indiv);
break;
}
}
4.10企业发放的奖金根据利润提成。利润I低于或等于10万元时,奖金可提成10%;利 润高于10万元,低于20万元(100()00vlW200000)时,其中10万元按10%提成,高于10万元的部分,可提成7.5%;200000<1^400000时,其中20万元仍按上述办法提成(下 同),高于20万元的部分按5%提成;400000<1^600000时,高于40万元的部分按3%提 成;600000 <1^1000000时,高于60万的部分按1.5%提成;1>1000000时,超过100万元 的部分按1%提成。从键盘输入当月利润I,求应发放奖金总数。要求:(1)用if语句编程序; ⑵用switch语句编程序。

c语言程序设计第四章习题答案

c语言程序设计第四章习题答案

第四章选择结构1:实现输入一个字符的大小写字母的转换#include<stdio.h>void main(){char x='a';printf("输入x:\n");scanf("%c",&x);if( x>='A' && x<='Z'){x=x+32; /*是大写,转换为小写,至于为什么要+32吗,请看看大小写字母的ASCII码差值*/}elseif( x>='a' && x<='z'){x=x-32; /*是小写,转换为大写*/}/*其它不用理*/printf("%c\n",x);}2:输入一个大写字母实现,输出字母表中的前后字母,但是当时A 或是Z时提示输出的“没有前面的字母”,“没有后面的字母”#include<stdio.h>void main(){char x;printf("输入一个大写字母x:\n");scanf("%c",&x);if (x=='A'){printf("没有前面的字母");}if( x=='Z'){ printf("没有后面的字母");}else// (x>'A'||x<'Z'){printf("%c, %c",x-1,x+1);}}3:实现的是对百分制的评等级#include<stdio.h>void main(){float x;printf("请输入学生的成绩x的值\n");scanf("%f",&x);if(x>=90&&x<=100){printf("等级为A ");}else{if (x>=80&&x>=89){printf("等级为B ");}elseif (x>=70&&x<=79){printf("等级为C ");}elseif (x>=60&&x<=69){printf("等级为D ");}else{printf("等级为E ");}}}4:知道今天的日期,年月日,求出明天的年月日#include <stdio.h>int main(){int year,month,day;int maxdays[]={31,28,31,30,31,30,31,31,30,31,30,31};printf("请输入年月日,中间用空格隔开!\n");scanf("%d %d %d",&year,&month,&day);if(year%400==0 || (year%4==0 && year%100!=0)) maxdays[1]=29;//闰年二月最大值是29if(month>12 || month<1){printf("日期不合法!\n");return 0;}if(day>maxdays[month-1]){printf("日期不合法!\n");return 0;}day++;if(day>maxdays[month-1]){day=1;month++;if(month>12){month=1;year++;}}printf("明天的日期是:%d-%d-%d\n",year,month,day);return 0;}5:输入三角形的三条边的长度,判断能否构成三角形,并且判断三角形的形状。

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

习 题 四4.5编程判断输入整数的正负性和奇偶性。

流程图如图4-1。

#include <stdio.h>main(){int m;scanf("%d", &m); /*输入一个整数*/if (m >= 0) /*是否为正数*/{if (m%2 == 0) /*是正数,且能被2整除,是正偶数*/{printf("%d is a positive even\n", m);}else /*不能被2整除,是正奇数*/{printf("%d is a positive odd\n", m);}}/*if(m>=0)结束*/else{if (m % 2 == 0){printf("%d is a negative even\n", m); /*是负偶数*/}else{printf("%d is a negative odd\n", m); /*是负奇数*/}} }程序运行结果如下:第一次运行:6↙6 is a positive even第二次运行:-7↙6 is a negative odd4.6编程计算分段函数:1x x e y e -⎧⎪=⎨⎪-⎩000x x x >=<,输入x ,打印出y 值。

流程图如图4-2。

#include <stdio.h>#include <math.h>main(){int x;double y;scanf("%d", &x); /* 输入一个整数*/if (x > 0){y = exp(-x); /*如果大于0,计算y=exp(-x)的值 */}else if (x == 0){y = 1; /*x=0,则y=1*/}else{y = -exp(x); /*x<0,则y=-exp(x)*/` }printf("y=%f\n", y);}程序运行结果如下:第一次运行:4↙y=0.018316第二次运行:0↙y=1.000000第三次运行:-4↙y=-0.0183164.7输入三角形的三条边a,b,c ,判断它们能否构成三角形,若能则指出是何种三角形:等腰三角形、直角三角形、一般三角形。

流程图如图4-3。

#include <stdio.h>#include <math.h>#define LIMIT 1e-6main(){float a, b, c;int flag = 1;scanf("%f, %f, %f", &a, &b , &c); /*输入三角形的三条边*/if ((a + b) > c&& ((b + c) > a)&& ((a + c) > b)) /*三角形的基本条件*/{if (fabs(a-b) <= LIMIT|| fabs(b-c) <= LIMIT|| fabs(c-a) <= LIMIT) /*等腰三角形的条件*/{printf("等腰");flag = 0;}if (fabs(a * a + b * b - c * c) <= LIMIT|| fabs(a * a + c * c - b * b) <= LIMIT|| fabs(c * c + b * b - a * a) <= LIMIT) /*直角三角形的条件 */ {printf("直角");flag = 0;}if (flag){printf("一般");}printf("三角形\n");}else{printf("不是三角形\n");}}程序运行结果如下:第一次运行:3,4,5↙直角三角形第二次运行:4,4,5↙等腰三角形第三次运行:10,10,14.14↙等腰直角三角形第四次运行:3,4,9↙不是三角形4.8在屏幕上显示一张如下所示的时间表:*****Time*****1 morning2 afternoon3 nightPlease enter your choice:操作人员根据提示进行选择,程序根据输入的时间序号显示相应的问候信息,选择1时显示"Good morning",选择2时显示"Good afternoon",选择3时显示"Good night",对于其它选择显示"Selection error!",用switch语句编程实现。

算法思想:使用printf函数输出一个简单的菜单语句,通过switch语句进行选择。

需要注意的问题是:输入选项是字符型的,所以在case后的数字要加单引号。

#include <stdio.h>main(){char c;printf("*****Time*****\n");printf("1 morning \n");printf("2 afternoon \n");printf("3 night \n");printf("please enter your choice"); /*建立相应的菜单 */c = getchar(); /*输入选项*/switch (c) /*通过switch选择 */{case '1':printf("Good morning \n");break;case '2':printf("Good afternoon \n");break;case '3':printf("Good night\n");break;default:printf("Selection error!\n");}}程序运行结果如下:第一次运行:*****Time*****1 morning2 afternoon3 nightPlease enter your choice:1↙Good moning第二次运行:*****Time*****1 morning2 afternoon3 nightPlease enter your choice:3↙Good night4.9读入一个年份和月份,打印出该月有多少天(考虑闰年),用switch语句编程。

#include <stdio.h>main(){int year, month;scanf("%d, %d", &year, &month); /*输入相应的年和月*/switch (month){case 1:case 3:case 5:case 7:case 8:case 10:case 12:printf("31 days\n");break;case 2:if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)){printf("29 days\n"); /*闰年的2月有29天 */}else{printf("28 days\n"); /*平年的2月有28天 */}break;case 4:case 6:case 9:case 11:printf("30 days\n");break;default:printf("Input error!\n");}}程序运行结果如下:第一次运行:1988,5↙31 days第二次运行:1988,2↙29 days第三次运行:1989,2↙28 days4.10编程计算1+3+5+7+ ……+99+101的值。

算法一:利用for循环语句实现,在循环体外为sum赋初值0。

流程图如图4-4。

#include <stdio.h>main(){int i, sum = 0;for (i = 1; i <= 101; i = i+2){sum = sum + i;}printf("sum=%d\n", sum);}算法二:利用while循环语句实现,在循环体外为i和sum赋初值。

#include <stdio.h>main(){int i = 1, sum = 0;while (i <= 101){sum = sum + i;i = i + 2;}printf("sum=%d\n", sum);}程序运行结果如下:sum=26014.11编程计算1*2*3+3*4*5+……+99*100*101的值。

算法思想:用累加算法,通项公式为:term=i*(i+1)*(i+2); i=1,3,…,99。

或者为:term=(i-1)*i*(i+1); i=2,4,…,100。

步长为2。

流程图如图4-5。

#include <stdio.h>main(){int i ;long term, sum = 0;for (i = 1; i <= 99; i = i + 2){term = i * (i + 1) * (i + 2);sum = sum + term;}printf("sum=%ld",sum);}程序运行结果如下:sum=130024504.12编程计算1!+2!+3!+4!+……+10!的值。

算法一:用累加算法,累加项为term=term*i; ;i=1,2,…10。

term初值为1,使用单重循环完成。

流程图如图4-6。

#include <stdio.h>main(){long term = 1,sum = 0;int i;for (i = 1; i <= 10; i++){term = term * i;sum = sum + term;}printf("1!+2!+...+10! = %ld \n", sum);}算法二:用内层循环求阶乘,外层循环控制累加的项数。

#include <stdio.h>main(){long term ,sum = 0;int i, j;for (i = 1; i <= 10; i++){term = 1;for (j = 1; j <= i; j++){term = term * j;}sum = sum + term;}printf("1!+2!+…+10! = %ld \n", sum);}程序运行结果为:1!+2!+…+10! = 40379134.13编程计算a+aa+aaa+….+aa..a(n个a)的值,n和a的值由键盘输入。

相关文档
最新文档