作业一、定义一个长度为20的数组,使用循环将斐波那契数列前二十项存到数组中,输出数组的每一项,并且输出该数组的总和。
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
int arr[20]={1,1}; //定义长度为20的整型数组
int i=0; //循环变量
for(i=2;i<20;i++)
{
arr[i]=arr[i-2]+arr[i-1];//表示数组中的第几项
}
for(i=0;i<20;i++)
{
if(i%5==0) //输出5个数组元素换行
{
printf("\n");
}
printf("%d\t",arr[i]);
}
int sum=0;//求和值
double avg=0;//求均值
for(i=0;i<20;i++)
{
sum=sum+arr[i];
}
avg=(double)sum/20;
printf("\n");
printf("前20项总和为:%d,平均值为:%.2lf\n",sum,avg);
return 0;
}
作业二、通过键盘输入6名学生的成绩,输出6名学生的成绩,使用冒泡法对班级学生的成绩升序排序,输出排序后的成绩。
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
int arr[6]={0};//定义长度为6的整型数组
int i=0,j=0;//循环变量
int temp=0;//交换变量
for(i=0;i<6;i++)
{
printf("请输入成绩:");
scanf("%d",&arr[i]);
if(arr[i]<0||arr[i]>100)
{
printf("输入有误,请重新输入\n");
i--; //对数据进行判断
}
}
for(i=1;i<6;i++) //控制趟数
{
for(j=0;j<5;j++) //控制元素
{
if(arr[j]>arr[j+1])
{
//交换变量
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for(i=0;i<6;i++)
{
printf("%d\t",arr[i]);
}
printf("\n");
return 0;
}
作业三、有如下两个数组:int arr【】={1,2,3,4,5,6,7,8,9,0};int brr【】={3,7,15,9,20,2,100,4};要求,自定义一个数组crr,将上面两个数组的交集存放到新数组中,并输出新数组中的内容。
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
int arr[]={1,2,3,4,5,6,7,8,9,0};
int brr[]={3,7,15,9,20,2,100,4};
int lena=sizeof(arr)/sizeof(arr[0]);
int lenb=sizeof(brr)/sizeof(brr[0]);
int lenc=lena<lenb?lena:lenb;
int crr[lenc];
int k=0;
for(int i=0;i<lena;i++)
{
for(int j=0;j<lenb;j++)
{
if(arr[i]==brr[j])
{
crr[k]=arr[i];
k++;
}
}
}
printf("crr中的元素为:");
for(int i=0;i<k;i++)
{
printf("%d\t",crr[i]);
}
printf("\n");
return 0;
}
作业四、定义一个双精度浮点型数组,存放十个学生成绩,输入十名学生成绩,输出赋值后的所有元素。使用选择排序,完成降序排序后输出,并求平均分,并统计大于平均分学生的比重,输出结果。
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
double arr[10]={0}; //定义长度为10的双精度数组
int i=0,j=0; //定义变量
int temp=0; //交换变量
int max; //记录最值下标
for(i=0;i<10;i++)
{
printf("请输入学生成绩:");
scanf("%lf",&arr[i]);
if(arr[i]<0||arr[i]>100)
{
printf("输入有误,请重新输入\n");
i--; //对数据进行判断
}
}
printf("学生成绩显示如下:\n");
for(i=0;i<10;i++)
{
printf("arr[%d]=%0.2lf\t",i,arr[i]);
}
for(i=0;i<10;i++)
{
//当第一个数是最值
max=i;
for(int j=i+1;j<10;j++);
{
//判断当前max是否为最大值
if(arr[max]<arr[j])
{
max=j; //记录新的最大值
}
}
//判断最大值的位置是否在第一位
if(max!=i)
{
temp=arr[max];
arr[max]=arr[i];
arr[i]=temp;
}
}
//输出排序结果
printf("\n");
printf("学生成绩排序为:");
for(i=0;i<10;i++)
{
printf("%.2lf\t",arr[i]);
}
printf("\n");
//计算和值、均值
int sum=0;
double avg=0;
for(i=0;i<10;i++)
{
sum=sum+arr[i];
}
avg=(double)sum/10;
printf("\n");
printf("平均值为:%.2lf\n",avg);
printf("高于平均分数的分数有:\n");
int count=0;//定义高于平均分的人数
double result;//高于平均的比重
for(i=0;i<10;i++)
{
if(arr[i]>=avg)
{
printf("%.2lf\t",arr[i]);
count++;
}
}
result=(double)count/10.0;
printf("\n");
printf("高于平均分学生的比重比:%.2lf\n",result);
return 0;
}
作业五、23031班有四个小组,每组有5名学生,c语言基础考试成绩,第一组5位同学的成绩为90、92、93、91、88,第二组5位同学的成绩为86、89、87、85、99,第三组5位同学的成绩为100、95、85、75、90,第四组5位同学的成绩为90、85、85、95、80,定义二维数组分别输入4个小组的成绩,利用循环在输出4个小组的学生成绩,求出每个小组的最低成绩、最高成绩并输出每个小组的最高成绩,最低成绩。
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
int arr[4][5];//定义二维数组
int i,j; //循环变量
//循环输入
for(i=0;i<4;i++) //外侧循环控制小组
{
for(j=0;j<5;j++) //内侧循环控制小组人数
{
printf("请输入第%d小组第%d个学生的成绩:",i+1,j+1);
scanf("%d",&arr[i][j]);
}
}
printf("输入的小组成绩如下:\n");
for(i=0;i<4;i++)
{
printf("第%d小组的成绩为:",i+1);
for(j=0;j<5;j++)
{
printf("%d\t",arr[i][j]);
}
printf("\n");
}
//每组的最值
int max;
int min;
for(i=0;i<4;i++)
{
int max=arr[i][0]; //最大值
int min=arr[i][0]; //最小值
printf("第%d小组:",i+1);
for(j=0;j<5;j++)
{
if(max<arr[i][j])
{
max=arr[i][j];
}else
{
min=arr[i][j];
}
}
printf("当前小组的最高分为:%d,最低分为:%d",max,min);
}
return 0;
}