c语言内卷大队——热爱、奔跑——c语言刷题,最后一道题我的为什么乱码呢?

热爱、奔跑 2021-11-23 22:32:02

1.题目:有1、2、3、4四个数字,能组成什么样的3位数?

#include<stdio.h>
int main()
{
	int x, y, z;
	for (x = 1; x < 5; x++)
	{
		for (y = 1; y < 5; y++)
		{
			for (z = 1; z < 5; z++)
			{
				if (x != y, y != z, z != x)
					printf("% d, % d, % d\n", x, y, z);
			}
		}
	}
	return 0;
}

2.题目:给定一个整数数组和一个整数目标值,请你在该数组中找出 和为目标值的那 两个 整数,并返回它们的数组下标。

以3,2,4组成6为例:

#include<stdio.h>
int main()
{
	int x[3] = { 3,2,4};
	int i, j;
	for (i = 0; i < 5; i++)
	{
		for (j = i + 1; j < 5; j++)
		{
			if (x[i] + x[j] == 6)
			{
				printf("两个数下标为:\n");
				printf("[%d,%d]",i,j);
			}
		}
	}

}

 虽然运行出来了,但是在上交答案时告诉我编码错误,于是我看了一眼其他大佬们的做法:

int* twoSum(int* nums, int numsSize, int target) {
    int i,j;
    int *result=NULL;
    for(i=0;i<numsSize-1;i++)
    {
        for(j=i+1;j<numsSize;j++)
        {
            if(nums[i]+nums[j]==target)
            {
                 result=(int*)malloc(sizeof(int)*2);
                 result[0]=i;
                 result[1]=j;
                 return result;
            }
        }
    }
    return result;
}

但有的地方并没有看明白……,不过这是进阶,等过一阵学的再多一点可能就理解了。同时也明白了,为什么我的不能算对,我的需要修改上面的数,怎么可能对嘛……

三、题目:企业发放的奖金根据利润提成。

  • 利润(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()
{
	double x, y;
	printf("利润i为:\n");
	scanf_s("%1f", &x);
	if (x <= 10)
	{
		y = x * 0.1;
			printf("奖金数为:%1f", y);
	}
	else if(x<=20)
	{
		y = 10 + (x - 10) * 0.075;
		printf("奖金数为:%1f", y);
	}
	else if ( x <=40)
	{
		y = 20 + (x - 20) * 0.05;
		printf("奖金数为:%1f", y);
	}
	else if  (x <=60)
	{
		y = 40 + (x - 40) * 0.03;
		printf("奖金数为:%1f", y);
	}
	else if ( x <=100)
	{
		y = 60 + (x - 60) * 0.015;
		printf("奖金数为:%1f", y);
	}
	else
	{
		y = 100 + (x - 100) * 0.01;
		printf("奖金数为:%1f", y);
	}
	return 0;
}

不过,看一眼答案:

#include<stdio.h>
int main()
{
    double i;
    double bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
    printf("你的净利润是:\n");
    scanf("%lf",&i);
    bonus1=100000*0.1;
    bonus2=bonus1+100000*0.075;
    bonus4=bonus2+200000*0.05;
    bonus6=bonus4+200000*0.03;
    bonus10=bonus6+400000*0.015;
    if(i<=100000) {
        bonus=i*0.1;
    } else if(i<=200000) {
        bonus=bonus1+(i-100000)*0.075;
    } else if(i<=400000) {
        bonus=bonus2+(i-200000)*0.05;
    } else if(i<=600000) {
        bonus=bonus4+(i-400000)*0.03;
    } else if(i<=1000000) {
        bonus=bonus6+(i-600000)*0.015;
    } else if(i>1000000) {
        bonus=bonus10+(i-1000000)*0.01;
    }
    printf("提成为:bonus=%lf",bonus);
 
    printf("\n");
}

修改一下我的:

#include<stdio.h>
int main()
{
	double x, y;
	double bonus1, bonus2, bonus4, bonus6, bonus10;
	printf("利润i为:\n");
	scanf_s("%1f", &x);
	bonus1 = 100000 * 0.1;
	bonus2 = bonus1 + 100000 * 0.075;
	bonus4 = bonus2 + 200000 * 0.05;
	bonus6 = bonus4 + 200000 * 0.03;
	bonus10 = bonus6 + 400000 * 0.015;
	if (x <= 100000)
	{
		y = x * 0.1;
		printf("奖金数为:y=%1f", y);
	}
	else if (x <= 200000)
	{
		y = bonus1 + (x - 100000) * 0.075;
		printf("奖金数为:%1f", y);
	}
	else if (x <= 40)
	{
		y =bonus2+ (x - 200000) * 0.05;
		printf("奖金数为:%1f", y);
	}
	else if (x <= 60)
	{
		y =bonus4 + (x - 400000) * 0.03;
		printf("奖金数为:%1f", y);
	}
	else if (x <= 1000000)
	{
		y =bonus6 + (x - 600000) * 0.015;
		printf("奖金数为:%1f", y);
	}
	else
	{
		y =bonus10 + (x - 1000000) * 0.01;
		printf("奖金数为:%1f", y);
	}
	return 0;
}

不过还是不行……好吧。有没有大佬愿意帮我看一下嘞?

...全文
43 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-编程语言 发布问题, 以便更快地解决您的疑问

30,369

社区成员

发帖
与我相关
我的任务
社区描述
打造最热爱学习的高校社区,帮助大家提升计算机领域知识,带大家打比赛拿奖,提高自我,希望大家共同创造良好的社区氛围。
社区管理员
  • 川川菜鸟
  • 亡心灵
  • 星辰菜鸟
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

监督大家学习,每日学习打卡,以投稿形式打卡。扫码关注公众号,可加入粉丝群和领取大量资源。

试试用AI创作助手写篇文章吧