栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言程序设计 余贞侠(课后习题答案)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言程序设计 余贞侠(课后习题答案)

 本文章为C语言程序设计课后习题和答案

-------------------如有错误,欢迎及时评论区指出,目前自主学习不定时更新-------------------------

欢迎大家一起讨论,也欢迎大家一起学习相关的知识,多多交流,一起提高


目录

第一章程序设计基础

第二章 数据类型、运算符和表达式

第三章 顺序结构程序设计

第四章 选择结构程序设计 

第五章 循环结构程序设计

第六章 模块化程序设计 

第七章 数组


第一章程序设计基础

因都为文字叙述题和简答题(后续章节一样),所以暂不更新第一章。

第二章 数据类型、运算符和表达式

1.略, 2.C, 3.D, 4.C, 5.A, 6.A, 7.C, 8.A, 9.A, 10.B, 11.A, 12.D, 13.B, 14.C, 16.略。

15.代码如下:

#include
int main(){
	float F;//定义一个华氏度温度
	scanf("%f",&F);
	printf("C=%f ",5*(F-32)/9);//也可以定义一个C表示出
	return 0;
}

第三章 顺序结构程序设计

1.(1)C, (2)B。

 2.scanf缺少取地址符号'&',printf应该为%d。

3.(1)BOY换行 (2)12%,15.500000%。

4.略。

5.代码如下

(1)

#include
int main(){
	int l,w;//定义长度和宽度
	int s=0,c=0;//定义面积和周长
	printf("请输入长度和宽度并用空格隔开:n");
	scanf("%d %d",&l,&w);
	s=l*w;
	c=2*(l+w);
	printf("周长为:%dn面积为:%dn",c,s);
	return 0;
}

(2)

#include
int main(){
	char Letter,letter;//定义大写字母和小写字母
	printf("输入一个大写字母:n");
	Letter=getchar();
	letter=Letter+32;//大写字母为小写字母ASCII码+32
	printf("转换前:%ctASCII码为:%dn转换后:%ctASCII码为:%dn",Letter,Letter,letter,letter);
	return 0;
}

(3)

#include
int main(){
	int num1,num2,num3,num4,num5;
	printf("请输入5个数:n");
	scanf("%d%d%d%d%d",&num1,&num2,&num3,&num4,&num5);
	printf("计算结果为:n");
	printf("%015.8lf",(float)num1/num2*num3+num4-num5);
	
	return 0;
}

(4)

#include
int main(){
	int num1;
	char ch1,ch2;
	float num2;
	printf("请输入4个数据(依次为1个整数、2个字符、1个实数)n");
	scanf("%d %c %c %f",&num1,&ch1,&ch2,&num2);
	printf("这4个数据倒序为:n");
	printf("4-%.2f 3-%c 2-%c 1-%d",num2,ch2,ch1,num1);//参考书上输出所以保留两位
	return 0;
}

(5)

#include
int main(){
	int y,m,d;
	printf("please input a date:n");
	scanf("%d-%d-%d",&y,&m,&d);
	printf("the date is:n");
	printf("%d/%d/%d",y,m,d);//若需要考虑月和日0开头则格式化输出即可
	return 0;
}

(6)

#include
int main(){
	int num,sum;//sum用于统计;
	printf("请输入一位三位数整数n");
	scanf("%d",&num);
	printf("百位为%d 十位为%d 个位为%d ",num%10,num/10%10,num/100%10);
	sum=num%10+num/10%10+num/100%10;
	printf("位数之和为%d n",sum);//可以循环依次取余相加也可
	return 0;
}

(7)

#include
#include//方便使用根号公式
int main(){
	int a,b,c;
	a=4,b=4;//手动输入则修改为读入即可
	c=sqrt(a*a+b*b);//c等于根号下a方+b方
	printf("斜边为:%dn",c);//会丢掉小数位
	return 0;
}

(8)略

(9)

#include
#include//方便使用根号公式
int main(){
	int r1,r2;//定义小圆半径和大圆半径
	printf("依次输入小圆半径和大圆半径:n");
	scanf("%d %d",&r1,&r2);
	float PI=3.14,S;//圆周率和圆环面积
	S=PI*(r2*r2-r1*r1);
	printf("%.3f n",S);
	return 0;
}

-----------------------------------------------------------------------------------------------------------------6.30日更新

第四章 选择结构程序设计 

(1)

#include
int main(){
	int num1,num2,num3,num4;
	int max1,max2;
	printf("请输入4个数字:n");
	scanf("%d %d %d %d",&num1,&num2,&num3,&num4);
	if(num1>=num2){
		max1=num1;
		max2=num2;
	}else{
		max1=num2;
		max2=num1;
	}if(max1<=num3){
		max2=max1;
		max1=num3;
	}else if(max2<=num3){
		max2=num3;
	}
	if(max1<=num4){
		max2=max1;
		max1=num4;
	}else if(max2<=num4){
		max2=num4;
	}
		printf("最大值是%d,次大值是%dn",max1,max2);
	return 0;
}

(2)

#include
int main(){
	int x;
	printf("请输入x的数值:n");
	scanf("%d",&x);
	if(x<1){
		printf("y的值为%d n",x);
	}else if(x>=30){
		printf("y的值为%d n",7*x-3);
	}else{
		printf("y的值为%dn",3*x+5);
	}
	return 0;
}

(3)

#include
int main(){
	int x;
	printf("请输入x的数值:n");
	scanf("%d",&x);
	if(x>=0){
		printf("x的值为%d n",x);
	}else{
		printf("x的绝对值为%dn",-x);
	}
	return 0;
}

(4)

 #include
 #include//方便使用abs函数判断两数之差
int main(){
	int a,b,c;
	printf("请输入a b c的数值:n");
	scanf("%d %d %d",&a,&b,&c);
	if(a+b>c && abs(a-b)b && abs(a-c)a && abs(b-c)

(5)

#include
int main(){
	char ch;
	printf("请输入一个字符:n");
	ch=getchar();
	if(ch>='a' && ch<='z'){
		printf("大写为%c n",ch-32);
	}else if(ch>='A' && ch<='Z'){
		printf("小写为%c n",ch+32);
	}else if(ch>='0' && ch<='9'){
		printf("ASCII码为 %d n",ch);
	}else{
		printf("@ n");
	}
	return 0;
}

(6)

#include
 int main(){
	double BMI,kg,m;
	printf("请输入身高(m)和体重(kg):n");
	scanf("%lf %lf",&m,&kg);
	BMI=kg/(m*m);
	if(BMI<18.5){
		printf("体重过低n");
	}else if(BMI>=18.5 && BMI<24){
		printf("正常范围n");
	}else if(BMI>=24 && BMI<28){
		printf("超重n");
	}else{
		printf("肥胖n");
	}
	return 0;
}

 (7)

 #include
 int main(){
	int num1,num2,num3,num4;
	int max1,max2,max3,max4;
	printf("请输入4个数字:n");
	scanf("%d %d %d %d",&num1,&num2,&num3,&num4);
	max1=max2=max3=max4=0;
	if(num1>=num2){
		max1=num1;
		max2=num2;
	}else{
		max1=num2;
		max2=num1;
	}if(max1<=num3){
		max3=max2;
		max2=max1;
		max1=num3;
	}else if(max2<=num3){
		max3=max2;
		max2=num3;
	}else{
		max3=num3;
	}if(max1<=num4){
		max4=max2;
		max2=max1;
		max1=num4;
	}else if(max2<=num4){
		max4=max2;
		max2=num4;
	}else{
		max4=num4;
	}if(max3>=max4){
		printf("%d %d %d %dn",max1,max2,max3,max4);//本章输出前两位大小也可以用此方法
	}else{
		printf("%d %d %d %dn",max1,max2,max4,max3);
	}
	return 0;
}

第五章 循环结构程序设计

(1)

#include 
int main(){
	int n,fac=1,sum=0;
	printf("请输入n的值:n");
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		for(int k=i;k>0;k--){
			fac*=k;
		}
		sum+=fac;
		fac=1;
	}
	printf("%d的阶乘加和为%d ",n,sum);
	return 0;
}

(2)

#include 
int main(){
	int sum=0;
	printf("1000以内的完数有:");
	for(int i=1;i<1000;i++){
		for(int k=1;k 

(3)

#include 
int main(){
	int m,n,min;
	printf("请输入m和n:n");
	scanf("%d %d",&m,&n);
	if(n>m){
		min=m;
		m=n;
		n=min;
	}
	for(int i=n;i>0;i--){
		if(n%i==0&&m%i==0){
			min=i;
			break;
		}
	}
	printf("最大公约数为%d ",min);
	return 0;
}

(4)

#include 
int main(){
	double sum,h;//定义总米数和高度
	h=100;
	sum=100;//因为只有第一次是单独一次下落
	for(int i=1;i<10;i++){
		h/=2;
		sum+=h*2;
	}
	printf("总经过长度%lf,第8次反弹高度为%lf",sum,h);
	return 0;
}

(5)

#include 
int main(){
	printf("请输入一串字符:n");
	int sum1,sum2,sum3;
	char ch;
	sum1=sum2=sum3=0;
	while((ch=getchar())!='n'){
		if(ch>='a' && ch<='z'){
			sum1++;
		}else if(ch>='A' && ch<='Z'){
			sum1++;
		}else if(ch>='0' && ch<='9'){
			sum2++;
		}else{
			sum3++;
		}
	}
	printf("英文字母次数为%d 数字为次数为%d 其他字符次数为%d ",sum1,sum2,sum3);
	return 0;
}

(6)

#include 
int main(){
	printf("请输入任意个整数空格隔开,用-888表示结束:n");
	int num1,max,min;
	num1=0;
	scanf("%d",&num1);
	if(num1==-888){
		return 0;
	}
	max=min=num1;
	while(num1 != -888){
		if(num1>max){
			max=num1;
		}else if(num1 

(7)

#include 
int main(){
	int one,five,ten;
		for(ten=5;ten<=100;ten+=5){
			for(five=5;five<=100;five+=5){
				for(one=5;one<=100;one+=5){
					if(one+five*5+ten*10==100){
						printf("一元的要%d张,五元的要%d张,十元的要%d张n",one,five,ten);
					}
				}
			}
		}
}

(8)

#include 
int main(){
	int g,m,x;//分别是公鸡 母鸡 小鸡
		for(g=1;g<=100;g+=5){
			for(m=1;m<=100;m+=3){
				for(x=3;x<=100;x+=3){
					if(x+m*3+g*5==100){
						printf("小鸡%3d只,母鸡%3d只,公鸡%3d只n",x,m,g);//美观3可不用
					}
				}
			}
		}
}

--------------------------------------------------------------------------------------------------7.2更新

第六章 模块化程序设计 

(1)

#include
#include//方便使用根号公式
void S(int r1,int r2);
int main(){
	int r1,r2;//定义小圆半径和大圆半径
	printf("依次输入小圆半径和大圆半径:n");
	scanf("%d %d",&r1,&r2);
	S(r1,r2);
	return 0;
}
void S(int r1,int r2){
	float PI=3.14,S;//圆周率和圆环面积
	S=PI*(r2*r2-r1*r1);
	printf("%.3f n",S);
}

(2)

#include 
void M(int sum);
int main(){
		int sum=0;
		printf("1000以内的完数有:");
		M(sum);
		return 0;
}
void M(int sum){
	for(int i=1;i<1000;i++){
		for(int k=1;k 

(3)

#include 
int Zd(int m,int n);//最大公约数
int Zx(int m,int n);//最小公倍数
int main(){
	int m,n,min,max;
	printf("请输入m和n:n");
	scanf("%d %d",&m,&n);
	max=Zd(m,n);
	min=Zx(m,n);
	printf("最大公约数为%d 最小公倍数%d",max,min);
	return 0;
}
int Zd(int m,int n){
	int a=0;
	if(n>m){
		a=m;
		m=n;
		n=a;
	}
	for(int i=n;i>0;i--){
		if(n%i==0&&m%i==0){
			a=i;
			return a;
		}
	}
 return -1;
}
int Zx(int m,int n){
	int a=0;
	if(n>m){
		a=m;
		m=n;
		n=a;
	}
	for(int i=m;i>=0;i--){
		if(m%i==0&&n%i==0){
			a=m/i*n;
			return a;
		}
	}
	return -1;
}

(4)

#include 
int judge1(int m);
int judge2(int m);
int main(){
	int m;
	printf("请输入一位五位数m:n");
	scanf("%d",&m);
	if(judge1(m)){
		if (judge2(m)){
			printf("%d是回文数字n",m);
		}
	}else{
		printf("%d不是回文数字n",m);
	}

	return 0;
}
int judge1(int m){
	int flag=0;
	if(m%10==m/10000){
		flag=1;
	}
	return flag;
}
int judge2(int m){
	int flag=0;
	if(m/1000%10 == m/10%10){
		flag=1;
	}
	return flag;
}

(5)

#include 
void Dput( int m);
int main(){
	int m;
	printf("请输入一位数m:n");//超过十位建议用char读入
	scanf("%d",&m);
	printf("逆序数为:n");
	Dput(m);
	return 0;
}
void Dput( int m){
	int x=0;
	for(;m>0;m/=10){
		x=m%10;
		printf("%d ",x);
	}
}

(6)1.输出如下

 :var equal 0
 :static var equal 0
 :var equal 0
 :static var equal 1
 :var equal 0
 :static var equal 2

2.输出如下

 :the num equal 2
 :the internal block num equal 1
 :the num equal 3
 :the internal block num equal 2
 :the num equal 4
 :the internal block num equal 3

第七章 数组

 (1)

#include
void Sort(float a[],int n);
int main()
{
	float a[100];
	int i,c=0;
	char ch;
	for(i=0;ch!='n';i++){
		scanf("%f",&a[i]);
		ch=getchar();
		c++;
	}
	Sort(a,c);
	for(int j=0;j 

(2)

#include
#include
#define N 10
float average(int a[]);
int cmp(int a[],float sum);
int main()
{
	printf("请输入十个数:n");
	int a[N]={0};
	int b=0;
	float sum=0.0;
	for(int i=0;ib[k]){
			temp=k;
		}
	}
	return temp;
}

(3)

#include
#define N 10
void minimum(int a[N][N],int min);
void maximum(int a[N][N],int max);
int main()
{
	int a[N][N];
	int max,min;
	max=min=a[0][0];
	minimum(a,min);
	maximum(a,max);
	return 0;
}
void minimum(int a[N][N],int min){
	int row,con;
	for(int i=0;i<=N;i++){
		for(int k=0;kmax){
				max=a[i][k];
				row=i;
				con=k;
			}
		}
	}
	printf("最大值是%d,第%d行和第%d列n",max,row,con);
}

(4)

#include
#define N 3
void row(int a[N][N]);
void con(int a[N][N]);
int main()
{
	int a[N][N]={};
	for(int i=0;i 

(5)

#include
#include
int compare(char a[][100]);
int main()
{	printf("请输入三串字符:n");
	char a[3][100]={};
	for(int i=0;i<3;i++){
		gets(a[i]);
	}
	printf("最大的字符串是%s",a[compare(a)]);
	return 0;
}
int compare(char a[][100]){
	int max=0;
	for(int i=0;i<3;i++){
		if(strcmp(a[i],a[i+1])>0){
			max=i;
		}else{
			max=i+1;
		}
	}
	return max;
}

(6)

#include
#include
#define N 40
int mystrcpy(char a[],char b[]);
int main()
{
	char s1[N]="I love you everday";
	char s2[]="I love English";
	if(mystrcpy(s1,s2)){
		printf("复制成功,内容为%s",s1);
	}else{
		printf("复制失败");
	}
	return 0;
}
int mystrcpy(char a[],char b[]){
	int i;
	if(strlen(b)>strlen(a)){
		return 0;
	}
	for(i=0;b[i]!='';i++){
		a[i]=b[i];
	}
	a[i]='';
	return 1;
}

(7)

#include
#include
void transform(long int sum,char a[100]);
int main()
{	printf("请输入一串数字:n");
	char a[100];
	gets(a);
	long int sum=0;//-2^31~2^31-1
	transform(sum,a);
	return 0;
}
void transform(long int sum,char a[100]){
	int flag=0,i=0;
	if(a[0]=='-'){
		flag=1;
		i++;
	}
	for(i=i;a[i]!='';i++){
		sum=sum*10+(a[i]-'0');
	}
	if(flag){
		printf("%ld ",sum*-1);
	}else{
		printf("%ld ",sum);
	}
}

-----------------------------------------------------------7.5更新

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1005230.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号