作业1:定义一个长度为20的数组,使用循环将斐波那契数列的前20项存到数组中,输出数组的每一项,并且输出该数组的总和
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
int arr[20]={1,1};//定义一个一维数组,并且数组的第一项和第二项赋值为1
int i,sum;
for(i=2;i<20;i++)
{
arr[i]=arr[i-1]+arr[i-2];
}//第三项和第三项以后的数赋值
for(i=0;i<20;i++)//遍历数组所有值并输出
{
sum=sum+arr[i];
printf("%d\t",arr[i]);
printf("该数组总和为%d\n",sum);
}
printf("\n");
return 0;
}
ubuntu@ubuntu:~$ vi b123.c
ubuntu@ubuntu:~$ gcc b123.c
ubuntu@ubuntu:~$ ./a.out
1 该数组总和为1
1 该数组总和为2
2 该数组总和为4
3 该数组总和为7
5 该数组总和为12
8 该数组总和为20
13 该数组总和为33
21 该数组总和为54
34 该数组总和为88
55 该数组总和为143
89 该数组总和为232
144 该数组总和为376
233 该数组总和为609
377 该数组总和为986
610 该数组总和为1596
987 该数组总和为2583
1597 该数组总和为4180
2584 该数组总和为6764
4181 该数组总和为10945
6765 该数组总和为17710
作业2:通过键盘输入6名学生的成绩,输出6名学生的成绩,使用冒泡法对班级学生的成绩升序排序,输出排序后成绩
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
int arr[6]={0};
int i,j,temp;
printf("输入学生的成绩: ");
for(i=0;i<6;i++)
{
scanf("%d",&arr[i]);
}
for(i=1;i<6;i++)//冒泡排序
{
for(j=0;j<6-i;j++)
{
if(arr[j]<arr[j+1])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
printf("排序后的成绩为: ");
for(i=0;i<6;i++)
{
printf("%d\t",arr[i]);
}
printf("\n");
return 0;
}
ubuntu@ubuntu:~$ vi c123.c
ubuntu@ubuntu:~$ gcc c123.c
ubuntu@ubuntu:~$ ./a.out
输入学生的成绩: 23 45 67 32 89 54
排序后的成绩为: 89 67 54 45 32 23
作业3:有如下两个数组: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; //填充新数组
//遍历a数组
for(int i=0; i<lena; i++)
{
for(int j=0; j<lenb; j++) //遍历b数组
{
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;
}
ubuntu@ubuntu:~$ vi c123.c
ubuntu@ubuntu:~$ vi e123.c
ubuntu@ubuntu:~$ gcc e123.c
ubuntu@ubuntu:~$ ./a.out
crr中的元素为:2 3 4 7 9
作业4:定义一个双精度浮点型数组,存放十个学生成绩,输入十名学生成绩,输出赋值后的所有元素。使用选择排序,完成降序排序后输出,并求出平均分,并统计出大于平均分学生的比重,输出结果。
#include <stdio.h>
int main()
{
double score[10];
double sum = 0;
for (int i = 0; i < 10; i++) {
printf("请输入第%d个学生的成绩:", i + 1);
scanf("%lf", &score[i]);
while (score[i] < 0 || score[i] > 100) {
printf("输入的成绩有误,请重新输入:");
scanf("%lf", &score[i]);
}
sum += score[i];
}
printf("输入的所有成绩为:\n");
for (int i = 0; i < 10; i++) {
printf("%.2lf ", score[i]);
}
printf("\n");
// 进行选择排序
for (int i = 0; i < 10 - 1; i++) {
int min = i;
for (int j = i + 1; j < 10; j++) {
if (score[j] < score[min]) {
min = j;
}
}
if (min != i) {
double temp = score[i]; score[i] = score[min]; score[min] = temp;
}
}
printf("选择排序后的所有成绩为:\n");
for (int i = 0; i < 10; i++) {
printf("%.2lf ", score[i]);
}
printf("\n");
int cnt = 0; // 用于记录大于平均分的学生的个数
for (int i = 0; i < 10; i++) {
if (score[i] > sum/10.0) {
cnt++;
}
}
printf("平均分为:%.2lf, 大于平均分的学生的比重为: %.2lf\n", sum / 10.0, cnt / 10.0);
return 0;
}
buntu@ubuntu:~$ vi f123.c
ubuntu@ubuntu:~$ vi aa123.c
ubuntu@ubuntu:~$ gcc aa123.c
ubuntu@ubuntu:~$ ./a.out
请输入第1个学生的成绩:34
请输入第2个学生的成绩:67
请输入第3个学生的成绩:89
请输入第4个学生的成绩:45
请输入第5个学生的成绩:67
请输入第6个学生的成绩:23
请输入第7个学生的成绩:99
请输入第8个学生的成绩:78
请输入第9个学生的成绩:68
请输入第10个学生的成绩:87
输入的所有成绩为:
34.00 67.00 89.00 45.00 67.00 23.00 99.00 78.00 68.00 87.00
选择排序后的所有成绩为:
23.00 34.00 45.00 67.00 67.00 68.00 78.00 87.00 89.00 99.00
平均分为:65.70, 大于平均分的学生的比重为: 0.70
作业5:23031班有4个小组,每组有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 a[4][5]={0};
printf("输入学生的成绩: ");
int i,j;
for(i=0;i<4;i++)
{
for(j=0;j<5;j++)
{
printf("第%d组第%d名同学成绩为: ",i+1,j+1);
scanf("%d",&a[i][j]);
}
}
for(i=0;i<4;i++)
{
printf("第%d小组的成绩为: ",i+1);
for(j=0;j<5;j++)
{
printf("%d\t",a[i][j]);
}
printf("\n");
}
for(i=0;i<4;i++)
{
int max=a[i][0];
int min=a[i][0];
printf("第%d小组; ",i+1);
for(j=0;j<5;j++)
{
if(a[i][j]>max)
{
max = a[i][j];
}
else
{
min = a[i][j];
}
}
printf("最高分: %d,最低分: %d\n",max,min);
}
return 0;
}
ubuntu@ubuntu:~$ vi bb123.c
ubuntu@ubuntu:~$ gcc bb123.c
ubuntu@ubuntu:~$ ./a.out
输入学生的成绩: 第1组第1名同学成绩为: 53
第1组第2名同学成绩为: 65
第1组第3名同学成绩为: 86
第1组第4名同学成绩为: 94
第1组第5名同学成绩为: 74
第2组第1名同学成绩为: 85
第2组第2名同学成绩为: 83
第2组第3名同学成绩为: 95
第2组第4名同学成绩为: 83
第2组第5名同学成绩为: 74
第3组第1名同学成绩为: 82
第3组第2名同学成绩为: 71
第3组第3名同学成绩为: 64
第3组第4名同学成绩为: 85
第3组第5名同学成绩为: 94
第4组第1名同学成绩为: 83
第4组第2名同学成绩为: 72
第4组第3名同学成绩为: 64
第4组第4名同学成绩为: 94
第4组第5名同学成绩为: 73
第1小组的成绩为: 53 65 86 94 74
第2小组的成绩为: 85 83 95 83 74
第3小组的成绩为: 82 71 64 85 94
第4小组的成绩为: 83 72 64 94 73
第1小组; 最高分: 94,最低分: 74
第2小组; 最高分: 95,最低分: 74
第3小组; 最高分: 94,最低分: 64
第4小组; 最高分: 94,最低分: 73