本文目录一览:
求29.30.31答案和解释 c语言程序设计
29、数组的下标值必须是整数,且不能越界,数组a的下标值范围是0--9
A
*(a+i)
等价于
a[i]
B
a[p-a+i]
等价于
a[i]
因为
p=a
所以
p-a+i=i
C
p+i
是数组中下标值为i的元素的地址
D
*(a[i])
等价于
a[i]
所以
本题答案是
C
30、strcpy(s1,s2)字符串赋值函数,把串s2放在s1的位置上,所以s1必须有足够的存储空间来存放串s2
A
st1
是一维数组可以存放字符串teacher1
B
st4
是一个指针变量,但是该指针指向一个连续的存储空间
teacher1
C
st3是指针变量,但是该指针没有指向任何存储空间,所以不能把串teacher1放在st3
D
st1
是一维数组可以存放字符串teacher1
所以
本题答案
是
C
31、p
q
是指针变量,存放的是n的地址
A
p=q
p
q
指针类型相同
可以直接赋值
B
*p=*q
也可以
//
p=q=n
则
*p=*q=n
C
n=*p
原理同
B项
D
p是指针,应该存放n的地址,即p=n
所以本题答案是:
D
求c语言程序设计答案
#include
fstream
#include
string.h
#include
iostream
#include
conio.h//用getch();
using
namespace
std;
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌Student类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
class
Student
{
public:
char
name[20];
char
Class[20];
char
Id[20];
int
Cnum;
//C课程得分
int
Mnum;
//数学课程得分
int
Enum;
//英语课程得分
int
Gnum;
//体育
int
sum;
//总分
int
ave;
//平均分
Student
*
Next;
void
Input()
{
cout"\t\t请输入学生的姓名:";
cinname;
cout"\t\t请输入学生的班级:";
cinClass;
cout"\t\t请输入学生的学号:";
cinId;
cout"\t\t请输入C++的成绩:";
cinCnum;
cout"\t\t请输入数学课程的成绩:";
cinMnum;
cout"\t\t请输入英语课程的成绩:";
cinEnum;
cout"\t\t请输入日语的成绩:";
cinGnum;
sum=Cnum+Mnum+Enum+Gnum;
ave=(Cnum+Mnum+Enum+Gnum)/4;
}
void
ReadFile(istream
in)
{
innameClassIdCnumMnumEnumGnumavesum;
}
void
Show()
{
cout"姓名:"nameendl"班级:"Classendl"学号:"Idendl"C++:"Cnumendl
"数学:"Mnumendl"外语:"Enumendl"日语:"Gnumendl"平均成绩:"aveendl"总成绩:"sumendlendlendl;
}
};
//﹌﹌﹌﹌﹌﹌﹌﹌﹌Studentmassage类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
class
Studentmassage
{
public:
Studentmassage();
~Studentmassage();
void
ShowMenu();
void
Find();
void
Save();
void
ModifyItem();
void
RemoveItem();
void
Swap(Student
*,Student
*);
void
Sort();
int
ListCount();
void
Display()
{
for(Student
*
p=Head-Next;p!=End;p=p-Next)
p-Show();
cout"输入任意字符!继续……";
getch();
}
void
AddItem()
{
End-Input();
End-Next=new
Student;
End=End-Next;
cout"添加成功!"endl;
cout"输入任意字符!继续……";
getch();
}
private:
Student
*
Head,*
End;
ifstream
in;
ofstream
out;
Student
*FindItem(char
*
name)
{
for(Student
*
p=Head;p-Next!=End;p=p-Next)
if(!strcmp(p-Next-name,name))return
p;
return
NULL;
}
Student
*FindID(char
*
Id)
{
for(Student
*
p=Head;p-Next!=End;p=p-Next)
if(!strcmp(p-Next-Id,Id))return
p;
return
NULL;
}
Student
*FindCLASS(char
*
Class)
{
for(Student
*
p=Head;p-Next!=End;p=p-Next)
if(!strcmp(p-Next-Class,Class))return
p;
return
NULL;
}
}Grade;
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌构造函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Studentmassage::Studentmassage()
{
Head=new
Student;
Head-Next=new
Student;
End=Head-Next;
in.open("sort.txt");
if(!in)
cout"这是一个新系统,无学生信息。请先输入。"endl;
else
{
while(!in.eof())
{
End-ReadFile(in);
if(End-name[0]=='\0')break;
End-Next=new
Student;
End=End-Next;
}
in.close();
cout"\t\t读取学生信息成功!"endl;
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌析构函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Studentmassage::~Studentmassage()
{
Save();
for(Student
*
temp;Head-Next!=End;)
{
temp=Head-Next;
Head-Next=Head-Next-Next;
delete
temp;
}
delete
Head,End;
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌菜单﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void
Studentmassage::ShowMenu()
{
cout"〓〓〓〓〓〓〓〓〓〓
☆
学
生
成
绩
管
理
系
统
☆
〓〓〓〓〓〓〓〓〓〓"endl;
cout"〓〓〓〓〓〓〓★★★★★
★★★★★★★
★★★★★〓〓〓〓〓〓〓"endl;
cout"〓〓〓〓〓〓〓〓〓★
☆
1.增加学生成绩
☆
★〓〓〓〓〓〓〓〓〓"endl;
cout"〓〓〓〓〓〓〓〓〓★
☆
2.显示学生成绩
☆
★〓〓〓〓〓〓〓〓〓"endl;
cout"〓〓〓〓〓〓〓〓〓★
☆
3.排序统计成绩
☆
★〓〓〓〓〓〓〓〓〓"endl;
cout"〓〓〓〓〓〓〓〓〓★
☆
4.查找学生成绩
☆
★〓〓〓〓〓〓〓〓〓"endl;
cout"〓〓〓〓〓〓〓〓〓★
☆
5.删除学生成绩
☆
★〓〓〓〓〓〓〓〓〓"endl;
cout"〓〓〓〓〓〓〓〓〓★
☆
6.修改学生信息
☆
★〓〓〓〓〓〓〓〓〓"endl;
cout"〓〓〓〓〓〓〓〓〓★
☆
0.安全退出系统
☆
★〓〓〓〓〓〓〓〓〓"endl;
cout"\n\t\t\n\t\t请选择:";
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌查找函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void
Studentmassage::Find()
{
char
name[20]
,Id[10],Class[20];
int
x;
Student
*
p=NULL;
cout"\n\t\t*********************************\n";
cout"\t\t※
1.按学生的姓名查找\n\t\t※
2.按学生学号查找\n\t\t※
3.按学生班级查找";
cout"\n\t\t*********************************\n请选择:";
cinx;
switch(x)
{
case
1:{cout"\t\t请输入要查找的学生的姓名:";cinname;
if(p=FindItem(name))
{
p-Next-Show();
cout"输入任意字符!继续……";
getch();
}
else
{
cout"\t\t没有找到该姓名的学生!"'\n'endl;
cout"输入任意字符!继续……";
getch();
}
}break;
case
2:
{
cout"\t\t请输入要查找的学生的学号:";cinId;
if(p=FindID(Id))
{
p-Next-Show();
cout"输入任意字符!继续……";
getch();
}
else
{
cout"\t\t没有找到该学号的学生!"'\n'endl;
cout"输入任意字符!继续……";
getch();
}
}break;
case
3:{cout"\t\t请输入要查找的学生的班级:";cinClass;
if(p=FindCLASS(Class))
{
p-Next-Show();
cout"输入任意字符!继续……";
getch();
}
else
{
cout"\t\t没有找到该班级的学生!"'\n'endl;
cout"输入任意字符!继续……";
getch();
}
}break;
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌修改信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void
Studentmassage::ModifyItem()
//修改信息
{
char
ID[20];
Student
*
p=NULL;
cout"\t\t请输入要修改的人的学号:";cinID;
if(p=FindID(ID))
{
cout"\t\t已找到学生的信息,请输入新的信息!"endl;
p-Next-Input();
cout"修改成功!"endl;
cout"输入任意字符!继续……";
getch();
}
else
{
cout"\t\t没有找到!"endl;
cout"输入任意字符!继续……";
getch();
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌删除信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void
Studentmassage::RemoveItem()
//
删除信息
{
char
ID[20];
Student
*
p=NULL,*temp=NULL;
cout"\t\t请输入要删除的学生的学号:";cinID;
if(p=FindID(ID))
{
temp=p-Next;
p-Next=p-Next-Next;
delete
temp;
cout"\t\t删除成功!"endl;
cout"输入任意字符!继续……";
getch();
}
else
{
cout"\t\t没有找到!"endl;
cout"输入任意字符!继续……";
getch();
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void
Studentmassage::Swap(Student
*p1,
Student
*p2)
{
Student
*temp=new
Student;
strcpy(temp-name,p1-name);
strcpy(temp-Id,p1-Id);
temp-Cnum=p1-Cnum;
temp-Mnum=p1-Mnum;
temp-Enum=p1-Enum;
temp-sum=p1-sum;
strcpy(p1-name,p2-name);
strcpy(p1-Id,p2-Id);
p1-Cnum=p2-Cnum;
p1-Mnum=p2-Mnum;
p1-Enum=p2-Enum;
p1-sum=p2-sum;
strcpy(p2-name,temp-name);
strcpy(p2-Id,temp-Id);
p2-Cnum=temp-Cnum;
p2-Mnum=temp-Mnum;
p2-Enum=temp-Enum;
p2-sum=temp-sum;
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
int
Studentmassage::ListCount()//统计当前的记录总数
{
if(!
Head)
return
0;
int
n=0;
for(Student
*
p=Head-Next;p!=End;p=p-Next)
{
n++;
}
return
n;
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void
Studentmassage::Sort()//对当前学生进行排序
{
cout
"Sorting..."endl;
Student
*p=NULL,*p1=NULL,*k=NULL;
int
n=Studentmassage::ListCount();
if(n2)
return;
for(p=Head-Next;p!=End;p=p-Next)
for(k=p-Next;k!=End;k=k-Next)
{
if(p-sumk-sum)
{
Studentmassage::Swap(p,k);
}
}
cout
"排序完成!"endl;
getch();
return;
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌保存函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void
Studentmassage::Save()
{
out.open("sort.txt");
for(Student
*p=Head-Next;p!=End;p=p-Next)
outp-name"\t"p-Class"\t"p-Id"\t"
p-Cnum"\t"p-Mnum"\t"p-Enum"\t"p-Gnum"\t"p-ave"\t"p-sum'\n';
out.close();
}
void
code()
//密码
{
char
s1[20]="123",s2[20];
cout"请输入密码:";
while(cins2)
{
if(!strcmp(s1,s2))
{
Grade.ModifyItem();break;
}
else
cout"你输入的密码不正确,请重新输入:";
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌主函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
int
main()
{
int
x,i=0;
bool
quit=false;
cout"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§"endl;
for(i=0;i3;i++)
cout"\t\t◎\t\t\t\t\t\t
◎"endl;
cout"\t\t◎★★★★【
欢迎进入学生成绩管理系统
】★★★★◎"endl;
for(i=0;i3;i++)
cout"\t\t◎\t\t\t\t\t\t
◎"endl;
cout"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§\n"endl;;
cout"请按任意键开始……";
getch();
while(!quit)
{
system("cls");
Grade.ShowMenu();
cinx;
switch(x)
{
case
0:cout"★★★★感谢您的使用★★★★"endl;quit=true;break;
case
1:Grade.AddItem();break;
case
2:Grade.Display();break;
case
3:Grade.Sort();break;
case
4:Grade.Find();break;
case
5:Grade.RemoveItem();break;
case
6:code();break;
}
}
return
0;
}
我稍微改了下,应该可以用~
额~~你们一定要C编吗~C++不可以嘛?
C语言程序设计试题 求标准答案 都是多选
1、答案:A
(单引号括起来的都是字符,而且一对单引号最多对应一个字符,\反斜杠是转义字符的开始,\72是ASCII码对应的字母H。也就是把H这个字母存到了变量char a中。就一个字符H。)
2、ACDE
解析:
int a=3,b=4,c=5;,
A、ab
B、a<=b
C、(a||b)>c
D、a<=(b||c)
E、!((a<b)!c||b)
优先级由大到小:() ! ||
A选项,34错误,逻辑值0。
B选项,3=4正确,逻辑值1。
C选项,(3||4)5,(3||4)"或"逻辑运算符两边只要有一个非0的整个值就是1,15错,逻辑值0。
D选项,3=(4||5)错误,逻辑值0。
E选项,!((34)!5||4),先(34)逻辑值1,!5逻辑值0,10是0,0||4是1,!1是0,所以逻辑值0。
3、AC。
解析:A可以,B答案b不能被赋值(自左向右,计算||左侧就已经是1了右边就不用再计算了整个表达式无论右边如何整个逻辑值必定是1,计算机也就不会计算右边了)C可以(因为两边都必须计算才能得出最后的逻辑值答案),D不可以a不能被赋值(左边就一个a,构不成赋值,可能存放一个随机值,右边可以被赋值)。-c语言程序设计答案
4、ABCD。
外部函数几乎可以被所有函数调用。只要开头#include” "引入。