赞
踩
还是再睡一会儿,把这一切晦气事统统忘掉吧。——《变形记》
经过前两次作业的完成,都是通过chatgpt完成的,这次的作业打算自己敲一下,看看自己是否能够独立完成。
题目: 从键盘读入一个3位数,判断该数是否水仙花数
水仙花数是什么?
水仙花数,也被称为自恋数、阿姆斯特朗数,是一个特殊的三位数。它是指一个三位数,它的每个位上的数字的立方和等于它本身。简单来说,一个三位数的个位、十位和百位数字的立方和等于该三位数本身。
例如,153是一个水仙花数,因为 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153。
在三位数范围内,水仙花数共有4个:153、370、371和407。
这个问题其实在isbn中出现过,但我确在此遗忘,只依稀记得是for(;;){}loop,然后还有什么
缺少包含该函数的头文件#include <string.h>
"passing argument 1 of 'strlen' from incompatible pointer type" 错误通常在将不兼容的指针类型作为参数传递给 `strlen` 函数时发生。在 C 语言中,`strlen` 函数接受一个指向以空字符结尾的字符串的指针作为参数。如果将一个不兼容的指针类型传递给 `strlen` 函数,编译器会发出上述错误消息。
"传递给 'strlen' 的参数类型不兼容" 错误通常在将不兼容的指针类型作为参数传递给 `strlen` 函数时发生。
在 C 语言中,`strlen` 函数的参数应该是一个指向以空字符 `\0` 结尾的字符数组的指针。如果将一个不兼容的指针类型传递给 `strlen` 函数,编译器会发出这个错误提示。
atoi
之前,需要包含头文件 <stdlib.h>
以进行函数的声明。atoi
是一个标准库函数,用于将字符串转换为整数。嘿嘿,忘记了阿巴阿巴
- #include <stdio.h>
- #include <string.h>
-
- // 从键盘读入一个3位数,判断该数是否水仙花数
- int main()
- {
- //读入
- char num[4];
- int i,sum=0;
- printf("输入一个数:");
- scanf("%s",num);
- //判断
- //num的位数不等于3
- if (strlen(num)!=3)
- {
- printf("输入位数不等于3");
- return 0;
- }
- if (strlen(num)==3)
- {
- sum=num[0]**3+num[1]**3+num[2]**3;
- if (sum==num)
- {
- printf("该数为水仙花数");
- }
- else
- {
- printf("该数不是水仙花数");
- }
- return 0;
- }
- return 0;
- }
-
-

目前搞出来是这样的,可惜结果并不合我的意思。
然后又用gpt帮我改了一下,这是结果
- #include <stdio.h>
- #include <string.h>
-
- // 从键盘读入一个3位数,判断该数是否水仙花数
- int main()
- {
- // 读入
- char num[4];
- int i, sum = 0;
- printf("输入一个数:");
- scanf("%s", num);
-
- // 判断
- // num的位数不等于3
- if (strlen(num) != 3)
- {
- printf("输入位数不等于3\n");
- return 0;
- }
-
- sum = (num[0] - '0') * (num[0] - '0') * (num[0] - '0') +
- (num[1] - '0') * (num[1] - '0') * (num[1] - '0') +
- (num[2] - '0') * (num[2] - '0') * (num[2] - '0');
-
- if (sum == atoi(num))
- {
- printf("该数为水仙花数\n");
- }
- else
- {
- printf("该数不是水仙花数\n");
- }
-
- return 0;
- }

gpt真厉害,次次对。。。
`atoi` 是 C 语言中的一个标准库函数,用于将字符串转换为整数(ASCII to integer)。
在 C 语言中,整数数据类型和字符数据类型是不同的,如果需要将字符串表示的数字转换为整数类型,可以使用 `atoi` 函数。
请注意,如果字符串无法转换为整数,`atoi` 函数将返回 0,并不会产生错误或警告。因此,在使用 `atoi` 函数时,需要确保传递的字符串确实可以转换为整数,以避免不准确的结果。
- sum = (num[0] - '0') * (num[0] - '0') * (num[0] - '0') +
- (num[1] - '0') * (num[1] - '0') * (num[1] - '0') +
- (num[2] - '0') * (num[2] - '0') * (num[2] - '0');
看来平方还是得老老实实两个数相乘。gpt思考半天了,它也想不出来。。。
那今天这道题就算完美结束啦,撒花撒花!
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。