问题可能有点模糊,所以请允许我详细说明。我的目标是根据用户输入计算下载速度。因此,示例输出显示为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 如果你读到那么远,谢谢!现在我的问题是如何以上面显示的格式打印输出,以便每次循环运行时,它会根据文件大小和下载速度打印出正确的下载速度。
答案 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