作业1:打印图案
A
AB
ABC
ABCD
#include <stdio.h>
int main(int argc, const char *argv[])
{
int i,j,n;//定义三个变量
printf("please enter n:");//提示输入n
scanf("%d",&n);//输入要打印的行数n
for(i=0;i<n;i++)//循环打印图案
{
char ch='A';//定义字符变量
for(j=0;j<=i;j++)
{
printf("%c",ch);//打印字母A
ch++;//每次打完自增,以便下次打印后面一个字母
}
printf("\n");//换行
}
return 0;
}
效果图:
作业2:循环输入10位评委的分数,除去最大值和最小值,计算平均值
#include <stdio.h>
int main(int argc, const char *argv[])
{
int arr[10]={0};//定义一个能存储10个int类型的数组存储评委分数
int i;//定义一个循环变量i
int sum=0;//定义一个sum存储10个分数和
double ave=0;//定义ave存储最终的平均值
for(i=0;i<10;i++)
{
printf("please enter %d data:",i+1);//提示输入第i+1个评委打的分数
scanf("%d",&arr[i]);//循环输入分数
}
int max=arr[0];//定义max存储最高分
int min=arr[0];//定义min存储最低分
for(i=0;i<10;i++)
{
if(arr[i]>max){//循环寻找分数中的最大值与最小值
max=arr[i];
}else if(arr[i]<min){
min=arr[i];
}
sum+=arr[i];//求出总的分数
}
printf("max=%d min=%d\n",max,min);//打印出最高分与最低分
ave=(double)(sum-max-min)/8;//求出去掉最高分与最低分后的平均分
printf("ave= %.2lf\n",ave);//打印出平均分,保留两位小数
return 0;
}
效果图:
作业3:一维数组
3.1计算一维数组的最值
#include <stdio.h>
int main(int argc, const char *argv[])
{
int n,i;//定义两个变量存储数组容量以及循环变量
printf("please enter n:");//提示输入n
scanf("%d",&n);//输入数组元素个数n
int arr[n];//定义一个名为arr,有n个int类型的元素的数组
for(i=0;i<n;i++)
{
printf("请输入第%d一个元素:",i+1);//提示输入第几个元素
scanf("%d",&arr[i]);//循环输入数组元素值
}
int max=arr[0],min=arr[0];//默认arr[0]为最大值与最小值
for(i=0;i<n;i++)
{
if(max<=arr[i])//寻找数组中的最大值
{
max=arr[i];
}
if(min>=arr[i])//寻找数组中的最小值
{
min=arr[i];
}
}
printf("max=%d min=%d\n",max,min);//输出数组元素中的最大值与最小值
return 0;
}
效果图:
3.2一维数组查找
#include <stdio.h>
int main(int argc, const char *argv[])
{
int key,count=0,i,n;//定义变量
printf("please enter n:");//提示输入n
scanf("%d",&n);//输入数组元素个数
int arr[n];//定义一个一维数组
for(i=0;i<n;i++)
{
printf("please enter %d data:",i+1);//提示输入第几个元素
scanf("%d",&arr[i]);//循环输入数组元素值
}
printf("please enter key:");//提示输入一个key的值
scanf("%d",&key);//输入key的值
int a=0;
for(i=0;i<5;i++)
{
if(arr[i]==key)//如果数组中有与key相同的值,记录个数
{
count++;//计数器,用来计算key在arr[n]中出现的次数
a=i;//定义的a用来存储与key相等的元素数组下标
}
}
if(count==0){//若计数器为0,则该数组中没有key的值
printf("该数组中不存在key的值\n");
}else if(count==1){//为1,输出数组下标
printf("数组下标=%d\n",a);
}else{//否则输出出现key的次数
printf("数组中出现key次数=%d\n",count);
}
return 0;
}
效果图:
3.3一维数组冒泡
#include <stdio.h>
int main(int argc, const char *argv[])
{
int i,j,temp=0;
int arr[5]={12,22,2,4,52};
int len=sizeof(arr)/sizeof(arr[0]);//求数组长度
//排序前
for(i=0;i<len;i++)
{
printf("%-4d",arr[i]);
}
printf("\n");
//排序后
for(i=1;i<len;i++)//外层循环控制轮数
{
for(j=0;j<len-i;j++)//内层循环控制每一轮需要比较的次数
{
if(arr[j]>arr[j+1])//前一位如果比后一位大,则交换两者的值
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}//升序排列(降序排列改变‘>’即可)
}
}
for(i=0;i<len;i++)//循环打印排序后的数组
{
printf("%-4d",arr[i]);
}
printf("\n");
return 0;
}
效果图:
3.3一维数组简单选择
#include <stdio.h>
int main(int argc, const char *argv[])
{
int i,j,temp=0;
int arr[5]={12,22,2,4,52};
int len=sizeof(arr)/sizeof(arr[0]);//求数组长度
for(i=0;i<len-1;i++)//外层循环控制轮数
{
int min=i;//默认最小值的下标
for(j=i+1;j<len;j++)//内层循环寻找默认值后面最小值的下标
{
if(arr[min]>arr[j])
{
min=j;//min指向最值的下标
}
}
if(min!=i){//若一轮比较结束,min指向的下标改变说明需要交换值
temp=arr[min];
arr[min]=arr[i];
arr[i]=temp;
}
}
for(i=0;i<5;i++)//循环打印排序后的数组
{
printf("%-4d",arr[i]);
}
printf("\n");
return 0;
}
效果图:
作业4:二维数组
4.1计算二维数组最值
#include <stdio.h>
int main(int argc, const char *argv[])
{
int i,j;
int arr[2][3]={0};//定义一个2行3列的二维数组并初始化
for(i=0;i<2;i++)//外层行
{
for(j=0;j<3;j++)//内层列
{
scanf("%d",&arr[i][j]);//循环输入数组中各个元素值
}
}
int max=arr[0][0];//默认该数组中最大值为arr[0][0]
int min=arr[0][0];//默认该数组中最小值为arr[0][0]
int line=0,row=0,line1=0,row1=0;//定义四个变量分别存储最值的行与列
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
if(max<arr[i][j])//存储最大值与最大值所在行与列
{
max=arr[i][j];
line=i+1;
row=j+1;
}else if(min>arr[i][j]){//存储最小值与最小值所在行与列
min=arr[i][j];
line1=i+1;
row1=j+1;
}
}
}
printf("max=%d line=%d row=%d\n",max,line,row);//输出最大值以及所在行与列
printf("min=%d line1=%d row1=%d\n",min,line1,row1);//输出最小值以及所在行与列
return 0;
}
效果图:
4.2杨辉三角
#include <stdio.h>
int main(int argc, const char *argv[])
{
int i,j,n;
printf("please enter n:");//提示输入n
scanf("%d",&n);//输入要打印的杨辉三角的行数
int arr[n][n];//定义一个n行n列的二维数组
for(i=0;i<n;i++)//外层控制行
{
for(j=0;j<=i;j++)//内层控制列
{
if(j==0 || j==i){//杨辉三角的直角竖边与斜边结果为1
arr[i][j]=1;
}else{//中间的值规律在于下一行某列的值等于它上面一行那个元素以及其左边相邻元素值的和
arr[i][j]=arr[i-1][j]+arr[i-1][j-1];
}
printf("%-4d",arr[i][j]);//打印出杨辉三角
}
printf("\n");
}
return 0;
}
效果图:
4.3转置
#include <stdio.h>
int main(int argc, const char *argv[])
{
int a[2][3]={12,13,14,15,16,17};//定义一个2行3列的二维数组
int b[3][2];//定义一个3行2列的二维数组
int i,j;
//转置前
for(i=0;i<2;i++)//外层行
{
for(j=0;j<3;j++)//内层列
{
printf("%-4d",a[i][j]);//输出数组a
}
printf("\n");
}
//转置中
for(i=0;i<2;i++)//外层行
{
for(j=0;j<3;j++)//内层列
{
b[j][i]=a[i][j];//将数组a转置并存入数组b
}
}
printf("\n");
//转置后
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
{
printf("%-4d",b[i][j]);//打印出数组b
}
printf("\n");
}
return 0;
}
效果图: