我试着做了大约一个小时,但我似乎无法做到这一点。怎么做?
我目前的代码是:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(){
int j=-1;
while(j<0){
printf("Enter a number: \n");
scanf("%d", &j);
}
int i=j;
for(i=j; i<=100; i++){
printf("%d \n", i);
}
return 0;
}
答案 0 :(得分:3)
原始规范(在添加代码之前)有点模糊,但就后续流程而言,这是无关紧要的。让我们假设他们如下:
(如果您完全之后进程仍然相同,您只需调整各个步骤)
将其转换为伪代码通常是开发时的第一个好步骤。这会给你类似的东西:
def program:
set product to -1
while product <= 1000:
print prompt asking for numbers
get num1 and num2 from user
set product to num1 * num2
print product
print "target reached"
从那时起,它就是将伪代码转换为正式的计算机语言,这通常接近于一对一的映射操作。
良好的首次尝试将遵循:
#include <stdio.h>
int main (void) {
int num1, num2, product = -1;
while (product < 1000) {
printf ("Please enter two whole numbers, separated by a space: ");
scanf ("%d %d", &num1, &num2);
product = num1 * num2;
printf ("Product is %d\n", product);
}
puts ("Target reached");
return 0;
}
虽然毫无疑问会出现问题,因为它没有强有力地处理无效输入。但是,在您正在运营的水平上,这将是一个良好的开端。
就您提供的代码而言(虽然我现在已经添加了代码,但可能应该在原始问题中):
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(){
int j=-1;
while(j<0){
printf("Enter a number: \n");
scanf("%d", &j);
}
int i=j;
for(i=j; i<=100; i++){
printf("%d \n", i);
}
return 0;
}
进行最终循环的更好方法是:
int i = 1;
while (i < 1000) {
i = i * j;
printf ("%n\n", i);
}
这使用乘法数字的正确终止条件是千分之一或更多,而不是你所拥有的,固定数量的乘法。
您可能还想了解用户输入一个的可能性,这将导致无限循环。
执行此操作的(相对)专业计划类似于:
#include <stdio.h>
int main (void) {
// Get starting point, two or more.
int start = 0;
while (start < 2) {
printf("Enter a number greater than one: ");
if (scanf("%d", &start) != 1) {
// No integer available, clear to end of input line.
for (int ch = 0; ch != '\n'; ch = getchar());
}
}
// Start with one, continue while less than a thousand.
int curr = 1;
while (curr < 1000) {
// Multiply then print.
curr *= start;
printf ("%d\n", curr);
}
return 0;
}
这具有以下特征:
该代码仅作为一个教育示例,显示如何做一个相当不错的工作。如果你按原样使用它来做课堂作业,如果你的教育工作者因抄袭而让你失败,不要感到惊讶。我非常肯定他们中的大多数人会使用网络搜索工具来检测那种东西。
答案 1 :(得分:2)
我不是100%清楚你要求的是什么所以我假设以下你想让用户继续输入数字(我假设为正整数),直到它们全部相乘为止大于或等于1000)。
此处的代码以值1开头(因为从0开始意味着它永远不会得到除0之外的任何东西)并且将正整数乘以它,而所有这些的乘积都保持在1000以下。最后它打印总数(可能超过1000)以及用户输入的值的数量。
我希望这会有所帮助。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char input[10];
unsigned currentTotal = 1;
unsigned value;
unsigned numEntered = 0;
while( currentTotal < 1000 )
{
printf( "Enter a number: \n" );
fgets( input, sizeof(input), stdin );
value = atoi( input );
if( value > 0 )
{
currentTotal *= value;
numEntered += 1;
}
else
{
printf( "Please enter a positive integer value\n" );
}
}
printf( "You entered %u numbers which when multiplied together equal %u\n", numEntered, currentTotal );
return 0;
}
答案 2 :(得分:2)
试试这个:
#include <stdio.h>
int main()
{
int input,output=1;
while(1)
{
scanf("%d",&input);
if(input<=0)
printf("Please enter a positive integer not less than 1 :\n");
else if(input>0)
output*=input;
if(output>1000)
{
printf("\nThe result is: %d",output);
break;
}
}
return 0;
}