题目一:
在键盘上输入N个整数(用宏定义#define语句来定义字符常量N值),试编制程序使该数组中的数按照从大到小的次序排列,排序算法分别按照以下两种算法来实现:
1)用冒泡算法实现(N的值为15)
2)用简单选择排序算法实现(N的值为20)(基本思想:在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。)
程序代码:
#include
#define nmax 15
int main()
{
int a[nmax],i,j,temp;
printf("请输入数字:\n");
for(i=0;i
2)简单选择排序算法
前提:
最重要的是选择,
①是选择未排序部分中的最小数(最大也同理)
②与未排序的部分第一个数进行交换
eg:
13 6 9 2 41 5
第一趟:选择未排序部分的最小值2,然后与未排序第一个进行交换位置,即与13交换位置
【2】6 9 13 41 5 (【】中的为已排序的)
第二趟:未排序的为6 9 13 41 5,选取其中最小的,即5,与未排序的一个交换位置,即6
【2 5】9 13 41 6
第三趟:【2 5 6】13 41 9
第四趟:【2 5 6 9 】41 13
第五趟:【2 5 6 9 13 41】
若还不清楚参考b站:https://www.bilibili.com/video/BV1V94y1D7M7/?spm_id_from=333.337.search-card.all.click&vd_source=4082c5e2f72fdcdaeedf65ac71e68145
程序代码:
#include
main()
{
int b,c,d,e;
int w,x,y,z;
int a[5][5]={{17,24,1,18,15},{23,5,7,14,16},{4,6,13,20,22},{10,12,19,21,3},{11,18,25,2,9}} ;
for(d=0;d<5;d++)//求和
{
x=0;
for(e=0;e<5;e++)
{
x=x+a[d][e];
}
}
for(d=0;d<5;d++)//求和
{
w=0;
for(e=0;e<5;e++)
{
w=w+a[d][e];
}
}
y=0;
for(b=0;b<5;b++)//对角线求和
y=y+a[b][b];
z=0;
for(b=0;b<5;b++)//对角线求和
z=z+a[b][5-1-b];
if(y!=z)//判断是否是魔方矩阵
printf("不是魔方矩阵\n");
else if(x!=y||w!=y)
printf("不是魔方矩阵\n");
else printf("是魔方矩阵\n");
for(b=0;b<5;b++)//输出列表
{
for(c=0;c<5;c++)
{
printf("%5d",a[b][c]);
}printf("\n");
}
}
题目二:
青年歌手参加歌曲大奖赛,有10个评委对她的进行打分,试编程求这位选手的平均得分(去掉一个最高分和一个最低分后所得的平均分)。
程序代码:
#include
main()
{
int b,c,d,e;
int w,x,y,z;
int a[5][5]={{17,24,1,18,15},{23,5,7,14,16},{4,6,13,20,22},{10,12,19,21,3},{11,18,25,2,9}} ;
for(d=0;d<5;d++)//求和
{
x=0;
for(e=0;e<5;e++)
{
x=x+a[d][e];
}
}
for(d=0;d<5;d++)//求和
{
w=0;
for(e=0;e<5;e++)
{
w=w+a[d][e];
}
}
y=0;
for(b=0;b<5;b++)//对角线求和
y=y+a[b][b];
z=0;
for(b=0;b<5;b++)//对角线求和
z=z+a[b][5-1-b];
if(y!=z)//判断是否是魔方矩阵
printf("不是魔方矩阵\n");
else if(x!=y||w!=y)
printf("不是魔方矩阵\n");
else printf("是魔方矩阵\n");
for(b=0;b<5;b++)//输出列表
{
for(c=0;c<5;c++)
{
printf("%5d",a[b][c]);
}printf("\n");
}
}
参考文章链接:https://blog.csdn.net/u012110719/article/details/40478539
另一算法参考链接:https://www.bilibili.com/video/av463395819/?vd_source=4082c5e2f72fdcdaeedf65ac71e68145
题目三:学生成绩统计
程序代码:
#include
main()
{
int b,c,d,e;
int w,x,y,z;
int a[5][5]={{17,24,1,18,15},{23,5,7,14,16},{4,6,13,20,22},{10,12,19,21,3},{11,18,25,2,9}} ;
for(d=0;d<5;d++)//求和
{
x=0;
for(e=0;e<5;e++)
{
x=x+a[d][e];
}
}
for(d=0;d<5;d++)//求和
{
w=0;
for(e=0;e<5;e++)
{
w=w+a[d][e];
}
}
y=0;
for(b=0;b<5;b++)//对角线求和
y=y+a[b][b];
z=0;
for(b=0;b<5;b++)//对角线求和
z=z+a[b][5-1-b];
if(y!=z)//判断是否是魔方矩阵
printf("不是魔方矩阵\n");
else if(x!=y||w!=y)
printf("不是魔方矩阵\n");
else printf("是魔方矩阵\n");
for(b=0;b<5;b++)//输出列表
{
for(c=0;c<5;c++)
{
printf("%5d",a[b][c]);
}printf("\n");
}
}
题目四:
输出九行杨辉三角
算法分析:
1.第一列都为1.第x行第x列为1
2.第几行就有几个元素
3.从第三行开始,第二列的元素等于第二行的第一列元素+第二列元素之和(排除从第三行开始的首和尾元素)
程序代码:
#include
main()
{
int b,c,d,e;
int w,x,y,z;
int a[5][5]={{17,24,1,18,15},{23,5,7,14,16},{4,6,13,20,22},{10,12,19,21,3},{11,18,25,2,9}} ;
for(d=0;d<5;d++)//求和
{
x=0;
for(e=0;e<5;e++)
{
x=x+a[d][e];
}
}
for(d=0;d<5;d++)//求和
{
w=0;
for(e=0;e<5;e++)
{
w=w+a[d][e];
}
}
y=0;
for(b=0;b<5;b++)//对角线求和
y=y+a[b][b];
z=0;
for(b=0;b<5;b++)//对角线求和
z=z+a[b][5-1-b];
if(y!=z)//判断是否是魔方矩阵
printf("不是魔方矩阵\n");
else if(x!=y||w!=y)
printf("不是魔方矩阵\n");
else printf("是魔方矩阵\n");
for(b=0;b<5;b++)//输出列表
{
for(c=0;c<5;c++)
{
printf("%5d",a[b][c]);
}printf("\n");
}
}
参考学习视频地址:https://www.bilibili.com/video/BV1gG4y1z7af/?spm_id_from=333.337.search-card.all.click&vd_source=4082c5e2f72fdcdaeedf65ac71e68145
题目五:
计算此字符串中字母、数字、空格和其他字符的个数
程序代码:
#include
main()
{
int b,c,d,e;
int w,x,y,z;
int a[5][5]={{17,24,1,18,15},{23,5,7,14,16},{4,6,13,20,22},{10,12,19,21,3},{11,18,25,2,9}} ;
for(d=0;d<5;d++)//求和
{
x=0;
for(e=0;e<5;e++)
{
x=x+a[d][e];
}
}
for(d=0;d<5;d++)//求和
{
w=0;
for(e=0;e<5;e++)
{
w=w+a[d][e];
}
}
y=0;
for(b=0;b<5;b++)//对角线求和
y=y+a[b][b];
z=0;
for(b=0;b<5;b++)//对角线求和
z=z+a[b][5-1-b];
if(y!=z)//判断是否是魔方矩阵
printf("不是魔方矩阵\n");
else if(x!=y||w!=y)
printf("不是魔方矩阵\n");
else printf("是魔方矩阵\n");
for(b=0;b<5;b++)//输出列表
{
for(c=0;c<5;c++)
{
printf("%5d",a[b][c]);
}printf("\n");
}
}
参考学习链接:
https://blog.csdn.net/qq_48204413/article/details/107527785?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166969949316782429737160%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=166969949316782429737160&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-107527785-null-null.142^v67^pc_rank_34_queryrelevant25,201^v3^control_1,213^v2^t3_esquery_v3&utm_term=%E8%BE%93%E5%85%A5%E4%B8%80%E4%B8%B2%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%BB%9F%E8%AE%A1%E5%AD%97%E6%AF%8D%E5%92%8C%E6%95%B0%E5%AD%97&spm=1018.2226.3001.4187
https://blog.csdn.net/Jacky_Feng/article/details/83715162
题目六:检验并打印魔方矩阵
程序代码:
#include
main()
{
int b,c,d,e;
int w,x,y,z;
int a[5][5]={{17,24,1,18,15},{23,5,7,14,16},{4,6,13,20,22},{10,12,19,21,3},{11,18,25,2,9}} ;
for(d=0;d<5;d++)//求和
{
x=0;
for(e=0;e<5;e++)
{
x=x+a[d][e];
}
}
for(d=0;d<5;d++)//求和
{
w=0;
for(e=0;e<5;e++)
{
w=w+a[d][e];
}
}
y=0;
for(b=0;b<5;b++)//对角线求和
y=y+a[b][b];
z=0;
for(b=0;b<5;b++)//对角线求和
z=z+a[b][5-1-b];
if(y!=z)//判断是否是魔方矩阵
printf("不是魔方矩阵\n");
else if(x!=y||w!=y)
printf("不是魔方矩阵\n");
else printf("是魔方矩阵\n");
for(b=0;b<5;b++)//输出列表
{
for(c=0;c<5;c++)
{
printf("%5d",a[b][c]);
}printf("\n");
}
}