《程序设计基础2021》题目集3 题解一

目录

5-1

5-2

5-3

5-4

5-5

5-6


5-1

计算分段函数,测试数据分别是-2、3、7。

#include <stdio.h>
#include<math.h>
int main( ){ 
    float x,f;
    int i;
    for(i=0;i<3;i++){
    scanf("%f",&x);
    if(x<0) f=fabs(x+1);
    else if(x<=5) f=2*x+1;
    else f=sin(x)+5;
    printf("x=%.2f,y=%.2f\n",x,f);
    }
    return 0;
}

5-2

以下程序统计输入的一行字符中字母、数字、空格、其它字符的个数(行末以换行符结束,最后的换行符不统计在内)。例如,输入的一行字符为aB 3*则字母有2个,数字有1个,空格有1个,其它字符有1个。

#include <stdio.h>
int main(){
    int letters,digits,spaces,others;
    letters=0,digits=0,spaces=0,others=0;
    char ch;
    while(ch=getchar(),ch!='\n'){
        if((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z'))
            letters++;
        else if(ch>='0'&&ch<='9')
            digits++;
        else if(ch==' ')
            spaces++;
        else
            others++;
    }
    printf("字母、数字、空格、其它字符分别有:%d %d %d %d 个\n",letters,digits,spaces,others);
}

要是我的话,我定义和初始化会一起进行,还有肯定有 return 0;  

5-3

为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费y(元)与月用水量x(吨)相关:当x不超过15吨时,y=4x/3;超过后,y=2.5x−10.5。请编写程序实现水费的计算,要求定义和调用函数f(x)计算水费,其中x的类型是double,函数类型是double。

#include<stdio.h>
double f(double x);
int main(){
    double x, y;
    scanf ("%lf",&x); 
	y=f(x);
    printf ("f(%.2f) = %.2f\n",x,y);
    return 0;
}
double f(double x){
    double result;
    if (x<=15){ 
        result=4*x/3;
    }else{
        result=2.5*x-10.5; 
    }
	return result;
}

5-4

输入字符'y'或'Y',则在屏幕上输出字符串"Yes.";输入其它字符,则在屏幕上输出字符串"No."。要求定义和调用函数YesNo(ch),当ch为'y'或'Y'时输出"Yes.",当ch为其它字符时输出"No."。

#include <stdio.h>
void YesNo(char ch); 
int main(void){
    char ch;
    ch=getchar();
	YesNo(ch);
    return 0;
}
void YesNo(char ch){
    switch(ch){
        case 'y': 
        case 'Y':printf("Yes.");return;
        default:printf("No.");return;
    }
}

5-5

请完善程序,实现以下程序功能:回文数是指正读和反读都一样的数。例如:12321、55455、35553等都是回文。请编写一个程序,从键盘上读取一个5位正整数,并判断它是否是回文数。 先输出该整数,再输出是否是回文,若是回文输出“Yes”,否则输出“No",中间用一个空格分隔。

#include <stdio.h>
int main(void){
	int i;for(i=1;i<=2;i++){ //该循环用于自动阅卷,请考生忽略
		int n,g,s,q,w;
		//n表示输入的5位正整数,g表示个位数字
		//s表示十位数字,q表示千位数字
		//w表示万位数字
		scanf("%d",&n);
		g=n%10;
		s=n/10%10;
		q=n/1000%10;
		w=n/10000;
		if(g==w&&s==q)  
			printf("%d Yes\n",n);
		else  
			printf("%d No\n",n);
	    } //该循环用于自动阅卷,请考生忽略
 	return 0;
}

5-6

请完善程序,实现以下程序功能:首先输入两个非0双精度实数,再输入一个运算符(+、-、、/),然后进行相应计算并输出结果(保留两位小数,最后换行),如果输入的运算符不是这四种,则输出“运算符输入有误!”的信息

#include <stdio.h>
int main(void){
	int k;for(k=1;k<=5;k++){ //该循环用于自动阅卷,请考生忽略
	 	double a,b,c; //变量c用来存放运算结果
	 	char ysf;
	 	scanf("%lf%lf",&a,&b);
	 	ysf=getchar( );//输入运算符
	 	if(ysf=='+'){  //输入的运算符是+
	   		c=a+b;
	    printf("%.2lf+%.2lf=%.2lf\n",a,b,c);
	   	}
	 	if(ysf=='-'){  //输入的运算符是-
	   		c=a-b;
	    	printf("%.2lf-%.2lf=%.2lf\n",a,b,c);
	   	}
		if(ysf=='*'){  //输入的运算符是*
	   		c=a*b;
	    	printf("%.2lf*%.2lf=%.2lf\n",a,b,c);
	   	}
		if(ysf=='/'){  //输入的运算符是/
	   		c=a/b;
	    	printf("%.2lf/%.2lf=%.2lf\n",a,b,c);
	   	}
		if(ysf!='+'&&ysf!='-'&&ysf!='*'&&ysf!='/')
	  		printf("运算符输入有误!\n");
  	} //该循环用于自动阅卷,请考生忽略
 	return 0;
}
  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值