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中的函数原型:
- isalnum():判断字符是否为字母或数字。
- isalpha():判断字符是否为字母。
- isdigit():判断字符是否为数字。
- isgraph():判断字符是否为可打印的字符(非空格、非字母、非数字)。
- islower():判断字符是否为小写字母。
- isprint():判断字符是否为可打印的字符(包括空格)。
- isspace():判断字符是否为空格(包括空格符、制表符、换行符等)。
- isupper():判断字符是否为大写字母。
- 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;
}