- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
选择法排序
排序过程: (1)第一趟选择排序:从n个数中找出最小的, 将 它与第一个数交换,结果最小的数被安置在第一个 元素位置上。即用第一个数与其余n-1个数比较。 (2)第二趟选择排序:再从剩余的n-1个数中找出关 键字次小的记录,将它与第二个数交换,即用第二 个数与其余n-2个数比较。 (3)重复上述过程,共经过n-1趟排序后,排序结束
数组的声明
数组声明格式:
– 类型名 数组名[数组长度(常量)] [数组长度(常量)] – 声明举例: 一维数组 int a[10]; – 声明了a[0]~a[9]十个整型单元 二维数组 float a[3][3] ; – 声明了a[0][0]~a[2][2]三行三列九个浮点单元 三维数组 char a[5][10][20]; – 声明了a[0][0][0]到a[4][9][19] 共1000个字符空间
10.输入一个整数, 把各位数颠倒输 出 , 如 输 入 12345 , 输 出 54321.
#include <stdio.h> #include <math.h> void main() { int i,m,n,s,m1=0; scanf("%d",&m); for(i=1;;i++) { if(m/(int)pow(10,i)==0) { n=i; printf("该数为%d位数\n“,n); break; } } for(i=1;i<=n;i++) { s=m%10; m=m/10; m1*=10; m1+=s; } printf("颠倒后为:%d\n",m1); }
#include <stdio.h> void main() { int n,i=2; scanf("%d",&n; printf("1”; while(i<=n) { while(n%i==0) {
printf("*%d",i);
n/=i; } i++; } printf("\n"); }
第6章 数组
循环举例-2
6.
#include <stdio.h> #include <math.h> void main(){ double s,t,eps=1e-5; s=2;//已包含第一项 t=sqrt(2);//第二项分母 while(fabs(2/t-1)>eps){//最后一项接近1 s=s*2/t; t=sqrt(2+t);//获得下一项分母 } printf("%lf\n",s); }
#include <stdio.h> void main() { int i,f1=0,f2=1,temp; printf("%d\n",f1); for(i=2;i<=20;i++) { printf("%d\n",f2); temp=f1+f2; f1=f2; f2=temp; } } #include <stdio.h> void main() { int i,f1=0,f2=1; for(i=1;i<=10;i++) { printf("%d\n%d\n",f1,f2); f1=f1+f2; f2=f2+f1; } }
7、 有1、2、3、4四个数字,能组成多少个互不相同
且无重复的三位数?都是多少?
#include <stdio.h> void main() { int i,j,k; printf("\n"); for (i=1;i<5;i++) for (j=1;j<5;j++) for (k=1;k<5;k++) if (i!=k&&i!=j&&j!=k) printf("%d,%d,%d\n",i,j,k); }
11.最大公约数和最小公倍数
#include <stdio.h> void main() { int a,b,m,n,t; printf("请输入两个整数:"); scanf("%d%d",&n,&m); t= n>m? m:n; for(;;t--) if(a/t==0&&b/t==0) break; printf("最大公约数:%d",t); printf("最小公倍数:%d",m*n/t); }
用数组方式解决Fibonacci数列问题,求出Fibonacci数 列的前20项存储在数组中,并将数组内容输出。
#include <stdio.h> void main() { int i,fib[20]={1,1}; /*初始化 */ printf("\n"); for (i=2;i<20;i++) fib[i]=fib[i-1]+fib[i-2]; for (i=1;i<=20;i++) { printf("%10d",fib[i-1]); if (i%5==0) printf("\n"); /*换行,每行输出5个 */ } }
8
while((c=getchar())!='\n')
{
if(c>='a'&&c<='z'||c>='A'&&c<='Z') letters++; else if(c==' ') space++; else if(c>='0'&&c<='9') digit++; else others++; }
9.Fibonacci数列前两项值为0,1,后面每项 是前两项之和,试输出前二十项
数组使用举例
用数组方式读入5个整数,并求和。 #include "stdio.h" void main() { int i,data[5],sum=0; printf("\nPlease enter 5 integer:"); for (i=0;i<5;i++) scanf("%d",&data[i]); for (i=0;i<5;i++) sum=sum+data[i]; printf("Sum is %d\n",sum); }
#include <stdio.h> void main() { int a,b,m,n,t=1; printf("请输入两个整数:"); scanf("%d%d",&n,&m); if (n<m) {a=m;b=n;} else {a=n;b=m;}
while(b) { t=a%b; a=b; b=t; }
i=0,j=11 i=1,j=10 i=1,j=11 i=2,j=10 i=2,j=11
3.
do { k+=i; i+=3; printf("%d\n",k); }while(i<10);
continue和break
4. for(i=j=1;i<5;i++){ if(i%2==0)continue; //break; j++; printf("%d,%d\n",i,j); } 1,2 3,3 5. 1,2
数组是在内存中分配的连续空间 数组下标都是从0开始的
说明
1. 2. 3. 4.
5.
数组:具有相同数据类型的数据的有序的集 合。 数组元素:数组中的元素。数组中的每一个 数组元素具有相同的名称,不同的下标。 数组的下标:是数组元素的位置的一个索引 或指示。 数组的维数:数组元素下标的个数。根据数 组的维数可以将数组分为一维、二维、三维、 多维数组。 C语言还规定,数组名是数组的首地址。即 a=&a[0]
数组的声明 数组的物理存放 数组的初始化 数组访问举例 产生随机数 数组练习
问题
第一个问题是:输入100个学生的“C程序设计” 课程的成绩,将这100个分数从小到大输出。 第二个问题是输入100个学生的“C程序设计” 课程的平时和期末成绩,算出总评成绩,总评 成绩为“20%×平时成绩+80%×期末成绩”, 计算总评成绩的分数段情况。
初始化的说明
说明初始化方式不能用在赋值运算中,下面则是错的 int a[10]; a[10]={1,2,3}; 数组未初始化时,单元中保存的是垃圾数据;而在部分初始化 时,未分配到初始值的单元自动赋初值0 声明的同时进行初始化时,可以省略最高维常量参数值(注意 只能是最高维), 编译器将根据初始值个数确定常量参数值, – int a[]={0,1,2,3,4,5,6,7,8,9} – int a[][3]={{1,2,3},{4,5},6} – int a[][3]={1,2,3,4,5,6,7,8,9} – int a[3][]={{0,1,2},{10,11,12},{20,21,22}}//错 – int a[2][][3]={{{0,1,2},{10,11,12}},{{20,21,22}}}//错
k 例 i=0 初始: [ 49 13
k
k
38 j k