用一维数组计算多个数的平均值
程序构思:先定义一个大小为20的浮点数组程序运行时先将数据加总变量初设为0,并输入数据。经过if选择语句来判定输入的数是否超过20,当输入小于20的时候,执行数据输入循环内的程序,否则执行输出“Please input a number less than 20"的消息。循环中的程序功能为读取用户输入的数据,并累加至Summary变量中。平均值的求法为数据总和除以数据个数。
void main()
{
int max=0;
int i;
float number[20];
float summary;
float average;
summary=0;
printf("Please input the number of data:");
scanf("%d",&max);
if(max<=20)
{
for(i=0;i<max;i++)
{
printf("Please input a number:");
scanf("%f",&number[i]);
summary+=number[i];
}
average=summary/max;
printf("The average is %5.2f\n",average);
}
else
printf("Please input a number less than 20.");
}
运行结果:
Please input the number of data: 5
Please input the number:13.5
Please input the number:170.4
Please input the number:65.45
Please input the number:84
Please input the number:20
The average is 70.67
用一维数组设计一个简易的员工工资治理系统(具有查询和修改功能)
程序构思:
先默认一个大小为10的整数数组,并预先依员工编号设置出10 笔员工工资数据。
利用一个while循环提供一个用户菜单供用户选择功能,第一项功能为查询员工数据,第二项功能为修改员工数据,第三项为结束系统。
当用户选择为1或2时,先要求用户输入员工编号,程序再进行判定输入是否为正确的员工编号。正确时,则输出该员工的工资数据,错误时,则输出"##The error employee number!"。若用户选择为2时,则进一步要求用户输入修改过的新员工工数据,并将数据存回到该员工工资数据数组中。
void main()
{
int employee[10]={27000,32000,32500,27500,28500,29000,
31000,32500,30000,26000};
int index;
int newsalary;
int selection;
while(1)
{
printf("==========================================");
printf("=Simple Employee Salary Management System=\n");
printf("=1.Display employee salary =\n");
printf("=2.Modify employee salary =\n");
printf("=3.Quit. =\n");
printf("==========================================\n");
printf("Please input your choose:");
scanf("%d",&selection);
if(selection==1||selection==2)
{
printf("**Please input the employee number:");
scanf("%d",&index);
if(index<10)
{
printf("**Employee Number is %d.",index);
printf("The Salary is %d\n",employee[index]);
}
else
{
printf("## The error employee number!\n");
exit(1);
}
}
switch(selection)
{
case 1:
break;
case 2:
printf("** Please input new salary:");
scanf("%d",&newsalary);
employee[index]=newsalary;
break;
case 3:
exit(1);
break;
}
printf(}\n");
}
}
运行结果:
===========================================
= Simple Employee Salary Management System=
= 1.Display employee salary =
= 2.Modify employee salary =
= 3.Quit =
===========================================
Please input your choose:1
**Please input the employee number:5
**Employee Number is 5.The Salary is 29000
===========================================
= Simple Employee Salary Management System=
= 1.Display employee salary =
= 2.Modify employee salary =
= 3.Quit =
===========================================
PLease input your choose:2
** Please input the employee number:5
** Employee is 5.The Salary is 29000
** Please input salary:30000
===========================================
= Simple Employee Salary Management System=
= 1.Display employee salary =
= 2.Modify employee salary =
= 3.Quit =
===========================================
PLease input your choose:1
** Please input the employee number:5
** Employee is 5.The Salary is 30000
===========================================
= Simple Employee Salary Management System=
= 1.Display employee salary =
= 2.Modify employee salary =
= 3.Quit =
===========================================
PLease input your choose:3
一维数组的遍历
运用一维数组的遍历可以查找一个数值是否存在于一维数组中。
程序实例:
运用一维数组设计一个可存储员工资,然后输出员工编号的程序。
程序构思:
首先默认一个大小为10的整数数组,并预先依员工编号设置出10笔员工工资数据。
在for循环中判定当用户输入的工资等于数组中的内容时就输出数据,将计数器加1,并依序将每个数组中的数据都遍历比较一次。
程序最后再判定数据计数是否为零,表示找不到相符的工资数 ,若不为0,则输出共有几笔相符的数据。
void main()
{
int employee[10]={27000,32000,32500,27500,28500,29000,
31000,32500,30000,26000};
int salary;
int counter=0;
int i;
printf("Please input the employee salary:");
scanf("%d",&salary);
for(i=0;i<10;i++)
if(salary==employee[i])
{
printf("Number %d Employee's salsry is %d!\n",i,salary);
counter++;
}
if(counter==0)
printf("No employee's salary is %d!\n",salary);
else
printf("Have%d employees salary is %d!\n",counter,salary);
}
运行结果:
PLease input the employee salary :18500
No emploee's salary is 18500!
Please input the employee salary :27000
Number 0 Employee's salary is 27000!
Have 1employee salary is 27000!
Please input the employee salary:32500
Number 2 Employee's salary is 32500!
Number 7 Employee's salary is 32500!
Have 2 employee salary is 32500!
一维数组的高级应用(一个可容纳40位数的 n!的程序)
在求一个数的阶乘的时候,就是定义一个long型或 double型 也只能算到多少位
数,这个位数与机器的字长有关,16位、32 位、64位,假设要一个数的阶乘运算结果超过了64位数就没有办法了,这个问题可以用数组来解决。
程序构思:
先声
明一个大小为40的数组,负责存储每一个位数的数据,变量digit为计算位数的变量,变量i,j,r,k为循环中所用的计数变量。首先将data数组中的数据做初化为零 ,再令第一位数值为1,位数也为1,再次将每次相乘的乘积存回数组中,并循环处理每个数组中超过10的数,若数值超过10,则将位数加1,原来的数除以10,商数加前一位的数值后回存到前一位数的数组中,再将余数存回原来位数的数组中。最后再输出每次计算后的结果。
void main()
{
int data[40]; //存储位数的数组
int digit; //数据位数变量
int i,j,k,r; //循环计数变量
int N; //输入的值
for(i=1;i<40+1;i++) //初始化数组
data[i]=0;
data[0]=1;
data[1]=1;
digit=1;
printf("Enter a number :");
scanf("%d",&N); //读取n值
for(i=1; i<N+1;i++)
{
for(j=1; j<digit+1;j++)
data[j]*=i; //对数组中的内容运算
for(j=1; j<digit+1;j++)
{
if(data[j] >10)
{
for(r=1; r<digit+1;r++)
{
if(data[digit] >10)
digit++; //当数组中的值大于10则位数加1
data[r+1]+=data[r] /10;
data[r]=data[r]%10;
}
}
}
printf("%d!=", i ) ;
for(k=digit;k>0;k--) //输出数组中的内容
printf("%d",data[k]);
printf("\n");
}
}
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |