数组典型例题_数组使用典型例题
数组典型例题由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数组使用典型例题”。
数组典型例题
数组应用程序设计
1、从键盘输入11个数存入一维数组中,先输出下标为奇数的元素,再输出下标为偶数的元素。
main(){float a[11];int i;for(i=0;i
scanf(“%f”,&a[i]);for(i=1;i
2、从键盘输入11个数存入一维数组中,将下标为奇数的元素值取倒数后重新存入该数组中,并输出所有元素。
main(){float a[11];int i;for(i=0;i
scanf(“%f”,&a[i]);for(i=1;i
a[i]=1/a[i];
/*因a[i]为float型,故不必写作1.0/a[i]*/ for(i=0;i
3、从键盘输入11个数存入一维数组中,将左半部分的元素值取倒数后重新存入该数组中,并输出所有元素。
解法1:
main(){float a[11];int i;for(i=0;i
scanf(“%f”,&a[i]);for(i=0;i
/*左半部分下标为0到4*/ a[i]=1/a[i];
for(i=0;i
#define N 11 main(){float a[N];int i;for(i=0;i
scanf(“%f”,&a[i]);for(i=0;i
/*左半部分下标为0到N/2-1*/ a[i]=1/a[i];
for(i=0;i
4、从键盘输入11个数存入一维数组中,将右半部分的元素值取相反数后重新存入该数组中,并输出所有元素。
解法1:
main(){float a[11];int i;for(i=0;i
scanf(“%f”,&a[i]);for(i=6;i
/*右半部分下标为6到10*/ a[i]=-a[i];
for(i=0;i
#define N 11 main(){float a[N];int i;for(i=0;i
scanf(“%f”,&a[i]);for(i=(N+1)/2;i
/*右半部分下标为(N+1)/2到N-1*/ a[i]=-a[i];
for(i=0;i
5、求出斐波那契数列的前20项并输出。
main(){long f[20]={1,1};int i;for(i=2;i
6、从键盘输入10个数,求出其中的最大数并输出。
main(){int a[10],max,i;for(i=0;imax)max=a[i];} printf(“max=%dn”,max);}
7、从键盘输入10个数,求出其中的最大数和最小数并输出。
解法1:
main(){int a[10],max,min,i;for(i=0;imax)max=a[i];} min=a[0];for(i=1;i
main(){int a[10],max,min,i;for(i=0;imax)max=a[i];if(a[i]
/*或else if(a[i]
rintf(“max=%d,min=%dn”,max,min);}
8、从键盘输入11个数存入一维数组a中,再将其中的值按相反的顺序存入数组b中并输出。
解法1:
main(){int a[11],b[11],i;for(i=0;i
scanf(“%d”,&a[i]);for(i=0;i
{b[i]=a[10-i];printf(“%d,”,b[i]);} printf(“n”);} 解法2:
#define N 11 main(){int a[N],b[N],i;for(i=0;i
scanf(“%d”,&a[i]);for(i=0;i
{b[i]=a[N-1-i];printf(“%d,”,b[i]);} printf(“n”);}
8A、从键盘输入11个数存入一维数组中,将其中的值前后倒置后重新存入该数组中并输出。
解法1:
main(){int a[11],i,j,t;for(i=0;i
main(){ int a[11],i,j,t;for(i=0;i
#define N 11 main(){int a[N],i,t;for(i=0;i
/*N为奇数偶数均可*/ {t=a[i];a[i]=a[N-1-i];a[N-1-i]=t;/*交换对应元素的值*/ } for(i=0;i
9、从键盘输入11个数存入一维数组中,将该数组中左半部分与右半部分的值平移交换后重新存入该数组中并输出。
解法1:
main(){int a[11],i,t;for(i=0;i
{t=a[i];a[i]=a[i+6];a[i+6]=t;/*交换对应元素的值*/ } for(i=0;i
#define N 11
main(){int a[N],i,t;for(i=0;i
/*N为奇数偶数均可*/ {t=a[i];a[i]=a[i+(N+1)/2];a[i+(N+1)/2]=t;/*交换对应元素的值*/ } for(i=0;i
10、从键盘输入100个数存入一维数组中,求其和与平均值并输出。
#define N 100
main(){float a[N],s,p;int i;s=0;for(i=0;i
{scanf(“%f”,&a[i]);s=s+a[i];} p=s/N;printf(“s=%f,p=%fn”,s,p);}
11、从键盘输入一批正数存入一维数组中(以-1为结束标记),求其和与平均值并输出。
解法1:
#define N 200
main(){float a[N],s,p;int n=0;s=0;while(1){scanf(“%f”,&a[n]);if(a[n]==-1)break;s=s+a[n];n++;} p=s/n;printf(“s=%f,p=%fn”,s,p);} 解法2:
#define N 200
main(){float a[N],s,p;int n=0;s=0;scanf(“%f”,&a[n]);
while(a[n]!=-1){s=s+a[n];n++;scanf(“%f”,&a[n]);
} p=s/n;printf(“s=%f,p=%fn”,s,p);}
12、从键盘输入10个数,用选择法按降序排序并输出。
解法1:
main(){int a[10],i,j,t;for(i=0;i
scanf(“%d”,&a[i]);for(i=0;i
main(){int a[10],t,i,j,max,k;for(i=0;i
scanf(“%d”,&a[i]);for(i=0;i
/*max保存本轮最大数,k保存其下标*/ for(j=i+1;jmax){max=a[j];k=j;} } t=a[i];a[i]=a[k];a[k]=t;
/*将本轮最大数与a[i]互换*/ } for(i=0;i
解法3:改进的选择法
main(){int a[10],t,i,j,max;for(i=0;i
scanf(“%d”,&a[i]);for(i=0;i
/*max保存本轮最大数的下标*/ for(j=i+1;ja[max])max=j;} t=a[i];a[i]=a[max];a[max]=t;
/*将本轮最大数与a[i]互换*/ } for(i=0;i
解法4:改进的选择法 main(){int a[10],t,i,j,max;for(i=0;i
scanf(“%d”,&a[i]);for(i=0;i
/*max保存本轮最大数的下标*/ for(j=i+1;ja[max])max=j;} if(max!=i)
/*若本轮最大数不是a[i]*/ {t=a[i];a[i]=a[max];a[max]=t;}
/*将本轮最大数与a[i]互换*/ } for(i=0;i
12A、从键盘输入10个学生的姓名和成绩,用选择法按成绩降序排序并输出(要求姓名和成绩对应关系保持不变)。
main(){int p[10],i,j,t;char a[10][30],m[30];for(i=0;i
gets(a[i]);/*输入姓名存入数组a的第i行*/ for(i=0;i
for(i=0;i
/*输出姓名*/ printf(“%dn”,p[i]);/*输出成绩*/ } }
13、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按列优先次序输出。
main(){int a[3][4],i,j;for(i=0;i
14、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按相反的次序输出。
main(){int a[3][4],i,j;for(i=0;i
,&a[i][j]);for(i=2;i>=0;i--){for(j=3;j>=0;j--){printf(“%6d”,a[i][j]);} printf(“n”);} }
15、从键盘输入一组数据存入数组a[3][3]中,再将主对角线及其下方元素值取倒数后重新存入该数组中,并输出所有元素。
main(){float a[3][3]; int i,j;for(i=0;i
{a[i][j]=1/a[i][j];} /*因a[i][j]为float型,故不必写作1.0/a[i][j]*/ } for(i=0;i
{printf(“%f,”,a[i][j]);} printf(“n”);} }
15A、已知一个二维数组a[2][3]={{1,2,3},{4,5,6}},将其转置后存入另一个二维数组b[3][2]中。
main(){int a[2][3]={{1,2,3},{4,5,6}},b[3][2],i,j;for(i=0;i
16A、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值并输出。
main(){int i,j,max;int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};max=a[0][0];for(i=0;imax){max=a[i][j];} printf(“max=%dn”,max);}
16B、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值及其行列号并输出。
main(){int i,j,max,row,colum;int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};max=a[0][0];row=0;colum=0;for(i=0;imax){max=a[i][j];row=i;colum=j;} printf(“max=%d,row=%d,colum=%dn”,max,row,colum);}
16、从键盘输入一组数据存入数组a[3][3]中,求其主对角线元素之和。
main(){float a[3][3],s=0; int i,j;for(i=0;i
s=s+a[i][i]; /*主对角线元素行列号相同*/ printf(“s=%fn”,s);}
17、从键盘输入一组数据存入数组a[3][3]中,求其主对角线下方元素之和。
main(){float a[3][3],s=0; int i,j;for(i=0;i
} printf(“s=%fn”,s);}
18、从键盘输入一组数据存入数组a[4][4]中,求其四周元素之和。
main(){float a[4][4],s=0; int i,j;for(i=0;i
{if(i==0||i==3||j==0||j==3)
/*行列号等于0或者等于3*/
s=s+a[i][j];
} } printf(“s=%fn”,s);}
19、已知两个
矩阵a[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},求其和矩阵c[3][2]并输出。
main(){int a[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},c[3][2]; int i,j;for(i=0;i
20、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},求其积矩阵c[3][4]并输出。
main(){int a[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},c[3][2]; int i,j,k;for(i=0;i
21、从键盘输入6个学生5门课程的成绩,求每个人的总分与平均分。
main(){float g[6][5],s[6],a[6]; int i,j;for(i=0;i
{s[i]=0;
/*s[i]是第i个人的总分*/ for(j=0;j
{scanf(“%f”,&g[i][j]);
/*g[i][j]是第i个人第j门课的成绩*/ s[i]=s[i]+g[i][j];} a[i]=s[i]/5;
/*a[i]是第i个人的平均分*/ printf(“%f,%fn”,s[i],a[i]);} }
22、从键盘输入6个学生5门课程的成绩,求每门课程的平均分。
main(){float g[6][5],s[6],a[6]; int i,j;for(i=0;i
scanf(“%f”,&g[i][j]);
/*g[i][j]是第i个人第j门课的成绩*/ } for(j=0;j
/*列优先次序,外循环控制列号,内循环控制行号*/ {s[j]=0;
/*s[j]是第j门课的总分*/ for(i=0;i
/*a[j]是第j门课的平均分*/ printf(“%fn”,a[j]);} }
23、从键盘输入一个字符串存入数组a中,再将数组a的内容前后倒置后存入数组b中并输出。
#include main(){char a[80],b[80];int n,i;gets(a);n=strlen(a);for(i=0;i
/*或b[i]=' ';*/ puts(b);}
24、从键盘输入一个字符串存入数组a中,再将a的内容前后倒置后重新存入数组a中并输出。
解法1:
#include main(){char a[80],t;int n,i,j;gets(a);n=strlen(a);i=0;j=n-1;while(i
#include main(){char a[80],t;int n,i;gets(a);n=strlen(a);for(i=0;i
/*交换对应元素*/ puts(a);}
25、从键盘输入10个字符串存入二维字符数组中,求出其中最大者并输出。
#include main(){char a[10][80],max[80];int i;for(i=0;i
/*a[i]代表a的第i行*/ strcpy(max,a[0]);for(i=1;i0)strcpy(max,a[i]);}
puts(max);}
26、从键盘输入一个字符串存入字符数组中,求出该字符串的长度并输出(不能调用strlen函数)。
#include main(){char a[
80];int n;gets(a);n=0;while(a[i]!=' ')n++;printf(“n=%dn”,n);}
27、从键盘输入一个字符串存入数组a中,再将数组a的内容复制到数组b中并输出(不能调用strcpy函数)。
解法1:
#include main(){char a[80],b[80];int i,n;gets(a);n=strlen(a);for(i=0;i
/*包括' '在内*/ b[i]=a[i];puts(b);} 解法2: #include main(){char a[80],b[80];int i,n;gets(a);for(i=0;a[i]!=' ';i++)b[i]=a[i];
/*未复制' '*/ a[i]=' ';puts(b);}
28、从键盘输入两个字符串分别存入字符数组a和b中,再将b中的字符串连接到a中字符串之后并输出(不能调用strcat函数)。
#include main(){char a[80],b[30];int i,n1,n2;gets(a);gets(b);n1=strlen(a);n2=strlen(b);for(i=0;i
/*包括' '在内*/ a[n1+i]=b[i];puts(a);}
29、从键盘输入两个字符串分别存入字符数组a和b中,比较两个字符串的大小并输出结果(若a>b,则结果大于0;若a
#include main(){char a[80],b[80];int i,r;gets(a);gets(b);i=0;while(a[i]!=' '&&b[i]!=' ')
/*若遇到' ',则停止比较*/ {if(a[i]==b[i])i++;
/*若对应字符相等,则继续比较下一个*/ else break;
/*若对应字符不相等,则停止比较*/ } r=a[i]-b[i];printf(“r=%dn”,r);}
30、从键盘输入的一行字符,统计其中单词的个数。假设单词之间以空格分隔。
#include main(){char a[80];int i,n,c=0;gets(a);n=strlen(a);for(i=0;i
31、从键盘输入一行字符,统计其中单词的个数。假设单词之间以标点或空格分隔。
#include #include main(){char a[80];int i,n,c=0;gets(a);n=strlen(a);for(i=0;i
c++;
/*或if(isalpha(a[i])!=0&&isalpha(a[i+1])==0)*/ }
/*第i个字符是字母,第i+1个字符不是字母,表示一个单词结束*/ printf(“c=%dn”,c);}
32、从键盘输入一行字符,按下列规则加密之后输出。
A→Z
a→z B→Y
b→y C→X
c→x......Z→A
z→a
#include main(){char a[80];int i,n;gets(a);n=strlen(a);for(i=0;i='a'&&a[i]='A'&&a[i]