| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1751 人关注过本帖, 1 人收藏
标题:求救啊!!我原来那3个题目最后做的结果一个都不对
只看楼主 加入收藏
G★star
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2004-6-9
收藏(1)
 问题点数:0 回复次数:12 
求救啊!!我原来那3个题目最后做的结果一个都不对

1.输入N(不大于20)个单精度存入一维数组,用指针变量处理数组元素的方法将其逆序存放后在解出,N以键盘输入。

main() { float *p,s[20],t[20]; int n,i; printf("input string:"); scanf("%d",&n); for(i=0;i<n;i++) scanf("&f",&s[i]); p=s; for(i=n-1;i>=0;i--) printf("%f",*(p+i));

}

2.求3*5整数矩阵中的最大元素,最小元素,所有元素的平均值。(要求用指向二维数组首地址的指针变量二维数组排列方式处理二维数组元素)  main() {int *p,*pmin,*pmax,i,j,a[3][5]; float average,sum=0; printf("input"); for(j=0;j<5;j++) for(i=0;i<3;i++) scanf("%d",&a[i][j]); p=&a[0][0]; pmin=p; pmax=p; {if(*pmax<*(p+j*3+i))pmax=p+j*3+i; if(*pmin>*(p+j*3+i))pmin=p+j*3+i; sum=sum+*(p+i*5+j); } p=&a[0][0]; for(i=0;i<3;i++) for(j=0;j<5;j++) sum=sum+*(p+i*5+j); average=sum/15; printf("%d",*pmax); printf("%d",*pmin); printf("%5.2f",average); } 3.有N个小孩子,按顺时针方向围成一个圆。老师指定从第一个小孩开始报数,按顺序1,2,3…… 数到M个小孩时,该小孩子退到圈外,然后从编号为M的下一个小孩子开始报数。如此重复下去,直到所有小孩都出列,求小孩的出列顺序。 1.用链表处理 2.N和M用键盘输入。 3.分别用3个函数创建一个链表的求解。完成的求解用链表输出小孩的出列顺序。 4.在主函数中调用上面的函数。 #include <stdio.h> #include <malloc.h>

struct node; typedef struct node NODE, *PNODE; struct node { int id; PNODE next; }; void FreeList( PNODE head ) { if( head->next == NULL ) free( head ); else FreeList( head->next ); }

void main() { int n,m; int i; PNODE head=NULL; PNODE sequence = NULL; PNODE prev,succ; PNODE temp;

printf("Input n and m:\n"); scanf("%d,%d",&n,&m);

head = (PNODE)malloc(sizeof(NODE)); head->id = 1; prev = head; for( i = 1; i < n; ++i) { succ = (PNODE)malloc( sizeof(NODE) ); succ->id = i + 1; prev->next = succ; prev = succ; } prev->next = head;

succ = head; while( succ->next!= succ ) { for( i = 1; i < m ; ++i) succ = succ->next; if( sequence == NULL ) sequence = succ; else { temp = sequence; while( temp->next != NULL ) temp = temp->next; temp->next = succ; } prev = succ; while( prev->next != succ ) prev = prev->next; prev->next = succ->next; succ->next = NULL; succ = prev->next; } succ->next = NULL; temp = sequence; while( temp->next != NULL ) temp = temp->next; temp->next = succ;

temp = sequence; while( temp != NULL) { printf( "%d\t", temp->id ); temp = temp->next; } }

搜索更多相关主题的帖子: 题目 元素 变量 结果 
2004-06-15 18:03
zff_ff
Rank: 1
等 级:新手上路
帖 子:147
专家分:0
注 册:2004-5-12
收藏
得分:0 

什么地方错?咋错?

这么长的代码看的好累的说


偶是一只想要飞却忘了咋飞的菜鸟
2004-06-15 19:14
G★star
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2004-6-9
收藏
得分:0 

这应该不上一程序上的错误。 运行的结果不符合题目的意思,也有是说设计上可能和原来的题目要求不符合吧。


我很笨的!! 但我很勤奋!!
2004-06-15 23:55
G★star
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2004-6-9
收藏
得分:0 

   晕!!!jzh2004大哥怎么不在了??

5555,谁能帮我改下呀!!!


我很笨的!! 但我很勤奋!!
2004-06-17 14:22
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 

// for the first one

#include <stdio.h> #include <stdlib.h>

int main() { float s[20]; int i,j; char ct = 'y'; printf("You can 20 numbers in array\n"); printf("Please enter the numbers in array:\n"); for(i=0;i<20;i++) { printf("The %d. number : ", i+1); scanf("%f",&s[i]); printf("continue?<Y - continue> else end. "); getchar(); ct = getchar(); if(ct == 'y' || ct == 'Y') continue; else break; } for(j=i;j>=0;j--) printf("%f ",s[j]); system("pause"); return 0;

}


自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2004-06-17 19:03
jzh2004
Rank: 1
等 级:新手上路
帖 子:341
专家分:0
注 册:2004-4-30
收藏
得分:0 

第二题帮你改了一下,不知道你是不是抄错了?

#include <stdio.h> void main() {int *p,*pmin,*pmax,i,j,a[3][5]; float average,sum=0; printf("input"); for(j=0;j<5;j++) for(i=0;i<3;i++) scanf("%d",&a[i][j]); p=&a[0][0]; pmin=p; pmax=p;

for(i=0;i<3;i++) for(j=0;j<5;j++)

{if(*pmax<*(p+j*3+i))pmax=p+j*3+i; if(*pmin>*(p+j*3+i))pmin=p+j*3+i; sum=sum+*(p+i*5+j); } average=sum/15; printf("%d\n",*pmax); printf("%d\n",*pmin); printf("%5.2f",average); }


我的主页 http://www.
2004-06-17 19:43
zff_ff
Rank: 1
等 级:新手上路
帖 子:147
专家分:0
注 册:2004-5-12
收藏
得分:0 

呵呵

有人说了,我的就自己删了

[此贴子已经被作者于2004-06-17 19:56:47编辑过]


偶是一只想要飞却忘了咋飞的菜鸟
2004-06-17 19:54
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 

对5楼的代码的补充,不过那个指针有点多余,数组名本身就是一个地址。

#include <stdio.h> #include <stdlib.h>

int main() { float s[20]; float * p = s; int i,j; char ct = 'y'; printf("You can 20 numbers in array\n"); printf("Please enter the numbers in array:\n"); for(i=0;i<20;i++) { printf("The %d. number : ", i+1); scanf("%f",&s[i]); printf("continue?<Y - continue> else end. "); getchar(); ct = getchar(); if(ct == 'y' || ct == 'Y') continue; else break; } for(j=i;j>=0;j--) printf("%f ", p[j]); system("pause"); return 0;

}


自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2004-06-17 20:19
jzh2004
Rank: 1
等 级:新手上路
帖 子:341
专家分:0
注 册:2004-4-30
收藏
得分:0 

看了一下你的第三题,确实不符合题意,先不说你没用三个函数

你的输出也不是按照m来的,

我自己做了一下,你参考一下。

#include <stdio.h> #include <malloc.h> typedef struct node { int id; struct node *next; }NODE; NODE * creat_list(NODE *head,int n) /*该函数建一个链表存放1-n的数并返回头结点*/ { NODE *p,*q; int i; head->next =NULL; p=head; for (i=1;i<=n;i++) { q=(NODE *)malloc(sizeof(NODE)); q->id=i; q->next=p->next ; p->next =q; p=q; } p->next =head->next ; return p->next ; } void print_node(NODE *p) /*该函数输出一个结点并释放空间*/ { printf("%d ",p->id); free(p); } NODE * find_node(NODE **p,int m) /*该函数查找一个符合条件的结点并返回该结点*/ { NODE *q; int i; for (i=1;i<m-1;i++)*p=(*p)->next ; q=(*p)->next ; (*p)->next =q->next ; *p=(*p)->next ; return q; } void main() { int i,n,m; NODE head,*p,*q; printf("请输入n和m:"); scanf("%d%d",&n,&m); p=creat_list(&head,n); for(i=0;i<n;i++) { q=find_node(&p,m); print_node(q); } }


我的主页 http://www.
2004-06-17 21:14
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 

// for the second problem

#include <stdio.h> #include <stdlib.h> struct Num { int num[3][5]; int max; int min; int ave; }myNum;

void setValue() { struct Num * pNum = &myNum; int i, j; for(i = 0; i<3; i++) { for(j = 0; j<5; j++) { printf("num[%d][%d] :", i, j); //scanf("%d", &myNum.num[i][j]); scanf("%d", &pNum->num[i][j]); } } }

int getMax() { int i, j, m; struct Num * pNum = &myNum; m = pNum->num[0][0]; for(i = 0; i<3; i++) { for(j = 0; j<5; j++) { if(pNum->num[i][j]>m) m = pNum->num[i][j]; } } return m; }

int getMin() { int i, j, m; struct Num * pNum = &myNum; m = pNum->num[0][0]; for(i = 0; i<3; i++) { for(j = 0; j<5; j++) { if(pNum->num[i][j]<m) m = pNum->num[i][j]; } } return m; }

int getAverage() { int i, j, sum = 0, ave; struct Num * pNum = &myNum; for(i = 0; i<3; i++) { for(j = 0; j<5; j++) { sum += pNum->num[i][j]; } } ave = (int)sum/15; return ave; }

int main() { int max, min, ave; setValue(&myNum); max = getMax(); min = getMin(); ave = getAverage(); printf("%d, %d, %d\n", max, min, ave); system("pause"); return 0; }


自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2004-06-17 21:44
快速回复:求救啊!!我原来那3个题目最后做的结果一个都不对
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033386 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved