C语言学习4

  1. 对于任一整数n,符号函数的定义如下:

    请编写程序计算该函数对任一输入整数的值。

    #include<stdio.h>
    #include<math.h>
    
    int main(void)
    {
    	int n,y;
    	
    	scanf("%d",&n);
    	
    	if(n < 0){
    		y = -1;
    	}else if(n > 0){
    		y = 1;
    	}else{
    		y = 0;
    	}
    	
    	printf("sign(%d) = %d",n,y);
    	
    	return 0;
    	
    }

  2. 本题要求编写程序,输入N个学生的MOOC成绩,统计优秀、合格证书的数量,以及没有获得证书的数量。学生修读程序设计MOOC,85分及以上获得优秀证书,不到85分但是60分及以上获得合格证书,不到60分则没有证书。输入在第一行中给出非负整数N,即学生人数。第二行给出N个非负整数,即这N位学生的成绩,其间以空格分隔。在一行中依次输出优秀证书、合格证书、没有获得证书的数量,中间以空格分隔。请注意,最后一个数字后没有空格。 

    #include<stdio.h>
    #include<math.h>
    
    int main(void)
    {
    	int count_nice,count_good,count_failure,i,n;
    	double score,total;
    	
    	scanf("%d",&n);
    	total=0;
    	count_nice=0;
    	count_good=0;
    	count_failure=0;
    	
    	for(i=1;i<=n;i++){
    		
    		scanf("%lf",&score);
    		
    		total=total+score;
    		
    		if(score<60){
    			
    			count_failure++;
    			
    		}else if(score>=60&&score<85){
    			
    			count_good++;
    			
    		}else{
    			
    			count_nice++;
    			
    		}
    		
    	}
    	
    	printf("%d %d %d",count_nice,count_good,count_failure);
    	
    	return 0;
    	
     }

  3. 输入三个数(中间用空格相隔)比较大小。在一行中将3个整数从小到大输出,其间以“->”相连。

    #include<stdio.h>
    
    int main(void)
    {
    	int a,b,c,i,n;
    	
    	scanf("%d %d %d",&a,&b,&c);
    		
    		if(a<b&&b<c){
    			
    			printf("%d->%d->%d",a,b,c);
    			
    		}else if(a<c&&c<b){
    			
    			printf("%d->%d->%d",a,c,b);
    			
    		}else if(b<a&&a<c){
    			
    			printf("%d->%d->%d",b,a,c);
    			
    		}else if(b<c&&c<a){
    			
    			printf("%d->%d->%d",b,c,a);
    			
    		}else if(c<a&&a<b){
    			
    			printf("%d->%d->%d",c,a,b);
    			
    		}else{
    			
    			printf("%d->%d->%d",c,b,a);
    			
    		}
    	
    	return 0;
    	
    }

    #include<stdio.h>
    
    int main(void)
    {
    	int x,y,z;
    	int a,b,c;
    	
    	scanf("%d %d %d",&a,&b,&c);
    	
    	if(x>y){
    		if(z>x){
    			a=z;
    			b=x;
    			c=y;}
    		
    		else if(z>y){
    			a=x;
    			b=z;
    			c=y;}
    		
    		else{
    			a=x;
    			b=y;
    			c=z;}
    	}else{
    		if(z>y){
    			a=z;
    			b=y;
    			c=x;}
    		else if(z>x){
    			a=y;
    			b=z;
    			c=x;}
    		else{
    			a=y;
    			b=x;
    			c=z;}
    		
    	
    	}
    	
    	printf("%d-<%d-<%d",c,b,a);
    	
    	return 0;
    }

  4. 中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?

    #include<stdio.h>
    #include<math.h>
    
    int main(void)
    {
    	int n,i;
    	
    	scanf("%d",&n);
    	
    	for(i=1;i<=1;i++){
    		
    		if(n%5==0||n%5==4){
    			
    			printf("Drying in day %d",n);
    			
    		}else {
    			
    			printf("Fishing in day %d",n);
    			
    		}
    		
    	}
    	
    	return 0;
    	
    }

  5. 现在90号汽油6.95元/升、93号汽油7.44元/升、97号汽油7.93元/升。为吸引顾客,某自动加油站推出了“自助服务”和“协助服务”两个服务等级,分别可得到5%和3%的折扣。

    本题要求编写程序,根据输入顾客的加油量a,汽油品种b(90、93或97)和服务类型c(m - 自助,e - 协助),计算并输出应付款。输入在一行中给出两个整数和一个字符,分别表示顾客的加油量a,汽油品种b(90、93或97)和服务类型c(m - 自助,e - 协助)。在一行中输出应付款额,保留小数点后2位。

    #include<stdio.h>
    
    int main(void)
    {
    	int a,b;
    	char ch;
    	double price;
    	
    	scanf("%d %d %c",&a,&b,&ch);
    	
    	
    	if(b == 90){
    		
    		if(ch == 'm'){
    			
    			price = a * 6.95 * 0.95;
    			
    			printf("%.2lf",price);
    			
    		}else{
    			
    			price = a * 6.95 * 0.97;
    			
    			printf("%.2lf",price);
    			
    		}
    	}else if(b == 93){
    		
    		if(ch == 'm'){
    			
    			price = a * 7.44 * 0.95;
    			
    			printf("%.2lf",price);
    			
    		}else{
    			
    			price = a * 7.44 * 0.97;
    			
    			printf("%.2lf",price);
    		}
    		
    		
    	}else{
    		
    		if(ch == 'm'){
    			
    			price = a * 7.93 * 0.95;
    			
    			printf("%.2lf",price);
    		
    		}else{
    			
    			price = a * 7.93 * 0.97;
    			
    			printf("%.2lf",price);
    			
    		}
    	}
    	
    	return 0;
    	
    }

  6. 每个箱子都有长宽高,我们需要判断一个箱子能否放入另一个箱子中。

    例如有箱子A的尺寸是 3 x 4 x 5,箱子B的尺寸 是 5 x 6 x 4,经过比较判断,可以知道箱子A能够放入箱子B中,我们就说箱子A匹配箱子B。

    注意,当两个箱子尺寸相等,我们也认为它们匹配。

    第一行输入参数T,表示有T个测试实例

    第二行输入第1组实例的箱子A的长、宽、高,输入数值为小于1000的自然数

    第三行输入第1组实例的箱子B的长、宽、高,输入数值为小于1000的自然数

    以此类推。如果两个箱子匹配,输出yes,否则输出no。逐行输出每一组的箱子匹配结果。

    #include<stdio.h>
    
    int main()
    {
    	int x,y,z;
    	int m,k,l;
    	int a,b,c;
    	int d,e,f;
    	int i,T;
    	
    	scanf("%d",&T);
    	
    	for(i=1;i<=T;i++){
    		
    		scanf("%d %d %d",&x,&y,&z);
    		scanf("%d %d %d",&m,&k,&l);
    	
    		if(x>y&&y>z){
    			a=x;
    			b=y;
    			c=z;
    		}else if(z>x&&x>y){
    			a=z;
    			b=x;
    			c=y;
    		}else if(x>z&&z>y){
    			a=x;
    			b=z;
    			c=y;
    		}else if(z>y&&y>x){
    			a=z;
    			b=y;
    			c=x;
    		}else if(y>z&&z>x){
    			a=y;
    			b=z;
    			c=x;
    		}else if(y>x&&x>z){
    			a=y;
    			b=x;
    			c=z;
    		}
    		
    		if(m>k&&k>l){
    			d=m;
    			e=k;
    			f=l;
    		}else if(l>=m&&m>k){
    			d=l;
    			e=m;
    			f=k;
    		}else if(m>=l&&l>k){
    			d=m;
    			e=l;
    			f=k;
    		}else if(l>k&&k>m){
    			d=l;
    			e=k;
    			f=m;
    		}else if(k>l&&l>=m){
    			d=k;
    			e=l;
    			f=m;
    		}else if(k>m&&m>=l){
    			d=k;
    			e=m;
    			f=l;
    		}
    		
    		if((a<=d&&b<=e&&c<=f)||(a>=d&&b>=e&&c>=f)){
    			
    			printf("yes\n");
    			
    		}else{
    			
    			printf("no\n");
    			
    		}
    	
    
    	}
    	
    	return 0;
    }

总结 

  • 学会如何分类统计数据数量
  • 学会如何比较输入数据大小并按大小输出
  • 学会判断条件数字
  • 如何输入scanf("%c",ch)输出判断字符形式以及设字符(char ch)
  • 多重条件判断数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mirror Wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值