-1

出力は

 Student Number: 93745;
 Grade Point Ave:2.9;
 Sex (M or F):'M';

しかし、私はそれらの必要な出力を得ることができませんでした. コードの間違いを指摘し、それを解決するのを手伝ってください. ありがとう!

#include <stdio.h> 
struct student {
 int num;    
 double gpa;
 char sex;   
};

void printstudent(struct student *p); /* prototype */

int main() {
/* allocate storage and initialize it */
struct student joe,*kim;
kim=&joe;

kim->num = 93745;
kim->gpa = 2.9;   
kim->sex = 'M';   


printstudent(joe);

}


void printstudent(struct student *p) {
printf("Student Number: %i\n", p->num);
printf("  Grade Point Ave: %0.2f\n",p->gpa);
printf("  Sex (M or F): %c\n\n", p->sex);
}
4

4 に答える 4

2
printstudent(joe);

joe( type の値struct student) をポインタとして解釈しようとします。kimまたはを渡す必要があります&joe

于 2012-12-18T14:40:51.880 に答える
0

ここでポインタを使用する理由はないことを指摘したいと思います。

int main() {
  /* allocate storage and initialize it */
  struct student joe;

  joe.num = 93745;
  joe.gpa = 2.9;   
  joe.sex = 'M';   

  printstudent(joe);
  return 0;
}


void printstudent(struct student p) {
  printf("Student Number: %i\n", p.num);
  printf("  Grade Point Ave: %0.2f\n",p.gpa);
  printf("  Sex (M or F): %c\n\n", p.sex);
}

うまく動作します。

于 2012-12-18T14:47:22.813 に答える
0

あなたのプログラムが、プログラムの出力を期待通りの出力に衒学的にチェックする自動化されたシステムによって拒否されたと仮定すると、次の問題が発生します。

  1. 性別出力を囲む一重引用符は、M自分で追加する必要があります。これらは、 printf 指定子によって生成されません。%c
  2. 印刷する 2 行目と 3 行目には、必要な出力で確認できるよりも多くのスペースが含まれています (特に行頭とコロンの後)。
  3. 行末に期待されるセミコロンを出力していません。
于 2012-12-18T15:49:16.503 に答える
0
printstudent(joe);

する必要があります

printstudent(kim);

また

printstudent(&joe);

関数は構造体へのポインタを取るためです。

于 2012-12-18T14:41:09.320 に答える