输入十个整数
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Enter 5 integers: 2 9 8 1 9
printf(“Enter x: ");
Enter x: 9
scanf("%d", &x);
Index is 4
sub = -1;
for(i = 0; i < 5; i++)
if(a[i] == x)
sub = i;
if(sub != -1) printf("Index is %d\n", i);
例 7-3 思考(1)
printf(“Enter 5 integers: ");
for(i = 0; i < 5; i++)
scanf("%d", &a[i]); printf(“Enter x: "); scanf("%d", &x); flag = 0; for(i = 0; i < 5; i++)
定义一个含有5个浮点型元素的数组 f
先定义,后使用
2、引用
只能引用单个的数组元素,不能一次引用整个数组
数组名[下标]
下标:整型表达式 取值范围:[0,数组长度-1]
下标不要越界 不能使用a[10]
int a[10];
10个元素:a[0]、a[1]、…… a[9]
数组元素的使用方法与同类型的变量相同
建议不要省略数组长度
7.1.4 使用一维数组编程
数组和循环
for(i = 0; i < n; i++) printf("%d ", a[i]);
数组下标作为循环变量,通过循环,逐个 处理数组元素
一维数组示例
例 7-2 用数组计算fibonacci数列的前20个数,并 按每行打印5个数的格式输出。1, 1, 2, 3, 5, ……
After sorted: -1 0 1 2 3 5 7 8 22 89
scanf("%d", ++){ /* 对n个数排序 */
index = k;
for(i = k + 1; i < n; i++)
if (a[i] < a[index]) index = i;
temp = a[index]; a[index] = a[k]; a[k] = temp;
}
printf("After sorted: ");
for(i = 0; i < n; i++) /* 输出n个数组元素的值 */
printf("%d ", a[i]);
return 0;
}
for(i = 0; i < n; i++) printf("%d ", a[i]);
a[0] = a[9] = 0;
a[k] = temp;
7.1.3 一维数组的初始化
定义数组时,对数组元素赋初值
类型名 数组名[数组长度] = {初值表};
int a[10] = {1,2,3,4,5,6,7,8,9,10};
a[0]=1, a[1]=2,...… a[9]=10
静态数组、动态数组的初始化
012
9
a 3 5 2 8 1 22 89 0 -1 7
数组
a[0] a[1]
a[9]
数组:相同类型数据的有序集合,在内存中连续存放。
– 由数组名和下标惟一地确定每个数组元素
– 每个元素都属于同一类型
一批相同类型的变量使用同一个数组变量名,用下标 来相互区分。
优点:表述简洁,可读性高;便于使用循环结构
#include <stdio.h> int main(void)
例 7-2 源程序
{
int i;
int fib[20] = {1, 1}; /* 数组初始化 */
11 2 3 5
for(i = 2; i < 20; i++)
8 13 21 34 55
fib[i] = fib[i - 1] + fib[i - 2]; 89 144 233 377 610
scanf("%d", &a[i]);
temp = a[index]; a[index]= a[k]; a[k] = temp;
printf("%d ", a[i]);
区分数组的定义和数组元素的引用
定义数组
类型名 数组名[数组长度]
引用数组元素
数组名[下标]
数组长度为常量
下标不要越界
int a[10];
例7-3 输入5个整数,将它们存入数组a中,再输入1 个数x,然后在数组中查找x,如果找到,输出相 应的下标,否则,输出“Not Found”。
例 7-4 输入n(n<10),再输入n个数
(1) 求最小值 (2) 求最小值和它所对应的下标 (3) 将最小值与第一个数交换,输出交换后的n个数
例 7-1 输入n(n<10),再输入n个数,用选择法将它 们从小到大排序后输出。
7.1.2 一维数组的定义和引用
1、定义
类型名 数组名[数组长度]
类型名:数组元素的类型 数组名:数组(变量)的名称,标识符 数组长度:常量表达式,给定数组的大小
int a[10];
定义一个含有10个整型元素的数组 a
char c[200];
定义一个含有200个字符元素的数组 c
float f[5];
int a[10];
/* 定义1个数组a,它有10个整型元素*/
printf(“Enter n: ");
Enter n: 10
scanf("%d”, &n); printf(“Enter %d integers:
"E, nnt)e;r
10
integers:
3
5
2
8
1
22
89
0
-1
7
for(i = 0; i < n; i++)
例 7-2 计算fibonacci数列
用数组计算fibonacci数列的前20个数,并 按每行打印5个数的格式输出。
1, 1, 2, 3, 5, 8, 13, ……
用数组计算并存放fibonacci数列的前20个数 f[0] = f[1] = 1 f[n] = f[n-1] + f[n-2] 2≤n≤19
输入:2 9 8 9 6 9
输出:1 输入:2 9 8 9 6
7 输出:Not Found
#include <stdio.h>
例 7-3 源程
int main(void)
序
{ int i, flag, x;
int a[5];
Enter 5 integers: 2 9 8 1 9
printf(“Enter 5 integers: ");
static int b[5] = {1, 2, 3, 4, 5}; 静态存储的数组如果没有初始化,所有元素自动赋0 static int b[5]; 动态存储的数组如果没有初始化,所有元素为随机值 auto int c[5];
针对部分元素的初始化
static int b[5] = {1, 2, 3};
Enter 5 integers: 2 9 8 1 9 Enter x: 9 Index is 1 Index is 4
if(a[i] == x){
printf("Index is %d\n", i);
flag = 1;
break;
}
if(flag == 0) printf("Not Found\n");
return 0;
}
#include <stdio.h>
int main(void) { int i, sub, x;
例 7-3 思考(2)
int a[5];
printf(“Enter 5 integers: ");
for(i = 0; i < 5; i++)
scanf("%d", &a[i]);
?输入十个整数,依次输出这十个数及最大值。
定义变量n1,n2…n10,max
输入n1,n2…n10的值
给max赋值 max=n1
max<n2
Y
N
max=n2
……
max<n10
Y
N
max=n10
输出n1,n2…n10,max
main() {
int n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,max; scanf("%d",&n1); scanf("%d",&n2); scanf("%d",&n3); scanf("%d",&n4); scanf("%d",&n5); scanf("%d",&n6); scanf("%d",&n7); scanf("%d",&n8); scanf("%d",&n9); scanf("%d",&n10); max=n1; if (max<n2) max=n2; if (max<n3) max=n3; if (max<n4) max=n4; if (max<n5) max=n5; if (max<n6) max=n6; if (max<n7) max=n7; if (max<n8) max=n8; if (max<n9) max=n9; if (max<n10) max=n10; printf("%4d",n1); printf("%4d",n2); printf("%4d",n3); printf("%4d",n4); printf("%4d",n5); printf("\n"); printf("%4d",n6); printf("%4d",n7); printf("%4d",n8); printf("%4d",n9); printf("%4d",n10); printf("\n"); printf("max=%d\n",max); }
输入一个正整数n (1<n≤10),再输入n个 整数,用选择法将它们从小到大排序后 输出。
7.1.1 程序解析 7.1.2 一维数组的定义和引用 7.1.3 一维数组的初始化 7.1.4 使用一维数组编程
#include <stdio.h> int main(void)
7.1.1
程序解析-排序
{ int i, index, k, n, temp;
for(i = 0; i < 20; i++){
987 1597 2584 4181 6765
printf("%6d", fib[i]);
if((i + 1) % 5 == 0) /* 5个数换行 */
printf("\n");
}
return 0;
}
例7-3 在数组中查找一个给定的数
输入5个整数,将它们存入数组a中,再输入1个数x, 然后在数组中查找x,如果找到,输出相应的下标, 否则,输出“Not Found”。
数组是同类型数据的集合,集合中的每个数据称 为数组元素或下标变量,数组元素的类型相同、 个数确定。
下标变量中如果只用一个下标,则称为一维数组, 用两个下标则称之为二维数组,用三个下标称之 为三维数组,依此类推。
Chap 7 数 组
7.1 排序问题 7.2 找出矩阵中最大值所在的位置 7.3 进制转换
b[0] = 1, b[1] = 2, b[2] = 3, b[3] = 0, b[4] = 0
auto int fib[20] = {0, 1};
fib[0] = 0, fib[1] = 1, 其余元素不确定
如果对全部元素都赋初值,可以省略数组长度
int a[ 10 ] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
本章要点
什么是数组? 为什么要使用数组? 如何定义数组? 如何引用数组元素? 二维数组的元素在内存中按什么方式存放? 什么是字符串? 字符串结束符的作用是什么? 如何实现字符串的存储和操作,包括字符串的输
入和输出? 怎样理解C语言将字符串作为一个特殊的一维字符
数组?
7.1 排序问题
对上例进行分析
变量定义太麻烦,要是求100个数的最大值? 变量有共同点:数据类型相同、变量名相似
要是有这样的一组变量:名+下标 ,就方便多了
程序中类似的语句重复出现多次
能使用循环结构该多好
数组+循环结构
数组 ☆ 一维数组
用一组具有相同名字、不同下标的下标变量来代 表一组具有相同性质的一组数据,这就是数组。
Enter 5 integers: 2 9 8 1 9 Enter x: 7 Not Found
flag = 1;
break;
}
if(flag == 0) printf("Not Found\n");
return 0;
}
#include <stdio.h>
int main(void) { int i, flag, x; int a[5];
Enter x: 9
for(i = 0; i < 5; i++) scanf("%d", &a[i]);
Index is 1
printf(“Enter x: ");
scanf("%d", &x);
flag = 0; for(i = 0; i < 5; i++)
if(a[i] == x){ printf("Index is %d\n", i);