}
〈2〉将一个3*3的矩阵转置,用一个函数实现。
在主函数中用scanf输入以下矩阵元素:
{2,4,6,8,10,12,14,16,18}。
将数组名作为函数参数。
函数调用后在主函数中输出已转置的矩阵。
#include
usingnamespacestd;
voids(inta[])
{
printf("转置后\n");
printf("%d%d%d\n%d%d%d\n%d%d%d\n",a[0],a[3],a[6],a[1],a[4],a[7],a[2],a[5],a[8]);
}
intmain()
{
inta[9];
printf("输入9个整数\n");
scanf("%d%d%d%d%d%d%d%d%d",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6],&a[7],&a[8]);
printf("转置前\n");
printf("%d%d%d\n%d%d%d\n%d%d%d\n",a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);
s(a);
return0;
}
〈3〉自己写一个strcmp函数,实现两个字符串的比较。
两个字符串s1,s2由main函数输入,strcmp函数的返回值也在main函数中输出。
#include
usingnamespacestd;
intstrcmp(chara[],charb[])
{
inti,j;
for(i=0;(a[i]!
='\0')||(b[i]!
='\0');i++)
{
if(a[i]>b[i]){j=1;break;}
elseif(a[i]=b[i])j=0;
else{j=-1;break;}
}
returnj;
}
intmain()
{
inti,j;
chara[20],b[20];
cout<<"inputtowstrings"<cin>>a>>b;
cout<return0;
}
〈4〉动态链表的每个结点包括一个整数和一个后继指针。
分别编写过程完成如下操作:
(1)从键盘输入数据建立链表,并按数据的输入顺序建立链表。
(2)依次打印其中各结点的数据。
#include
#include
structlist
{
intvalue;
structlist*next;
};
voidmain()
{
intn,i=0,m;
structlist*p,*q,*head,*tmp;
//第一行输入数据个数n;
printf("请输入链表的长度:
");
scanf("%d",&n);
if(n<1)return;
//第二行依次输入n个整数;
printf("请输入节点的值:
");
p=(structlist*)malloc(sizeof(structlist));
head=p;
q=p;
q->next=NULL;
scanf("%d",&p->value);
for(i=1;i{
p=(structlist*)malloc(sizeof(structlist));
scanf("%d",&p->value);
q->next=p;
q=p;
q->next=NULL;
}
//第三行输入欲删除数据m;
printf("请输入要删除的数值:
");
scanf("%d",&m);
//第一行输出原始单链表的长度;
q=head;
i=0;
while(q->next)
{
i++;
q=q->next;
}
printf("原链表长度为:
%d\n",i+1);
//第二行依次输出原始单链表的数据;
printf("链表数据为:
\n");
q=head;
while(q->next)
{
printf("%d",q->value);
q=q->next;
}
printf("%d\n",q->value);
//删除
p=head;
while(head->value==m&&head->next!
=NULL)
{
head=head->next;
free(p);
p=head;
}
if(head->value==m&&head->next==NULL)
{
printf("删除后的链表长度为0\n");
printf("删除后的链表为空\n");
return;
}
p=q=tmp=head;
while(q->next)
{
q=q->next;
while(q->value==m&&q->next!
=NULL)
{
tmp=q;
q=q->next;
free(tmp);
}
if(q->next==NULL&&q->value==m)
{
p->next=NULL;
}else
{
p->next=q;
}
p=q;
}
//第三行输出完成删除后的单链表长度;
q=head;
i=0;
while(q->next)
{
i++;
q=q->next;
}
printf("删除后的链表长度为%d\n",i+1);
//第四行依次输出完成删除后的单链表数据;
printf("删除后的链表为:
\n");
q=head;
while(q->next)
{
printf("%d",q->value);
q=q->next;
}
printf("%d\n",q->value);
}
实验六
<1>在某系的成绩登记册中,每个班最多有40个学生,每份成绩表中的成绩信息包括:
学号(9位字符),姓名(8位字符),成绩(百分制),备注(20位字符)。
设计程序以处理一个班级的成绩信息,包括输入、输出、查询(给定分数以上或以下的学生信息)、按分数排序等。
#include
structstudent
{
intnum;
charname[8];
intgread;
charbeizhu[20];
}student[40];
voidmain()
{
inti,j,k,temp;
for(i=0;i<40;i++){
cout<<"输入学号";
cin>>student[i].num;
cout<<"输入姓名";
cin>>student[i].name;
cout<<"输入成绩";
cin>>student[i].gread;
cout<<"输入备注";
cin>>student[i].beizhu;
}
for(i=0;i<40;i++)
cout<cout<<"输入分数线";
cin>>j;
for(i=0;i<40;i++){
if(student[i].gread>j)
cout<}
for(i=0;i<40;i++){
for(k=0;k<40;k++){
if(student[k].gread>=student[k+1].gread){
temp=student[k].gread;
student[k].gread=student[k+1].gread;
student[k+1].gread=temp;
}
}
}
for(i=0;i<40;i++)
cout<}
实验七
1.下面程序定义了一个以hours,minutes和seconds作为数据成员的Time类。
设计了成员函数将两个Time对象相加(即时间相加),并进行相应的检查,查看增加的分钟数及秒数是否大于59。
如果秒数大于59,则分钟数向前递增1。
类似地,如果分钟数大于59,则小时数向前增1。
#include
classTime
{
private:
inthours,minutes,seconds;
public:
voidget_time()
{
cin>>hours>>minutes>>seconds;
}
voiddisplay_time()
{
cout<'<'<}
voidadd_time(Time&t1,Time&t2)
{
hours=t1.hours+t2.hours;
minutes=t1.minutes+t2.minutes;
seconds=t1.seconds+t2.seconds;
if(seconds>=60)
{
seconds-=60;
minutes++;
}
if(minutes>=60)
{
minutes-=60;
hours++;
}
if(hours>=24)
{
hours-=24;
}
}
};
voidmain()
{
Timeone,two,three;
cout<<"\nEnterthef