13.企业利润发放问题
企业发放的奖金根据利润提成。利润(I)低于或等于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%提成,从键盘输入当月利润I,求应发放奖金总数?
#include <stdio.h>
int main()
{
unsigned long int i = 0;
int bonus = 0;
printf("输入利润:");
scanf("%ld", &i);
if (i <= 100000)
bonus = 100000 * 0.1;
else if (100000 < i <= 200000)
bonus = (i - 100000) * 0.075 + 100000 * 0.1;
else if (200000 < i <= 400000)
bonus = (i - 200000) * 0.005 + (i - 100000) * 0.075 + 100000 * 0.1;
else if (400000 < i <= 600000)
bonus = (i - 400000) * 0.003 + (i - 200000) * 0.005 + (i - 100000) * 0.075 + 100000 * 0.1;
else if (600000 < i <= 1000000)
bonus = (i - 600000) * 0.015 + (i - 400000) * 0.003 + (i - 200000) * 0.005 + (i - 100000) * 0.075 + 100000 * 0.1;
else if(i > 1000000)
bonus = (i - 600000) * 0.015 + (i - 400000) * 0.003 + (i - 200000) * 0.005 + (i - 100000) * 0.075 + 100000 * 0.1 + (i - 1000000) * 0.001;
printf("bonus=%d", bonus);
return 0;
}
14.根据下面的函数关系,输入 X,计算 Y,要求输出结果保留两位小数
(1)当 x 小于 5 时,y=0
(2)当 x 大于 5 且小于等于 10 时,y=sin(x)
(3)当 x 大于 10 时,y=cos(x)+sin(x)
#include <stdio.h>
#include <math.h>
int main() {
float X;
double Y;
scanf("%f",&X);
if(X<5)
Y=0;
else if(X>5&&X<10)
Y=sin(X);
else if(X>10)
Y=cos(X)+sin(X);
printf("%.2f",Y);
return 0;
}
15.找10个数中的最大值
这个题和第一个题类似,不过难度相对第一题大了一点点,具体思路是构建一个存放10个数的数组,再设定一个最大值max。然后构建两个循环,第一个循环输入数据,第二个循环比较两个数,最大的取出来(如果是比较最小值,大小符号改变就好)
#include <stdio.h>
int main() {
int a[10];
int Max = 0;
for (int i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}
for (int i = 0; i < 10; i++) {
if(a[i] > Max) {
Max = a[i];
}
}
printf("十个数中最大的是:%d", Max);
return 0;
}
16.判定该正整数是否为一个回文数
有些题目难度降低了,改成了(输入一个 3 位的正整数,判断回文数),个人觉得如果是三位,方法会很简单,思路是输入三个数,第一个数和第三个数比较,如果不相同,输出否,否则是。
这道题目没有说明输入数的多少,在网上看到一种方法不错
数字法:
#include<stdio.h>
int main()
{
int x,newed,t,n;
while(scanf("%d",&x)!=EOF)
{
newed=0;
n=x;
do
{
newed=newed*10+x%10;
x/=10;
}while(x>0);
if(n==newed)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
字符串处理法:
#include<stdio.h>
#include<string.h>
int main()
{
int i,length,flag=1;
char a[100];
gets(a);
length=strlen(a);
for(i=0;i<=length/2;i++) {
if(a[i]!=a[length-i-1]) {
flag=0;
break;
}
}
if(flag==1)
printf("yes");
else
printf("no");
return 0;
}
17.大小写转换
考点:A-Z的ASCII值为 : 65-90
a-z的ASCII值为 : 97-122
两者相差32
#include<stdio.h>
#include<stdlib.h>
int main()
{
char str[] = "AbCdEf";
char c;
int i = 0;
while (str[i] != '\0')
{
c = str[i];
if (c >= 'A' && c <= 'Z')
{
c = c + 32;
}
else if (c >= 'a' && c <= 'z')
{
c = c - 32;
}
printf("%c",c);
i++;
}
printf("\n");
system("pause");
return 0;
}
18.计算三位整数的边界
void main()
{
int x;
int max,min;
printf("请输入三位数 x:");
scanf("%d",&x);
x=x/100;
min=(int)x;
min=min*100;
max=min+99;
19.三角形判断
给定平面上任意三个点的坐标(x1 ,y1 )、(x2 ,y2 )、(x3 ,y3 ),检验它们能否构成三角形。
#include "stdio.h"
#include "math.h"
int main()
{
float x1, x2, x3, y1, y2, y3;
float a, b, c, s, l, area; //定义三边,半周长,周长,面积
scanf("%f%f%f%f%f%f", &x1, &y1, &x2, &y2, &x3, &y3);
a = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
b = sqrt((x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3));
c = sqrt((x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2));
if (a + b > c && a + c > b && b + c > a) {
s = (a + b + c) / 2;
area = sqrt(s * (s - a) * (s - b) * (s - c)); //海伦公式求面积
l = a + b + c;
printf("L = %.2f, A = %.2f\n", l, area);
} else {
printf("Impossible\n");
}
return 0;
}
20.特殊a串数列求和
给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和
#include "stdio.h"
#include "math.h"
int main()
{
int a,n;
int num=0;
int sum = 0;
scanf("%d %d",&a,&n);
for (int i=1;i<=n;i++){
num=num+pow(10,i-1)*a;
sum+=num;
}
printf("s = %d",sum);
return 0;
}
21.求奇数和
#include"stdio.h"
int main()
{
int num,sum=0;
for (int i=1; ;i++){
scanf("%d",&num);
if(num<=0){
break;
}
if(num%2!=0){
sum+=num;
}
}
printf("%d",sum);
return 0;
}
22.水仙花数
题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数
本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
#include <stdio.h>
int main()
{
int i,j,k,n;
printf("'water flower'number is:");
for(n=100;n<1000;n++)
{
i=n/100;
j=(n-i*100)/10;
k=n%10;
if(i*i*i+j*j*j+k*k*k==n)
printf("%d\n",n);
}
}
23.时间换算
本题要求编写程序,以hh:mm:ss的格式输出某给定时间再过n秒后的时间值(超过23:59:59就从0点开始计时)
(ps:题目还算比较友善)
#include<stdio.h>
int main(void){
int a,b,c;
int k;
scanf("%d:%d:%d\n",&a,&b,&c);
scanf("%d",&k);
c=k+c;
if(c>=60){
c=c-60;
b=b+1;
if(b>=60){
b=b-60;
a=a+1;
if(a>=24)
a=a-24;
}
}
printf("%02d:%02d:%02d",a,b,c);
return 0;
}
24.读这段代码的结果
程序源代码:
#include <stdio.h>
#define M 5
int main()
{
int a[M]={
1,2,3,4,5};
int i,j,t;
i=0;j=M-1;
while(i<j)
{
t=*(a+i);
*(a+i)=*(a+j);
*(a+j)=t; //指针相互传参
i++;j--;
}
for(i=0;i<m;i++)
printf("%d",*(a+i));
return 0;
}
input结果为:
54321