本篇提供了关于C语言程序设计中数组部分的经典案例,可供C语言的初学者们进行一个学习和编译练习。

/*Case 1
最大值和最小值
先输入数组的大小和各个数组元素,然后求出数组中的最大值和最小值,以及他们所在的位置,依次输出到屏幕上*/

int main() {int a[50];                            //定义数组存放元素int MAX, MIN;                         //定义最大值和最小值变量int i, n;int j = 0;                            //最小值位置int k = 0;                            //最大值位置printf("请输入数组的大小:");scanf("%d", &n);printf("请依次输入数组的元素:");for ( i = 0; i < n; i++)              {scanf("%d", &a[i]);}MIN = a[0];                           //默认第一位是最小值for ( i = 1; i < n; i++)              //依次比较换位得到最小值{if (a[i]<MIN){MIN = a[i];j = i + 1;                    //最小值的位置也依次后移}}MAX = a[0];                            //默认第一位是最大值for (i = 1; i < n; i++)                //依次比较换位得到最小值{if (a[i] > MAX){MAX = a[i];k = i + 1;                    //最大值的位置也依次后移}}printf("最小值的位置是:%d\n", j);printf("最小值是:%d\n", MIN);printf("最大值的位置是:%d\n", k);printf("最小值是:%d\n", MAX);return 0;
}

 /*Case 2
投票
已知有三位候选人参加竞选,先输入投票的人数和投票内容,统计三位候选人的得票,根据总票数输出获胜者*/

int MAX(int x,int y,int z) {if (x<y){if (y<z){printf("Candidate3的票数最高!");}else{printf("Candidate2的票数最高!");}}else{if (x>z){printf("Candidate1的票数最高!");}else{printf("Candidate3的票数最高!");}}return MAX;
}
int main() {int i, n, array[50];int Candidate1 = 0;int Candidate2 = 0;int Candidate3 = 0;printf("请输入投票者的数量(小于50):");scanf("%d", &n);printf("请输入1或2或3来支持对应的候选人:");for ( i = 0; i < n; i++){scanf("%d", &array[i]);}for ( i = 0; i < n; i++){if (array[i]==1){Candidate1++;}else if (array[i] == 2){Candidate2++;}else if (array[i] == 3){Candidate3++;}}printf("Candidate1:%d\nCandidate2:%d\nCandidate3:%d\n", Candidate1, Candidate2, Candidate3);MAX(Candidate1,Candidate2,Candidate3);return 0;
}

 /*Case 3
神奇魔方阵
实现一个5行5列的魔方阵(每个元素都不相等,每行和每列以及主副对角线上各元素和相等)*

int main() {int i, j;int x = 1, y = 3;                  //从第一行中间位置开始int a[6][6] = { 0 };               //定义一个二维数组来存储魔方阵for ( i = 1; i <= 25; i++)         //魔方阵中共25个数字{a[x][y] = i;                   //把此时的i存储到a[x][y]这个位置if (x==1&&y==5)                //如果位置在右上角,下一个数字放在正下方{x++;continue;                  //结束本次循环}if (x==1)                      //如果放在第一行{ x = 5;                     //则下一个数字放在最后一行}else                           //否则将下一个数字放在上一行{x--;}if (y==5)                      //如果放在最后一列{y = 1;                     //则下一个数字放在第一列}else                           //否则将下一个数字放在下一列{y++;}if (a[x][y]!=0)                //判断经过上面步骤确定的位置上是否有非零数{x = x + 2;                 //若表达式为真则行数加2y = y - 1;                 //列数减1}}for ( i = 1; i <= 5; i++)          //输出二维数组{for ( j = 1; j <= 5; j++){printf("%4d", a[i][j]);}printf("\n");}return 0;
}

 /*Case 4
校园十大歌手
冒泡排序法*/

void BubbleSort(int s[], int n) {                //函数参数:数组与数组大小int i, j, temp;for ( i = 0; i < n-1; i++)                   //从0开始进行n-1轮排序{                                            //每轮使较大的数后排for ( j = 0; j < n-i-1; j++)             //每轮两两比较的数递减{if (s[j]>s[j+1])                     //符合条件就互换{temp = s[j];s[j] = s[j + 1];s[j + 1] = temp;}}}
}
int main() {int i;                                       //用于循环控制int a[10];                                   //定义一个a数组来存储分数printf("请输入十大歌手的成绩:");for ( i = 0; i < 10; i++){scanf("%d",&a[i]);}BubbleSort(a, 10);                            //调用冒泡排序printf("排序后结果:");for ( i = 0; i < 10; i++){printf("%d ",a[i]);}printf("\n");return 0;
}

 /*Case 5
杨辉三角
打印出杨辉三角的前10行*/

/*Case 5
杨辉三角
打印出杨辉三角的前10行*/
int main() {int i, j;int arr[10][10] = {1};               //定义一个10行10列的数组,初始化为1for ( i = 1; i < 10; i++)            //外层循环控制杨辉三角的行数{arr[i][0] = 1;                   //每一行第一个元素都赋值为1for ( j = 1; j <= i; j++)        //内层控制杨辉三角的列数{//每个元素等于左上方和正上方两数之和arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];}}for ( i = 0; i < 10; i++)             //双重循环打印元素{for ( j = 0; j <= i; j++){printf("%-5d", arr[i][j]);}printf("\n");}return 0;
}

 /*Case 6
兔子去哪儿了
一只兔子躲进了10个环形分布的洞的某一个中。
狼在第一个洞没有找到兔子,就隔一个洞,到第三个洞去找;
也没有找到,就隔两个洞,到第六个洞去找。
以后每次多一个洞去找兔子……这样下去,如果一直找不到兔子,请问兔子可能在哪个洞中?*/

int main() {int n = 0;int i = 0;int x = 0;int a[11];for ( i = 0; i < 11; i++)            //把数组中每个元素都赋值1{a[i] = 1;}for ( i = 0; i < 500; i++)           //进行穷举搜索(假设最大搜寻次数为500){n += (i + 1);                    //按规律累加x = n % 10;                      //大于10时对10取余a[x] = 0;                        //找过的地方置为0}for ( i = 0; i < 10; i++){if (a[i])                        //如果元素是1就说明没找过printf("可能在第%d个洞\n", i);}return 0;
}

 /*Case 7
矩阵转置*/

int main() {int i, j, row, column;int a[10][10], b[10][10];printf("请输入行数(小于10):");scanf("%d", &row);printf("请输入列数(小于10):");scanf("%d", &column);printf("依次输入数组的元素:");for ( i = 0; i < row; i++){for ( j = 0; j < column; j++){scanf("%d", &a[i][j]);}}printf("矩阵转置之前:\n");for (i = 0; i < row; i++){for (j = 0; j < column; j++){printf("\t%d", a[i][j]);  }printf("\n");}//矩阵转换过程for ( i = 0; i < row; i++){for ( j = 0; j < column; j++){//将a数组的i行j列赋值给b数组的j行i列元素b[j][i] = a[i][j];}}printf("矩阵转置之后:\n");for (i = 0; i < column; i++){for (j = 0; j < row; j++){printf("\t%d", b[i][j]);}printf("\n");}return 0;
}

 /*Case 8
双色球
由程序随机产生6个红色球号码和1个蓝色球号码*/

int main() {srand((unsigned int)time(NULL));   //使用系统定时器的值作为随机数种子int i = 0; int j = 0;int temp;                           //定义一个临时变量,来暂时保存随机数int red[6];                         //定义red数组,保存随机生成的红色球号码int blue;                           //定义blue整型变量,保存随机生成的蓝色球号码for ( i = 0; i < 6; )               //随机生成6个红色球号码{temp = rand() % 33 + 1;for ( j = 0; j < i; j++){//依次判断数组中的已生成红色球号码是否与新生成的号码相同if (red[j]==temp)          //如果相同,则重新生成新的红色球号码{break;                 //跳出内层循环for}}if (i==j){red[i] = temp;             //将新生成的红色球号码保存在red数组中i++;                       //增加红色球数量}}blue = rand() % 16 + 1;            //随机产生蓝色球号码printf("Red:");for ( i = 0; i < 6; i++){printf("%d ",red[i]);}printf("\n");printf("Blue:%d\n", blue);return 0;
}

本篇的所有代码是在VS编译环境下操作的,如有错误,望大家指正!!!

C语言经典案例——第四章 数组相关推荐

  1. C语言经典案例——第三章 函数

    本篇提供了关于C语言程序设计中函数部分的经典案例,可供C语言的初学者们进行一个学习和编译练习. /*Case 1 求n个数的平均值*/ int avg(int n) { //定义avg()函数int ...

  2. matlab图形绘制经典案例,MATLAB经典教程第四章_图形绘制.ppt

    <MATLAB经典教程第四章_图形绘制.ppt>由会员分享,可在线阅读,更多相关<MATLAB经典教程第四章_图形绘制.ppt(32页珍藏版)>请在人人文库网上搜索. 1.Ma ...

  3. c语言调试时出现的三种错误,C语言课件 第十四章 常见错误和程序调试

    <C语言课件 第十四章 常见错误和程序调试>由会员分享,可在线阅读,更多相关<C语言课件 第十四章 常见错误和程序调试(36页珍藏版)>请在人人文库网上搜索. 1.第十四章常见 ...

  4. acm水仙花数java,水仙花数之C语言经典案例分析

    水仙花数之C语言经典案例分析 一.[什么是水仙花数] 水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI) ...

  5. 数据结构(C语言)第二版 第四章课后答案

    数据结构(C语言)第二版 第四章课后答案 1~5 B B C A B 6~10 B B C B B 11~15 A B D (C,B) C 1.选择题 (1)串是一种特殊的线性表,其特殊性体现在(B) ...

  6. c语言ppt课件循环语句,C语言循环语句课件四章.ppt

    <C语言循环语句课件四章.ppt>由会员分享,可在线阅读,更多相关<C语言循环语句课件四章.ppt(43页珍藏版)>请在装配图网上搜索. 1.循环结构,李晓玲,Page 2,本 ...

  7. 猴子吃桃c语言程序到第n天,猴子吃桃问题之《C语言经典案例分析》

    猴子吃桃问题之<C语言经典案例分析> 一.[什么是猴子吃桃] 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个.第二天早上又将第一天剩下的桃子吃掉一半,有多吃了 ...

  8. c语言两种排序方法的组合,排列和组合算法的实现方法_C语言经典案例

    排列和组合算法是考查递归的常见算法,这两种算法能用递归简洁地实现. 本人在经过多次摸索和思考之后,总结如下,以供参考. 程序代码如下: #include #include char array[] = ...

  9. c语言排列组合的函数,c语言排列组合算法 排列和组合算法的实现方法_C语言经典案例...

    想了解排列和组合算法的实现方法_C语言经典案例的相关内容吗,在本文为您仔细讲解c语言排列组合算法的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:c语言排列组合算法,下面大家一起来学习吧. ...

最新文章

  1. C语言第二次博客作业---分支结构
  2. 栈应用之 括号匹配问题(Python 版)
  3. 【译】Notes on Blockchain Governance
  4. android上河南星海科技_分数不高能上什么空乘学校?推荐下
  5. python 连 mongodb
  6. package org.apache.hadoop.conf does not exist解决
  7. 机器学习——人工神经网络之BP算法编程(python二分类数据集:马疝病数据集)
  8. Ubuntu 18.04.1 搭建Java环境和HelloWorld 1
  9. 【转载】VMware完全卸载
  10. 使用Canvas基于手势可以使树秋千
  11. 拼音转换成汉字html,汉字转换成拼音的种(转)
  12. 星际争霸游戏中的操作心得
  13. matlab d函数,Matlab常用函数
  14. (附源码)计算机毕业设计SSM基于框架的旅游订票系统
  15. 爬了世纪佳缘后发现了一个秘密,世纪佳缘找对象靠谱吗?
  16. iPhone营销四大基础:共鸣、专注、灌输、用心
  17. 黑群晖升级后无法找到的方法
  18. 网络安全等级保护定级指南 范围
  19. 如何计算一个网段的子网掩码,网络ID,广播地址和可用IP地址数
  20. VMWare Player设置双屏显示

热门文章

  1. 树状数组(求逆序对)
  2. B站里的宝藏UP主你知道多少?
  3. 【电气专业知识问答】问:断路器运行中发生异常情形时如何判别和处理?
  4. 新版微信支付 v3 php uniapp
  5. 前端开发常用命令行工具使用技巧
  6. python turtle 画老鼠,Python Turtle绘图讲解,画一只属于双十一的单身狗
  7. 2023 Softing在线培训计划
  8. c语言case用花括号吗,关于C#:在switch-case中使用花括号时的’break’语句
  9. java同步调用异步方法_关于同步方法里面调用异步方法的探究
  10. 海边的曼彻斯特男主角的妻子兰迪离婚再嫁又相逢时