0

問題:的printf不打印的數據我想

麻煩與printf和scanf函數

目標:

中級設計習作: 建立一個花園店。

此時,所有需要的是輸入關於商店的一串數據(特定模式),例如啓動成本,員工成本,平方英尺等等所有在一條線上。然後以半意義的方式顯示它們。

代碼:

#include <stdio.h> 
#include <string.h> 

#define MAXSTRING  100 

#define MAXROOMS  20 
#define MAXSTAFF  30 

#define ANNUAL   0 
#define WATER_PERENNIAL 1 
#define XERIC_PERENNIAL 2 
#define NATIVE_SHRUB 3 
#define NATIVE_TREE  4 
#define OTHER   5 

#define AMOUNT   0 
#define AVGPRICE  1 
#define MARKUP   2 

#define MANAGER   0 
#define OWNER   1 
#define HORTICULTARIST 2 
#define SALES_STAFF  3 

#define AVAILABLE  0 
#define HRWAGES   1 
#define MOHOURS   2 

#define INDOOR   0 
#define LOADING   1 
#define OUTDOOR   2 
#define BATHROOM  3 
#define OFFICE   4 

#define LENGTH   0 
#define WIDTH   1 

int main(void) 
{ 

// Arrays 
    float stockinfo[6][3], staffdata[4][3], roomsize[5][18][2]; 
      /* 
       -->stockinfo [stock type(6)] [Quantity/Cost/percent Markup] 
       -->staffdata [staff type(4)] [Quantity/wage/Hrs. per Mo.] 
       --> roomsize [room type(5)] [Room # (i.e. Bathroom #2)] [Length/Width] 
      */ 
    int  roomtype[5], stafftype[4]; 
    char sectionname[36][40]; 
    char Nstock[6], Nstaff[4], Nrooms[5]; 
      /* 
       N____[ ]: Stock/Staff/Room code (single letter) 
      */ 

// Counters 
    int i=0, j=0, k=0, l=0; 

// Variables 
    float CBL, CPU, CWU, CBP, CSF, maxwage, O_RSF, I_RSF; 
     /* 
      CBL:Cost of Business License ~$500 
      CPU:Cost of Power Utility Connection fee ~$250.00 
      CWU:Cost of Water Utility Connection fee ~$69.99 
      CBP:Cost of Business Permit ~$50.00 
      CSF:Cost of Start-up Fund ~$15,000.00 
     */ 
    int Qstock, Qstaff, Qrooms; 
     /*Number of different types of (Stock, Staff, or Rooms) */ 
    char Z; 
     /* Character place holder */ 

// Code: 
    printf("prompt>"); 
    scanf("%f %f %f %f %f", &CBL, &CPU, &CWU, &CBP, &CSF); 
    scanf("%d", &Qstock); 

    for(i=0; i<Qstock; i++) 
     scanf(" %c", &Nstock[i]); 
    for(j=0; j<3; j++) 
    { 
     for(i=0; i<Qstock; i++) 
     { 
      Z = Nstock[i]; 
      switch(Z) 
      { 
       case 'A': scanf(" %f", &stockinfo[ANNUAL][j]); 
        break; 
       case 'W': scanf(" %f", &stockinfo[WATER_PERENNIAL][j]); 
        break; 
       case 'X': scanf(" %f", &stockinfo[XERIC_PERENNIAL][j]); 
        break; 
       case 'N': scanf(" %f", &stockinfo[NATIVE_SHRUB][j]); 
        break; 
       case 'T': scanf(" %f", &stockinfo[NATIVE_TREE][j]); 
        break; 
       case 'O': scanf(" %f", &stockinfo[OTHER][j]); 
        break; 
       default : scanf(" %f", &stockinfo[OTHER][j]); 
        break; 
      } 
     } 
    } 

    scanf("%d", &Qstaff); 

    for(i=0; i<Qstaff; i++) 
     scanf(" %c", &Nstaff[i]); 
    for(j=0; j<3; j++) 
    { 
     for(i=0; i<Qstaff; i++) 
     { 
      Z = Nstaff[i]; 
      switch(Z) 
      { 
       case 'M': scanf(" %f", &staffdata[MANAGER][j]); 
        break; 
       case 'H': scanf(" %f", &staffdata[HORTICULTARIST][j]); 
        break; 
       case 'O': scanf(" %f", &staffdata[OWNER][j]); 
        break; 
       case 'S': scanf(" %f", &staffdata[SALES_STAFF][j]); 
        break; 
       default : scanf(" %f", &staffdata[SALES_STAFF][j]); 
        break; 
      } 
     } 
    } 

    scanf(" %f", &maxwage); 

    scanf("%d", &Qrooms); 

    for(i=0; i<Qrooms; i++) 
     scanf(" %c", &Nrooms[i]); 
    for(i=0; i<Qrooms; i++) 
    { 
     Z = Nrooms[i]; 
     switch(Z) 
     { 
      case 'I': scanf(" %d", &roomtype[INDOOR]); 
       break; 
      case 'L': scanf(" %d", &roomtype[LOADING]); 
       break; 
      case 'S': scanf(" %d", &roomtype[OUTDOOR]); 
       break; 
      case 'B': scanf(" %d", &roomtype[BATHROOM]); 
       break; 
      case 'O': scanf(" %d", &roomtype[OFFICE]); 
       break; 
     } 
    } 

    scanf(" %f %f", &I_RSF, &O_RSF); 

/********************************************************************************************* 

        End of Input 

*********************************************************************************************/ 

    for(i=0; i<Qrooms; i++) 
    { 
     Z = Nrooms[i]; 
     switch(Z) 
     { 
      case 'I': for(j=0; j<roomtype[INDOOR]; j++) 
       { 
        scanf(" %f %f %s", &roomsize[INDOOR][j][LENGTH], &roomsize[INDOOR][j][WIDTH], &sectionname[k]); 
        k++; 
       } 
        break; 
      case 'L': for(j=0; j<roomtype[LOADING]; j++) 
       { 
        scanf(" %f %f", &roomsize[LOADING][j][LENGTH], &roomsize[LOADING][j][WIDTH]); 
        k++; 
       } 
        break; 
      case 'S': for(j=0; j<roomtype[OUTDOOR]; j++) 
       { 
        scanf(" %f %f %s", &roomsize[OUTDOOR][j][LENGTH], &roomsize[OUTDOOR][j][WIDTH], &sectionname[k+18]); 
        k++; 
       } 
        break; 
      case 'B': for(j=0; j<roomtype[BATHROOM]; j++) 
       { 
        scanf(" %f %f", &roomsize[BATHROOM][j][LENGTH], &roomsize[BATHROOM][j][WIDTH]); 
        k++; 
       } 
        break; 
      case 'O': for(j=0; j<roomtype[OFFICE]; j++) 
       { 
        scanf(" %f %f", &roomsize[OFFICE][j][LENGTH], &roomsize[OFFICE][j][WIDTH]); 
        k++; 
       } 
        break; 
      default : break; 
     } 
    } 


    printf("\n\n\n CBL: $%9.2f\n CPU: $%9.2f\n CWU: $%9.2f\n CBP: $%9.2f\n CSF: $%9.2f\n\n %d:", CBL, CPU, CWU, CBP, CSF, Qstock); 

    for(i=0; i<Qstock; i++) 
     printf(" %c", Nstock[i]); 
    for(j=0; j<3; j++) 
    { 
     printf("  \n"); 
     for(i=0; i<6; i++) 
     { 
      printf(" %9.2f", stockinfo[i][j]); 
     } 
    } 

    printf("\n\n %d:", Qstaff); 

    for(i=0; i<Qstaff; i++) 
     printf(" %c", Nstaff[i]); 
    for(j=0; j<3; j++) 
    { 
     printf("  \n"); 
     for(i=0; i<4; i++) 
     { 
      printf(" %9.2f", staffdata[i][j]); 
     } 
    } 

    printf("\n\n %9.2f\n", maxwage); 

    printf("\n %d:", Qrooms); 

    for(i=0; i<Qrooms; i++) 
     printf(" %c", Nrooms[i]); 

    printf("\n"); 
    for(i=0; i<4; i++) 
    { 
     printf(" %9d", roomtype[i]); 
    } 


    printf("\n\n %9.2f %9.2f\n\n\n\n", I_RSF, O_RSF); 

    k=0; 

    for(i=0; i<Qrooms; i++) 
    { 
     Z = Nrooms[i]; 
     switch(Z) 
     { 
      case 'I': for(j=0; j<roomtype[INDOOR]; j++) 
       { 
       printf(" %9.2f %9.2f  %s\n", roomsize[INDOOR][j][LENGTH], roomsize[INDOOR][j][WIDTH], sectionname[k]); 
       k++; 
       } 
       break; 
      case 'L': for(j=0; j<roomtype[LOADING]; j++) 
       { 
       l=j+1; 
       printf(" %9.2f %9.2f  Loading Dock %d\n", &roomsize[LOADING][j][LENGTH], &roomsize[LOADING][j][WIDTH], l); 
       k++; 
       } 
       break; 
      case 'S': for(j=0; j<roomtype[OUTDOOR]; j++) 
       { 
       printf(" %9.2f %9.2f  %s\n", &roomsize[OUTDOOR][j][LENGTH], &roomsize[OUTDOOR][j][WIDTH], sectionname[k+18]); 
       k++; 
       } 
       break; 
      case 'B': for(j=0; j<roomtype[BATHROOM]; j++) 
       { 
       l=j+1; 
       printf(" %9.2f %9.2f  Bathroom %d\n", &roomsize[BATHROOM][j][LENGTH], &roomsize[BATHROOM][j][WIDTH], l); 
       k++; 
       } 
       break; 
      case 'O': for(j=0; j<roomtype[OFFICE]; j++) 
       { 
       l=j+1; 
       printf(" %9.2f %9.2f  Office %d\n", &roomsize[OFFICE][j][LENGTH], &roomsize[OFFICE][j][WIDTH], l); 
       k++; 
       } 
       break; 
      default : break; 
     } 
    } 

    printf("There are %d rooms.\n\n", l); 
return 0; 
} 

INPUT:

500.00 250.00 69.99 50.00 15000.00 
4 X A N O 65 500 150 325 35.50 2.00 22.00 7.25.75 .90 1.00 .90 
3 M H S 2 1 5 12.50 18.00 10.10 120 48.8 76.4 27.50 
4 S I B L 3 1 2 3 
120.00 75.50 

40.0 60.0 Hardy_Shrubs 
20.0 20.0 Native_Shrubs 
20.0 20.0 Hardy_Trees 
45.5 35.3 Flowers 
10.5 10.0 
9.5 10.0 
15.0 10.0 
10.0 5.0 
20.0 10.0 

其表示:

business license cost of   $500.00 
power utility connection cost of $250 
water utility connection fee of  $69.99 
business permit cost of    $50 
start up fund of     $15,000 

Stock Type(4):  Quantity Cost  Markup 
xeric perennials 65   $35.50  0.75 
annuals    500   $ 2.00  0.90 
native shrubs  150   $22.00  1.00 
and other   325   $ 7.25  0.90 

Staff Type(3):  Quantity Hourly-Wage Hours-worked-per-month 
managers   2   $12.50  120 
horticulturists  1   $18.00  48.58 
sales staff   5   $10.10  76.4 

The maximum hourly wage for any employee is $27.50. 

Room Type(4):  Quantity 
Outdoor Sales  3 
Indoor Sales  1 
Bathrooms   2 
Loading Areas  3 

The rental rate per indoor square foot per year is $120.00. 
The rental rate per outdoor square foot per year is $75.50. 

其餘數據是用於每個房間一行。
線的順序與房間的順序相匹配 3個室外銷售室,1個室內銷售室,2個浴室和3個裝載區是9條線。

對於銷售房間有長度,寬度,然後房間名稱。在上面的例子中:

第一個室外銷售室是40'×60',它被命名爲「Hardy_Shrubs」。
第二個室外銷售室是20'×20',被稱爲「Native_Shrubs」。
同樣爲第三個戶外銷售室稱爲「Hardy_Trees」。 第四個房間是45.5'x 35.3'室內銷售室名稱「Flowers」。
第五個房間是10.5'×10'的第一個浴室,第二個浴室是9.5'x 10'。三個裝載區域的尺寸爲15'×10',10'×5'和20'×10'。

該數據隨後打印時主要河段/ *輸入結束*/

不幸的是,這是會打印:

CBL: $ 500.00 
CPU: $ 250.00 
CWU: $ 69.99 
CBP: $ 50.00 
CSF: $ 15000.00 

    4: X A N O  
    500.00  0.00  65.00 150.00  0.00 325.00  
     2.00  0.00  35.50  22.00  0.00  7.25  
     0.90  0.00  0.75  1.00  -0.00  0.90 

    3: M H S  
     2.00  0.00  1.00  5.00  
    12.50  0.00  18.00  10.10  
    120.00  0.00  48.80  76.40 

    27.50 

    4: S I B L 
    1   3   3   2 

    120.00  75.50 /* <-- Correct */ 

    /* ERROR SECTION */ 

    120.00  75.50        /* wrong */ 
    120.00  75.50        /* wrong */ 
    120.00  75.50        /* wrong */ 
    45.50  35.30  Flowers     /* Correct! */ 
    45.50  35.30  Bathroom 1826556656  /* wrong */ 
                /* Should be: 10.50  10.00 Bathroom 1 */ 
    45.50  35.30  Bathroom 1826556664  /* wrong */ 
    45.50  35.30  Loading Dock 1826556368 /* wrong */ 
    45.50  35.30  Loading Dock 1826556376 /* wrong */ 
    45.50  35.30  Loading Dock 1826556384 /* wrong */ 

/* ** * ** * ** * ** * ** * ** * ** * ** * ** * **/

 QUESTION 

/* ** * ** * * * * ** * ** * ** * ** * ** * ** * **/

我在這個一直盯着幾個小時。

爲什麼房間尺寸以每平方英尺的價格開始,然後更改爲室內花卉區域的正確值,然後爲其餘房間保持相同的尺寸?

而且爲什麼它打印:

裝卸碼頭1826556368

裝卸碼頭1826556376

裝卸碼頭1826556384

代替:

裝卸碼頭1

加載碼頭2

裝載碼頭3

??????????

回答

0

scanf(" %f", &maxwage);我看到你在所有scanf功能%f之前保持一個空間,記住,空間都採取了在考慮在打字的時候,所以如果不按space然後鍵入值,那麼這可能是錯誤的來源