| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 689 人关注过本帖
标题:用结构体找最低成绩的问题。
只看楼主 加入收藏
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
结帖率:99.34%
收藏
已结贴  问题点数:20 回复次数:10 
用结构体找最低成绩的问题。
代码如下:
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
#define N 10
typedef struct ss
{ char num[10];
  int s;
} STU;
fun(STU a[], STU *s)
{
    int i;

    s = a;
    for (i = 0; i < N; i++)
    {
        if (s -> s > a[i].s )
            s = &a[i];
    }
        return  s;  // 警告返回有问题  但这是上机程序设计题 只能改子函数大括号里的内容,怎么办?
  
}
void main()
{
  FILE *wf;
  STU a[N]={{ "A01",81},{ "A02",89},{ "A03",66},{ "A04",87},{ "A05",77},
  { "A06",90},{ "A07",79},{ "A08",61},{ "A09",80},{ "A10",71}},m;
  int i;
  system("CLS");
  printf("*****The original data*****\n");
  for(i=0;i<N;i++)
    printf("No=%s Mark=%d\n", a[i].num,a[i].s);
  fun(a,&m);
  printf("*****THE RESULT*****\n");
  printf("The lowest :%s, %d\n",m.num,m.s);
/******************************/
  wf=fopen("out.dat","w");
  fprintf(wf,"%s, %d",m.num,m.s);
  fclose(wf);
/*****************************/
}
搜索更多相关主题的帖子: 程序设计 怎么办 include return 结构体 
2012-01-01 10:15
liao06550107
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:111
专家分:696
注 册:2011-10-2
收藏
得分:7 
fun()函数返回值不对!
程序代码:
fun(STU a[], STU *s)
{
    int i;
    STU *n = s; //增加结构体指针指向s指针指向变量m
    s = a;
    for (i = 0; i < N; i++)
    {
        if (s -> s > a[i].s )
            s = &a[i]; 
    }
    *n = *s; //s指向的最小值结构体赋值给n指向的结构体m
    return  0;  // 警告返回有问题  但这是上机程序设计题 只能改子函数大括号里的内容,怎么办?
    
}


[ 本帖最后由 liao06550107 于 2012-1-1 14:40 编辑 ]

听不同的音乐,看不同的书,游历不同的城市,邂逅不同的人,走的多了,站的高了,自然就看的远了。
2012-01-01 11:40
liwill888
Rank: 1
等 级:新手上路
帖 子:3
专家分:8
注 册:2009-7-8
收藏
得分:7 
我不知道理解的对不对楼上的,你说的是不是返回值有问题?我理解的:s是指针变量,返回值一定是个指针。fun(STU a[], STU *s)不是指针函数,所以出错啦!
2012-01-01 13:15
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 2楼 liao06550107
你的意思是不是说仅仅对实参传来的地址进行操作是无法影响到主函数的。无论子函数里地址怎么变换最后还是必须把地址指向的内容进行赋值传输才能对实参有影响?

梅尚程荀
马谭杨奚







                                                       
2012-01-01 14:07
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 3楼 liwill888
是啊 我也在想如果子函数返回了一个指针,也就是一个地址,主函数会拿这个东西做什么。难道有了钥匙还怕打不开房门,取不了东西?

梅尚程荀
马谭杨奚







                                                       
2012-01-01 14:10
liao06550107
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:111
专家分:696
注 册:2011-10-2
收藏
得分:0 
函数实参对形参赋值有三种:
1、值传递
在函数内部对形参的任何改变不会对相应的实参产生任何影响;
2、地址传递
在函数内部对形参的任何改变会对相应的实参产生影响;
如果想改变指针变量本身的值(就是所指变量地址)形参必须用二级指针
程序代码:
#include <stdio.h>
#include <malloc.h>
void fun(int **p)
{
    int *a = (int *)malloc(sizeof(int));
        *a = 10;
    *p=a; //把指针a存储地址赋给指针q;
}
int main()
{
    int *q=NULL;
    fun(&q);//传递q指针的地址
    printf("a的值为:%d\n", *q);
    return 0;
}

3、引用
在函数内部对形参的改变相当于对实参的操作(相当于不能改变值的指针)

听不同的音乐,看不同的书,游历不同的城市,邂逅不同的人,走的多了,站的高了,自然就看的远了。
2012-01-01 14:38
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 6楼 liao06550107
如果想改变指针变量本身的值(就是所指变量地址)形参必须用二级指针。

必须?华山一条路了?有没有不使用二级指针而能改变实参(传的是地址)的方法?

梅尚程荀
马谭杨奚







                                                       
2012-01-01 19:58
liao06550107
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:111
专家分:696
注 册:2011-10-2
收藏
得分:0 
那你可以用return!

听不同的音乐,看不同的书,游历不同的城市,邂逅不同的人,走的多了,站的高了,自然就看的远了。
2012-01-01 20:11
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 8楼 liao06550107
哦,这样啊。形参实参指针数组变量这么一搞有点晕,再加上函数指针,指针函数,就更加。。。在来个二级指针三级。。。就爆了

梅尚程荀
马谭杨奚







                                                       
2012-01-01 20:23
ft2763515
Rank: 1
等 级:新手上路
帖 子:1
专家分:7
注 册:2012-1-1
收藏
得分:7 
void fun(STU a[], STU *s)
{
    int i;
   
    *s = a[0];
    for (i = 1; i < N; i++)
    {
        if (s -> s > a[i].s )
            *s = a[i];
    }
     
      //  return  s;  // 警告返回有问题  但这是上机程序设计题 只能改子函数大括号里的内容,怎么办?
  
}

原函数中传递的地址,但是没改变地址指向的值。
2012-01-01 22:32
快速回复:用结构体找最低成绩的问题。
数据加载中...
 
   



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

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