C语言作业(部分)

3.题干: 编写程序,要求程序运行时,从键盘输入一个三位正整数,将它反向输出。(提示:若输入的不是正整数,输出error!若输 入三位正整数的个位数为0,十位数不为0,则输出十位数和百位数;若输入三位正整数的个位数和十位数均为0,则输出百 位数。)

#include<stdio.h>
int main()
{
	int n,x,m;
	scanf("%d",&n);
	x=n;
	if(n>0)
	{
		if(n%10!=0)
		{
			n/=10;
			if(n%10!=0)
			{
				while(x>0)
				{
				m=x%10;
				x/=10;
				printf("%d",m);
				}
			}
		}else{
				n/=10;
			if(n%10!=0)
			{
			x/=10;
			while(x>0)
			{
				m=x%10;
				x/=10;
				printf("%d",m);
				}	
			}else{
				x/=10;
				x/=10;
				m=x;
				printf("%d",m);
			}
		}
	}else{
		printf("error!");
	}
	
	return 0;
} 

4.题干: 编写程序,根据利润计算奖金。要求程序运行时,从键盘输入利润,计算并输出奖金(结果保留两位小数)。已知,利润低 于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可 提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100 万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润,求应发 放奖金总数? 输入输出格式请严格按如下示例要求,格式不正确不得分。 示例:(说明:表示空格键 表示回车键) 输入数据为:120000 输出结果为:11500.00

#include<stdio.h>
int main()
{
	int n;//利润
	double prize;
	scanf("%d",&n);
	if(n<100000)
	{
		prize=n*0.1;
	}else if(n>=100000&&n<200000)
	{
		prize=100000*0.1+(n-100000)*0.075;
	}else if(n>=200000&&n<400000)
	{
		prize=100000*0.1+100000*0.075+(n-200000)*0.05;
	}else if(n>=400000&&n<600000)
	{
			prize=100000*0.1+100000*0.075+200000*0.05+(n-400000)*0.03;
	}else if(n>=600000&&n<1000000)
	{
		prize=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(n-600000)*0.015;
	}else{
		prize=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(n-1000000)*0.001;
	}
	printf("%.2f",prize);
	return 0;
} 

5.题干: 编写程序,要求程序运行时,从键盘输入x的值,根据分段函数计算并输出y的值(结果保留两位小数)。分段函数如下。(提 示:可使用求平方根函数:sqrt())

 示例:(说明:表示空格键 表示回车键) 输入数据为:0 输出结果为:0.00

#include<stdio.h>
#include<math.h>
int main()
{
	int x;
	double y;
	scanf("%d",&x);
	if(x<1)
	{
	y=x*x+2*x+sin(x);	
	}else if(x>=1&&x<=10)
	{
	y=2*x-1;	
	}else{
		y=sqrt(2*x*x*x-11);
	}
	printf("%f",y);
	return 0;
}

6.题干: 编写程序判断字符类型,要求程序运行时,从键盘输入一个字符,输出该字符的类型。若输入的字符是字母则输出:It is an alphabetic character.,若输入的字符是数字则输出:It is a digit.,若输入的字符是其他字符则输出:It is other character.。 输入输出格式请严格按如下示例要求,格式不正确不得分。 示例:(说明:表示空格键 表示回车键) 输入数据为:5 输出结果为:Itisadigit.

方法一:通过ASCLL码表判断:

字符

ASCII值

十进制值

控制字符

0-19

0-19

可打印字符

32-126

32-126

空格 (SP)

32

32

制表符 (TAB)

9

9

换行符 (LF)

10

10

回车符 (CR)

13

13

大写字母 A-Z

65-90

65-90

小写字母 a-z

97-122

97-122

数字0-9

48-57

48-57

#include<stdio.h>
int main()
{
	char x;
	scanf("%c",&x);
	if(x>=65&&x<=90||x>=97&&x<=122)
	{
		printf("It is an alphabetic character.");
	}else if(x>=48&&x<=57)
	{
		printf("It is a digit.");
	}else{
		printf("It is other");
	}
	
	return 0;
}
方法二:引入ctype.h头文件

     ctype.h中的函数原型:

  1. isalnum():判断字符是否为字母或数字。
  2. isalpha():判断字符是否为字母。
  3. isdigit():判断字符是否为数字。
  4. isgraph():判断字符是否为可打印的字符(非空格、非字母、非数字)。
  5. islower():判断字符是否为小写字母。
  6. isprint():判断字符是否为可打印的字符(包括空格)。
  7. isspace():判断字符是否为空格(包括空格符、制表符、换行符等)。
  8. isupper():判断字符是否为大写字母。
  9. isxdigit():判断字符是否为十六进制数字
#include <stdio.h>  
#include <ctype.h>  
  
int main()
{
	char x;
	scanf("%c",&x);
	if(isalpha(x))
	{
		printf("It is an alphabetic character");
	}else if(isdigit(x))
	{
		printf("It is a digit.");
	}else{
		printf("It is other");
	}
	return 0;
}

12.题干: 编写程序,要求程序运行时,从键盘求一元二次方程ax 2 +bx+c=0的系数a、b和c,计算并输出该方程实根的个数。要求:若a =0,输出error!。 输入输出格式请严格按如下示例要求,格式不正确不得分。 示例:(说明:表示空格键 表示回车键) 输入数据为:121 输出结果为:1

#include <stdio.h>    
int main()
{
	int a,b,c;
	int x,is=1;
	scanf("%d %d %d",&a,&b,&c);
	if(a!=0)
	{
	for(x=-100;x<100;x++)	
	{
		if(a*x*x+b*x+c==0){
			printf("%d ",x);
			is=0;
		}
	}
	}else{
		printf("error!");
	}
	if(is){
		printf("无解");
	}
	return 0;
}

17.题干: 编写程序设计一个投票表决器,要求程序运行时,从键盘一个字符,按如下规则输出提示信息。规则:输入Y或y时,输出agree, 输入N或n时,输出disagree,否则,输出lose。 输入输出格式请严格按如下示例要求,格式不正确不得分。 示例:(说明:表示空格键 表示回车键) 输入数据为:n 输出结果为:disagree

#include <stdio.h>    
int main()
{
	char x;
	scanf("%c",&x);
	if(x=='Y'||x=='y')
	{
		printf("agree");
	}else if(x==
	'N'||x=='n')
	{
		printf("disagree");
	}else{
		printf("lose");
	}
	
	return 0;
}

注:也可使用ASCLL码值进行判断

15.题干: 编写程序判断两个数是否为自然数对。要求程序运行时,从键盘输入两个自然数,输出是否为自然数对。自然数对:若两个 自然数分别为A和B,其中A>B,如果A+B和A-B都是平方数,那么A、B就是自然数对。要求若A和B是自然数对,输出:1;若A 和B不是自然数对,输出:0;若A表示空格键 表示回车键) 输入数据为:31 输出结果为:0 输入数据为:178 输出结果为:1

#include <stdio.h>
#include<math.h>
#include<stdbool.h>
bool issquare(int n); 
int main()
{
	int A,B;
	scanf("%d %d",&A,&B);
	if(A>B)
	{
		if(issquare(A+B)&&issquare(A-B))
		{
			printf("1");
		}else{
			printf("0");
		}
	}else if(A==B)
	{
	if(issquare(A+B)&&issquare(A-B))
		{
			printf("1");
		}else{
			printf("0");
		}	
	}else{
		printf("error!");
	}
	return 0;
}
bool issquare(int n)
{
	bool is;
	int temp;
	temp=sqrt(n);
	if(temp*temp==n)
	{
		is=true;
	}else{
		is=false;
	}
	return is;
}