第五章《数组》课后编程题
- 格式:doc
- 大小:62.00 KB
- 文档页数:5
1、从键盘上输入10个整数,将10个整数逆序输出。
分析:将10个整数存入数组x,逆序输出就是从x[9]开始,输出到x[0]
#include
#define M 10
main()
{int x[M],n;
printf("输入10个整数:\n");
for(n=0;n
scanf("%d",&x[n]);
printf("按输入相反的顺序输出为:\n");
for(n=M-1;n>=0;n--)
printf("%d\t",x[n]);
return 0;
}
2、计算并输出一维数组{9.8,12,45,67,23,19.8,2.55,45,37.5}中最大值、最小值和平均值
数组长度为9,把最大、最小值初始化为第一个数组元素,从第二个元素开始与最大、最小值比较获得最大、最小值。
#include
#define M 9
main()
{float x[]={9.8,12,45,67,23,19.8,2.55,45,37.5};
float max,min,sum=0;
int n;
max=min=x[0];
for(n=1;n
{max= max
min= min>x[n]?x[n]:min;
sum+=x[n];}
printf("数组中的最大值是=%.2f,最小值是=%.2f\n",max,min);
printf("数组中各元素的平均值=%.2f\n",sum/M);
return 0;
}
3、从键盘上输入10个整数,计算其中的奇数的个数并输出。
先输入10个整数x[n],然后对数组从头扫描找出奇数(x[n]%2)并输出
#include
#define M 10
main()
{int x[M],n,cnt=0; //cnt是奇数计数器
printf("输入10个整数:\n");
for(n=0;n
scanf("%d",&x[n]);
printf("其中的奇数有:\n"); for(n=0;n
if (x[n]%2) cnt++,printf("%d\t",x[n]);
printf("\n奇数数量有:%d个",cnt);
return 0;
}
4、输入10个学生的成绩,统计高于平均分的人数。
先输入10个成绩并计算平均分,然后逐个扫描数组元素并与平均分比较。
#include
#define M 10
main()
{float x[M],ave,sum=0;
int n,cnt=0; //cnt是奇数计数器
printf("输入10个学生的成绩:\n");
for(n=0;n
{scanf("%f",&x[n]);
sum+=x[n];}
ave=sum/M;
for(n=0;n
if (x[n]>ave) cnt++;
printf("\n高于平均分%.2f的有:%d人\n",ave,cnt);
return 0;
}
5、输入10个学生3门课程的成绩,统计各科全部及格的人数。
先通过双重循环输入10行3列共30个数据,然后按行扫描 3个数据均大于30的人数
#include
#define M 5
#define N 3
main()
{float x[M][N];
int m,n; //m控制行号,n控制列号
int cnt=0; //cnt是计数器
printf("输入10个学生3门课的成绩:\n");
for(m=0;m
for(n=0;n
scanf("%f",&x[m][n]);
for(m=0;m
if (x[m][0]>60 && x[m][1]>60 &&x[m][2]>60)
cnt++;
printf("\n3门课程全部及格的共有%d人。\n",cnt);
return 0;
}
6、编写一个程序,将两个字符串连接起来,不要使用strcat函数。
分析:定义一大一小两个字符数组s1和s2,输入两个字符串后,确定s1结束的位置,然后把s2的字符依次取出连接到s1的后边。 #include
main()
{char s1[100],s2[50]; //定义一大一小两个字符数组s1,s2
int m,n;
gets(s1);
gets(s2); //输入两个字符串s1,s2
for(m=0;(s1[m]!='\0');m++); //找到S1字符串’\0’的位置
for(n=0;(s2[n]!='\0');n++)
s1[m]=s2[n],m++; //取出s2一个字符连接到s1后边
s1[m]='\0';
puts(s1); //输出新的s1
}
7、编写一个程序,求字符串长度,不要使用strlen()函数。
分析:输入字符串存入数组,然后扫描数组到’\0’
#include
main()
{char s1[100];
int m,len=0;
puts("请输入一段文本:") ;
gets(s1);
for(m=0;(s1[m]!='\0');m++)
len++ ;
printf("你输入的字符串长度=%d\n",len);
}
8.编写一个程序,对用户输入的一个字符串,将大写字母循环右移五位
#include
main()
{char s[100];
gets(s);
int n=0;
while(s[n]!='\0')
{ if (s[n]>='A'&&s[n]<='Z')
{s[n]=s[n]+5;
if(s[n]>'Z') s[n]=s[n]-26;}
n++;}
puts(s);
}
9.编写一个程序对用户输入的任意一组数字,输出其中出现次数最多的数字,并显示其出现次数。 #include
main()
{int x[20]={1,2,1,3,2,2,3,5,4,2,2,3,4,5,2,3,5,3,2,3};
int y,cnt,cnt2; //y是要寻找的数,cnt是该数的次数,cnt2是每一个数出现次数
int m,n;
for(m=0;m<20;m++)
{cnt2=1; //当前数出现次数回到1
{for(n=m+1;n<20;n++)
if(x[n]==x[m]) cnt2++;
if (cnt2>cnt) cnt=cnt2, y=x[m];}
}
printf("出现次数最多的是:%d 出现了%d次",y,cnt);
}
10.计算并输出杨辉三角前10行
//输出等腰三角形
#include
#define M 10
#define N 10
main()
{int x[M][N]={0},m,n,i;
for(m=0;m
x[m][0]=1;
for(m=1;m
for(n=1;n
x[m][n]=x[m-1][n]+x[m-1][n-1];
for(m=0;m
{for(i=0;i<10-m;i++)
printf(" ");
for(n=0;n
if(x[m][n]) printf("%5d",x[m][n]);
printf("\n");
}
}
//输出为直角三角形
#include
#define M 10
#define N 10
main()
{int x[M][N]={0},m,n,i;
for(m=0;m
x[m][0]=1;
for(m=1;m
x[m][n]=x[m-1][n]+x[m-1][n-1];
for(m=0;m
{for(n=0;n
if(x[m][n]) printf("%-4d",x[m][n]);
printf("\n");
}
}
11.定义一个6*6的矩阵,将其主对角线上的元素置1,次对角线上的元素置-1,其他置0,行输出。
#include
#define M 6
#define N 6
main()
{int x[M][N]={0},m,n,i;
for(m=0;m
x[m][m]=1;
for(m=0;m
x[m][M-m-1]=-1;
for(m=0;m
{for(n=0;n
printf("%4d",x[m][n]);
puts("");}
}
12. 输出波那契数列前20项,如1,1,1,2,3……
#include
main( )
{int fb[20]={1,1};
int n;
for(n=2;n<20;n++)
fb[n]=fb[n-1]+fb[n-2];
puts("斐波那契数列前20项依次是:");
for(n=0;n<20;n++)
{printf("%d\t",fb[n]);
if((n+1)%5==0) printf("\n"); }
}