浙大算法口诀下部分.docx
- 文档编号:3306051
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:31
- 大小:37.91KB
浙大算法口诀下部分.docx
《浙大算法口诀下部分.docx》由会员分享,可在线阅读,更多相关《浙大算法口诀下部分.docx(31页珍藏版)》请在冰豆网上搜索。
浙大算法口诀下部分
一、最大最小(循环与分支的嵌套)
1.简单变量
#include
voidmain()
{inti,n;floatmax,min,x;
scanf(“%d”,&n);
scanf(“%f”,&x);
max=min=x;
for(i=1;i scanf(“%f”,&x); if(max if(x } printf("%f%f",max,min); } 2.一维数组 #include voidmain() {inti;floatmax,min,a[10]; for(i=0;i<10;i++) scanf(“%f”,&a[i]); max=min=a[0]; for(i=1;i<10;i++){ if(a[i]>max)max=a[i]; if(a[i] } printf("%f%f",max,min); } 3.二维数组 #include voidmain() {inti,j;floatmax,min,a[3][4]; for(i=0;i<3;i++) for(j=0;j<4;j++) scanf(“%f”,&a[i][j]); max=min=a[0][0]; for(i=0;i<3;i++) for(j=0;j<4;j++) { if(a[i][j]>max)max=a[i][j]; if(a[i][j] } printf("%f%f",max,min); } 4.编制函数,其功能是在float类型1维数组中查找最大值、最小值,并将它们返回到调用程序。 (指针) #include voidmax_min(intx[],intn,int*max,int*min) {inti,; *max=x[0];*min=x[0]; for(i=1;i if(*max if(x[i]<*min)*min=x[i]; } } voidmain() {intx[10],i,min,max; for(i=0;i<10;i++)scanf("%d",x+i); max_min(x,10,&max,&min); printf("MAX=%dMIN=%d\n",max,min); } 二、数组与双重循环 1.输入与输出 例如: 对一维数组有inta[10];定义后, 输入格式为: for(i=0;i<10;i++) scanf(“%d”,&a[i]); 输出格式为: for(i=0;i<10;i++) printf("%d",a[i]); 对二维数组有inta[3][2];定义后, 输入格式为: for(i=0;i<3;i++) for(j=0;j<2;j++) scanf(“%d”,&a[i][j]); 输出格式为: for(i=0;i<3;i++){ for(j=0;j<2;j++) printf("%d",a[i][j]); printf("\n");} 2.数组遍历 遍历: 下标i++指针p++ 结束条件: i<=n 字符串a[i]! =’\0’ i 3.单循环 (1)逆置 for(i=0;i<=n/2;i++) {t=a[i];a[i]=a[n-i-1];a[n-i-1]=t;} (2)for(i=0,j=n-1;i {t=a[i];a[i]=a[j];a[j]=t;} 下面程序的功能是将一个字符串str的内容颠倒过来。 解1: #include #include voidmain() {inti,j,k;/*int型k可当char型用*/ charstr[]=“1234567”; for(i=0,j=strlen(str)-1;i */ {k=str[i];str[i]=str[j];str[j]=k;} for(i=0;i printf(“%c”,str[i]); } 解2: #include #include voidmain() {inti,n; charstr[]=“1234567”; n=strlen(str); for(i=0;i */ {k=str[i];str[i]=str[n-1-i];str[n-1-i]=k;} for(i=0;i printf(“%c”,str[i]); } (2)顺序查找 下面程序在a数组中查找与x值相同的元素所在位置,数据从a[1]元素开始存放。 解1: #include voidmain() {inta[11],i,x; printf(“输入10个整数: ”); for(i=1;i<=10;i++) scanf(“%d“,&a[i]); printf(“输入要找的数x: ”);scanf(“%d”,&x); for(i=1;i<=10;i++) if(a[i]==x)break; if(i<=10)printf(“%d”,i); elseprintf(“找不到要找的数x: ”); } 解2: #include voidmain() {inta[11],i,x; printf(“输入10个整数: ”); for(i=1;i<=10;i++) scanf(“%d“,&a[i]); printf(“输入要找的数x: ”);scanf(“%d”,&x); a[0]=x;i=10; while(x! =a[i])i--; if(i! =0) printf(“与x值相同的元素位置是: %d\n“,i); else printf(“找不到与x值相同的元素! \n“); } (3)费伯那契(Fibonacci)数列各项为1,1,2,3,5,8,13,21,...,求其前40项之和。 解: #include #include voidmain() {longs=0,i,a[40]; a[0]=1;a[1]=1; for(i=2;i<40;i++) a[i]=a[i-1]+a[i-2]; for(i=0;i<40;i++) s+=a[i]; printf("%ld",s); } (3)插删 编一个程序,输入一个字符串,将组成字符串的所有非英文字母的字符删除后输出。 例如: 输入"abc123+xyz.5",应输出"abcxyz"。 解: #include #include voidmain() { charstr[256]; inti,j,k=0,n; gets(str); n=strlen(str); for(i=0;i if(tolower(str[i])>='a'&&tolower(str[i])<='z') {str[k]=str[i];k++;} str[k]='\0'; printf("%s\n",str); } (4)4个函数 编制程序,输出字符串的有效长度,并输出该字符串。 解: #include voidmain() {inti=0,len; charstr[80]=“Happy”; for(i=0;str[i]! =’\0’;i++); len=i; printf(“len=%d\n”,len); for(i=0;str[i]! =’\0’;i++) putchar(str[i]); } 将字符数组s2中的全部字符拷贝到字符数组s1中。 解: #include"stdio.h" voidmain() {chars1[20],s2[]="Goodmorning! ";inti=0; while((s1[i++]=s2[i])! ='\0'); printf("%s\n",s1); } 该程序功能: 将两个字符串连接起来。 解1: #include voidmain() { chars1[80],s2[40]; inti=0,j=0; printf("\nInputthefirststring: "); scanf("%s",s1); printf("\nInputthesecondstring: "); scanf("%s",s2); while(s1[i]! ='\0')i++; while(s2[j]! ='\0')s1[++i]=s2[++j];/*拼接字符到s1*/ s1[i]='\0'; printf("\nNewstring: %s",s1); } 解2: #include #include voidmain() {chara[40],b[40],c[80]; inti,j; printf(“分二行输入两个字符串: \n”); gets(a);gets(b); for(i=0;a[i]! =’\0’;i++)c[i]=a[i]; for(j=0;b[j]! =’\0’;j++)c[i+j]=b[j]; c[j]=’\0’; puts(c); } 编制程序,实现两个字符串的比较,即自左至右逐个字符按ASCII码大小相比较。 如果字符串1==字符串2,结果为0。 如果字符串1>字符串2,结果为一正整数。 如果字符串1<字符串2,结果为一负整数。 解: #include voidmain() { chars1[80],s2[40]; inti=0,j=0; printf("\nInputthefirststring: "); scanf("%s",s1); printf("\nInputthesecondstring: "); scanf("%s",s2); for(i=0;s1[i]! ='\0';i++) if(s1[i]! =s2[i])break; printf("%d”s1[i]-s2[i]); } 2.双重循环 (1)3个排序 1.使用选择法将一维整型数组中各元素按值从小到大排序。 解1: #include voidmain() {inti,j,n,temp; scanf("%d",&n); for(i=0;i scanf(“%d“,&a[i]); for(i=0;i for(j=i+1;j if(a[j] }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 浙大 算法 口诀 下部
![提示](https://static.bdocx.com/images/bang_tan.gif)