C语言二级考试问题
发布时间:2025-05-12 08:22:33 发布人:远客网络
一、C语言二级考试问题
LZ能实际实验来获取答案这点值得肯定,计算机编程本来就是动手的学问。
1、选C。至于D,C语言国际标准没有规定共用体(联合)类型变量不能做函数参数的。持这种说法的教材是以讹传讹。或者说,有谁发现哪种通用的C编译器对以共用体(联合)类型变量做函数参数的代码报错了?
至于LZ实验的结果,得等理解了两种知识后才能解释,1.共用体(联合)的内存布局,2.IEEE-754浮点数的存储格式。
2、选D。其实写这样的代码纯粹是蛋疼。加花括号及缩进之后如下(其他词法无需任何变动)
elsex=7;
C基于语法上的嵌套原则的就近匹配随处可见。理论上讲起来很容易,但直观上不容易看,就像盒子套盒子,容易理解但看着容易晕。
C基于语法上的嵌套原则的就近匹配随处可见。理论上讲起来很容易,但直观上不容易看,就像盒子套盒子,容易理解但看着容易晕。
两原则:一对匹配的if-else结构是一个整体的语句块,必定是可以用花括号把它们单独包围在一起的。以下这个语句的语法
第二,形式上,一对匹配的if-else结构里面if与else中间必定是隔着两样东西,一对圆括号和一个语句块,不多不少。
这里的语句块可以是一个普通语句,或者是一对花括号包围起来的东西或者叫块,或者是if语句、if-else语句、for语句、do-while语句等等语句块,单只有一个分号或一对花括号的空语句空块也可以。这些复合语句里面可以是更复杂但按照类似规则组合起来的语句,这就是嵌套原则。
else语句不能单独存在,那算是语法错误。
方法上,每看到一个else语句就按照第二条往回寻找最近的未匹配的if语句,将它们作为一个整体绑定,或者按第一条用花括号包围起来。
注意C语言没有elseif或者elif关键字,但else if两关键字连用的结果与之等效,将一对if-else语句接给一个else后面,结果就等效了,想想是不是。原因就是else的“就近匹配原则”。
3、continue语句的准确语义是直接跳到循环的结尾。也就是按流程图中直接跳到循环体之后的下一环节。或者说,略过循环体中continue语句后面的语句直接计算增量表达式。
二、大学C语言考试求帮忙!~
给个学生成绩管理的把,在VC上运行过的,TC的不知道,你自己试下,不过可能会出现很多问题,这个是C++版本的,你要把它改成C版本,而且改好了之后也不一定可行,主要是TC对标准支持也不好,而且也不利于调试...还是不要用TC了
void play(){cout<<name<<"学生的学号是"<<num<<",数学:"<<x<<",语文:"<<y<<",英语:"<<z<<",总分:"<<AA<<endl;};
student(string sname,long snum,int sx,int sy,int sz)
cout<<"\n**增加的学生**\n"<<endl;
cout<<"请输入学生的(中间用空格间隔)"<<endl;
cout<<"姓名学号数学成绩语文成绩英语成绩:"<<endl;
cin>>name1>>num1>>x1>>y1>>z1;
q=new student(name1,num1,x1,y1,z1);
cout<<"学号已存在,请重新输入"<<endl;
cout<<"学号已存在,请重新输入"<<endl;
cout<<"输入完毕"<<endl;
cout<<"\n**删除学生信息**\n";
cout<<"请输入想要删除学生的学号:";
if(p1!=NULL)//若找到结点,则删除
cout<<"确定删除吗?[Y/N]"<<endl;
if(toupper(c)!='Y') return;
if(p1==stu)//若要删除的结点是第一个结点
else//若要删除的结点是后续结点
cout<<"找到学号为"<<num1<<"的学生,并删除\n";
cout<<"未找到想要删除的学生!\n";
cout<<"\n**修改学生信息**\n";
cout<<"输入要修改学生的学号";
cout<<"学号是"<<num1<<"的学生的信息"<<endl;
cout<<"姓名"<<p1->name<<"数学"<<p1->x<<"语文"<<p1->y<<"英语"<<p1->z<<endl;
cout<<"请输入修改后的信息:姓名数学成绩语文成绩英语成绩"<<endl;
cin>>p1->name>>p1->x>>p1->y>>p1->z;
p1->AA=p1->x+p1->y+p1->z;
cout<<"修改成功"<<endl;
cout<<"\n**查询学生信息**\n"<<endl;
cout<<"请输入查询方式:"<<endl;
cout<<"1.按学号查询"<<endl;
cout<<"2.按姓名查询"<<endl;
cout<<"3.返回"<<endl;
cout<<"要查询的学号"<<endl;
cout<<"学号是"<<num1<<"的学生的信息"<<endl;
cout<<"姓名:"<<p1->name<<"数学:"<<p1->x<<"语文:"<<p1->y<<"英语:"<<p1->z<<endl;
cout<<"要查询的学生姓名"<<endl;
cout<<name1<<"的学生的信息"<<endl;
cout<<"学号:"<<p1->num<<"数学:"<<p1->x<<"语文:"<<p1->y<<"英语:"<<p1->z<<endl;
cout<<"共有"<<n<<"条信息..."<<endl;
if(p1->num>p1->next->num)//如果头结点大于第二个的
p1->next=p1->next->next;
while(p1->next->next)//中间的交换
if(p1->num>p1->next->num)
p1->next=p1->next->next;
void cla::psx()//按数学成绩排序
cout<<"共有"<<n<<"条信息..."<<endl;
if(p1->x>p1->next->x)//如果头结点大于第二个的
p1->next=p1->next->next;
while(p1->next->next)//中间的交换
if(p1->x>p1->next->x)
p1->next=p1->next->next;
void cla::pyw()//按语文成绩排序
cout<<"共有"<<n<<"条信息..."<<endl;
if(p1->y>p1->next->y)//如果头结点大于第二个的
p1->next=p1->next->next;
while(p1->next->next)//中间的交换
if(p1->y>p1->next->y)
p1->next=p1->next->next;
void cla::pyy()//按英语成绩排序
cout<<"共有"<<n<<"条信息..."<<endl;
if(p1->z>p1->next->z)//如果头结点大于第二个的
p1->next=p1->next->next;
while(p1->next->next)//中间的交换
if(p1->z>p1->next->z)
p1->next=p1->next->next;
cout<<"共有"<<n<<"条信息..."<<endl;
if(p1->AA>p1->next->AA)//如果头结点大于第二个的
p1->next=p1->next->next;
while(p1->next->next)//中间的交换
if(p1->AA>p1->next->AA)
p1->next=p1->next->next;
cout<<"请选择以何种方式排序:"<<endl;
cout<<"1……以学号排序"<<endl;
cout<<"2……以数学成绩排序"<<endl;
cout<<"3……以语文成绩排序"<<endl;
cout<<"4……以英语成绩排序"<<endl;
cout<<"5……以总分排序"<<endl;
cout<<"6……返回"<<endl;
cout<<"请选择(1-6)"<<endl;
case'1':pxh(); break;
case'2':psx(); break;
case'3':pyw(); break;
case'4':pyy(); break;
case'5':pAA(); break;
cout<<"\n保存学生信息(将覆盖原文件),是否继续?[Y/N]:"; cin>>c;
if(toupper(c)!='Y') return;
ofstream tfile("date.txt",ios_base::binary);
tfile<<p->name<<"\t"<<p->num<<"\t"<<p->x<<"\t"<<p->y<<"\t"<<p->z;
cout<<"保存完毕..."<<endl;
ifstream tfile("date.txt",ios_base::binary);
tfile>>name1>>num1>>x1>>y1>>z1;
s=new student(name1,num1,x1,y1,z1);
while(p2->next)//查找尾结点
tfile>>name1>>num1>>x1>>y1>>z1;
cout<<"\n学生信息已经装入...\n";
cout<<"\n学生成绩管理系统\n";
cout<<"**************************************\n";
cout<<"作者:软件工程06110119:zgjxwl\n";
cout<<" 1……增加学生\n";
cout<<" 2……删除学生\n";
cout<<" 3……修改学生\n";
cout<<" 4……查询学生信息\n";
cout<<" 5……排序\n";
cout<<" 6……保存信息\n";
cout<<" 7……读取信息\n";
cout<<" 8……退出\n";
cout<<"**************************************\n";
case'1': a.sadd();break;
case'2': a.sremove();break;
case'3': a.samend();break;
case'4': a.ssearch();break;
case'5': a.staxis();break;
case'6': a.ssave();break;
case'7': a.sload();break;
三、C语言考试速度求解啊!!速度
本人C语言新手,除第一题会做,其它的都不会做。
2.输入两个整数,若他们的平方和大于100,则输出该平方和的百位数以上(包括百位数字)的各个位数字,否则输出两个整数的和。
3.在键盘上输入若干字符,把其中的小写字母转换成大写字母,其他的字符不变,最后把处理结果输出到屏幕上。
5.假设今天是星期天,编写一程序,求123456天后是星期几。
6.编写一程序,输出1-99之间不能被2和3整除的数,按10个数一行的格式排列。
7.编写一个程序实现累加器功能,把用户输入的数据累加,直到输入0为止,输出累加的结果。
8.从三个红球五个白球六个黑球中任意取出8个球,且其中必须有白球,编程输出所有可能的方案。