C语言从入门到精通第5章数组讲解

http://tejia.qqxk.net/韩都衣舍官网:http://handuyishe3.ctbuxiu.com/青岛韩都衣舍打折优惠:http://handu yishe2.ctbux iu.com/韩都衣舍怎么样:ht tp://handuyi she1.ctbuxiu .com/韩都衣舍官方旗舰店: http://qqxk. net/ 判断一个数是否存储在数组中 要求定义一个数组,并为这个数组初始化。乐购彩票_[官网首页]程序运行后,在屏幕上输入一个整数,来查看是否在数组中, 并输出提示信息。#include main() /*声明变量*/int a[10]={10,11,27,25,34,56,18,37,45,16}; /*初始化 一个数组*/ k=11; /*为变量赋值*/ printf("请输入您想要查找的数字:\n"); scanf("%d",&num); /*输入一个数*/ if(num==a[i])/*判断是否和数组元素值相等*/ if(k!=11)/*根据结果输出*/ printf("在此数组中已找到!\n"); else printf("没有找到这个数字!\n"); 判断一个数是否存储在数组中本实例实现判断一个数是否存在数组中,即将用户输入的数值与数组中的元素进行对比,如 果用户输入的数值没有与数组元素相同时,则说明数组中不存在该数值。反之,如果用户输 入数值有和数组中元素相同的,那么说明该数值在数组中。 想要将用户输入的数值和数组元素逐个比较,需要使用for循环语句嵌套if条件判断语句实 现,最后输出结果。乐购彩票_[官网首页] 选票统计 班级竞选班长,共有三个候选人,输入参加选举的人数及每个人选举的内容,输出三个候选人最终的得票数及无效选票数。#include main() a[50];printf("请输入参加选举的人数:\n"); scanf("%d", /*输入参加选举的人数*/printf("请输入所选人的序号:1或2或3\n"); v1++;/*统计1号候选人的票数*/ else v2++;/*统计2号候选人的票数*/ else v3++;/*统计3号候选人的票数*/ else v0++; /*统计无效票数*/ printf("选举结果为:\n");printf("候选人1:%d票\n候选人2:%d票\n候选人3:%d票\n弃权:%d票\n", v1, v2, v3, v0); /*将之中统计的结果输出*/ 选票统计本例是一个典型的一维数组应用,关键就是C语言规定只能逐个引用数组元素而不能一次引用整个数组, 本程序这点体现在对数组元素进行判断时只能通过for语句对数组中的元素一个一个的引用。 求二维数组对角线之和 有一个44的矩阵,要求编程求出其从左上到右下的对角线之和,并输入到窗体上。(范例位置:光盘\TM\fl\5\3) #include main() sum;/*定义整型变量*/ int /*定义整型数组,并对其初始化*/{1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16} sum=0;/*为整型变量赋初值*/ printf("这个数组是:\n"); /*输出提示信息*/ printf("对角线之和是:%d\n",sum); return 求二维数组对角线之和本例使用for循环语句将二维数组以矩阵形式输出,程序中使用if选择判断语句,将数组中对角线上的元 素找出,并将找出的元素和求出,并将结果输出。 打印杨辉三角 打印出以下形式的杨辉三角形(要求打印出10行)。(范例位置:光盘\TM\fl\5\4) 1010 #includemain() a[11][11];/*定义i,j,a[11][11]为基本 整型*/ /*对角线元素全为1*/ /*每行第一列元素全为1*/ /*for循环范围从第3行开始到第10行*/ /*for循环范围从第2列开始到该行行数减一列为止*/ /*通过上面两次for循环将二维数组a中元素输出*/printf("\n"); /*每输出完一行进行一次换行 打印杨辉三角解决本例的关键在于找出图形中数字间的规律,从图形中我们分析出这些数字间有以下规律: 每一行的第一列均为1。 对角线上的数字也均为1。 除每一行第一列和对角线上数字外,其余数字均等于其上一行同列数字与其上一行前一列数字之和。 这些规律是通过for循环实现的,首先第一个for循环实现了前两个规律,然后使用两个for循环语句实现 除对角线和每行第一个元素外其它元素的赋值过程,即a[i][j]=a[i-1][j-1]+a[i-1][j],最后再利用 for循环将数组元素输出。乐购彩票_[官网首页] 统计各种字符的个数 本例要求输入一组字符,然后分别统计出其中英文字母、数字、空格以及其他字符的个数。实现代码如下:(范例位置:光盘\TM\fl\5\5) #include main() intletters printf("请输入一个字符串\n");while /*当输入的不是回车时执行while循环体部分*/ letters++;/*当输入的是英文字母时变量 letters加1*/ else space++;/*当输入的是空格时变量space digit++;/*当输入的是 数字时变量digit加1*/ else others++; /*当输入的即不是英文字母又不是空格或数字是 变量others加1*/ printf("字母=%d空格=%d 数字=%d 其他=%d\n",letters,space,digit,others); /*将最终统计结果输出*/ 统计各种字符的个数从效果图可以看出,输入的字符中有字母、数字、空格和其他字符(包括标 点)这四种,解决本例只要对字符的内容进行4种判断即可。可以使用if语 句对字符中的元素进行判断,符合4种元素中的一种时,就在相应的元素数 量中加1,直到判断完字符中的内容为止。 字符升序排列 本实例实现将已按升序排好的字符串a和字符串b按升序归并到字符串c中并输出。(范例位置:光盘\TM\fl\5\6) #include main() chara[100], b[100], c[200], printf("Pleaseinput string /*输入字符串1放入a数组中*/printf("Please input string /*输入字符串2放入b数组中*/while /*p指向数组b中未复制到c的位置*/else /*p指向数组a中未复制到c的位置*/strcat(c, /*将p指向位置开始的字符串连接到c中*/puts(c); /*将c输出*/ }本实例的主要的思路如下:因为输入的字符串a和b是有序字符串,所以对数组a和b中的元素逐个比较。 哪个字符小,哪那个字符就先放到数组c中,直到a或b中有一个字符串全部放到c中。 再判断a和b哪一个字符串全部复制到c中,对未将字符串全部复制到c中的字符串,从未复制的位置开始 将后面字符串全部连接到c中。这样就完成将字符串a和字符串b按升序归并到字符串c中。 模拟比赛打分 从键盘中输入选手人数,然后输入对每个选手裁判的打分情况,这里面假设裁判有五位,在输入完以上要求内容后,输出每个选手 的总成绩。(范例位置:光盘\TM\fl\5\7) #include #include main() floata[100], b[100], sum printf("\n请输入选手人数:\n");scanf("%d", /*输入5个裁判每个裁判所给的分数*/sum sum;/*将每个选手的总分存到数组b中*/ sum printf("选手 裁判A 裁判B 裁判C 裁判D 裁判E 总分\n"); 模拟比赛打分本例使用了嵌套的for循环,外层的for循环是控制选手变化的,内层for循环是控制五个裁判打分情况的 ,这里要注意由于不知道选手的人数,所以存储裁判所打分数的数组的大小是随着选手人数变化的,因 为有五个裁判,所以当数组下标能被5整除时则跳出内层for循环,此时计算出的总分是五名裁判给一名 选手打分的结果,将此时计算出的总成绩存到另一个数组中。输出选手成绩时也是遵循上面的规律。 打印5阶幻方 打印5阶幻方,即自然数组成方阵,方阵的每个元素都不相等,且每行和每列以及主副对角线上的各元素之和都相等。(范例位置:光盘 \TM\fl\5\8) #include main() /*因为数组下标要用1到5,所以数组长度是6*/for(i=1;i<=25;i++) /*将1到25所有数存到数组相应位置*/ if(x==1&&y==5) x=x+1;/*当上一个数是第1行第五列时 ,下一个数放在它的下一行*/ continue; /*结束本次循环*/ /*当上一个数是是第1行时,则下一个数行数是5*/ /*当上一个数列数是第5列时,则下一个数列数是1*/ x=x+2;/*表达式为真则行数加2列数减 printf("\n");/*每输出 一行回车*/ }本例的关键是要找出幻方中各数的排列规律,具体规律如下:将1放在第一行中间一列; 从2开始直到25各数依次按下列规则存放:每一个数存放的行比前一个数的行数减1,列数加1。 如果上一个数的行数为1,则下一个数的行数为5,列数加1。 当上一个数的列数为5时,下一个数的列数应为1,行数减1。 如果按上面步骤确定的位置上已经有数(本题中不为0),或者上一个数是第1行第5列时,则把下一个数 放在上一个数的下面。 找出排在后面的国家名 从键盘上输入5个国家的英文名字,找到并输出英文名字首字母按字母顺序排在最后的那个国家的名字。(范例位置:光盘 \TM\fl\5\9) #include #include int main() /*定义变量*/char cCoun[5][20]; /*定义二维字符数组*/ char cMax[20]; /*定义一维 字符数组*/ printf("Please input countrynames:\n"); /*输出提示信息*/ gets(cCoun[i]);/*获取国家名字的首字母 strcpy(cMax,cCoun[0]); /*复制字符串*/ if(strcmp(cMax,cCoun[i])<0) /*比较字符串,找出首字 符排在后面的国家名字*/ strcpy(cMax, cCoun[i]); /*复制字符串*/ printf("TheMax string cMax);/*输出字母排在最后的国家的名字*/ return 找出排在后面的国家名本例首先需要定义了两个字符数组,分别用于存放5个国家名字和首字母排在后面的国家的名字,其中的 二维数组的行坐标存放的是5个国家的首字母。然后使用gets输入函数获取用户输入的5个国家名字的首 字母,并将其放在数组cCoun[i]中,最后使用for循环和if语句对比5个国家名字首字母的ASCII值,将相 对较大的字符找出,并将所对应的字符串输出。 Thank you

清华大学出版

文档格式:
.ppt
文档页数:
21页
文档大小:
581.5K
文档热度:
文档分类:
高等教育 --  专业基础教材
文档标签:
C语言 从入门 到精通 第5章 数组讲解

更多>> 相关文档

页面底部区域 foot.htm