沈阳师范大学大一上册C语言PTA题目集以及答案(第二章 分支结构程序设计 编程题篇)

沈阳师范大学大一上册C语言PTA题目集以及答案(第二章 分支结构程序设计 编程题篇)

7-1 成绩是否及格 (10分)
输入成绩值x∈[0,100],如果x≥60,则输出pass,否则输出fail。

输入格式:
直接输入[0,100]之间的1个整数,没有其它任何附加字符。

输出格式:
直接输出你“pass”或“fail”,没有其它任何附加字符。

输入样例:
78
输出样例:
pass
输入样例:
46
输出样例:
fail
作者
王跃萍
单位
东北石油大学
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

#include <stdio.h>

int main(int argc, char *argv[]) {
	int x;
	scanf("%d",&x);
	if(x<0||x>100)
	{printf("error!!!");
	return 0;
	}
	if(x>=60&&x<=100)
	printf("pass");
	else 
	printf("fail");
	return 0;
	
}

7-2 计算符号函数的值 (10分)
对于任一整数n,符号函数sign(n)的定义如下:

在这里插入图片描述

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

输入格式:
输入在一行中给出整数n。

输出格式:
在一行中按照格式“sign(n) = 函数值”输出该整数n对应的函数值。

输入样例1:
10
输出样例1:
sign(10) = 1
输入样例2:
0
输出样例2:
sign(0) = 0
输入样例3:
-98
输出样例3:
sign(-98) = -1


#include <stdio.h>

int main(int argc, char *argv[]) {
	int n;
	scanf("%d",&n);
	if(n<0)
	{printf("sign(%d) = -1",n);
	return 0;}
	if(n==0)
	{printf("sign(%d) = 0",n);
	return 0;}
	if(n>0)
	{printf("sign(%d) = 1",n);
		return 0;}
	
}

7-3 比较大小 (10分)
本题要求将输入的任意3个整数从小到大输出。

输入格式:
输入在一行中给出3个整数,其间以空格分隔。

输出格式:
在一行中将3个整数从小到大输出,其间以“->”相连。

输入样例:
4 2 8
输出样例:
2->4->8

#include <stdio.h>
int main(int argc, char *argv[]) {
	 int a,b,c,d,e,f,mid,max,min;
	scanf("%d %d %d",&d,&e,&f);
	a=d;b=e;c=f;
	max=(a>b)?(a>c)?a:c:(c>b)?c:b;
	a=d;b=e;c=f;
	min=(a<b)?(a<c)?a:c:(b<c)?b:c;
	a=d;b=e;c=f;
    mid= (a<b?a:b)<c?(c>(a>b?a:b)?(a>b?a:b):c):(a>b?b:a);
	printf("%d->%d->%d",min,mid,max);
return 0;
}

7-4 成绩转换 (15分)
本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:

大于等于90分为A;
小于90且大于等于80为B;
小于80且大于等于70为C;
小于70且大于等于60为D;
小于60为E。
输入格式:
输入在一行中给出一个整数的百分制成绩。

输出格式:
在一行中输出对应的五分制成绩。

输入样例:
90
输出样例:
A

#include <stdio.h>

int main(int argc, char *argv[]) {
	int a,b;
	scanf("%d",&a);
	if(a>=90)
	printf("A\n");
	if(a<90&&a>=80)
	printf("B\n");
	if(a<80&&a>=70) 
	printf("C\n");
	if(a<70&&a>=60)
	printf("D\n");
	if(a<60)
	printf("E"); 
		
		
	
	return 0;
}

7-5 计算工资 (15分)
某公司员工的工资计算方法如下:一周内工作时间不超过40小时,按正常工作时间计酬;超出40小时的工作时间部分,按正常工作时间报酬的1.5倍计酬。员工按进公司时间分为新职工和老职工,进公司不少于5年的员工为老职工,5年以下的为新职工。新职工的正常工资为30元/小时,老职工的正常工资为50元/小时。请按该计酬方式计算员工的工资。

输入格式:
输入在一行中给出2个正整数,分别为某员工入职年数和周工作时间,其间以空格分隔。

输出格式:
在一行输出该员工的周薪,精确到小数点后2位。

输入样例1:
5 40
输出样例1:
2000.00
输入样例2:
3 50
输出样例2:
1650.00

#include <stdio.h>

int main(int argc, char *argv[]) {
	int year,time;
	float money;
	scanf("%d %d",&year,&time);
	if(year<5)
	{
		if(time<=40)
		money=time*30.0;
		if(time>40)
		money=40.0*30.0+(time-40)*(30*1.5);
	}
	if(year>=5)
	{
	if(time<=40)
	money=time*50.0;
	if(time>40)
	money=40.0*50.0+(time-40)*(50*1.5);
	}
	printf("%.2f",money);
}

7-6 判断字符或数字 (10分)
键盘输入一个字符,要求判断是否为数字字符,如果是’a’’z’或’A’’Z’,则输出“character”,如果是‘0’~‘9’,则输出“digit”,如果都不是,则输出“ERROR”。

输入格式:
键盘输入一个字符。

输出格式:
如果是字母,则输出“character”,如果是数字,则输出“digit”,如果都不是,则输出“ERROR”。

输入样例:
A
输出样例:
在这里给出相应的输出。例如:

character

#include <stdio.h>

int main(int argc, char *argv[]) {
	char a;
	a=getchar();
	if((a>='a'&&a<='z')||(a>='A'&&a<='Z'))
	{printf("character\n");
	return 0;}
	if(a>='0'&&a<='9')
	{
		printf("digit\n");
		return 0;	}
		printf("ERROR\n");
		return 0;
}

7-7 闰年判断 (10分)
输入year,判断是否闰年。

输入格式:
输入年份N。

输出格式:
如果是闰年就输出YES,否则输出NO。

输入样例:
在这里给出一组输入。例如:

2000
输出样例:
在这里给出相应的输出。例如:

YES

#include <stdio.h>
int main()
{
	int year,a;
	scanf("%d",&year);
	if(year%400==0)
		a=1;
	else
	{
		if(year%4==0&&year%100!=0)
			a=1;
		else
			a=0;
	}
	if(a==1)
	{
		printf("YES");
	}
	else
	{
		printf("NO");
	}
	return 0;
}

7-8 新胖子公式 (10分)
根据钱江晚报官方微博的报导,最新的肥胖计算方法为:体重(kg) / 身高(m) 的平方。如果超过 25,你就是胖子。于是本题就请你编写程序自动判断一个人到底算不算胖子。

输入格式:
输入在一行中给出两个正数,依次为一个人的体重(以 kg 为单位)和身高(以 m 为单位),其间以空格分隔。其中体重不超过 1000 kg,身高不超过 3.0 m。

输出格式:
首先输出将该人的体重和身高代入肥胖公式的计算结果,保留小数点后 1 位。如果这个数值大于 25,就在第二行输出 PANG,否则输出 Hai Xing。

输入样例 1:
100.1 1.74
输出样例 1:
33.1
PANG
输入样例 2:
65 1.70
输出样例 2:
22.5
Hai Xing

#include <stdio.h>

int main(int argc, char *argv[]) {
	float t,s,p;
	scanf("%f %f",&t,&s);
	if(t>1000||s>3)
	return 0;
	p=t/(s*s);
	if(p>25)
	printf("%.1f\nPANG",p);
	else
	printf("%.1f\nHai Xing",p);
	return 0;
}

7-9 计算分段函数[1] (10分)
本题目要求计算下列分段函数f(x)的值:

公式
在这里插入图片描述

输入格式:
输入在一行中给出实数x。

输出格式:
在一行中按“f(x) = result”的格式输出,其中x与result都保留一位小数。

输入样例1:
10
输出样例1:
f(10.0) = 0.1
输入样例2:
0
输出样例2:
f(0.0) = 0.0

#include <stdio.h>

int main(int argc, char *argv[]) {
	float x,z;
	scanf("%f",&x);
	if(x==0)
	printf("f(0.0) = 0.0");
	else 
	{z=1.0/x;
	printf("f(%.1f) = %.1f",x,z);}
	return 0;
}

7-10 两个数的简单计算器 (10分)
本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加、减、乘、除或求余运算。题目保证输入和输出均不超过整型范围。

输入格式:
输入在一行中依次输入操作数1、运算符、操作数2,其间以1个空格分隔。操作数的数据类型为整型,且保证除法和求余的分母非零。

输出格式:
当运算符为+、-、*、/、%时,在一行输出相应的运算结果。若输入是非法符号(即除了加、减、乘、除和求余五种运算符以外的其他符号)则输出ERROR。

输入样例1:
-7 / 2
输出样例1:
-3
输入样例2:
3 & 6
输出样例2:
ERROR

#include <stdio.h>

int main(int argc, char *argv[]) {
	int a,c;
	char b;
	scanf("%d %c %d",&a,&b,&c);
	if(b!='+'&&b!='-'&&b!='*'&&b!='/'&&b!='%')
	printf("ERROR");
	switch(b)
	{
		case 43:printf("%d",a+c);break;
		case 45:printf("%d",a-c);break;
		case 42:printf("%d",a*c);break;
		case 47:printf("%d",a/c);break;
		case 37:printf("%d",a%c);break;
		
		
	}
	return 0;
}

7-11 计算天数 (15分)
本题要求编写程序计算某年某月某日是该年中的第几天。

输入格式:
输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。

输出格式:
在一行输出日期是该年中的第几天。

输入样例1:
2009/03/02
输出样例1:
61
输入样例2:
2000/03/02
输出样例2:
62

#include <stdio.h>
int main()
{
	int year,a,b,i,d,z=0;
	//yes 
	int g[12]={31,29,31,30,31,30,31,31,30,31,30,31};
	//no
	int c[12]={31,28,31,30,31,30,31,31,30,31,30,31};
	scanf("%d/%d/%d",&year,&b,&d);
	if(year%400==0)
		a=1;
	else
	{
		if(year%4==0&&year%100!=0)
			a=1;
		else
			a=0;
	}
	if(a==1)
	{
		//yes
		for(i=0;i<=(b-2);i++)
		{
			z=z+g[i];
			
		}
		z=z+d;
		printf("%d",z);
		
	}
	else
	{
		//no
		for(i=0;i<=(b-2);i++)
		{
			z=z+c[i];
			
		}
		z=z+d;
		printf("%d",z);
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值