【发布时间】:2014-03-10 03:40:24
【问题描述】:
是的,这是一个基本的 C 编码作业问题。不,我不只是在找人为我做这件事。考虑到这是我的第一堂编程课,我不能让它工作并不奇怪,而且我敢肯定它有很多问题。我只是想要一些帮助,指出我的代码中的问题和缺少的东西,以便我自己修复它们。
家庭作业问题:
编写一个只读取一个整数的程序(你的输入必须是 一个从 100 到 999 的 3 位数字),并将一个数字视为 是 ABC(其中 A、B 和 C 是数字的 3 位数字)。现在, 将数字组成为 ABC、BCA 和 CAB,然后找出 这三个数除以 11 的余数。 假设余数分别为 X、Y 和 Z 并将它们相加 向上为 X+Y、Y+Z 和 Z+X。现在,如果这些总和中的任何一个是奇数 数字,如果总和加上 11 小于 20,则将其增加 11, 否则将总和减少 11(此求和操作 必须是正数但小于 20)。最后,将每个 总和的一半。现在,打印出所有结果数字。
我的代码:
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
//Declare all variables
int OrigNumber;
int x, y, z;
int number;
number = x, y, z;
int sum;
//
printf("Input a three digit number");
//
int c;
c = OrigNumber %10;
//
int b;
b=((OrigNumber - c) % 100)/10;
//
int a;
a = (OrigNumber - (b + c))/100;
//
int abc, bca, cab;
abc = (a*100) + (10*b) + c;
bca = (10*b) + c + (a*100);
cab = c + (a*100) + (10*b);
//
if((number % 2) == 1)
{
if(number + 11 < 20)
number += 11;
else if((100 - 11 > 0) && (100 - 11 < 20))
number -= 11;
}
//
x = abc/11;
y = bca/11;
z = cab/11;
//
sum = (x + y),
(y + z),
(z + x);
}
【问题讨论】:
-
大技巧是从小而简单的东西开始,然后逐步建立。你首先想要什么?一个接受用户号码的程序?能把279分解成2、7、9的程序吗?可以做 +/-11 事情的程序?
-
鉴于这个问题,我认为最好是整理一下,可以允许输入三位数字,因为那是程序崩溃的地方。
-
好吧,如果您在文本中查找“输入”(或谷歌“C 输入”),您会发现
scanf非常适合,就像这样:scanf("%d", &OrigNumber);跨度> -
两件事:首先是没有声明会导致任何输入被捕获;第二个是“
number = x, y, z;”这一行可能并没有像你想象的那样做。 -
你要一个号码,但从来没有读过任何东西。您的
a、b和c含义不明确。对于 123,它们是 100、20 和 3;还是 1、2 和 3?使用轻微优化和所有典型警告(对于 GCC,-O -Wall)编译程序,然后了解并修复每个警告或确保确保你是对的并且编译器感到困惑(这种情况发生得比你想象的要少得多)。
标签: c