因此,此C程序显示一个菜单,并要求用户输入1-4中的数字。如果选择了一个,程序则要求用户输入参数。然后再次显示菜单。如果选择2,则程序应在格式化的表中显示用户的输入。这就是我遇到麻烦的地方,我不知道如何将用户输入到for循环中以在格式化的表中打印出来。这是我目前的代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int numOfInst, totalCycles, totalInst, clockRate;
void parameters(){
totalInst = 0;
totalCycles = 0;
int counter, cpiClass, instCount;
printf("Enter the number of instruction classes: \n");
scanf(" %d", &numOfInst);
printf("Enter the frequency of the machine (MHz): \n");
scanf(" %d", &clockRate);
for (counter = 0; counter < numOfInst; counter++){
printf("Enter CPI of class %d: ", counter + 1);
scanf(" %d", &cpiClass);
printf("Enter instruction count of class %d (millions): ", counter + 1);
scanf(" %d", &instCount);
totalInst += instCount;
totalCycles += cpiClass * instCount;
}
return;
}
float avgCPI(){
float avg = totalCycles / ((float)totalInst);
return (avg);
}
float execTime(){
float time = (totalCycles / ((float)clockRate)) * 1000;
return (time);
}
float calcMips(){
float mips = totalInst / (totalCycles / ((float)clockRate));
return (mips);
}
void printParam(){
int i;
printf("-------------------------\n");
printf("| Class\t | CPI\t |Count\t |\n");
for (i = 0; i < numOfInst; i++);
printf(" %d\t", (i));
/*totalCycles[i], totalInst[i]);*/
return;
}
/*void printPerformance{
}*/
int main()
{
int option;
do {
printf("Performance assessment: ");
printf("\n-----------------------");
printf("\n1) Enter parameters: ");
printf("\n2) Print table of parameters: ");
printf("\n3) Print table of performance ");
printf("\n4) Quit \n");
scanf(" %d", &option);
switch (option){
case 1: parameters();
break;
case 2: printParam();
break;
case 3:
break;
case 4:
break;
default: printf("Invalid input, please enter a number from 1-4 ");
}
}while(option != 4);
return 0;
}
答案 0 :(得分:0)
注意你只有int变量来存储numOfInst,totalCycles,totalInst和clockRate。这意味着无论何时为这些变量赋值,前一个值都会被覆盖并丢失。为了打印出所有以前的输入,您必须将它们存储在某些数据结构中(提示:查看列表或散列图)。使用数组存储输入也可以,但这会限制您可以存储到数组大小的输入数量。
答案 1 :(得分:0)
<强>代码:强>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int cpiClass[10000], instCount[10000], numOfInst;
void parameters(){
int counter;
printf("Enter the number of instruction classes: \n");
scanf(" %d", &numOfInst);
for (counter = 0; counter < numOfInst; counter++){
printf("Enter CPI of class %d: ", counter + 1);
scanf(" %d", &cpiClass[counter]);
printf("Enter instruction count of class %d (millions): ", counter + 1);
scanf(" %d", &instCount[counter]);
}
return;
}
void printParam(){
int i;
printf("-------------------------\n");
printf("| Class\t | CPI\t |Count\t |\n");
for (i = 0; i < numOfInst; i++){
printf(" %d\t%d\t%d\t\n", i+1,cpiClass[i],instCount[i]);
}
return;
}
int main()
{
int option;
do {
printf("\nPerformance assessment: ");
printf("\n-----------------------");
printf("\n1) Enter parameters: ");
printf("\n2) Print table of parameters: ");
printf("\n3) Quit \n");
scanf(" %d", &option);
switch (option){
case 1: parameters();
break;
case 2: printParam();
break;
case 3:
break;
default: printf("Invalid input, please enter a number from 1-3 ");
}
}while(option != 3);
return 0;
}
此代码可以作为您接受的输出正常工作。
我在这里编辑的内容:
在第5行,我声明了2个数组并将它们公开。
int cpiClass[1000], instCount[10000], numOfInst;
在参数()中,功能行12和14在数组中输入。
scanf(" %d", &cpiClass[counter]);
scanf(" %d", &instCount[counter]);
现在我的所有输入数据都存储在这两个数组中。
在main函数中,当选择选项2时,它显示来自那些数组的数据。
在 printParam()功能编辑
printf(" %d\t%d\t%d\t\n", i+1,cpiClass[i],instCount[i]);
此打印功能将在您接受时显示您的输出。
注意:强>
如果您与代码进行比较,这里缺少某些功能。我已删除它们,因为显示此输出不需要它们。
如果您需要所有代码,请转到here。
我已将所有代码包括在内,包括其他功能。