c语言问题求指教啊。问题在代码中标记了。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言问题求指教啊。问题在代码中标记了。相关的知识,希望对你有一定的参考价值。
#include<stdio.h>
#define NULL 0
struct student
long num;
float score;
struct student *next;//这个地方什么意思?
;
main()
struct student a,b,c,*head,*p;//这个地方什么意思?
a.num=99101; a.score=89.5;
b.num=99103; b.score =90;
c.num=99107; c.score =85;
head=&a;
a.next=&b;
b.next=&c;
c.next=NULL;
p=head;
do
printf("%ld%5.1f\n",p->num,p->score);//这个地方怎么表示的
p=p->next;
while(p!=NULL);
*head是指针,用于存放数据a的地址值,
*p也是一个指针,初始化为a的地址,使用指针访问结构里的数据时,使用 -> 来操作,功能与p.num,p.score相同。这句是将一个student结构里的num和score显示在屏幕上。运行时通过 p=p->next;依次指向下一个数据的地址,输出所有的数据。 参考技术B struct student
long num;
float score;
struct student *next;//这个地方什么意思?
;
这是定义了一个结构体,而这个结构体除了前两个是存数据的变量处,最后一个,也就是你提问的地方,定义了一个指针变量,这个指针将指向当前变量类型相同的变量。其实,你这里是要建一个链表。
struct student a,b,c,*head,*p;//这个地方什么意思?,这个地方就是定义变量。其中a,b,c 是结构体变量,而head,p是指针变量。
printf("%ld%5.1f\n",p->num,p->score);//这个地方怎么表示的。这个地方就是输出。是对你前边已经赋值的结构体变量进行输出。本回答被提问者采纳 参考技术C struct student *next;//这个地方什么意思?
这是用于使用 student 结构构建链表时,指向下一个节点的指针。
struct student a,b,c,*head,*p;//这个地方什么意思?
声明了a,b,c三个student结构类型的变量。head p 则是三个student类型的指针。
printf("%ld%5.1f\n",p->num,p->score);//这个地方怎么表示的
使用指针访问结构里的数据时,使用 -> 来操作。这句是将一个student结构里的num和score显示在屏幕上。其中num作为整形显示(%ld),score则是可能带小数点。这时候score最多保留小数点后1位显示。
这个程序具体是将a,b,c三个student类型构建位一个链表,a作为头结点。a的后置是b,b后置是c。然后循环里遍历a,b,c三个数据。分别将其中的num和score显示出来。 参考技术D 1、实现单链表时用的,指向该结构体的指针,用来指向单链表下一个元素。
2、定义结构体student的变量a,b,c,指向该结构体的指针*head,*p
看结构体和单链表的定义和使用。
3、打印p->num,num是long型,所以用ld打印;
打印p->score,score是float型,打印形式5.1f表示以整数部分5位,小数部分1位形式打印。
多看书。~~!
为啥进不了for循环,得到的结果总是0? 求大神指教啊!!
#include<iostream>
#include<cmath>
using namespace std;
int main()
double a=0,pi=0,u=1.0;
int n=1,s=1;
cin>>a;
for(;fabs(u)<=a;)
pi=pi+s*u;
n=n+2;
s=-s;
u=1.0/n;
cout<<4*pi<<endl;
return 0;
u=1,那a一定要输入一个大于1的数,才能进入循环。
可是如果a大于1的话,循环体中的u是越来越小的,于是成了死循环,再也不能退出了。
建议把这个改成大于号,然后在输入a时候输入一个小于1的数,比如0.0000001,这样会循环一段时间以后u<a,完成计算。追问
可是我在fabs(u)<=a前后都有个分号,表明这是结束条件,eps是个很小的数,表示精度的
追答是啊,这个结束条件,一开始就满足了,所以就结束了,就不进去了。
追问我 的a是个很小的数,u开始是1,u不会比a小啊,u后来等于1/n,只有在n很大时才会比a小
追答结束条件的意思是,这个结果为真的时候进入循环。你正好搞反 了
比如for(i=0;i=10了,就结束循环了。
e0;
startloop:
if(!e1)goto exitfor//for安排的退出测试
…
if(…)goto exitfor;//自己安排的退出测试
…
if(…)goto startloop;//自王
…
e2;
exitfor:追问
我写的是结束条件,前面没有开始条件,这样可以吗?
追答c语言的循环都是当型循环,无一例外,只有条件符合,才执行相应的循环语句,条件不符退出。你写退出条件的话别用c,c x x!c,cxx只有当型循环,没有直到型循环,自己把条件取反不就行了!c语言已经流行这么多年了,都出好几个标准了,可是一直没有直到型循环,好象也没有几个程序员抱怨这一点!不习惯的话,将就用吧!cxx也是延用c的这一习惯,c井,java也一样吧!
以上是关于c语言问题求指教啊。问题在代码中标记了。的主要内容,如果未能解决你的问题,请参考以下文章