C++习题Word格式.docx
- 文档编号:21941511
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:38
- 大小:268.84KB
C++习题Word格式.docx
《C++习题Word格式.docx》由会员分享,可在线阅读,更多相关《C++习题Word格式.docx(38页珍藏版)》请在冰豆网上搜索。
静态存储一页文章,每行最多不超过80个字符,共N行;
要求
(1)分别统计出其中英文字母数和空格数及整篇文章总字数;
(2)统计某一字符串在文章中出现的次数,并输出该次数;
(3)删除某一子串,并将后面的字符前移。
存储结构使用线性表,分别用几个子函数实现相应的功能;
输入数据的形式和范围:
可以输入大写、小写的英文字母、任何数字及标点符号。
输出形式:
(1)分行输出用户输入的各行字符;
(2)分4行输出"
全部字母数"
、"
数字个数"
空格个数"
文章总字数"
(3)输出删除某一字符串后的文章;
内容三:
1.设计学生成绩管理系统。
该系统中存储学生的学号、姓名、性别、年龄、课程成绩等信息。
要求:
1)浏览学生信息
2)添加学生信息
3)删除学生信息
4)查找学生信息
5)修改学生信息
6)对成绩的处理
求出每个学生各门课程的总成绩、平均成绩、最高分和最低分。
求出某一门课程所有学生的总成绩、平均成绩、最高分和最低分。
7)按照学生某门课程的成绩对学生排序
四、算法分析、设计与描述
1.算法分析和设计
按题目要求相当于从第一张牌算起,若这张牌是二的倍数,则翻面,是三的倍数则再翻一次,是四的倍数则再翻一次,循环直到52为止,则此张牌结算完成。
翻完第一张牌后,再继续算第二张牌,直到52张牌都结算完成。
文章编辑程序的主要功能是统计文章中的全部字母数、数字个数、空格个数和文章总字数,并且能准确的查找、删除字符串。
主要应用的函数和语句有循环,查找,删除等。
根据本系统的模块划分及流程,分别从学生学籍管理,成绩管理,和用户管理等主要功能模块进行分析。
用户管理模块如图1-1所示。
图1-2学生信息管理功能管理模块图
图1-3成绩管理模块
该系统的设计完成遵从上述流程图进行设计,使得程序有了很强的实用性。
同时在按照流程图设计时,可以清晰的规划好界面所有需要的功能模块,以友好和美观的操作界面带给使用者不错的实用性和方便性。
2.算法描述(可插入流程图)
学生学籍管理系统
该系统流程如下图所示:
图1-5学生学籍管理系统的流程图
该系统由以下功能模块组成:
1.登录模块:
输入相应的信息登陆该系统。
2.系统维护模块:
Ø
课程设置子模块:
在每学期开始需要进行本学期需要开设课程的设置。
在某一课程发生变动时可以进行课程的维护。
3.学生信息管理模块:
新生信息录入子模块:
在每学年开始或中间可以进行学生信息的录入,包括学生的基本信息等。
学生信息查询子模块:
方便教务管理人员快速的查找某一学生。
分为按照学生的姓名进行查找和按照学生的所在班级名进行查找。
利于管理人员随时掌握学生信息。
更新学生信息子模块:
教务管理人员可以随时更改学生的某些信息,包括学生姓名、身份证号、班级等信息的更改。
4.学生成绩管理模块:
学生成绩录入子模块:
按照学生考试的时间和课程录入学生的考试成绩。
学生成绩查询子模块:
方便教务管理人员快速的查找某一学生的成绩。
利于管理人员随时掌握学生考试信息。
该系统的所有模块的设计均采用VC++6.0为开发环境,在各个模块的设计中都使用主要应用的函数和语句有循环,查找,删除等。
五、程序设计
1.程序设计的基本思路
主要算法是两次for循环
for(i=1;
i<
=52;
i++)
{
a=1;
for(j=2;
j<
j++)
{
if(i%j==0)
a=-a;
}
if(a==1)
printf("
%d\n"
i);
}
由程序开始运行后进行字符串的录入,之后进行字符的输出,然后是利用循环和查找,进行字符的统计并输出已经找到的字符(包括字母、数字、空格)出现的次数以及总共的字符数。
在这些运行完之后,根据要求还有一项功能--删除,对指定的字符进行删除,同样,这里也需应用到循环,查找和删除。
学生信息管理系统是对学生信息的基本管理,它包括:
浏览学生信息、添加学生信息、删除学生信息、查找学生信息、修改学生信息、对成绩的处理、按照学生某门课程的成绩对学生排序
使用模块化编程的方法每项功能有一个函数来完成,对应如下:
(1)浏览学生信息以及读取数据voidprint(ID*head)
(2)添加学生信息以及对成绩的处理ID*insert(ID*head)
(3)删除学生信息ID*delet(ID*head)
(4)查找学生信息ID*search(ID*head)
(5)修改信息ID*amend(ID*head)
(6)按照学生某门课程的成绩对学生排序ID*sort(ID*head)
(7)存储数据以及退出系统ID*breaksys(ID*head)
为了把数据封装起来更方便使用,创建了表示学生信息的结构体structid
structid
{
charname[20];
intnum;
inta;
intb;
intc;
doubleave;
ID*next;
};
2.程序代码
#include<
iostream>
conio.h>
iomanip>
math.h>
usingnamespacestd;
structL
intindex;
boolderection;
L*Next;
L*Create()
inta=52;
L*Head;
L*Pb;
L*Pe;
Pb=newL;
Head=NULL;
if(!
Head)
Pb->
num=1;
derection=true;
index=1;
Head=Pb;
Head->
Next=NULL;
intgroup=1,value=1;
for(inti=2;
Pe=newL;
if(group==4)
value++;
group=0;
Pe->
num=value;
index=i;
if(i==0)
Head->
Next=Pe;
else
Pb->
Pb=Pe;
group++;
returnHead;
}
voidMove(L*Head,intindex)
if(Head)
for(L*P=Head;
P->
Next;
P=P->
Next)
if(P->
index==index||P->
num%index==0)
{
P->
derection?
P->
derection=false:
}
voidListAll(L*Head)
cout<
<
endl<
"
纸牌信息如下:
endl;
while(Head)
cout<
第"
Head->
index<
张纸牌"
,纸牌大小:
num<
,纸牌方向:
(Head->
"
上"
:
下"
)<
Head=Head->
voidListAll(L*Head,boolderection)
纸牌"
(derection?
向上"
向下"
的如下:
intsum=0;
if(Head->
derection==derection)
cout<
sum++;
的一共"
sum<
张。
voidPointer()
L*Head=Create();
ListAll(Head);
Move(Head,i);
ListAll(Head,true);
ListAll(Head,false);
voidmain()
{
Pointer();
printf("
pressanykeytocontinue...\n"
);
getch();
#include<
stdio.h>
string.h>
malloc.h>
#defineLENsizeof(structline)
typedefstructline
char*data;
structline*next;
}LINE;
voidCreate(LINE*&
head)
chartmp[100];
LINE*p;
p=(structline*)malloc(LEN);
head=p;
请输入文本,以Ctrl+E(^E)为结尾,每行最多输入80字符!
\n"
while
(1)
gets(tmp);
if(strlen(tmp)>
80)
printf("
每行最多输入80字符"
break;
if(tmp[0]==5)
break;
p=p->
next=(structline*)malloc(LEN);
p->
data=(char*)malloc(strlen(tmp));
strcpy(p->
data,tmp);
if(tmp[strlen(tmp)-1]==5)
data[strlen(tmp)-1]='
\0'
;
next=NULL;
head=head->
next;
intCountLetter(LINE*&
LINE*p=head;
intcount=0;
do
intLen=strlen(p->
data);
for(inti=0;
Len;
if((p->
data[i]>
='
a'
&
p->
data[i]<
z'
)||(p->
A'
Z'
))
count++;
while((p=p->
next)!
=NULL);
returncount;
intCountNumber(LINE*&
if(p->
=48&
=57)
intCountSpace(LINE*&
data[i]==32)
intCountAll(LINE*&
do
count=count+strlen(p->
intFindString(LINE*&
head,char*str)
inth=0;
intlen1=0;
intlen2=strlen(str);
inti,j,k;
len1=strlen(p->
for(i=0;
len1;
i++)
if(p->
data[i]==str[0])
k=0;
for(j=0;
len2;
data[i+j]==str[j])
k++;
if(k==len2)
{
count++;
i=i+k-1;
}
voiddelstringword(char*s,char*str)
char*p=strstr(s,str);
chartmp[80];
intlen=strlen(s);
inti=len-strlen(p);
intj=i+strlen(str);
intcount=0,m,n;
for(m=0;
m<
i;
m++)
tmp[count++]=s[m];
for(n=j;
n<
len;
n++)
tmp[count++]=s[n];
tmp[count]='
strcpy(s,tmp);
voidDelString(LINE*&
if(strstr(p->
data,str)!
=NULL)
delstringword(p->
data,str);
voidOutPut(LINE*&
%s\n"
p->
intmain()
LINE*head;
charstr1[20],str2[20];
intletter,number,space,all,countstr1;
Create(head);
文章为:
OutPut(head);
letter=CountLetter(head);
\n全部字母数:
%d"
letter);
number=CountNumber(head);
\n数字个数:
number);
space=CountSpace(head);
\n空格个数:
%d"
space);
all=CountAll(head);
\n文章总字数:
all);
\n请输入要统计的字符串:
scanf("
%s"
str1);
countstr1=FindString(head,str1);
%s出现的次数为:
str1,countstr1);
\n请输入要删除的某一字符串:
str2);
DelString(head,str2);
删除%s后的文章为:
\n谢谢使用!
stdlib.h>
#defineIDstructid
charsex[2];
intage;
intsum;
intmin;
intmax;
}stu[100];
intpc=1;
FILE*fp;
intasum=0,bsum=0,csum=0;
intamax=0,bmax=0,cmax=0;
intamin=100,bmin=100,cmin=100;
floataave,bave,cave;
voidprint(ID*head)//显示记录
ID*p;
p=head;
inttemp;
显示结果是:
学号姓名性别年龄语文数学英语总成绩平均成绩最高分最低分\n"
if(head!
do
{
%3d%5s%5s%5d%5d%5d%5d%6d%9.2f%7d%7d\n"
num,p->
name,p->
sex,p->
age,p->
a,p->
b,p->
c,p->
sum,p->
ave,p->
max,p->
min);
p=p->
while(p!
总体成绩:
语文的总成绩是%4d\t平均成绩是%5.2f\t最高分是%3d\t最低分是%3d\n"
asum,aave,amax,amin);
数学的总成绩是%4d\t平均成绩是%5.2f\t最高分是%3d\t最低分是%3d\n"
bsum,bave,bmax,bmin);
英语的总成绩是%4d\t平均成绩是%5.2f\t最高分是%3d\t最低分是%3d\n"
csum,cave,cmax,cmin);
}
ID*insert(ID*head)//添加记录
ID*sort(ID*head);
ID*temp,*p1,*p2,*p;
intt;
插入操作开始!
!
temp=(ID*)malloc(sizeof(ID));
请输入学生的学号:
scanf("
&
temp->
num);
请输入学生的姓名:
name);
请输入学生的性别:
sex);
请输入学生的年龄:
age);
请输入学生的语文成绩:
a);
请输入学生的数学成绩:
b);
请输入学生的英语成绩:
c);
temp->
sum=temp->
a+temp->
b+temp->
c;
ave=(temp->
sum)/3.0;
min=((temp->
a<
b)?
a:
b)<
c?
((temp->
b):
max=((temp->
a>
b)>
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 习题
![提示](https://static.bdocx.com/images/bang_tan.gif)