习题5.7 编写程序

(1)有一函数:
输入X的值,根据函数计算y的值。

#include<stdio.h>
int main(){
	int x,y;
	scanf("%d",&x);
	if(x<-5) y=-3*x+10;
	
	else if(-5<=x&&x<0) y=x;

	else if(x=0) y=0;

	else if(0<x&&x<=5) y=2*x;

	else if(x>5) y=4*x-10;
	printf("%d",y);
	return 0;
	
}

(2)由键盘任意输入3个数,实现按降序输入此三个数。

#include<stdio.h>
int main(){
	int x,y,z,t;
	printf("请输入三个任意数:"); 
	scanf("%d%d%d",&x,&y,&z);//一开始有个错误 “%d,%d,%d”控制运算符用 逗号隔开了,导致	前两个数默认为0了     
	if(x>y)
	{
		t=x;x=y;y=t;
	}
	if(x>z)
	{
		t=x;x=z;z=t;
	}
	if(y>z)
	{
		t=y;y=z;z=t;
	}
	printf("%d,%d,%d",x,y,z);
	return 0;
	
}

(3)输入20个学生的成绩,统计各个分数段的人数。分数段为90及90以上,80–89,70–79,60–69,60以下。

#include <stdio.h>
int main()
{
	int score[20];//定义一个数组,用来存储20个学生成绩
	int i,A=0,B=0,C=0,D=0,E=0;//用A,B,C,D,E,来统计各个分数段的人数 
	printf("请输入20位学生成绩:") ;
	for(i=0;i<20;i++) //用for循环来写 
	{
		scanf("%d",&score[i]) ;//键盘输入20位学生成绩
		if(score4[i]>=90)
		         A++;          //分数90及90以上的 
		else if(score[i]>=80)
		        B++;           //分数80--89的 
		else if(score[i]>=70)
		       C++;            //分数70--79的 
		else if(score[i]>=60)
		       D++;           //分数60--69的 
		else 
		       E++;           //60以下的 
	}
	printf("分数90及90以上的人数:%d\n",A) ;
	printf("分数80--89的人数:%d\n",B) ;
	printf("分数70--79的人数:%d\n",C) ;
	printf("分数60--69的人数:%d\n",D) ;
	printf("分数60以下的人数:%d\n",E) ;
	return 0;
	
} 

(4)输入一行字符,分别统计其中包含的数字,字母和其他字符的个数。

#include <stdio.h>
      int main()
{
     char c;
     printf("请输入一组字符:"); 
     
     int zimu=0,num=0,other=0;
     while((c=getchar())!='\n')//while循环,直到用户按enter结束,               
	 {
	 
     if((c>='A'&&c<='Z')||(c>='a'&&c<='z'))
       zimu++;
     else if(c>='0'&&c<='9')
     num++;
     else 
     other++;
	 }
	 printf("字母有%d个,\n数字有%d个,\n其他有%d个\n",zimu,num,other);
     return 0;
}

(5)(6)(7)
(8)输入3个点坐标,判断他们是否在一条直线上。
【分析】:首先,2点确定一条直线,可以先求出直线方程,然后将第三点代入即可。

#include <stdio.h>
int main(){
    double x1, y1, x2, y2, x3, y3;
    double k, b;
    //输入3个坐标:
    printf("输入点A:x, y:");
    scanf("%lf, %lf", &x1, &y1);
    printf("输入点B:x, y:");
    scanf("%lf, %lf", &x2, &y2);
    printf("输入点C;x, y:");
    scanf("%lf, %lf", &x3, &y3);
 //得到三个点后,用前两个点计算出直线的表达式Y=K*X +b
    k = (y2-y1)/(x2-x1);
    b = y1-k*x1;
  if(y3==k*x3+b)
        printf("三点在一条直线上\n");
    else
        printf("三点不在一条直线上\n");
 
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值