-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(类型的值struct student)解释为指针。您需要通过kim&joe

于 2012-12-18T14:40:51.880 回答
0

假设您的程序被一个自动系统拒绝,该系统会严格检查程序的输出是否符合预期输出,您会遇到以下问题:

  1. 用于性输出的单引号M必须由您自己添加。它们不会%cprintf 说明符生成。
  2. 您打印的第二行和第三行中的空格比我在所需输出中看到的要多(尤其是在行首和冒号之后)
  3. 您没有在行尾打印预期的分号。
于 2012-12-18T15:49:16.503 回答
0
printstudent(joe);

应该

printstudent(kim);

或者

printstudent(&joe);

因为该函数需要一个指向结构的指针。

于 2012-12-18T14:41:09.320 回答
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 回答