所以我有这个数组,我需要找到Min,Max和Average。我已经想出如何获得Max,我的代码看起来是正确的,但它不起作用所以我必须遗漏一些东西。我还需要找到输入数字的平均值。我能找到的一切只有在你拥有数组的大小时才有效。我为数组设置了最大大小,但它没有被用户输入填充。我已经盯着测试这几天了,仍然无法弄明白。
我知道平均而言我需要的东西(在顶部添加了声明),但我无法弄清楚如何让它工作:
for (i = 0; i < numOfGrades; i++) {
sum += grades[i];
}
avg = (double) sum / numOfGrades;
以下是我的其余代码:
#include <stdio.h>
int main(){
int grades [100];
int i = 0;
int small, big, input;
printf("Enter a series of grades. When done, enter any number above 100.\n\n");
while (i <= 100) { //while loop to set maximum for array
printf("Enter grade:");
if (scanf("%d", &input) == 1) {
if (input >= 0 && input <=100) {
grades[i] = input; //if good, add to array
i++;
}
else {
printf("\n\nExiting entry.\n");
printf("\n\nGrades entered:\n\n");
i = i - 1;
break; //exiting loop
}
}
}
int x, y;
for (x = 0; x <= i; x++) {
printf("Grade: %d\n", grades[x]); //print array
}
big = small = grades[0];
for (y = 0; y < i; y++) {
if (grades[y] > big) {
big = grades[y];
}
else if (grades[y] < small) {
small = grades[y];
}
}
printf("Highest number : %d\n", big);
printf("Smallest number: %d\n", small);
return 0;
}
答案 0 :(得分:1)
在这里你做对了:
x <= i
因为i
会将您从0带到min/max
的值。然后在 for (y = 0; y < i; y++) {
循环中执行此操作:
i-1
所以你要从0到y <= i
。您有两个选择:
i
使上述循环正确。while
循环中递减i = i - 1;
(不要这样做i
)这样,x <= i
代表输入的数字,而不是输入的数字 - 1(您需要将x < i
修正为i
)。这是一个实例。 http://ideone.com/ZEaDue
要计算平均值,你做的是正确的,你可以重复使用int sum = 0, avg = 0;
for (y = 0; y < i; y++) {
sum += grades[y];
}
avg = (double) sum / i;
printf("Avg: %d\n", avg);
:
<?PHP
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'testdb';
$mysqli = new mysqli($host, $user, $pass, $db);
//show tables
$result = $mysqli->query("SHOW TABLES from testdb");
//print_r($result);
while($tableName = mysqli_fetch_row($result))
{
$table = $tableName[0];
echo '<h3>' ,$table, '</h3>';
$result2 = $mysqli->query("SHOW COLUMNS from ".$table.""); //$result2 = mysqli_query($table, 'SHOW COLUMNS FROM') or die("cannot show columns");
if(mysqli_num_rows($result2))
{
echo '<table cellpadding = "0" cellspacing = "0" class "db-table">';
echo '<tr><th>Field</th><th>Type</th><th>Null</th><th>Key</th><th>Default</th><th>Extra</th></tr>';
while($row2 = mysqli_fetch_row($result2))
{
echo '<tr>';
foreach ($row2 as $key=>$value)
{
echo '<td>',$value, '</td>';
}
echo '</tr>';
}
echo '</table><br />';
}
}
?>
答案 1 :(得分:1)
实际上你确实有成绩数
if (scanf("%d", &input) == 1) {
if (input >= 0 && input <=100) {
grades[i] = input; //if good, add to array
i++;
}
else {
numOfGrades=i;
printf("\n\nExiting entry.\n");
printf("\n\nGrades entered:\n\n");
i = i - 1;
break; //exiting loop
}
至于最低限度,你的逻辑应该是这样的:
for (y = 0; y < numOfEdges; y++) {
if (grades[y] > big) {
big = grades[y];
}
if (grades[y] < small) {
small = grades[y];
}
}
我删除的 else 语句应该可以解决问题。我也会一直使用
任何循环结构中的 for(int var = 0; var < numOfEdges; var++)
。以这种方式遵循逻辑更容易:你已经计算了边数(numOfEdges),但是你的循环只有numOfEdges-1,因为你从索引0开始。