c语言,数组程序设计

c语言,数组程序设计,第1张

#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语言 程序设计题 求代码 数组相关等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9708972.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存