我写了一个程序,它的职责是从用户那里读取20个数字并将它们放在一个列表中,之后它将数组中的值从底部打印到起始点。
但程序在从输入读取第二个值后完全停止。
源代码:
#include <stdio.h>
#define N 20
int main(void)
{
int numbers[N];
int i;
for(i=0;i<N;i++)
{
scanf("%i", &numbers[i]);
}
for(i=N;i<0;i--)
{
printf("%i", numbers[i]);
}
return 0;
}
我使用 Dev-C ++ 5.6.3 作为我的IDE,使用 TDM-GCC 4.8.1 作为我的编译器。但我不确切地知道这是否与IDE有关。
答案 0 :(得分:3)
如果你想让你的第二个循环倒计时,那么
for(i=N;i<0;i--)
应该是
for(i=N;i>0;i--)
或循环不会执行,因为i<0
不是真的开始。
并且正如@WeatherVane在评论中所指出的那样:
scanf("%i", numbers[i]);
应该是
scanf("%i", &numbers[i]);
因为你需要传递一个指向你希望用scanf
返回的数字填充的整数的指针。
答案 1 :(得分:3)
如果你想让循环向下计数,那么这个循环
<?php
$isSaveDisabled = true;
$isCreateDisabled=false;
if(isset($_POST['save']))
{
echo 'Hello robin';
$isCreateDisabled=false;
}
if(isset($_POST['create']))
{
echo 'Byeeee robin';
$isSaveDisabled = false;
}
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="BootStrap/css/bootstrap.min.css">
<link rel="stylesheet" href="css/stylesheet.css">
<title></title>
<script type="text/javascript">
function myFunction()
{
document.getElementById("myH2").style.color = "#ff0000";
}
</script>
</head>
<body >
<div class="container jumbotron">
<form action="" method="post">
<div class="btn-group-xs">
<label for="name" id="myH2">Name</label>
<input type="text" name="name" >
<button type="submit" id="btn1" name="save" <?php echo $isSaveDisabled?'disabled':''; ?>onclick="myFunction();">Save</button>
<button type="submit" id="btn2" name="create" <?php echo $isCreateDisabled?'disabled':'';?>>Create</button>
</div>
</form>
</div>
</body>
</html>
从错误的索引开始,并且未通过测试条件。它应该是
for(i=N;i<0;i--)
答案 2 :(得分:3)
以下给出的循环存在一些问题。
for(i=N;i<0;i--)
{
printf("%i", numbers[i]);
}
return 0;
如果要从底部到起点打印阵列。 您可以在for循环中进行一些更改。
1-在为i分配值时更改循环:
i = N-1
- &gt;因为数组的大小是20,数组索引从0开始。
它将以19到0来打印所有20个数据值。
2。条件检查for循环中的更改:
我们打印反向数组时i >= 0
。
正确的循环应该是
for(i = N-1; i >= 0; i--)
{
printf("%i", numbers[i]);
}
答案 3 :(得分:1)
第二个循环必须是
"packages":{
"file-saver":{
"main":"FileSaver.js",
"format": "cjs"
}
}
因此索引将从19到0(20数字)
试试这个
for(i=N;i>=0;i--)
答案 4 :(得分:1)
试试这个:
#include <stdio.h>
#define N 20
int main(void)
{
int numbers[N];
int i;
for(i = 0; i < N; i++)
{
scanf("%i", &numbers[i]);
}
for(i = N - 1; i >= 0; i--)
{
printf("%i ", numbers[i]);
}
return 0;
}
请记住,scanf总是使用指针。
答案 5 :(得分:1)
有(ⅰ= N-1; I&GT; = 0; I - )
对于数组中的n个项目,最后一个索引将为n-1。你需要从n-1索引迭代到第0个索引。
答案 6 :(得分:1)
你的第二个循环条件,&#34; i&lt; 0&#34;,开头是假的。它应该是&#34; i&gt; -1&#34 ;.您还需要确保第一次使用索引19而不是20来调用printf。这就是为什么我使用预减量运算符 - i。
for(i = N; i > -1; )
{
printf("%i\n", numbers[--i])
};