如何使用C中的for循环打印出一系列答案?

时间:2016-10-06 23:46:43

标签: c for-loop while-loop

问题可能有点模糊,所以请允许我详细说明。我的目标是根据用户输入计算下载速度。因此,示例输出显示为here

所以我继续使用以下代码询问用户输入(这部分完全有效但只是为了给你更大的图片)

#include <stdio.h>

int main(void) {

int minFileSize, maxFileSize, maxDLSpeed, minDLSpeed;
int time;


//first we get user input for minimum size and download speeds
printf("Enter a minimum file size: ");
scanf("%d", &minFileSize);
//after this condition is satisfied..
while (minFileSize <= 0 ) {
    printf("Invalid input. Try again: \n");
    scanf("%d", &minFileSize);

    while(getchar() != '\n' );                        //clears caches
}
//program continues
printf("Enter a minimum download speed (MB/s): ");
scanf("%d", &minDLSpeed);
while (minDLSpeed <= 0) {
    printf("Invalid input. Try again: ");
    scanf("%d", &minDLSpeed);

    while ( getchar() != '\n' );
}
printf("Enter a maximum file size (MB): ");
scanf("%d", &maxFileSize);
while (maxFileSize < minFileSize) {                   //maxFileSize can't be lower than minFileSize
    printf("Invalid input. Try again: ");
    scanf("%d", &maxFileSize);

    while (getchar() != '\n');
}
printf("Enter maximum download speed (MB/s): ");
scanf("%d", &maxDLSpeed);
while (maxDLSpeed < minDLSpeed) {
    printf("Invalid input. Try again: ");
    scanf("%d", &maxDLSpeed);

    while (getchar() != '\n');
}

其中while(getchar()!='\ n')只是清除缓存,所以我们可以继续下一个输入。

获取用户输入后,我使用嵌套的for循环将最小文件大小一直循环到最大大小(因此当它达到最大大小时停止,这取决于用户输入的内容)然后为最低下载速度和最大下载速度做同样的事情。 然后每次循环迭代时,它应该输出下载速度,即(文件大小/下载速度)所以i / j代表这个

这是我用于

的循环
for (int i = minFileSize; i <= maxFileSize; i++)
{
    for (int j = minDLSpeed; j<= maxDLSpeed; j++) {

        time = i / j;     
    };
}

Phew 如果你读到那么远,谢谢!现在我的问题是如何以上面显示的格式打印输出,以便每次循环运行时,它会根据文件大小和下载速度打印出正确的下载速度。

1 个答案:

答案 0 :(得分:0)

你的循环似乎是错误的方式。外部for循环应该用于下载速度,而内部循环用于文件大小:

for (int dl_speed=minDLSpeed; dl_speed<=maxDLSpeed; dl_speed++) {
    printf("%6.2fMB/s |", (float)dl_speed);
    for (int file_size=minFileSize; file_size<=maxFileSize; file_size++)
        printf("%6.2fs", (float)file_size / dl_speed);
    printf("\n");
}

那应该给你桌子的主体。您还需要添加标题行,现在您应该能够根据上面显示的代码计算出如何执行此操作。对于您的输入值,您将得到一个如下所示的表:

Enter a minimum file size: 8
Enter a minimum download speed (MB/s): 9
Enter a maximum file size (MB): 13
Enter maximum download speed (MB/s): 12
  9.00MB/s |  0.89s  1.00s  1.11s  1.22s  1.33s  1.44s
 10.00MB/s |  0.80s  0.90s  1.00s  1.10s  1.20s  1.30s
 11.00MB/s |  0.73s  0.82s  0.91s  1.00s  1.09s  1.18s
 12.00MB/s |  0.67s  0.75s  0.83s  0.92s  1.00s  1.08s