1.判断一个整型数据有几位v2.0
题目内容:
从键盘输入一个整型数据(int型),编写程序判断该整数共有几位,并输出包含各个数字的个数。例如,从键盘输入整数16644,该整数共有5位,其中有1个1,2个6,2个4。
程序运行结果示例1:
Please enter the number:12226↙12226: 5 bits1: 12: 36: 1
程序运行结果示例2:
Please enter the number:-12243↙-12243: 5 bits1: 12: 23: 14: 1
输入格式: “%d”
输出格式:
输入提示信息:“Please enter the number:\n”
判断该整数共有几位:"%d: %d bits\n"
包含数字0的个数:“0: %d\n”
包含数字1的个数:“1: %d\n”
包含数字2的个数:“2: %d\n”
包含数字3的个数:“3: %d\n”
包含数字4的个数:“4: %d\n”
包含数字5的个数:“5: %d\n”
包含数字6的个数:“6: %d\n”
包含数字7的个数:“7: %d\n”
包含数字8的个数:“8: %d\n”
包含数字9的个数:“9: %d\n”
为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int i,number,x;
int k = 0;
int array[10] = {
0};
printf("Please enter the number:\n");
scanf("%d",&number);
x = fabs(number); //这一步是给我们输入的数取绝对值
while(x!=0) //这里的while是计算number的位数
{
for(i=0;i<=9;i++) //通过for循环来计算每位数字出现的次数
{
if(x%10==i){
array[i]++;
}
}
x/=10; //把for计数完成的位数去掉
k++;
}
printf("%d: %d bits\n",number,k);
for(i=0;i<=9;i++) //循环输出
{
if(array[i]!=0)
{
printf("包含数字%d的个数:",i);
printf("%d: %d\n",i,array[i]);
}
}
return 0;
}
此处要说明一点,最后因为图省事用了一个for循环来输出。这是不符合题目要求的 ,朋友们可自行更改为switch来输出答案。
ps:使用一个for循环也可以对数组进行初始化为 0 。而像上面一样将第一位赋值为 0 编译器也会自动帮你把其他的值也初始化为零。
2奖金计算
题目内容:
企业发放的奖金根据利润提成。利润低于或等于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,求应发放奖金总数?
程序运行结果示例1:
789↙
bonus=78
程序运行结果示例2:
789516↙
bonus=36342
输入格式: “%ld”
输出格式:“bonus=%ld\n”
为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。
#include<stdio.h>
int main()
{
long x;
double bonus=0;
scanf("%ld",&x);
if(x>1000000){
bonus=bonus+(x-1000000)*0.01;
}
if(x>600000){
x=x>1000000?1000000:x;
bonus=bonus+(x-600000)*0.015;
}
if(x>400000){
x=x>600000?600000:x;
bonus=bonus+(x-400000)*0.03;
}
if(x>200000){
x=x>400000?400000:x;
bonus=bonus+(x-200000)*0.05;
}
if(x>100000){
x=x>200000?200000:x;
bonus=bonus+(x-100000)*0.075;
}
if(x>0){
x=x>100000?100000:x;
bonus=bonus+x*0.1;
}
printf<