初学者提的关于C的问题。

selfre 2002-03-25 02:42:07
本人刚学C。。 请问下面的程式我错在哪呀?? 谢谢各位大侠。

题目是:写一个子程式mmm,找出a[]中最小数,输出最小数和最小数的序号。其它程式不变。
我所写的子程式老有问题,请帮助解决。THANKS。



#include <stdio.h>
#include <string.h>
#include <conio.h>
#define N 10
void readwriteDAT();
typedef struct ss
{ char num[10]; int s; } STU;

/*-------------------------*/

mmm(STU a[], STU *s)
{
int n,i=0;
char *ch;
n=a[i].s;
while(i!=9){
i++;
if(a[i].s<n)
n=a[i].s;
ch=a[i].num;
}
s->num=ch; /* tc说我这里错了 */
s->s=n;
}

/*-------------------------*/

main ( )
{
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;
clrscr();
printf("***** The original data *****\n");
for(i=0; i< N; i++)printf("No = %s Mark = %d\n", a[i].num,a[i].s);
mmm(a, &m);
printf("***** THE RESULT *****\n");
printf("The lowest : %s , %d\n",m.num, m.s);

}
...全文
47 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
niniu 2002-03-26
  • 打赏
  • 举报
回复
num[]是个数组嘛,num就代表该数组的首地址,
指针是一个一地址为值得变量,就像一个整数变量是一一个整数为值
变量是有自己的内存空间用来存放值得,但是值没有自己的内存空间,它只能存放在变量里,而不能存放别的值
num是一个地址值,没有自己的存储空间,当然就不能给他赋值了
你的错误在于num=ch;不在于s->num;
selfre 2002-03-26
  • 打赏
  • 举报
回复
谢谢你,总算我听懂了。。 :)
selfre 2002-03-25
  • 打赏
  • 举报
回复
to gufengduyu(风雨中孤独):
谢谢你。能说一个不用STRCPY的方法么?我是过计算机三级,好像有不用涵数的方法吧??能教我写个MMM涵数么?

TO niniu:
大哥,不太懂,你是说s是个地址么?它不能s->num?? 能说详细点么?谢谢。
niniu 2002-03-25
  • 打赏
  • 举报
回复
s->num是一段内存的首地址,可以说它只是一个标号,不象指针那样有自己的
内存单元,所以s->num=ch,是错误的(这和你怎么可能让5指向6呢?)
gufengduyu 2002-03-25
  • 打赏
  • 举报
回复
把 s->num=ch 换为 strcpy(s->num,ch);

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧