第四周《C语言及程序设计》实践项目16 数组的引入
Posted weixin_35827498
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第四周《C语言及程序设计》实践项目16 数组的引入相关的知识,希望对你有一定的参考价值。
【项目1 - 数组大折腾】
/*
* Copyright (c) 2016, CSDN学院
* All rights reserved.
* 文件名称:【项目1 - 数组大折腾】.cpp
* 作 者:张易安
* 完成日期:2016年 9 月 7 日
* 版 本 号:v1.0
*
* 问题描述:(1)创建一个有20个元素的整型数组,通过初始化,为数组中的前10个元素赋初值,然后通过键盘输入后10个元素的值,从前往后(从第0个到第19个)输出数组中元素的值,每5个元素换一行。
*/
#include<stdio.h>
int main()
int a[20]=1,2,3,4,5,6,7,8,9,10,i;
for(i=10;i<20;i++)
scanf("%d",&a[i]);
printf("由前往后,数组中的值是:\\n");
for(i=0;i<20;++i)
printf("%d\\t",a[i]);
if((i+1)%5==0)
printf("\\n");
return 0;
运行结果
/*
* Copyright (c) 2016, CSDN学院
* All rights reserved.
* 文件名称:【项目1 - 数组大折腾】.cpp
* 作 者:张易安
* 完成日期:2016年 9 月 7 日
* 版 本 号:v1.0
*
* 问题描述:(2)创建一个长度为10的整型数组并初始化,由后往前(由第9个元素向第0个元素方向)输出数组中所有元素的值,改变数组元素的值,令所有的数据加倍,输出改变后的值。
*/
#include<stdio.h>
int main()
int a[10]=1,2,3,4,5,6,7,8,9,10,i;
for(i=9;i>=0;--i)
printf("%d\\t",a[i]);
printf("\\n");
for(i=1;i<10;i++)
printf("%d\\t",2*a[i]);
return 0;
运行结果
/*
* Copyright (c) 2016, CSDN学院
* All rights reserved.
* 文件名称:【项目1 - 数组大折腾】.cpp
* 作 者:张易安
* 完成日期:2016年 9 月 7 日
* 版 本 号:v1.0
*
* 问题描述:(3)创建一个长度为16的整型数组a并初始化,先输出数组中元素值为3的倍数的数,再输出所有下标为3的倍数的元素值。输出如图示。
*/
#include<stdio.h>
int main()
int a[16]=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,i;
printf("数组中,元素值为3的倍数的数是:\\n");
for(i=1;i<16;i++)
if(a[i]%3==0)
printf("a[%d] %d\\n",i,a[i]);
printf("下标为三的倍数的元素值是:\\n");
for(i=1;i<16;i++)
if(i%3==0)
printf("a[%d] %d\\n",i,a[i]);
return 0;
运行结果
/*
* Copyright (c) 2016, CSDN学院
* All rights reserved.
* 文件名称:【项目1 - 数组大折腾】.cpp
* 作 者:张易安
* 完成日期:2016年 9 月 7 日
* 版 本 号:v1.0
*
* 问题描述:(4)创建一个长度为16的整型数组a并初始化,删除数组中所有能被3整除的元素(数组中实际有效使用的元素将不足16),输出删除后数组中的全部元素。
*/
#include<stdio.h>
int main()
int a[10]=1,2,3,4,5,6,7,8,9,10,i,j;
for(i=0,j=0;i<16;i++)
if(a[i]%3!=0)
a[j++]=a[i];//为什么就这样被删除了?
printf("删除所有能被3整除的数后,剩余的数是:\\n");
for(i=0;i<j;++i)
printf("%d\\t",a[i]);
printf("\\n");
return 0;
运行结果
/*
* Copyright (c) 2016, CSDN学院
* All rights reserved.
* 文件名称:【项目1 - 数组大折腾】.cpp
* 作 者:张易安
* 完成日期:2016年 9 月 7 日
* 版 本 号:v1.0
*
* 问题描述:(5)创建一个长度为16的整型数组a并初始化前15个元素,输入一个整数b,将b插入到a[0]位置(原有的数据往后“移动”)。
*/
#include<stdio.h>
int main()
int a[16]=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15;
int i,b;
scanf("%d",&b);
for(i=15;i>0;--i)//不能这样用++i,因为由前向后后面的数字就被遮盖住了
a[i]=a[i-1];
a[0]=b;
printf("插入后的数组是:\\n");
for(i=0;i<16;++i)
printf("%d\\n",a[i]);
printf("\\n");
return 0;
运行结果
【项目2- 成绩处理】
/*
* Copyright (c) 2016, CSDN学院
* All rights reserved.
* 文件名称:【项目2- 成绩处理】.cpp
* 作 者:张易安
* 完成日期:2016年 9 月 7 日
* 版 本 号:v1.0
*
* 问题描述:在数组score中将要存储某小组C程序设计的成绩,请完成下面的处理:
*(1)输入小组人数及成绩,要保证成绩在0-100之间;
*(2)输出该小组的最高成绩、最低成绩、平均成绩;
*(3)输出考得最高成绩和最低成绩的同学的人数;
*(4)输出考得最高成绩和最低成绩的同学的学号(设数组下标即学号,可能有相同的成绩)。
*/
#include<stdio.h>//分布执行的思想很重要
int main()
int score[50];//我开始就是写的a[i],还是规范问题 ,看的不明白
int n,i,sum,max,min;
sum=0;
max=-1;
min=101;
printf("请输入小组的人数:\\n");
scanf("%d",&n);
printf("请输入小组成员的成绩:\\n");
for(i=0;i<n;i++)
do
printf("输入第 %d 位同学的成绩:", i);
scanf("%d", &score[i]);
while(score[i]<0||score[i]>100);
int avg;//求最高成绩,最低成绩和平均数
for(i=0;i<n;i++)
if(max<score[i])
max=score[i];
if(min>score[i])
min=score[i];
sum+=score[i];
avg=sum/n;
printf("输出该小组的最高成绩 %d,最低成绩 %d,平均成绩:%d\\n",max,min,avg);
int a,b;
a=0;
b=0;// 输出考得最高成绩和最低成绩的同学的人数
for(i=0;i<n;i++)
if(max==score[i])
a++;
if(min==score[i])
b++;
printf("考得最高成绩%d 的同学人数为:%d人,他们的学号为:",max,a);
for(i=0;i<n;i++)//我开始一直在想怎样才可以输出每个人的学号而不突出,最后看答案才发现钱秒的安排好程序的先后顺序很重要最起码出结果的时候不感觉到太突出
if(max==score[i])
printf("%d ",i);
printf("\\n");
printf("考的最低的成绩%d的同学人数为:%d人,他们的学号为:",min,b);
for(i=0;i<n;i++)
if(min==score[i])
printf("%d ",i);
return 0;
【项目3-当年第几天(数组方案)】
/*
* Copyright (c) 2016, CSDN学院
* All rights reserved.
* 文件名称:【项目3-当年第几天(数组方案)】.cpp
* 作 者:张易安
* 完成日期:2016年 9 月 7 日
* 版 本 号:v1.0
*
* 问题描述: 当年第几天中定义一个函数,其参数为年、月、日的值,返回这一天为该年的第几天。要求在main函数中输入年月日,然后调用这个函数求值,并在main函数中输出结果。
*/
#include<stdio.h>
int days(int y, int m, int d);
int main()
int year, month, day;
printf("输入年 月 日: ");
scanf("%d %d %d", &year, &month, &day);
printf("这是该年的第 %d 天\\n", days(year, month, day));
return 0;
int days(int y, int m, int d)
int dd[13]=0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31;
//请利用d数组,10行之内,求出并返回y年m月d日是这一年的第几天
int i,sum=d;
for(i=1;i<m;i++)
sum+=dd[i];
if(m>2&&(y%4==0||y%100!=0)||y%400==0)
sum++;
return sum;
运行结果
【项目4-一副扑克牌】
/*
* Copyright (c) 2016, CSDN学院
* All rights reserved.
* 文件名称:
【项目4-一副扑克牌】.cpp
* 作 者:张易安
* 完成日期:2016年 9 月 7 日
* 版 本 号:v1.0
*
* 问题描述:下面的程序,输出了52张扑克牌(如图),请补充完整程序。
*/
#include <stdio.h>
int main( )
char c[4]= 'H','S','D','C';
int v[13]= 1,2,3,4,5,6,7,8,9,10,11,12,13;
int i,j;
for(i=0; i<4; i++)
for(j=0; j<13; j++)
printf("%c",c[i]);
if(v[j]==1)
printf("A");
else if(v[j]==11)
printf("J");
else if(v[j]==12)
printf("Q");
else if(v[j]==13)
printf("K");
else
printf("%d",v[j]);
printf(" ");
printf("\\n");
return 0;
运行结果
以上是关于第四周《C语言及程序设计》实践项目16 数组的引入的主要内容,如果未能解决你的问题,请参考以下文章
第四周《C语言及程序设计》实践项目22 用指针法访问数组元素