1.打印图形
A
AB
ABC
ABCD
代码如下:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
char i,j;
for(i='A';i<='D';i++)//外侧表行数,从A到D
{
for(j='A';j<=i;j++)//内侧表列数,i与j相等
{
printf("%c",j);
}
printf("\n");//输出图形为正直角三角形
}
return 0;
}
结果如下:
2.循环输入10位评委的分数,除去最大值和最小值,计算平均值
代码如下:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
int arr[10];//定义数组
int i,j;
for(i=0;i<10;i++)//输入十个分数
{
scanf("%d",&arr[i]);
}
int max=arr[0],min=arr[0],sum=0;//定义最大最小值总分并初始化
for(i=0;i<10;i++)
{
if(max<=arr[i])//取出最大值
max=arr[i];
if(min>=arr[i])//取出最小值
min=arr[i];
sum+=arr[i];//求总分
}
printf("sum=%d,ve=%.2f\n",sum,(sum-max-min)/8.0);//输出总分及去掉最高分和最低分后的平均值
return 0;
}
结果如下:
3.一维数组所有案例题
计算一维数组的最值\一维数组查找\一维数组冒泡\一维数组简单选择
3.1 计算一维数组的最值
代码如下:
int n;
printf("please enter n:");
scanf("%d",&n);//输入数组长度
int arr[n],max,min;
for(int i=0;i<n;i++)//循环输入n个数
{
printf("please enter %d data:",i+1);
scanf("%d",&arr[i]);
}
for(int i=0;i<n;i++)
{
max=arr[0];//默认首地址为最大值
min=arr[0];//默认首地址为最小值
if(max<=arr[i])
{
max=arr[i];//取出最大值
}
if(min>=arr[i])
{
min=arr[i];//取出最小值
}
}
printf("max=%d min=%d\n",max,min);//输出最大值和最小值
结果如下:
3.2 一维数组查找
代码如下:
#include<stdio.h>
int main(int argc, const char *argv[])
{
int key,n;
printf("please enter n:");
scanf("%d",&n);//输入数组长度
int arr[n];
for(int i=0;i<n;i++)
{
scanf("%d",&arr[i]);//输入n个数
}
printf("please enter key:");
scanf("%d",&key);//输入关键字
int count=0,a;
for(int i=0;i<n;i++)
{
if(key==arr[i])//循环依次比较
{
count++;//计算相同的次数
a=i;//保存下标
}
}
if(count==0)
{
printf("不存在\n");//次数为0则该数组不存在关键字
}
else if(count==1)
{
printf("下标为%d\n",a);//次数为1则输出关键字所在下标
}
else
printf("存在%d次\n",count);//多次出现则输出出现次数
return 0;
}
结果如下:
3.3 一维数组冒泡排序
代码如下:
#include<stdio.h>
int main(int argc, const char *argv[])
{
int arr[]={11,23,25,89,46};//定义数组并初始化
int n=sizeof(arr)/sizeof(arr[0]);计算数组长度
for (int i=1;i<n;i++)
for(int j=0;j<n-i;j++)
{
if(arr[j]>arr[j+1])//从第一位依次轮流比较,依次取出最大值
{
int t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
for(int i=0;i<n;i++)
{
printf("%d ",arr[i]);//循环输出排序好的数组
}
printf("\n");
return 0;
}
结果如下:
3.4 一维数组简单选择
代码如下:
#include<stdio.h>
int main(int argc, const char *argv[])
{
int arr[]={11,23,25,89,46};//定义数组并初始化
int n=sizeof(arr)/sizeof(arr[0]);//计算数组长度
for(int i=0;i<n;i++)
{
int min=i;//将第i+1位数下标设为最小值下标
for(int j=i+1;j<n;j++)
{
if(arr[min]>arr[j])//依次将默认的最小值与后一位进行比较
min=j;
}
if(min!=i)//若最小值下标与原先默认的下标不相等则交换,反之则不交换
{
int t=arr[min];
arr[min]=arr[i];
arr[i]=t;
}
}
for(int i=0;i<n;i++)//循环输出排序好的数组
printf("%d ",arr[i]);
return 0;
}
结果如下:
4.二维数组的所有案例题
4.1计算二维数组最值
代码如下:
#include<stdio.h>
int main(int argc, const char *argv[])
{
int arr[2][3];
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
{
scanf("%d",&arr[i][j]);//输入一个2行3列数组
}
}
int max=arr[0][0],a,b;//默认首地址为最大值,定义行、列下标
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
{
if(max<=arr[i][j])//取出最大值
{
max=arr[i][j];
a=i;//保存对应的行列下标
b=j;
}
}
}
printf("max=%d maxi=%d maxj=%d\n",max,a+1,b+1);//输出最大值,及其行数列数
return 0;
}
结果如下:
4.2杨辉三角
代码如下:
#include<stdio.h>
int main(int argc, const char *argv[])
{
int n,i,j;
printf("please enter 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||i==j)//第一列为1,对角线为1
{
arr[i][j]=1;
}
else
{
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];除第一行及对角线的所在行列的值等于相同列的上一行的值加上上一行前一列的值
}
printf("%-4d",arr[i][j]);
}
printf("\n");
}
return 0;
}
结果如下:
4.3转置
代码如下:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
int a[2][3]={1,2,3,4,5,6};//定义两行三列数组并初始化
int b[3][2];//定义三行两列数组
int i,j;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
b[j][i]=a[i][j];//将数组a的行数和列数的对应的值交换
}
}
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
{
printf("%d ",b[i][j]);//输出一个三行两列数组
}
printf("\n");
}
return 0;
}
结果如下:
5.思维导图