c语言结构体输入身高体重,c++:输入n名学生的身高体重,按身高排序输出并计算平均体重和身高...
我的代碼如下:
#include "stdio.h"
#include "math.h"
#include "stdlib.h"
#include "string.h"
struct stuS
{
char *name;
int height;
int weight;
struct stuS *next;
};
void printList(struct stuS * head)
{
while(head!=NULL)
{
printf("學生姓名 :%s\n",head->name);
printf("身高 :%d\n",head->height);
printf("體重 :%d\n",head->weight);
printf("-----------------------\n");
head=head->next;
}
}
int main(int argc, char const *argv[])
{
stuS *u, *v, *p, *head=NULL; /*u指向上一個,v指向當前表元 */
int ?k;
int i;
int av_height,av_weight=0;
printf("請輸入學生總數\n");
scanf("%d",&i);
char *c_name = NULL;
for(k = 0; k < i; k++) {
p = (stuS *)malloc (sizeof(stuS));
printf("請輸入學生姓名\n");
c_name=(char *)malloc(10*sizeof(char)); /*為c_name分配10個字符長度的內存*/
scanf("%s",c_name);
p->name = c_name;
printf("請輸入學生體重\n");
scanf ("%d", & p->weight);
printf("請輸入學生身高\n");
scanf ("%d", & p->height); ? ? ? ? ? ?/*輸入語句*/
av_height += p->height;
av_weight += p->weight; ? ? ? ? ? ? ? /*計算總和*/
v = head; ? /* 從首表元開始尋找插入位置 */
while(v != NULL && p->height > v->height) //尋找要插入的位置
{u = v; v = v->next; }//保存前驅表元指針,并考察下一個表元
if(v == head) ?head = p;/* 新表元插在首表元之前 */
else ?u->next=p;//新表元插在u所指表元之后,v所指表元之前
p->next = v;
}
printList(head);
printf("\n平均身高為%d\n",av_height/i);
printf("平均體重為%d\n",av_weight/i);
return 0;
}
運行結果顯示的十分奇怪,我輸出了各表元后發現確實排序了,表元內的成員數據也是正確的,但是平均身高卻死活都是錯的,請教一下
試運行結果如下:
請問代碼是哪里出了問題嗎
總結
以上是生活随笔為你收集整理的c语言结构体输入身高体重,c++:输入n名学生的身高体重,按身高排序输出并计算平均体重和身高...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算1至1000间的合数c语言,输出10
- 下一篇: 超长整数相加 c语言类,二个超长正整数的