下面是我在书上看到的一段程序,有几句不懂,请C++高手们帮忙解答一下: 非常感谢!
第一句:三个赋值操作,m=5,n=3是前两个赋值操作,分别把m和n设置成5和3。然后m=5和n=3又构成了一个逗号表达式,这个逗号表达式的结果作为k的值。逗号表达式的结果就是取最后一个逗号后边的值,也就是n=3的结果,即3。因此,整个这个表达式的含义实际上就是分别给k、m、n赋值,值分别是3、5、3
第二局,也是一个赋值表达式,只是连续的赋值表达式,把k的值付给n,n再付给m的意思。
1) 只有A=5 B=5时 V0=5,其他都是V0=0
2) V0的波形把输入的正弦波高于3伏的部分全削平到3伏,其余部分不变
ch1=cin.get(); //作用是什么? 是指从输入 流中取一个字符 , cin.read(str,9); 取9个字符,到 str中,str当然可以接着用。 str[10] 最后一个字符是字串结束符 0,因此只能输入 9个字符。
我在将这个程序做了调整,在我回复的最后有代码,并在程序中将楼主在程序中所提问题做了回答,回答内容从**开始。
对这段程序的看法,本端程序没有C++的样子,根本可以算作是C语言程序,为了习惯我将其中的部分输出输出进行了修改,并且使用了new操作符。根据楼主提供的问题,看出来楼主是一个初学者,楼主对与指针的操作以及函数作用域等知识尚未掌握。建议楼主多读一些基础书籍,如:《c++ primer》等,不要急于看一些程序,部分问题可以去网络上搜索。
以下是程序修改后样子,仅供参考,有问题欢迎发消息给我。
#include "iostream" //创建一个以学生学号、姓名、成绩为一个结构体的链表
#include<stdio.h>
using namespace std;
typedef struct student{//创建结构体
char name[8];
char num[10];
int score;
struct student *next;
}NODE;
/*函数声明部分*/
NODE *creat();
void display(NODE*);
void main()
{
NODE *head;
head=creat();//建立链表
display(head);//显示链表节点的值
}
NODE *creat()//这个函数里的*p,*head,*s不懂他们之间的指向关系?这三个指针分别起什么作用?
{
NODE *head,*p,*s;//这里的head和main()中的head不一样吗? **当然不一样了,两个虽然名称相同,
//但是作用域是不一样的,是两个东西,
//就像两个孩子都叫“毛毛”,一个是A家的,一个是B家的当然不一样了。
int key=1,n;//n代表什么?**是编程过程中使用的一个临时变量。
char k[3],grad[3];
head = new NODE;//head=(NODE *)malloc(sizeof(NODE));
p=head;
while(key)
{
cout<<endl<<"enter serial number:"<<endl;//printf("\nenter serial number:");
gets(k);
n=atoi(k);//这是什么意思?**函数atoi()原型int atoi(char *str) 作用是将字符串转化为整数
if(n!=0)
{
s=new NODE;//s=(NODE *)malloc(sizeof(NODE));
cout<<"enter name "<<n<<endl;//printf("\neter name %d:",n);
gets(s->name);
cout<<"nenter num "<<n<<endl;//printf("\nenter num %d",n);
gets(s->num);
cout<<"enter grad "<<n<<endl;//printf("\nenter grad %d",n);//以上的三个n分别代表什么?**就是你输入的学号。
gets(grad);
s->score=atoi(grad);
p->next=s;
p=s;
}
else key=0;
}
head=head->next;
p->next=NULL;
return(head);
}
void display(NODE * head)//从第一个节点开始逐个读取每个节点的内容,但为什么又要定义两个指针?一个不够吗?
//**一个也可以用的,习惯上使用两个,其中一个(head)保留在链表开头,另外一个做循环读值使用;
{
NODE *p;
p=head;
cout<<"chain is:"<<endl;//printf("\Chain is:");
if(head!=NULL)
{
do{
cout<<p->name<<p->num<<p->score;//printf("\n%s%s%d",p->name,p->num,p->score);
p=p->next;//换成p++行不?前面p指向了head,是不是只要p后移head也后移?
//**不能换成p++,head不会进行后移动,head的值不改变
} while(p!=NULL);}
}
//整个程序的变量感觉好乱,请帮忙理一理?**已经做了整理
查查函数说明就知道了
你得到的i序列是1 3 5 7 9.。。也就是说你求得的值压根就不是你要求的改下for循环: for(i=0;i
急求一个关于爱情的魔法,就是在一张白纸上画一个心,在心里面写上喜欢...
有的话希望能告诉我具体的步骤!真的急求!!!P.S.这个是我小学的时候在一本旧书上看到的,那时候好奇还试过,真的灵验了,后来初中的时候又试了一次,又灵验了,不知道是不是巧合,不过那两次都没结果,因为太小不敢谈恋爱退缩了...现在这位,我真的很爱他,想和他重新在一起,要不每天想着他都觉得自己快得抑郁症...
我的读书故事
我的爱好很多,打篮球、打乒乓球、听音乐……我最喜欢的还是看书! 书里有无尽的知识、无穷的资源。“读书破万卷,下笔如有神”正是我的读书格言。 有一次,我正在看《三国演义》,正当我沉浸在刘备三顾茅庐的故事中,妈妈走过来说:“别看了,吃饭。”“知道了。”我一边应承着,一边继续看令我入迷的书。 “孔明...
藏在什么里的我半命题作文600字十篇
书,真是我的好伙伴!下面是我为大家整理的藏在什么里的我 半命题 作文 600字十篇,欢迎大家阅读和采纳,希望大家喜欢! 藏在什么里的我半命题作文600字一 【藏在书本里的我】 生活中的书本,到处都有。课堂上,老师带领我们走进作者的 文章 ,让我们学会写文章,学会做人;课外书让我看到时代的发展变化,也告诉我要...
怎样理解“我们坐在这里,通过书本了解外面的世界。”
它是嵌在大山上的一面窗子,透过它,我们看到辽阔的大海,美丽的城市和遥远的宇宙,还有山外那一片丰富多彩的天地。这句话使用了比喻的修辞手法,将学校比作一扇窗户, “大海”“城市”“宇宙”象征着大山外面的世界。生动形象地写出了学校对大山的孩子们的重要作用。他们在学校里获取知识,阅读书籍,...
帮我收集在课外书上的外貌、动作和语言的句子
窘得面脸通红,不知如何是好 聚精会神地苦苦思索 兴奋得面脸通红 只见他的脸憋得通红,双眉拧成疙瘩,就连胳膊上的青筋都看得清清楚楚。老师看到题后,皱着眉头,习惯地把左手的大拇指放在嘴唇下面来回移动,思考着。他习惯地用双手捶着朐,像人猿泰山似的嗷嗷叫几声,才出去玩儿。他的脸惨白...
踏雪大哥!我在书上看到用缝纫机油来擦摩托车电镀面可以保持光亮,这是...
首先说缝纫机油属于中性的,不会对电镀面造成损坏,如果你想保持光亮建议用汽车的美容产品。例如;特级水晶硬蜡。
在当代社会,读万卷书行万里路真的有用吗?
当然有用了。我们现在学习知识都是靠书本内的内容学习的,多读书,读好书,对我们自身的成长是有很大的帮助的。行万里路的话,你就能增长你的见识,一个有见识的人看到是以为处事不惊,不骄不躁的人。想要成功,就需要有更多的见识,也需要读很多有用的书。所以说,在现代社会,读万里书行万里路是...
长期阅读书本对我们的重要性?
阅读是一种主动的过程,是由阅读者根据不同的目的加以调节控制的,陶冶人们的情操,提升自我修养。——1、阅读的意义 长期阅读可以保持大脑活跃起来,防止它失去能力;阅读可以减少压力,在读书的过程中可以阅读跟你不同的人。比如来自不同文化或背景的人,了解他们的看法,重新审视原有的偏见。书籍是全...
我趴在书上,就像饥饿的人扑在面包上的作者是谁
对读书的迷恋痴迷沉迷以至于可以忘记睡觉吃饭(废寝忘食) 但一看到喜欢的书就像饿极的人扑向面包一般(如饥似渴) 怎么吃都不够 怎么吃都不饱 拼命疯狂的进食 这就是一种迫切的求知欲 文中用“趴在”“扑在” 而不是“扑向” 就像饥饿的人躺在面包堆中 有一种极大的拥有感满足感 ...
书是我的良师益友作文
这样大家和我又和好了。瞧,书给了我快乐,又帮我找回了朋友!还有一次,我们语文考试,作文题目有点难,幸好我在一本《作文大全》中看到过一篇类似的作文。我先把作文在脑海里复习了一遍,然后,我一拍脑门就找到了写此篇作文的窍门,结果这篇作文获得了优秀。 书可真是我的良师益友哇! 书是我的良师益友作文3 “...
苏傅七味: 每一种思想,都会带来相应的结果. ——《避开思维陷阱》长久以来,我习惯于相信“前车之鉴,后事之师”这样的道理来进行对事物的决策、判断,即使经验似乎并不是每次都有用.后来,我在一本书上看到这样一段话:人们在做出复杂...
蕲春县13853206009: 什么是函数的通用性 - ?
苏傅七味: 意思就是通过调用同一个函数,可以实现对不同的数组找最大值,这就是书本的意思.因为如果我们需要找最大值的时候就复制这段代码的话,那还要修改代码里面的变量名称,就很不“通用”了.
蕲春县13853206009: 请C++高手帮忙解答下,谢谢! - ?
苏傅七味: 你这个问题很简单,其实以后碰到这种问题先百度一下吧,呵呵,百度cin.get()就有了,下面是我给你复制粘贴的,呵呵,希望对你有帮助.cin.get()是保留回车在输入流队列中的.而cin是丢弃回车的.ch=cin.get();是第一次输入,因为是...
蕲春县13853206009: 请C++高手们帮我解答一下?
苏傅七味: 应该是这样的 cin.get(ch)接收了一个字符 但是它要等到一个回车或空格才停止输入 比如你输入a后回车ch接收了a 可是回车还在流里等待下次接收 这时 cin.get(ch1)有用了 它把回车接收掉以便后面的正常输入 你可以做个试验 在第一次让你输入一个字符里 你输入二个然后回车 如:ab回车 ...然后接着输入后面9个你就会发现差别在哪里了 下面ch1=cin.get(); ch1=cin.get();这里一个道理
蕲春县13853206009: c++中文件的读写 - ?
苏傅七味: 你要新建一个scopy.cpp和一个scopy2.cpp的文件 ifstream in("scopy.cpp");//表示文件输入流从文件scopy.cpp获得 ofstream out("scopy2.cpp");//表示文件输出流向文件scopy2.ccp输出 string s;while(getline(in,s)) cout<<s<<endl; return 0;//一看就直到是声明变量,然后把输入流“in”里的数据放入变量s里面然后输出在屏幕上.之所以没有东西输出是因为你的scopy.cpp文件里没有内容或者根本没有这个文件,那么输入流里当然也没有东西了.
蕲春县13853206009: 使用#define命令定义符号常量问题 - ?
苏傅七味: 写错了,按书上说法替换后应该是 double x=3.14159*1+1*1+1 最后结果等于5.14159其实遇到这种问题完全可以自己解决 你上机写程序运行一下不就知道了 这样不但能得到正确结果,印象也绝对深刻,还锻炼了动手编程能力,可谓一举三得 实践才是检验真理的唯一标准阿
蕲春县13853206009: 单片机c,在以下一个有中断程序中,TR0=1启动定时器T0后,中断程序调用的次数? - ?
苏傅七味: 定时器是从你设定的初值住上加(你这里的初值为65536-50000,在每一个时钟沿加1)一直到65536,如果定时器中断和总中断是打开的,单片机会在这个时候产生中断使中断标志TF0=1进入中断函数timer0,进入中断函数后TF0会自动清零.在中断函数里面重装了定时器初值,定时器又会从65536-50000开始计数.一直这样重复.
蕲春县13853206009: C++高手进 - ?
苏傅七味: 1、类成员函数print()被定义为接受一个字符指针类型的参数,而实际传递的是字符串常数.由于字符串常数被C/C++编译器解释为某个内存地址,因此可以当作字符指针类型参数使用. 2、类成员函数print()在类中定义,所以在C++概念中...
蕲春县13853206009: 汇编语言 C51 P0口 - ?
苏傅七味: 查看一下P0定义是否正确,然后进行编译燃录,如果不行查看一下硬件电路是否有问题.程序是没有什么问题的.
蕲春县13853206009: keil - 3中能不能查看某一段C程序运行的所需时间? - ?
苏傅七味: 当然可以,方法主要有两种: 1、等你进入调试状态时,在Project_Workspace下的“寄存器”标签页下有一个“Sec”,这个就是用来模拟记录程序运行的时刻的,如果你要查看一段程序运行了多长时间,可以笔记记录运行到程序开头的时刻,...