1>
要求:
源代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc,char *argv[])
{
//打印ABC
char a[4]={'A','B','C','D'};
int i,j;
for(i=0;i<4;i++)
{
for(j=0;j<i+1;j++)
{
printf("%c",a[j]);
}
printf("\n");
}
return 0;
}
效果图:
2>
要求:
源代码:
#include<stdio.h>
#define N 10 //定义N次评分,此处N为10次
int main(int argc,char *argv[])
{
int a[N];
int sum=0;
printf("enter %d times score:&&\n",N);
for(int i=0;i<N;i++)
{
scanf("%d",&a[i]);
sum+=a[i]; //对十次全部评分求和
}
int maxIndex=0;
int minIndex=0;
for(int i=0;i<N;i++)
{
if(a[i]>a[maxIndex])
{ maxIndex=i; //记录最大值下标
}
if(a[i]<a[minIndex])
minIndex=i; //记录最小值下标
}
//最后的平均值为:(sum-最大值-最小值)除以(N-1-1)
printf("除去最大值最小值后平均值为%.2f\n",1.0*(sum-a[maxIndex]-a[minIndex])/(N-2));
return 0;
}
效果图:
3>
要求:
i>计算以为数组最值
源代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc,char *argv[])
{
int n;
printf("please enter n\n");
scanf("%d",&n);
int arr[n];
int max,min,t;
for(int i=0;i<n;i++)
{
printf("enter the NO.%d data\n",i+1);
scanf("%d",&arr[i]);
}
max=arr[0];
min=arr[0];
for(int i=1;i<n;i++)
{
if(arr[i]>max){max=arr[i];}
if(arr[i]<min){min=arr[i];}
}
printf("max=%d,min=%d\n",max,min);
return 0;
}
效果图:
ii>一维数组查找
源代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc,char *argv[])
{
//定义n维数组
int n,j;
printf("Please enter n\n");
scanf("%d",&n);
int key,arr[n],count=0,b[n];
for(int i=0;i<n;i++)
{
printf("Enter the No.%d data\n",i+1);
scanf("%d",&arr[i]);
}
//输入key值
printf("enter key number\n");
scanf("%d",&key);
for(int i=0,j=0;i<n;i++)
{
if(key==arr[i]) {count++;b[j++]=i; }//遍历数组,如果找到与key相等值,则匹配次数count++,并将此i记录在b[j]中,最后j++ 。
}
if(count==1){printf("Only one,index is [%d]\n",b[0]);}
else if(count>1)
{
for(j=0;j<count;j++)
printf("Not only,No.%d index=%d\n",j+1,b[j]);
printf("total=%d\n",count);
}
else printf("no match\n");
return 0;
}
效果图:
iii>一维数组冒泡
源代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc,char *argv[])
{
//冒泡
int a[]={1,10,20,7,18};
int t,i;
printf("原序列:");
for(i=0;i<5;i++)
printf("%3d",a[i]);
printf("\n");
for(i=0;i<5;i++)
{
for(int j=0;j<5-i-1;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
printf("冒泡排序后:");
for(i=0;i<5;i++)
printf("%3d",a[i]);
printf("\n");
return 0;
}
效果图:
iv>一维数组简单选择排序
源代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc,char *argv[])
{
//选择
int a[]={1,10,20,7,18};
int t,i,minIndex;
printf("原序列:");
for(i=0;i<5;i++)
printf("%3d",a[i]);
printf("\n");
for(i=0;i<5-1;i++)
{ minIndex=i;
for(int j=i+1;j<5;j++)
{
if(a[minIndex]<a[j])
minIndex=j;
}
if(minIndex!=i)
{
t=a[minIndex];
a[minIndex]=a[i];
a[i]=t;
}
}
printf("选择排序后序列:");
for(i=0;i<5;i++)
printf("%3d",a[i]);
printf("\n");
return 0;
}
效果图:
4>
要求:
i>二维数组最值
源代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc,char *argv[])
{
int a[2][3];
int i,j;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",&a[i][j]);
}
}
int max=a[0][0];
int mline,mrow;
printf("数组为:\n");
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
printf("a[%d][%d]=%d\t",i,j,a[i][j]);
if(max<a[i][j])
{
max=a[i][j];
mline=i;
mrow=j;
}
}
}
printf("最大值是:%d,在第%d行第%d列\n",max,mline,mrow);
return 0;
}
效果图:
ii>杨辉三角
源代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc,char *argv[])
{
//杨辉三角
int n;
printf("please enter levels\n");
scanf("%d", &n);
printf("\n");
int arr[50][50];
arr[1][1] = 1;
for(int i = 1; i <= n; i ++)
{
for(int j = 1; j <= i; j ++)
{
if(j == 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;
}
效果图:
iii>二维数组简单转置
源代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc,char *argv[])
{
int a[][3]={2,3,5,
1,6,9};
int n=sizeof(a)/sizeof(a[0]);//计算出数组a的行数
int b[3][n];
printf("原数组为:\n");
for(int i=0;i<n;i++)
{
for(int j=0;j<3;j++)
{
b[j][i]=a[i][j];
printf("a[%d][%d]=%d\n",i,j,a[i][j]);
}
}
printf("转置后数组为:\n");
for(int i=0;i<3;i++)
{
for(int j=0;j<n;j++)
printf("b[%d][%d]=%d\n",i,j,b[i][j]);
}
return 0;
}
效果图: