C语言经典案例——第四章 数组
本篇提供了关于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语言经典案例——第四章 数组相关推荐
- C语言经典案例——第三章 函数
本篇提供了关于C语言程序设计中函数部分的经典案例,可供C语言的初学者们进行一个学习和编译练习. /*Case 1 求n个数的平均值*/ int avg(int n) { //定义avg()函数int ...
- matlab图形绘制经典案例,MATLAB经典教程第四章_图形绘制.ppt
<MATLAB经典教程第四章_图形绘制.ppt>由会员分享,可在线阅读,更多相关<MATLAB经典教程第四章_图形绘制.ppt(32页珍藏版)>请在人人文库网上搜索. 1.Ma ...
- c语言调试时出现的三种错误,C语言课件 第十四章 常见错误和程序调试
<C语言课件 第十四章 常见错误和程序调试>由会员分享,可在线阅读,更多相关<C语言课件 第十四章 常见错误和程序调试(36页珍藏版)>请在人人文库网上搜索. 1.第十四章常见 ...
- acm水仙花数java,水仙花数之C语言经典案例分析
水仙花数之C语言经典案例分析 一.[什么是水仙花数] 水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI) ...
- 数据结构(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) ...
- c语言ppt课件循环语句,C语言循环语句课件四章.ppt
<C语言循环语句课件四章.ppt>由会员分享,可在线阅读,更多相关<C语言循环语句课件四章.ppt(43页珍藏版)>请在装配图网上搜索. 1.循环结构,李晓玲,Page 2,本 ...
- 猴子吃桃c语言程序到第n天,猴子吃桃问题之《C语言经典案例分析》
猴子吃桃问题之<C语言经典案例分析> 一.[什么是猴子吃桃] 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个.第二天早上又将第一天剩下的桃子吃掉一半,有多吃了 ...
- c语言两种排序方法的组合,排列和组合算法的实现方法_C语言经典案例
排列和组合算法是考查递归的常见算法,这两种算法能用递归简洁地实现. 本人在经过多次摸索和思考之后,总结如下,以供参考. 程序代码如下: #include #include char array[] = ...
- c语言排列组合的函数,c语言排列组合算法 排列和组合算法的实现方法_C语言经典案例...
想了解排列和组合算法的实现方法_C语言经典案例的相关内容吗,在本文为您仔细讲解c语言排列组合算法的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:c语言排列组合算法,下面大家一起来学习吧. ...
最新文章
- C语言第二次博客作业---分支结构
- 栈应用之 括号匹配问题(Python 版)
- 【译】Notes on Blockchain Governance
- android上河南星海科技_分数不高能上什么空乘学校?推荐下
- python 连 mongodb
- package org.apache.hadoop.conf does not exist解决
- 机器学习——人工神经网络之BP算法编程(python二分类数据集:马疝病数据集)
- Ubuntu 18.04.1 搭建Java环境和HelloWorld 1
- 【转载】VMware完全卸载
- 使用Canvas基于手势可以使树秋千
- 拼音转换成汉字html,汉字转换成拼音的种(转)
- 星际争霸游戏中的操作心得
- matlab d函数,Matlab常用函数
- (附源码)计算机毕业设计SSM基于框架的旅游订票系统
- 爬了世纪佳缘后发现了一个秘密,世纪佳缘找对象靠谱吗?
- iPhone营销四大基础:共鸣、专注、灌输、用心
- 黑群晖升级后无法找到的方法
- 网络安全等级保护定级指南 范围
- 如何计算一个网段的子网掩码,网络ID,广播地址和可用IP地址数
- VMWare Player设置双屏显示