十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
#include stdio.h
成都创新互联公司主营碌曲网站建设的网络公司,主营网站建设方案,成都app开发,碌曲h5微信小程序开发搭建,碌曲网站营销推广欢迎碌曲等地区企业咨询
#include stdlib.h
void Maxnum(int []);
float Avenum(int []);
void Ordernum(int []);
void main(){
int a[10];
int i;
printf("输入十个数字:\n?");
for (i=0;i=9;i++){
scanf("%d",a[i]);
if (i!=9)
printf("?");
}
Maxnum(a);
printf("平均值为:%.3f\n",Avenum(a));
Ordernum(a);
system("pause");
}
void Maxnum(int b[]){
int temp1=0,temp2=b[0],m;
for (m=0;m=9;m++){
if (b[m]temp1)
temp1=b[m];
if(b[m]temp2)
temp2=b[m];
}
printf("最大值:%d\n最小值:%d\n",temp1,temp2);
}
float Avenum( int b[]){
int n,sum=0;
for (n=0;n=9;n++){
sum+=b[n];
}
return (float)sum/10;
}
void Ordernum(int b[]){
int i,j,k,temp;
for (i=1;i=10;i++)
for (j=0;j=8;j++)
if (b[j]b[j+1]){
temp=b[j];
b[j]=b[j+1];
b[j+1]=temp;
}
printf("排序:\n");
for (k=0;k=9;k++)
printf("%d ",b[k]);
printf("\n");
}
好像你提过这个问题,我还是继续回答。
C语言是普适性最强的一种计算机程序编辑语言,它不仅可以发挥出高级编程语言的功用,还具有汇编语言的优点,计算和的方法为:
1、新建一个求1到100自然数之和项目。
2、添加一个cpp文件。
3、包含需要用到的头文件。
4、输入main函数。
5、定义两个变量,分别是:a和sum。
6、使用while语句计算1到100之间所有自然数之和。
7、运行程序,打印出结果。
注意事项:
C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。也就是说,对用C语言的人,要求对程序设计更熟练一些。
#include stdio.h
int is(int number);
int main(void)
{ int m,n,i;
printf("m(=1)=");
scanf("%d",m);
printf("n(=1000)=");
scanf("%d",n);
for(i=m;i=n;i++)
if(is(i)) printf("%-5d",i);
printf("\n");
}
int is(int number)
{ int s=0,x,a;
if(number==0) return 1;
for(x=number;x!=0;x/=10)
{ a=x%10;
s+=a*a*a;
}
return s==number;
}
这种东西很多了,随便搜索一大堆:这是个学生成绩的!
#include iostream.h
#include iomanip.h
#include fstream
#include vector
#include malloc.h
#include stdlib.h
#include string
#include process.h
#include stdio.h
//#define NULL 0
int const Q=20;
#define LEN sizeof(struct student)
using namespace std;
int n=0; //定义一个全局变量统计学生人数
//——---------定义一个学生考试信息的结构体
struct student
{
char name[Q]; //用来存放姓名的
char sex[Q]; //用来存放性别的
long int id; //用来存放准考证号的
int score[4]; //用来存放分数的
int total; //用来存放总分数的
struct student *next;
};
//student向量容器
vector student stu;
//--------------学生类
class Information
{
public:
Information() ; //构造函数.
~Information() ; //析构函数.
student *creat();//建立链表函数。
void output(student *head);
int count(student *head);//定义函数count()统计考生总数
student *insert(student*head);//指针函数*insert()用来添加考生信息.
student *cancel(student *head,long int num);//指针函数*cancel()用来删除考生信息.
student *find(student *head,long int num); //指针函数*find()用来查找考生信息.
void inorder(student *head);//定义inorder()函数将考生的总分从大到小排列并输出
void average( student *head);//求学生成绩的平均分的函数
void save(student *head);//保存函数
student *Read();//读取函数
private:
student *p1,*p2,*p3,*head,st;
};
Information::Information()
{
cout" ******************************************************************************\n";
cout" ------------------------欢迎您使用学生成绩管理系统------------------------\n";
cout" ******************************************************************************\n\n";
}
Information::~Information()
{
cout" ******************************************************************************\n";
cout" ------------------------谢谢您使用学生成绩管理系统------------------------\n";
cout" ******************************************************************************\n";
}
student *Information::creat(void)
{//定义一个指向struct student的结构体指针函数*creat()用来增加考生信息.
char ch[Q];n=0; //用来存放姓名的
p1=p2=(student *)malloc(LEN);//调用malloc()函数用来开辟一个新的存储单元
cout" -------------请建立学生考试信息表,在姓名处键以 ! 结束输入。--------------"endl;
cout" 姓名:";
cinch;
head=NULL; //给指针head赋初值
while (strcmp(ch,"!")!=0)
{//调用字符比较函数strcmp()用来判断是否继续输入
char str[10];
int flag=0;
p1=(student *)malloc(LEN);//调用malloc()函数用来开辟一个新的存储单元
strcpy(p1-name,ch); //将循环结构前面输入的姓名复制到结构体名为p1的数组name中
cout" 性别:";
cinp1-sex;
cout" 准考证号(8位):";
do{
cinstr;
if(atol(str)99999999 || atol(str)1)
cout"对不起,请正确输入!!!\n";
else
{
p1-id=atol(str); flag=1;
}
}while(flag==0);
flag=0;
cout" 计算机组成原理成绩:";
do{
cinstr;
if(atoi(str)100 || atoi(str)1)
cout"对不起,请输入1-100之间的数字!!\n";
else
{
p1-score[0]=atoi(str); flag=1;
}
}while(flag==0);
flag=0;
cout" 概率统计成绩:";
do{
cinstr;
if(atoi(str)100 || atoi(str)1)
cout"对不起,请输入1-100之间的数字!!\n";
else
{ p1-score[1]=atoi(str); flag=1;}
}while(flag==0);
flag=0;
cout" 英语成绩:";
do{
cinstr;
if(atoi(str)100 || atoi(str)1)
cout"对不起,请输入1-100之间的数字!!\n";
else
{ p1-score[2]=atoi(str); flag=1;}
}while(flag==0);
flag=0;
cout" C++成绩:";
do{
cinstr;
if(atoi(str)100 || atoi(str)1)
cout"对不起,请输入1-100之间的数字!!\n";
else
{ p1-score[3]=atoi(str); flag=1;}
}while(flag==0);
flag=0;
p1-total=p1-score[0]+p1-score[1]+p1-score[2]+p1-score[3];//计算总分
if(n==0)head=p1;//如果是输入第一组学生考试信息就将指针p1赋给指针head
else p2-next=p1;//否则将p1赋给p2所指结构体的next指针
p2=p1;//将指针p1赋给指针p2
n++; //将n的值加1
cout" 姓名:";
cinch;//将输入的姓名存放到字符数组ch中
}
p2-next=NULL;//将p2所指结构体的next指针重新赋空值
return (head);//将输入的第一组学生考试信息返回
}
//---------------定义output()函数将考生的信息从头指针所指内容开始输出
void Information::output(student *head)
{
if(head==NULL) cout" 这是一个空表,请先输入考生成绩.\n";
else{
cout"-------------------------------------------------------------------------------\n";
cout" *学生考试成绩信息表*\n";
cout"-------------------------------------------------------------------------------\n";
cout"准考证号 姓 名 性别 计算机组成原理 概率统计 英语 C++ 平均分 总分\n";
cout"-------------------------------------------------------------------------------\n";
p1=head;//将头指针赋给p
do
{
coutsetw(8)p1-id
setw(9)p1-name
setw(8)p1-sex
setw(13)p1-score[0]
setw(16)p1-score[1]
setw(10)p1-score[2]
setw(9)p1-score[3]
setw(6)p1-total/4.0
setw(11)p1-totalendl;
cout"-------------------------------------------------------------------------------\n";
p1=p1-next;//将下一组考生信息的next指针赋给p
}while(p1!=NULL);//若指针p非空则继续,目的是把所有的考生信息都传给指针p然后输出.
}
}
//------------统计学生人数的函数
int Information::count(struct student *head)//定义函数count()统计考生总数
{
if(head==NULL)
return(0);//若指针head为空返回值为0
else return(1+count(head-next));//函数的递归调用
}
//-----------插入学生的成绩的函数
student *Information::insert( student *head)
//插入新结点定义一个指向struct student的结构体指针函数*insert()用来添加考生信息.
{
char str[10];
int flag=0;
cout"\t----------------请输入新增学生成绩信息----------------\n"endl;
p1=(student *)malloc(LEN); //使p1指向插入的新结点
cout" 姓名:";
cinp1-name; //将输入的姓名存放到结构体名为p1的数组name中
cout" 性别:";
cinp1-sex;
cout" 准考证号(8位):";
do{
cinstr;
if(atol(str)99999999 || atol(str)1)
cout"对不起,请请正确输入!!!\n";
else
{p1-id=atol(str); flag=1; }
}while(flag==0);
flag=0;
cout" 计算机组成原理成绩:";
do{
cinstr;
if(atoi(str)100 || atoi(str)1)
cout"对不起,请输入1-100之间的数字!!\n";
else
{ p1-score[0]=atoi(str); flag=1;}
}while(flag==0);
flag=0;
cout" 概率统计成绩:";
do{
cinstr;
if(atoi(str)100 || atoi(str)1)
cout"对不起,请输入1-100之间的数字!!\n";
else
{ p1-score[1]=atoi(str); flag=1;}
}while(flag==0);
flag=0;
cout" 英语成绩:";
do{
cinstr;
if(atoi(str)100 || atoi(str)1)
cout"对不起,请输入1-100之间的数字!!\n";
else
{ p1-score[2]=atoi(str); flag=1;}
}while(flag==0);
flag=0;
cout" C++成绩:";
do{
cinstr;
if(atoi(str)100 || atoi(str)1)
cout"对不起,请输入1-100之间的数字!!\n";
else
{ p1-score[3]=atoi(str); flag=1;}
}while(flag==0);
flag=0;
p1-total=p1-score[0]+p1-score[1]+p1-score[2]+p1-score[3];//计算总分
p2=head;//将头指针赋给p2
if(head==NULL) //若没调用次函数以前的头指针head为空
{
head=p1;p1-next=NULL;
}//则将p1赋给头指针head并将p1所指结构体成员指针next赋空值
else
{
while((p1-idp2-id)(p2-next!=NULL))
{
p3=p2;//p3指向原p2指向的结点
p2=p2-next;
}//p2后移一个结点
if(p1-id=p2-id)
{
if(head==p2)
{
p1-next=head;
head=p1;
} //插入到第一个结点之前
else
{
p3-next=p1;
p1-next=p2;
} //插入到p3所指结点之后
}
else
{
p2-next=p1;
p1-next=NULL;
} //插入到尾结点之后
}
n++;//将学生人数加1
cout"\t你输入的学生信息已经成功插入"endl;
return (head);
}
//------------删除函数
student *Information::cancel(student *head,long int num)//定义一个指向struct student的结构体指针函数*delete()用来删除考生信息.
{
if(head==NULL)//若调用次函数以前的头指针head为空
{
return(head);
}
else
{
p1=head;//否则将头指针赋给p1
while(num!=p1-idp1-next!=NULL)//寻找要删除的结点当p1所指的学生准考证号不是输入的学生准考证号并且p1所指的next指针不为空
{
p2=p1;
p1=p1-next;
}//p2指向原p1指向的结点p1后移一个结点
if(num==p1-id)//如果输入的学生准考证号是p1所指的学生准考证号//结点找到后删除
{
if(p1==head) head=p1-next;//如果head指针和p1指针相等则将下一个结点赋给指针head
else
p2-next=p1-next;//否则将p1所指结点赋给p2所指结点将要删除的学生信息跳过去
cout" 删除准考证号为"num"的学生\n";
n--;//将学生人数减1
}
return(head);//将头指针返回
}
}
//------------查找函数
student *Information::find(student *head,long int num)
//定义一个指向struct student的结构体指针函数*find()用来查找考生信息.
{
if(head==NULL)//若调用次函数以前的头指针head为空
{
cout" 这是一个空表,请先输入考生成绩.\n";
return(head);
}
else
{
p1=head;//否则将头指针赋给p1
while(num!=p1-idp1-next!=NULL)
//寻找结点当p1所指的学生准考证号不是输入的学生准考证号并且p1所指的next指针不为空
{
p1=p1-next;
}//p2指向原p1指向的结点p1后移一个结点
if(num==p1-id)//如果要查找的学生准考证号是p1所指的学生准考证号
{
cout"------------------------------------------------------------------------------\n";
cout"准考证号 姓名 性别 计算机组成原理 概率统计 英语 C++ 平均分 总分 \n";
cout"------------------------------------------------------------------------------\n";
coutsetw(8)p1-id
setw(9)p1-name
setw(8)p1-sex
setw(13)p1-score[0]
setw(16)p1-score[1]
setw(10)p1-score[2]
setw(9)p1-score[3]
setw(6)p1-total/4.0
setw(11)p1-totalendl;
cout"------------------------------------------------------------------------------\n";
}
else
cout" 没找到准考证号为"num"的学生.\n"; //结点没找到
return(head);
}
}
//------------定义inorder()函数将考生的总分从大到小排列并输出
void Information::inorder(student *head)
{
int i,k,m=0,j;
student *p[Q];//定义一个指向struct student的结构体指针数组p
if(head!=NULL)//如果头指针是空则继续
{ m=count(head);
cout"------------------------------------------------------------------------------\n";
cout"学生考试成绩统计表\n";
cout"------------------------------------------------------------------------------\n";
cout"准考证号 姓 名 性别 计算机组成原理 概率统计 英语 C++ 平均分 总分 名次\n";
cout"------------------------------------------------------------------------------\n";
p1=head;
for(k=0;km;k++)
{
p[k]=p1;
p1=p1-next;
}
for(k=0;km-1;k++) //选择排序法
for(j=k+1;jm;j++)
if(p[k]-totalp[j]-total)
{
p2=p[k];
p[k]=p[j];
p[j]=p2;
} //从大到小排列的指针
for(i=0;im;i++)
{
coutsetw(8)p1-id
setw(9)p1-name
setw(8)p1-sex
setw(13)p1-score[0]
setw(16)p1-score[1]
setw(10)p1-score[2]
setw(9)p1-score[3]
setw(6)p1-total/4.0
setw(11)p1-totalendl;
cout"------------------------------------------------------------------------------\n";
}
}
}
//------------求各科平均分成绩的函数
void Information::average(student *head)
{
int k,m;
float arg1=0,arg2=0,arg3=0,arg4=0;
if(head==NULL)//如果头指针是空则继续
{
cout" 这是一个空表,请先输入考生成绩.\n";
}
else
{
m=count(head);
p1=head;
for(k=0;km;k++)
{
arg1+=p1-score[0];
arg2+=p1-score[1];
arg3+=p1-score[2];
arg4+=p1-score[3];
p1=p1-next;
}
arg1/=m;arg2/=m;arg3/=m;arg4/=m;
cout"全班单科成绩平均分\n";
cout"------------------------------------------------------------------------------\n";
cout" 计算机组成原理平均分:"setw(7)arg1
" 概率统计平均分:"setw(7)arg2
" 英语平均分:"setw(7)arg3
" C++平均分:"setw(7)arg4endl;
cout"------------------------------------------------------------------------------\n";
}
}
//-------------------保存函数.
void Information::save(student *head)
{
ofstream out("data.txt",ios::out);
outcount(head)endl;
while(head!=NULL)
{ outhead-name"\t"
head-id"\t""\t"
head-sex"\t"
head-score[0]"\t"
head-score[1]"\t"
head-score[2]"\t"
head-score[3]"\t"
head-totalendl;
head=head-next;
}
}
//———————————读取函数的实现
student *Information::Read()
{ int i=0;
p1=p2=( student *)malloc(LEN);
head=NULL;
ifstream in("data.txt",ios::out);
ini;
if(i==0){cout" data.txt 文件中的数据为空,请先输入数据。"endl; return 0;}
else {
cout" …………………………………………………………………………………………"endl;
for(;i0;i--)
{ p1=(student *)malloc(LEN);
cinst.namest.idst.sex
st.score[0]st.score[1]st.score[2]st.score[3]
st.total;
strcpy(p1-name,st.name);
p1-id=st.id;
strcpy(p1-sex,st.sex);
p1-score[0]=st.score[0];
p1-score[1]=st.score[1];
p1-score[2]=st.score[2];
p1-score[3]=st.score[3];
p1-total=st.total;
if(n==0)head=p1;//如果是输入第一组学生考试信息就将指针p1赋给指针head
else p2-next=p1;//否则将p1赋给p2所指结构体的next指针
p2=p1;//将指针p1赋给指针p2
n++; //将n的值加1
//显示读入数据
cout" "p1-name"\t"
p1-id"\t""\t"
p1-sex"\t"
p1-score[0]"\t"
p1-score[1]"\t"
p1-score[2]"\t"
p1-score[3]"\t"
p1-totalendl;
cout" …………………………………………………………………………………………"endl;
//
}
cout" 数据已经成功读取完毕。"endl;
p2-next=NULL;
return (head);
}
}
//------------------------------主函数.
int main(void)
{
Information person;
student *head=NULL;
char str[10];
int flag=0;
int choice;
long int i;
head=person.Read();
do{
cout"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓";
cout"┃ 学生成绩管理系统主菜单界面 ┃";
cout"┃ 读取数据请输入数字零 ┃";
cout"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫";
cout"┃ ①.输入学生成绩 ┃";
cout"┃ ②.显示学生成绩 ┃";
cout"┃ ③.排序统计成绩 ┃";
cout"┃ ④.查找学生成绩 ┃";
cout"┃ ⑤.增加学生成绩 ┃";
cout"┃ ⑥.删除学生成绩 ┃";
cout"┃ ⑦.保存退出系统 ┃";
cout"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛";
cout"请输入您的选择(1--7):( )\b\b";
cinstr;
if(atoi(str)7 || atoi(str)1)
cout"对不起,请输入1-7这几个数字!!\n";
else
{
choice=atoi(str);
switch(choice)
{
case 1:
head=person.creat();
break;
case 2:
person.output(head);
break;
case 3:
person.inorder(head);
person.average(head);
cout" 参加考试的学生人数为:"person.count(head)"人\n";
break;
case 4:
cout" 请输入要查找的准考证号(8位):";
do{
cinstr;
if(atol(str)99999999 || atol(str)1)
cout"对不起,请输入正确输入!!!\n";
else
{i=atol(str); flag=1; }
}while(flag==0);
flag=0;
person.find(head,i);
break;
case 5:
head=person.insert(head);
person.output(head);
break;
case 6:
cout" 请输入要删除的准考证号(8位):";
do{
cinstr;
if(atol(str)99999999 || atol(str)1)
cout"对不起,请输入正确输入!!!h\n";
else
{i=atol(str); flag=1; }
}while(flag==0);
flag=0;
head=person.cancel(head,i);
person.output(head);
break;
case 7:
person.save(head);
cout"文件已保存!可以安全退出!!!"endl;
break;
default :cout" 对不起,您的输入有误,请重新输入。\n";
break;
}
}
}while(choice!=7);
return 0;
}