#include <stdioh>
int main(void)
{
int i,x,n;
int a[10];
printf("输入数组元素的个数:");
scanf("%d",&n);
printf("输入数组%d个元素:",n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("输入x:");
scanf("%d",&x);
for(i=0;i<n;i++)
{
if(a[i]!=x)continue;
if(i>n)
printf("没有找到与%d相同的元素!\n",x);
else
printf("和%d相同的数组元素是a[%d]=%d\n",x,i,a[i]);
}
return 0;
}
加上括号就可以了
实验四 一维数组、二维数组一、实验目的与要求1、熟练掌握一维数组、二维数组的定义、赋值和输入输出的方法。 2、掌握与数组有关的算法。二、实验内容1、(1)输入N个整数,使用冒泡排序,将数据由大到小输出。#include "stdafxh"#include<stdioh>void swap2(int,int);void bubble(int a[],int n);int main(void){ int n,a[8]; int i; printf("Enter n(n<=8):"); scanf("%d",&n); printf("Enter a[%d]:", n); for(i=0;i<n;i++) scanf("%d", &a[i]); bubble(a,n);printf("After sorted,a[%d]=", n);for(i=0;i<n;i++) printf("%3d",a[i]);return 0;}void bubble(int a[],int n) /n是数组a中待排序元素的数量/{ int i,j; for(i=1;i<n;i++) /外部循环---请问这个嵌套循环怎么理解??/ for(j=0;j<n-i;j++) /内部循环---请问这个嵌套循环怎么理解??/ if(a[j]>a[j+1]) swap2(&a[j],&a[j+1]); /交换/}void swap2(int px,int py) { int t;t=px;px=py;py=t;}单向冒泡排序法:
//输入10个整数,按从大到小输出//
#include<stdioh>
void main()
{
int i,j,t,a[10];
printf("请输入10个整数\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=1;j<10;j++) //10个数要来回做(10-1)趟次//
for(i=1;i<11-j;i++) //第j趟要做(10-j)次比较//
if(a[i]>a[i-1]) //每做完一趟,就会将数组中较小的一个数沉淀下来,较大的数不断往上冒//
{t=a[i];a[i]=a[i-1];a[i-1]=t;}printf("按从大到小排序输出结果是:\n");
for(i=0;i<10;i++)
printf("%-3d",a[i]);
printf("\n");
}
双向冒泡排序法:
//输入10个整数,按从大到小输出//
#include<stdioh>
void main()
{
int i,j,t,k,a[10];
printf("请输入10个整数\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=1;j<10;j++) //10个数要来回做(10-1)趟次//
{for(i=1;i<11-j;i++) //第j趟要做(10-j)次比较,双向冒泡法,是先从上至下两两比较一次//
if(a[i]>a[i-1]) //每做完一趟,就会将数组中较小的一个数沉淀下来,较大的数不断往上冒//
{t=a[i];a[i]=a[i-1];a[i-1]=t;}
for(k=i-1;k>0;k--) //与单向冒泡不同的是,这是双向冒泡的关键,每一次从顶至下比较完一次后,同时再从下// if(a[k]>a[k-1]) //至上比较一次,也就是说每一趟数组中的元素两两比较了两次,这就是双向冒泡排序了//
{t=a[k];a[k]=a[k-1];a[k-1]=t;}
}printf("按从大到小排序输出结果是:\n");
for(i=0;i<10;i++)
printf("%-3d",a[i]);
printf("\n");
}
$(2)输入N个整数,使用改进的冒泡排序,将数据由大到小输出。#include "stdafxh"#include<stdioh>void swap2(int,int);void bubble(int a[],int n);int main(void){ int n,a[8]; int i; printf("Enter n(n<=8):"); scanf("%d",&n); printf("Enter a[%d]:", n); for(i=0;i<n;i++) scanf("%d", &a[i]); bubble(a,n);printf("After sorted,a[%d]=", n);for(i=0;i<n;i++) printf("%3d",a[i]);return 0;}void bubble(int a[],int n) /n是数组a中待排序元素的数量/{ int i,j; for(i=1;i<n;i++) /外部循环---请问这个嵌套循环怎么理解??/ for(j=0;j<n-i;j++) /内部循环---请问这个嵌套循环怎么理解??/ if(a[j]>a[j+1]) swap2(&a[j],&a[j+1]); /交换/}void swap2(int px,int py) { int t;t=px;px=py;py=t;}2、输入N-1个整数组成一数列,再输入某数x,先将数列排序,根据x的值插入到有序数列中。#include<stdioh> main () { void Rank(int N,int n[]); int i,j,k; int n[11]; printf("请输入10个整数:"); for(i=0;i<10;i++) scanf("%d",&n[i]); Rank(10,n); //调用函数对输入的数组排序printf("\n请输入需要插入的整数:"); scanf("%d",&k); if(k>n[9]) n[10]=k; else { for(i=0;n[i]<=k;i++); for(j=9;j>=i;j--) n[j+1]=n[j]; //腾出位置,用以插入所输入的数n[i]=k; } printf("\n排序后此数列按升序排列为:"); for(i=0;i<=10;i++) printf("%-4d",n[i]); } void Rank(int N,int n[]) { int i,k,iTemp; for(k=1;k<=N-1;k++) for(i=N-1;i>=k;i--) if(n[i-1]>n[i]) { iTemp=n[i]; n[i]=n[i-1]; n[i-1]=iTemp; } printf("排序后此数列按升序排列为:"); for(i=0;i<=N-1;i++) printf("%-4d",n[i]); printf("\n"); }3、输入行数n,打印出杨辉三角。#include <stdioh>
int main()
{
int yh[101][101]={{},{0,1}},i,n,m;
scanf("%d",&m); /输入要打印的行数,,,不能太大。。我水平不高。。/
for(i=2;i<=m;i++)
{
yh[i][1]=yh[i][i]=1;
for(n=2;n<i;n++)
{
yh[i][n]=yh[i-1][n-1]+yh[i-1][n];
}
}
for(i=1;i<=m;i++)
{
for(n=1;n<=i;n++)
{
printf("%d ",yh[i][n]);
}
printf("\n");
}
return 0;
}
#include<stdioh>#include<mathh>main(){ int a[8][8],i,j; for(i=0;i<8;i++){for(j=0;j<8;j++) if(j==0) a[i][j]=1;else if(i==j) a[i][j]=1;else if(i>j&&j>=1)a[i][j]=a[i-1][j]+a[i-1][j-1];else a[i][j]=0;} for(i=0;i<8;i++) {for(j=0;j<=i;j++) printf("%3d",a[i][j]); printf("\n"); }}4、青年歌手参加歌曲大奖赛计分系统(1)有N个评委进行打分,求这位选手的平均得分(去掉一个最高分和一个最低分)。#include <stdioh>#include <stdlibh>#include <timeh>void bubble_sort(int a[],int n){ int i,j, itmp; for (i =0; i<n;i++) { for(j=i+1 ;j<n;j++) { if( a[i] >= a[j]) { itmp = a[j]; a[j] = a[i]; a[i] = itmp; } } } }int main( int argc, char argv){ int iguide[10] = {0}; srand((unsigned )time(NULL)); for (int i = 0 ; i< 8;i++) { int isum = 0; for (int j = 0 ; j< 10; j++) { iguide[j] = rand()%10 +1; } bubble_sort(iguide,10); for (int l = 1;l<=8; l++) { isum += iguide[l]; } printf("The avg score the %d singer get is %d \n" ,i+1,isum/8); } return 0;}$(2)有N个评委进行打分,求M个选手每个人的平均得分(去掉一个最高分和一个最低分),并按平均得分由高到低排序输出。#5、输入N个整数,使用选择排序,将数据由大到小输出。#include <stdioh>//冒泡法(指针)main(){ int a[10]; int i,j,temp; int p=a; printf("input:"); for(i=0;i<10;i++) scanf("%d",p+i); for(i=1;i<10;i++) for(j=0;j<10-i;j++) if((p+j)>(p+j+1)) {temp=(p+j);(p+j)=(p+j+1);(p+j+1)=temp;} for(i=0;i<10;i++) printf("%4d",(p+i)); printf("\n");}补充作业实验题:1输入10个数,按小到大排序。#include<stdioh>main(){ int i,j,temp,a[10],n; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<=8;i++){ for(j=i+1;j<10;j++) if(a[i]>a[j]){ temp=a[i]; a[i]=a[j]; a[j]=temp;} } for(i=0;i<10;i++) printf("%5d",a[i]);printf("\n");scanf("%d",&n); if(n>a[9]) a[10]=n; else { for(i=0;i<9;i++) if(a[i]>n) {for(j=9;j>=i;j--) a[j+1]=a[j]; a[i]=n; break; } }printf("11shu\n"); for(i=0;i<=10;i++) printf("%4d",a[i]);}2求10个数中大于平均值的数的个数#include <stdioh>void main(){float a[10],sum,average;int i;sum=00;printf("请输入十位数:\n");for(i=0;i<10;i++)scanf("%f",&a[i]);for(i=0;i<10;i++)sum=sum+a[i];average=sum/10;sum=00;for(i=0;i<10;i++)if(a[i]>=average)sum=sum+a[i];printf("%5f",sum);}3求出大于m并且紧随m的n个素数,并存入数组中,输出,m和n从键盘输入。4将一个数组中的值按逆序重新存放。#include<stdioh>main(){ int a[5], i, temp; /定义数组及变量为基本整型/ printf("please input array a:\n"); for (i = 0; i < 5; i++) /逐个输入数组元素/ scanf("%d", &a[i]); printf("array a:\n"); for (i = 0; i < 5; i++) /将数组中的元素逐个输出/ printf("%d ", a[i]); printf("\n"); for (i = 0; i < 2; i++) /将数组中元素的前后位置互换/ { temp = a[i]; /元素位置互换的过程借助中间变量temp/ a[i] = a[4-i]; a[4-i] = temp; } printf("Now array a:\n"); for (i = 0; i < 5; i++) /将转换后的数组再次输出/ printf("%d ", a[i]);}三、源程序四、程序结果五、总结中国物联网校企联盟技术部
#include<stdioh>
main()
{ int a[8]={1,2,3,4,5,6,7,8},i,j,k;
for(i=0;i<8;i++)
printf("%d\t",a[i]);
printf("\n");
for(i=0;i<3;i++){
k=a[0];
for(j=1;j<8;j++)
a[j-1]=a[j];
a[7]=k;
}
for(i=0;i<8;i++)
printf("%d\t",a[i]);
}
如图所示,望采纳。。。。。。
#include <stdioh>
void input_data(int l,int r,int data[100][100])
{ int i,j,k;
printf("输入矩阵行数:");
scanf("%d",l);
printf("输入矩阵列数:");
scanf("%d",r);
printf("按行输入数据,数据间用空格间隔:\n");
for(i=0;i<l;i++)
for(j=0;j<r;j++)
scanf("%d",&data[i][j]);
}
int add_subtra(int m1[100][100],int l1,int r1,
int m2[100][100],int l2,int r2,char m,int rm[100][100])
{ int i,j;
if(l1!=l2 || r1!=r2)
{ printf("矩阵数据错误1\n"); return; }
if(m=='+')
for(i=0;i<l1;i++)
for(j=0;j<r1;j++)
rm[i][j]=m1[i][j]+m2[i][j];
else
for(i=0;i<l1;i++)
for(j=0;j<r1;j++)
rm[i][j]=m1[i][j]-m2[i][j];
}
int mul(int m1[100][100],int l1,int r1,
int m2[100][100],int l2,int r2,int m[100][100])
{ int i,j,k;
if(l1!=r2 )
{ printf("矩阵数据错误2\n"); return; }
for(i=0;i<l1;i++)
for(j=0;j<r2;j++)
{ m[i][j]=0;
for(k=0;k<r1;k++)
m[i][j]+=m1[i][k]m2[k][j];
}
}
int output(int m[100][100],int l,int r)
{ int i,j;
for(i=0;i<l;i++)
{ for(j=0;j<r;j++)
printf("%3d ",m[i][j]);
printf("\n");
}
}
int main()
{ int d1[100][100],d2[100][100],d[100][100];
int l1,r1,l2,r2;
int i,j,k;
char mark[2];
printf("输入第一个矩阵数据:\n");
input_data(&l1,&r1,d1);
printf("输入的第一个矩阵:\n");
output(d1,l1,r1);
printf("输入第二个矩阵数据:\n");
input_data(&l2,&r2,d2);
printf("输入的第二个矩阵:\n");
output(d2,l2,r2);
printf("指定运算符(+/-/):");
scanf("%s",mark);
while(mark[0]!='+' && mark[0]!='-' && mark[0]!='')
{ printf("符号错误请重新输入(+/-/):");
scanf("%s",mark);
}
switch(mark[0])
{ case '+':
case '-': add_subtra(d1,l1,r1,d2,l2,r2,mark[0],d); break;
case '': mul(d1,l1,r1,d2,l2,r2,d); break;
}
//output(d1,l1,r1);
//output(d2,l2,r2);
printf("运算:%c,计算结果为:\n",mark[0]);
output(d,l1,r2);
system("pause");
}
两个运算矩阵可以是大小不同的, 输出结果由被乘数矩阵的行和乘数矩阵的列决定,
你要求的输出格式比较烦,没时间不够啦!有时间再玩吧。
#include <stdioh>
#include <stdlibh>
#include <timeh>
#define M 5 //默认行数,因为要实现步骤3,故M应大于等于5,否则会出错
#define N 5 //默认列数
int main()
{
int i,j,a[M][N],max[M],index[M]={0},temp;
srand((unsigned)time(NULL));//用当前时间,设置种子
printf("\n初始数组:\n");
for (i=0;i<M;i++)
{
for (j=0;j<N;j++)
{
a[i][j]=rand()%100; //生成随机数
printf("%3d",a[i][j]);
}
printf("\n");
}
for (j=0;j<N;j++)
{
temp=a[0][j];
a[0][j]=a[4][j];
a[4][j]=temp;
}
printf("\n第一行和第五行调换后:\n");
for (i=0;i<M;i++)
{
for (j=0;j<N;j++)
{
printf("%3d",a[i][j]);
if(j==0)max[i]=a[i][j];
if (max[i]<a[i][j])
{
max[i]=a[i][j];
index[i]=j;
}
}
printf("\n");
}
printf("各行最大值:\n");
for (i=0;i<M;i++)
{
printf("第%d行最大值在第%d列值为%d\n",i+1,index[i]+1,max[i]);
}
return 0;
}
定义浮点数组 并初始化
也可以先不初始化 后续赋值
和整型差不多的
float a[5] = {11, 22, 33, 44, 55};这样就是定义并初始化的。
以上就是关于c语言,数组程序设计全部的内容,包括:c语言,数组程序设计、谁有C语言有关数组的详细资料(最好有例题和程序),跪求啊!、c语言 程序设计题 求代码 数组相关等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)