当前位置:
文档之家› c语言从入门到精通第5章数组
c语言从入门到精通第5章数组
C语言从入门到精通第5章数组 讲解
/韩都衣舍官 网:htt p://ha nduyis he3.ct buxiu. com/青 岛韩都 衣舍打 折优惠 :http ://han duyish e2.ctb uxiu.c om/韩 都衣舍 怎么样: http:/ /handu yishe1 .ctbux /韩都 衣舍官 方旗舰 店:http ://qqx /
v3, v0);
/*将之中统计的结果输出*/
}
选票统计
本例是一个典型的一维数组应用,关键就是C语言规定只能逐个引用数组元素而不能一次引用整个数组, 本程序这点体现在对数组元素进行判断时只能通过for语句对数组中的元素一个一个的引用。
求二维数组对角线之和
有一个4×4的矩阵,要求编程求出其从左上到右下的对角线之和,并输入到窗体上。(范例位置:光盘\TM\fl\5\3)
判断一个数是否存储在数组中
要求定义一个数组,并为这个数组初始化。程序运行后,在屏幕上输入一个整数,来查看是否在数组中, 并输出提示信息。#include<stdio.h>
main()
{
int i, num, k;
/*声明变量*/
int a[10]={10,11,27,25,34,56,18,37,45,16}; 一个数组*/
#include<stdio.h>
main()
{
int i, j, sum;
/*定义整型变量*/
int a[4][4]={
/*定义整型数组,并对其初始化*/
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16}
};
sum=0;
/*为整型变量赋初值*/
printf("这个数组是:\n");
for (i = 1; i <= n; i++)
{
printf("选手 %d", i); /*输出几号选手*/
for (; j < 5 *n + 1; j++)
{
printf("%7.1f", a[j]); /*输出裁判给每个选手对应的分数*/
if (j % 5 == 0)
{
break;
}
}
printf("%8.1f\n", b[i]); /*输出每个选手所得的总成绩*/
{
c[k] = a[i]; /*如果小于,将a中字符放到数组c中*/
i++;
/*i自加*/
}
else
{
c[k] = b[j]; /*如不小于,将b中字符放到c中*/
j++;
/*j自加*/
}
k++;
/*k自加*/
字符升序排列
}
c[k] = '\0';
/*将两个字符串合并到c中后加结束符*/
if (a[i] == '\0')
v1++;
/*统计1号候选人的票数*/
else if (a[i] == 2)
v2++;
/*统计2号候选人的票数*/
else if (a[i] == 3)
v3++;
/*统计3号候选人的票数*/
else
v0++;
/*统计无效票数*/
}
printf("选举结果为:\n");
printf("候选人1:%d票\n候选人2:%d票\n候选人3:%d票\n弃权:%d票\n", v1, v2,
}
求二维数组对角线之和
本例使用for循环语句将二维数组以矩阵形式输出,程序中使用if选择判断语句,将数组中对角线上的元 素找出,并将找出的元素和求出,并将结果输出。
打印杨辉三角
打印出以下形式的杨辉三角形(要求打印出10行)。(范例位置:光盘\TM\fl\5\4)
1
1
1
1
2
1
1
3
3
1
1
4
6
4
1
1
5
统计各种字符的个数
本例要求输入一组字符,然后分别统计出其中英文字母、数字、空格以及其他字符的个数。实现代码如下:(范例位置:光盘\TM\fl\5\5)
#include<stdio.h>
main()
{
char c; 型*/
/*定义c为字符
int letters = 0, space = 0, digit = 0, others = 0; */
10
10
5
1
……
#include<stdio.h>
main()
{
int i, j, a[11][11]; 整型*/
/*定义i,j,a[11][11]为基本
for (i = 1; i < 11; i++)
/*for循环i的范围从1到10*/
{
a[i][i] = 1; 全为1*/
/*对角线元素
a[i][1] = 1; 元素全为1*/
/*求出总份数*/
if (j % 5 == 0) /*一位选手有5个裁判给打分*/
{
break;
}
}
模拟比赛打分
b[i] = sum;
/*将每个选手的总分存到数组b中*/
sum = 0;
/*将总分重新置0*/
j++;
/*j自加*/
}
j = 1;
printf(" 选手 裁判A 裁判B 裁判C 裁判D 裁判E 总分\n");
scanf("%d", &n);
/*输入参加选举的人数*/
printf("请输入所选人的序号:1或2或3\n");
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
/*输入每个人所选的人*/
for (i = 0; i < n; i++)
{
if (a[i] == 1)
再判断a和b哪一个字符串全部复制到c中,对未将字符串全部复制到c中的字符串,从未复制的位置开始 将后面字符串全部连接到c中。这样就完成将字符串a和字符串b按升序归并到字符串c中。
模拟比赛打分
从键盘中输入选手人数,然后输入对每个选手裁判的打分情况,这里面假设裁判有五位,在输入完以上要求内容后,输出每个选手
/*每行第一列
}
for (i = 3; i < 11; i++) 第10行*/
/*for循环范围从第3行开始到
for (j = 2; j <= i - 1; j++) 该行行数减一列为止*/
/*for循环范围从第2列开始到
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
字符升序排列
本实例实现将已按升序排好的字符串a和字符串b按升序归并到字符串c中并输出。(范例位置:光盘\TM\fl\5\6)
#include<stdio.h>
main()
{
char a[100], b[100], c[200], *p;
int i = 0, j = 0, k = 0;
printf("Please input string a:\n");
/*从键盘中输入选手的人数*/
for (i = 1; i <= n; i++)
{
printf("选手%d\n", i);
printf("请输入裁判所给分数:\n");
for (; j < 5 *n + 1; j++)
{
scanf("%f", &a[j]);
/*输入5个裁判每个裁判所给的分数*/
sum += a[j];
/*定义letters、space、digit、others、四个变量为基本整型
printf("请输入一个字符串\n");
while ((c = getchar()) != '\n') while循环体部分*/
/*当输入的不是回车时执行
{
if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')
j++;
}
return 0;
}
模拟比赛打分
本例使用了嵌套的for循环,外层的for循环是控制选手变化的,内层for循环是控制五个裁判打分情况的 ,这里要注意由于不知道选手的人数,所以存储裁判所打分数的数组的大小是随着选手人数变化的,因 为有五个裁判,所以当数组下标能被5整除时则跳出内层for循环,此时计算出的总分是五名裁判给一名 选手打分的结果,将此时计算出的总成绩存到另一个数组中。输出选手成绩时也是遵循上面的规律。
/*当输入的即不是英文字母又不是空格或数字是
变量others加1*/
}
printf("字母=%d 空格=%d 数字=%d 其他=%d\n",letters,space,digit,others);
/*将最终统计结果输出*/
}
统计各种字符的个数
从效果图可以看出,输入的字符中有字母、数字、空格和其他字符(包括标 点)这四种,解决本例只要对字符的内容进行4种判断即可。可以使用if语 句对字符中的元素进行判断,符合4种元素中的一种时,就在相应的元素数 量中加1,直到判断完字符中的内容为止。