用“起泡法”对输入的10个数字按由小到大顺序排列
高级语句程序设计(C)经典试题及答案讲解
高级语句程序设计(C++)经典试题一、单项选择题1、在一个C++程序中,main函数的位置()。
①必须在程序的开头②必须在程序的后面③可以在程序的任何地方④必须在其它函数中间2、一个C++程序的执行是从()。
A、本程序的main函数开始,到main函数结束B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C、本程序的main函数开始,到本程序文件的最后一个函数结束D、本程序文件的第一个函数开始,到本程序main函数结束3、在计算机语言中,以下描述正确的是:A、高级语言较低级语言更远离对硬件的直接操作。
B、高级语言较低级语言更接近对硬件的直接操作。
C、C++是世界上第一种计算机高级语言。
D、C语言是由美国的微软公司研制成功的。
4、C++源程序的实现一般要经过三个步骤,其中不包括:A、编辑B、维护C、编译D、运行5、设i=1,j=2,则表达式i++ +j的值为()。
① 1 ② 2 ③ 3 ④6、设i=1,j=2,则表达式++i+j的值为()。
① 1 ② 2 ③ 3 ④7、执行下列语句后,x的值是()。
int x,y;x=y=1; ++x||++y;①不确定② 0 ③ 1 ④ 28、已知x=5,则执行语句x+=x-=x×x; 后,x的值为()。
① 25 ② 40 ③ -40 ④ 209、常量是在程序中:A、经常被使用的量。
B、最高级的量。
C、按固定周期使用的量。
D、按固定值使用的量。
10、有如下程序段:int a=14,b=15,x;char c=’A’;x=(a&&b)&&(c<’B’);执行该程序段后,x的值为()。
① ture ② false ③ 0 ④ 111、下面程序的输出结果是()。
#include <iostream>using namespace std;int main( ){ int a=6,b=6;if(a>5)a-=1;b+=1;elsea+=1;b-=1;cout<<”a=”<<a<<endl;cout<<”b”<<b<<endl;return 0; }① 5 7 ② a=5 b=7 ③ a=5 b=6 ④编译时出错12、下面程序的输出结果是()#include <iostream>using namespace std;int main( ){ int a=6,b=6;if(a>5){a-=1;b+=1;}else{a+=1;b-=1;}cout<<”a=”<<a<<endl;cout<<”b=”<<b<<endl;return 0; }① 5 7 ② a=5 b=7 ③ a=5 b=6 ④ a=6 b=513、下面程序的输出结果是()#include <iostream>using namespace std;int main( ){ int x=6,y=8;if(x++<6)cout<<++y<<endl;if(x>6)cout<< --y<<endl;elsecout<<y++<<endl;return 0;}① 8 ② 7 ③ 9 ④编译时出错14、下面程序的输出结果是()#include <iostream>using namespace std;int main( ){ int x=6,y=8;if(++x<6)cout<<++y<<endl;elsecout<<y++<<endl;if(x>6)cout<< --y<<endl;return 0; }① 8 8 ② 9 7 ③ 7 8 ④编译时出错15、下面程序的输出结果是()#include <iostream>using namespace std;f(int a){ int b=0;static int c=3;b++;c++;return (a+b+c);}int main( ){ int a=2,i;for(i=0;i<3;i++)cout<<f(a)<<endl;return 0;}① 7 8 9 ② 7 7 7 ③ 7 10 13 ④ 7 9 1116、下面程序的输出结果是()#include <iostream>using namespace std;void fun(int x,int y,int z){ z=x×x+y×y; }int main( ){ int z=68;fun(5,2,z);cout<<z;return 0; }① 0 ② 29 ③ 68 ④无定值17、下面程序的输出结果是()#include <iostream>using namespace std;int fun(int a,int b){ return (++a×b++); }int main( ){ int x=3,y=4,z=5,r;r=fun(fun(x,y),z);cout<<r<<x<<y<<endl;}① 85 3 4 ② 60 3 4 ③ 126 4 5 ④ 85 4 518、下面的程序中,当输入4、2时,其输出结果是()#include <iostream>using namespace std;long fib(int n){ if(n>2) return (fib(n-1)+fib(n-2));else return (n); }int main( ){ int i;cout<<”请输入一个整数:”;cin>>i; cout<<endl;cout<<fib(i)<<endl;return 0; }① 5 1 ② 4 2 ③ 5 2 ④ 6 219、下面程序的输出结果为()#include <iostream>using namespace std;unsigned func(unsigned num){ unsigned d=1,k;do {k=num%10;num/=10;}while(num);return (k); }int main( ){ unsigned n=26;cout<<func (n);return 0; }① 2 ② 4 ③ 6 ④ 520、下面程序的输出结果为()#include <iostream>using namespace std;func (int a,int b){ int c;c=a×b;return (c );}int main( ){int x=6,y=7,z=8,r;r=func((x--,y,x×y),z--);cout<<r;return 0; }① 294 ② 245 ③ 280 ④ 41621、执行语句int i=10,*p=&i;后,下面描述错误的是()。
冒泡法对10个整数排序代码及运行结果
冒泡排序是一种简单但效率较低的排序算法,它重复地走访要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。
这个过程持续重复,直到没有相邻的元素需要交换,也就是说该数列已经排序完成。
下面,我们将演示用冒泡排序对一个包含10个整数的数组进行排序的代码,并展示其运行结果。
1. 我们定义一个包含10个整数的数组:```javascriptconst arr = [4, 2, 8, 5, 1, 9, 3, 7, 6, 10];```2. 接下来,我们编写冒泡排序的代码:```javascriptfunction bubbleSort(arr) {const len = arr.length;for (let i = 0; i < len - 1; i++) {for (let j = 0; j < len - 1 - i; j++) {if (arr[j] > arr[j + 1]) {const temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}return arr;}const sortedArr = bubbleSort(arr);console.log(sortedArr);```3. 运行上述代码,我们得到排序后的数组为:```javascript[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]```通过以上代码和运行结果,可以清晰地看到冒泡排序算法对数组进行了排序,最终得到一个按升序排列的数组。
这个例子展示了冒泡排序算法的基本原理和实际运行效果。
冒泡排序算法虽然简单,但是在处理大型数据集时效率较低,不过对于小型数据集来说是一个简单有效的排序方法。
冒泡排序算法是一种经典的排序算法,它虽然简单但效率较低。
在实际应用中,由于其时间复杂度为O(n^2),并不适合处理大规模的数据集,但对于小规模的数据集来说是一个简单而有效的排序方法。
输入十个正整数,把这十个数按由小到大的顺序排列pascal
例3输入十个正整数,把这十个数按由小到大的顺序排列。
将数据按一定顺序排列称为排序,排序的算法有很多,其中选择排序是一种较简单的方法。
分析:要把十个数按从小到大顺序排列,则排完后,第一个数最小,第二个数次小,……。
因此,我们第一步可将第一个数与其后的各个数依次比较,若发现,比它小的,则与之交换,比较结束后,则第一个数已是最小的数(最小的泡往下冒)。
同理,第二步,将第二个数与其后各个数再依次比较,又可得出次小的数。
如此方法进行比较,最后一次,将第九个数与第十个数比较,以决定次大的数。
于是十个数的顺序排列结束。
例如下面对5个进行排序,这个五个数分别为8 2 9 10 5。
按选择排序方法,过程如下:初始数据:8 2 9 10 5第一次排序:8 2 9 10 59 2 8 10 510 2 8 9 510 2 8 9 5第二次排序:10 8 2 9 510 9 2 8 510 9 2 8 5第三次排序:10 9 8 2 510 9 8 2 5第四次排序:10 9 8 5 2对于十个数,则排序要进行9次。
源程序如下:program ex5_2;var a:array[1..10]of integer;i,j,t:integer;beginwriteln('Input 10 integers:');for i:=1 to 10 do read(a[i]);{读入10个初始数据}readln;for i:=1 to 9 do{进行9次排序}beginfor j:=i+1 to 10 do{将第i个数与其后所有数比较}if a[i]<a[j] then {若有比a[i]大,则与之交换}begint:=a[i];a[i]:=a[j];a[j]:=t;end;write(a[i]:5);end;end.给数组赋值的常用函数:fillchar(a,sizeof(a),0) :是把A数组的每个单元赋值为0。
输入10个数,用“起泡法”对10个数排序(由小到大)
输入10个数,用“起泡法”对10个数排序(由小到大)。
“起泡法”算法:以六个数9、8、5、4、2、0为例。
第1趟比较(p83,图6.1)第2趟比较(p84,图6.2)第1趟比较后,剩5个数未排好序;两两比较5次第2趟比较后,剩4个数未排好序;两两比较4次第3趟比较后,剩3个数未排好序;两两比较3次第4趟比较后,剩2个数未排好序;两两比较2次第5趟比较后,全部排好序;两两比较1次算法结论:对于n个数的排序,需进行n-1趟比较,第j趟比较需进行n-j次两两比较。
程序流程图:(用两层嵌套循环实现)程序:设需排序的数有10个,定义数组大小为11,使用a[1]~a[10]存放10个数,a[0]不用。
main()int a[11]; /* 用a[1]~a[10], a[0]不用*/int i,j,t;/* i,j作循环变量,t作两两比较的临时变量*/printf("input 10 numbers:\n");for(i=1;i<11;i++)scanf("%d",&a[i]);/* 输入10个整数*/printf("\n");for(j=1;j<=9;j++) /* 第j趟比较*/for(i=1;i<=10-j; i++) /* 第j趟中两两比较10-j次*/if (a[i] > a[i+1]) /* 交换大小*/{ t = a[i]; a[i] = a[i+1]; a[i+1] = t; }printf("the sorted numbers:\n");for(i=1;i<11;i++)printf("%d",a[i]);}。
C语言经典例题
例题1 .用起泡法对10个整数按升序排序。
方法一 # include <stdio.h>main(){int a[10],i,j,t;printf("Please input 10 numbers: ");for(i=0;i<10;i++)scanf("%d",&a[i]);for(j=0;j<9;j++)for(i=0;i<9-j;i++)if(a[i]>a[i+1]){ t=a[i];a[i]=a[i+1];a[i+1]=t;}printf("The sorted numbers: ");for(i=0;i<10;i++)printf("%d ",a[i]);printf("\n");}方法二 # include <stdio.h>main(){int a[10],i,j,k,t,n=10;printf("Please input 10 numbers:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(a[k]<a[j])k=j;if(k!=i){ t=a[k]; a[k]=a[i]; a[i]=t; } }printf("The sorted numbers: ");for(i=0;i<10;i++)printf("%d ",a[i]);printf("\n");}例题2,求1!+2!+3!+…………..+20!(用子函数实现求阶乘)。
解:#include<stdio.h>Vioid main(){Float sum(int i);int s=0;Int I;For(i=1;i<=20;i++)S+=sum(i);Printf(“%f”,s);}Float sum(int i){Float f=1;Int j;For(j=1;j<=i;i++)f*=j;return(f);}例题3..输入两个正整数a和n求a+aa+…+aaaaa┉┉的和。
用“起泡法”对输入的10个数字按由小到大顺序排列
8.11写一函数,用起泡法对输入的10个字符按由小到大顺序排列2008-01-0816:45/*运行结果为:请输入1个字符串:chins ungle排序后字符串为:c eghil nnsu.*/#inclu de <s tdio.h>#i nclud e <st ring.h>#d efine N 10void sort(char str[]){int i,j,t;for(i=1;i<N;i++)//总共进行N-1次冒泡运算for(j=0;j<N-i;j++)//第一次N-1个回合,第二次N-2个回合,最后一次即第N-1次一个回合if(str[j]>str[j+1]){t=str[j];s tr[j]=str[j+1];str[j+1]=t;}}ma in(){cha r str[100];do{pri ntf("请输入1个字符串:\n");scanf("%s",str);}w hile(strle n(str)!=10);so rt(st r);p rintf("排序后字符串为:%s.\n",str);}#i nclud e <st dio.h>voi d mai n(){int a[10];i nt i,j,tem p;p rintf("请输入10个数:");for(i=0;i<10;i++) scan f("%d",&a[i]);for(i=0;i<10;i++) for(j=i+1;j<10;j++) if(a[i]>a[j]) {t emp=a[i];a[i]=a[j];a[j]=t emp; }for(i=0;i<10;i++) prin tf("%d\t",a[i]);} #i nclud e <st dio.h>vo id ma in(){in t i,j, te mp;int e lemen t[10];in t *st art,*end;print f("\n请输入10个数:\n ");for(i = 0;i <10;i++){ scan f("%d", &e lemen t[i]);}s tart= ele ment; /* s tart指针指向数组的第一个元素 */end = el ement + 10; /*end 指针指向数组的最后一个元素 */ pri ntf("\n原始数组:\n");/* 输出原始数组*/f or(;s tart< end;star t++){ prin tf("%d ", *sta rt);}print f("\n\n排序后的数组:\n");/*输出排序后的数组*/s tart=eleme nt;for(i = 10;i >0;i--){for(j =10 -i;j > 0;j--){if(*(start + j-1) >*(sta rt+j)){ temp = *(start + j-1); *(start + j-1) =*(sta rt+j); *(st art+j) = t emp;}}}for(s tart= ele ment;start < en d;sta rt++) { prin tf("%d ", *sta rt);}p rintf("\n");}。
程序改错题汇总
程序改错题汇总1、用"起泡法"对连续输入的十个字符排序后按从小到大的次序输出.2、分别统计字符串中大写字母和小写字母的个数。
3、求1到10的阶乘的和。
4、判断m是否为素数,若是返回1,否则返回0。
5、用选择法对数组中的n个元素按从小到大的顺序进行排序。
6、求一个3行4列矩阵的外框的元素值之和。
7、以下程序把两个数按由大到小的顺序输出来。
8、求1到20的阶乘的和。
9、判断字符ch是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。
(指针)10、已知一个数列从第0项开始的前三项分别为0、0、1,以后的各项都是其相邻的前三项的和。
下列给定程序中,函数fun的功能是:计算并输出该数列的前n项的平方根之和sum,n的值通过形参传入。
11、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数都是多少12、编写函数fun计算下列分段函数的值:x*x+x x<0且x≠-3f(x)= x*x+5x 0≤x<10且x≠2及x≠3x*x+x-1 其它13、请编写函数fun,对长度为8个字符的字符串,将8个字符按降序排列。
14、实现交换两个整数的值。
15、读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里的“单词”是指由空格隔开的字符串)。
16、先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。
17、计算数组元素中值为正数的平均值(不包括0)。
18、将s所指字符串中出现的、t1所指子串全部替换成t2所指子字符串,所形成的新串放在w 所指的数组中。
在此处,要求t1和t2所指字符串的长度相同。
19、将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A, z转换为a),其它字符不变。
20、在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),后输出矩阵第一行与第三行元素之积,并在fun()函数中输出。
描述将10个数按从大到小顺序排列的基本思路与算法流程。
描述将10个数按从大到小顺序排列的基本思路与算法流程。
将10个数按从大到小顺序排列的基本思路是采用排序算法,其中最常用的算法是冒泡排序和快速排序。
冒泡排序的基本思路是依次比较相邻的元素,如果前一个元素比后一个元素大,则交换它们的位置,每次遍历都会将待排序序列中最大的元素放置在序列的末尾。
具体流程如下:
1. 从序列的第一个元素开始,比较相邻的元素。
2. 如果前一个元素比后一个元素大,则交换它们的位置。
3. 对整个序列进行一次遍历后,最大的元素会被放置在序列的末尾。
4. 对剩余的n-1 个元素进行遍历,重复上述操作直到整个序列有序。
快速排序的基本思路是选取一个基准元素,将序列中所有小于基准元素的元素放置在基准元素的左侧,所有大于或等于基准元素的元素放置在右侧,然后对左右两侧的序列分别进行递归排序。
具体流程如下:
1. 选择一个基准元素(通常是序列的第一个元素)。
2. 从左到右找到第一个大于或等于基准元素的元素,从右到左找到第一个小于基准元素的元素,交换这两个元素。
3. 重复上述操作直到左指针大于等于右指针。
4. 将基准元素和左指针所指向的元素交换位置,此时基准元素左侧的元素都小于基准元素,右侧的元素都大于或等于基准元素。
5. 递归地对左侧和右侧的子序列进行排序,直到整个序列有序。
无论是冒泡排序还是快速排序,都需要对整个序列进行一次遍历,所以它们的时间复杂度都是O(n^2)。
在实际应用中,可以选择其他的排序算法,如堆排序、归并排序等,以提高排序效率。
冒泡排序的算法详解
数作升序排序。
/*冒泡排序算法的运作如下: 1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该
会是最大的数。 3.针对所有的元素重复以上的步骤,除了最后一个。 4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
1
2
3
4
5
6
7
8
数 据
38
49
65
97
76
13
27
49
序 号
1
2
3
4
5
6
7
8
数 据
38
49
65
97
76
13
27
49
97>76, 交换位置
序 号
1
2
3
4
5
6
7
8
数 据
38
49
65
76
97
13
27
49
序 号
1
2
3
4
5
6
7
8
数 据
38
49
65
76
97
13
27
49
97>13, 交换位置
序 号
1
2
3
4
5
6
7
8
数 据
38
49
65
76
13
97
27
49
序 号
1
2
3
数学实验课程全部实验答案
主要涉及的内容有:最基本的矩阵运算(填空),线性方程组(左乘右乘问题)、积分函数、符号变量定义及结果输出形式、多项式回归函数输出结果分析、线性回归函数输出结果分析、多项式的线性运算等相关内容。
实验一:(1)用起泡法对10个数由小到大排序. 即将相邻两个数比较,将小的调到前头. function bubble_sortA=[10 5 64 8 464 35 14 666 57 784]; l=length(A); for i=1:l-1 for j=i+1:l if A(i)>A(j) t=A(i); A(i)=A(j); A(j)=t; end end end B=A实验结果: >> bubble_sort B =5 8 10 14 35 57 64 464 666 784 (2)有一个4*5矩阵,编程求出其最大值及其所处的位置. function findmax(A) a=max(max(A)) [x,y]=find(A==a) 实验结果:>> findmax([54 8 64 999;5496 88 97 6;554 686 5666 655;878 5 87 5454;588 544 5466 3364]) a =5666 x = 3 y = 3 (3)编程求∑=201!n nfunction f=fun3(n) s=1;while n<=20 s=s*n n=n+1; end>> f=fun3(1) f =2.4329e+018(4)有一函数y xy x y x f 2sin ),(2++=,写一程序,输入自变量的值,输出函数值. function f=fun4(x,y) f=x^2+sin(x*y)+2*y end 实验结果: >> f=fun4(2,3) f = 9.7206 f = 9.7206 实验二:1. 绘制如下几种数学曲线(并调制a,b,c,观察图形的变化)(1) 笛卡尔曲线213t atx +=,2213t at y +=(axy y x 333=+) >> syms x y>> a=[1 2 3 4];>> f1=x^3+y^3-3*a(1)*x*y; >> f2=x^3+y^3-3*a(2)*x*y; >> f3=x^3+y^3-3*a(3)*x*y; >> f4=x^3+y^3-3*a(4)*x*y;>> subplot(2,2,1); ezplot(f1) >> subplot(2,2,2);ezplot(f2) >> subplot(2,2,3);ezplot(f3) >> subplot(2,2,4);ezplot(f4)(2) 蔓叶线221t at x +=,231t at y +=(x a x y -=32)>> a=[1 2 3 4];>> f1=y^2-(x^3)/(a(1)-x); >> f2=y^2-(x^3)/(a(2)-x); >> f3=y^2-(x^3)/(a(3)-x); >> f4=y^2-(x^3)/(a(4)-x);>> subplot(2,2,1); ezplot(f1) >> subplot(2,2,2); ezplot(f2) >> subplot(2,2,3);ezplot(f3) >> subplot(2,2,4);ezplot(f4)(3) 星形线t a x 3cos =,t a y 3sin =(323232a y x =+) >> t=0:0.1:2*pi; >> a=[1 2 3 4];>> x1=a(1)*(cos(t).^3); >> y1=a(1)*(sin(t).^3); >> subplot(2,2,1); >> plot(x1,y1)>> x2=a(2)*(cos(t).^3); >> y2=a(2)*(sin(t).^3);>> subplot(2,2,2);plot(x2,y2) >> x3=a(3)*(cos(t).^3); >> y3=a(3)*(sin(t).^3);>> subplot(2,2,3);plot(x3,y3) >> x4=a(4)*(cos(t).^3); >> y4=a(4)*(sin(t).^3);>> subplot(2,2,4);plot(x4,y4)(4) 心形线)cos 1(θ+=a r >> a=[1 2 3 4];>> theta=0:0.1:2*pi;>> r1=a(1)*(1+cos(theta)); >> r2=a(2)*(1+cos(theta));>> r3=a(3)*(1+cos(theta)); >> r4=a(4)*(1+cos(theta));>> subplot(2,2,1);polar(r1,theta) >> subplot(2,2,2);polar(r2,theta) >> subplot(2,2,3);polar(r3,theta) >> subplot(2,2,4);polar(r4,theta)(5) 圆的渐开线)cos (sin ),sin (cos t t t a y t t t a x -=-= >> syms x y >> a=[1 2 3 4];>> x1=a(1).*(cos(t)-t.*sin(t)); >> x2=a(2).*(cos(t)-t.*sin(t)); >> x3=a(3).*(cos(t)-t.*sin(t)); >> x4=a(4).*(cos(t)-t.*sin(t)); >> y1=a(1).*(sin(t)-t.*cos(t)); >> y2=a(2).*(sin(t)-t.*cos(t)); >> y3=a(3).*(sin(t)-t.*cos(t)); >> y4=a(4).*(sin(t)-t.*cos(t)); >> subplot(2,2,1);plot(x1,y1) >> subplot(2,2,2);plot(x2,y2) >> subplot(2,2,3);plot(x3,y3) >> subplot(2,2,4);plot(x4,y4)2.(2)绘制球面4222=++z y x 与柱面1,1,1222222=+=+=+z y z x y x 的图像。
C语言基础题
第一期:1. 输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身,例如:153是一水仙花数,因为153=1+125+27.2. 一个数如果恰好等于它的因子之和,这个数就称为“完数”,例如:6的因子是1,2,3,而6=1+2+3因此6是“完数”。
编程序找出1000之内的所有完数,并按下面格式输出其因子:6 its factors are 1,2,33. 有一个分数序列2/1,3/2,5/3,8/5,13/8,21/13,…求出这个数列的前20相之和。
4.一个球从100M高度自由下落,每次落地后反跳回原高度的一半,再落下,再反弹,求它在第10次落地时,共经过多少米,第10次反弹多高。
5.猴子吃桃问题。
猴子第一天,摘下若干个桃子,当即吃了一半,还不过瘾,有多吃了一个。
第二天早上又将剩下的桃子吃掉一半,有多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第十天早上想再吃时,就只剩一个桃子了。
求第一天共摘了多少个桃。
6.两个乒乓球队进行比赛,各出3人。
甲队为A,B,C;乙队X,Y,Z。
以抽签决定比赛名单。
有人向队员打听比赛的名单,A说他不和X比,C说他不和X,Z比,请编程找出3队赛手的名单。
7.将一个二维数组行和列的元素互换,存到另一个数组中。
原始二位数组手动输入,行和列自定。
8.输出以下的杨辉三角形(要求输出15行)11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 19.输出“魔方阵”。
所谓魔方阵就是指这样的方阵,它的每一行,每一列和对角线之和均相等。
例如三阶魔方阵为:8 1 64 9 2要求输出1~n2的自然数构成的魔方阵。
10.找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。
也可能没有鞍点。
第二期:1.有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。
如果该数不在数组中,则输出“无此数”。
数学建模大作业题目
(1) 用起泡法对10个数由小到大排序. 即将相邻两个数比较,将小的调到前头. (10个数字自己选择,方法要一般)(2)有一个45⨯矩阵,编程求出其绝对值最大值及其所处的位置.(用abs 函数求绝对值)(3)编程求201!n n =∑ ( 分别用for 和while 循环)(4)一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下. 求它在第10次落地时,共经过多少米?第10次反弹有多高?(5)有一函数2(,)sin 2f x y x xy y =++ ,写一程序,输入自变量的值,输出函数值,并画出其图像,加上图例和注释. (区间自理)(6) 建立一个脚本M 文件将向量a,b 的值互换。
(7) 某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price 来表示): price<200 没有折扣; 200≤price<500 3%折扣; 500≤price<1000 5%折扣; 1000≤price<2500 8%折扣; 2500≤price<5000 10%折扣;5000≤price 14%折扣;输入所售商品的价格,求其实际销售价格。
(用input 函数)(9) 画出分段函数222 1y 1 122 1 2x x x x x x x ⎧<⎪=-≤<⎨⎪-+≥⎩的图像,并求分段函数在任意几点的函数值。
(用hold on 函数)(10) 给定5阶方阵,求方阵的行列式、特征值、迹、上三角元素的和。
(11) 输入40个数字,按照从小到大的顺序排列输出。
(12) 把当前窗口分成四个区域,在每个区域中分别用不同的颜色和线形画sin ;tan y x y x ==,x y e =和31y x x =++的图像。
(区间自理)(13) 对于,AX B YA B ==,如果⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=753467294A ,⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=282637B ,,求解X,Y;(14) 如果⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=753467294A ,242679836B ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦,求1122,*,.*,,,,T A B A B A B AB A B A A ---。
C语言学案冒泡和选择排序
个元素位置
(3)重复上述过程,共经过n-1趟冒泡排序后,排序结束
用简单选择法对10个数排序
排序过程:
(1)首先通过n-1次比较,从n个数中找出最小的,将它与第一个数
交换—第一趟选择排序,结果最小的数被安置在第一个元素位置上
(2)再通过n-2次比较,从剩余的n-1个数中找出关键字次小的记录,
将它与第二个数交换—第二趟选择排序
用起泡法对10个数排序(由小到大)
排序过程:
(1)比较第一个数与第二个数,若a[0]>a[1],则交换;然后比较第二
个数与第三序,结果最大的数被安置在最后一个元素位置上
(2)对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在第n-1
C语言冒泡法排序解释
1 6 3 9 4 i为0, j为i+1=4,a[i](a[0])<a[j]( a[2]) 不换j++。 内循环第一轮完成 。 结果为: 1 6 3 9 4
第二轮:外循环i为1, 内循环j为i+1~4(以数组 元素个数是5为例)。
a[1] a[2] a[3] a[4]
6 3
9 4
未排序时的情形
3 6 9 4 i为1, j为i+1=2,a[i](a[1])>a[j]( a[2]) 交换j++。 3 6 9 4 i为1, j为i+1=3,a[i](a[1])<a[j]( a[3]) 不换j++。 3 6 9 4 i为1, j为i+1=4,a[i](a[0])<a[j]( a[2]) 交换j++。
/*以上是输出排序后数组*/
冒泡法排序解释
用冒泡法对数组中10个整数按由小到大排序。 题目分析: 所谓冒泡法就是先将10个数中第一个数分别与 其后的每一个数进行比较,若其后的数小于第一个 数,则进行对换。如此继续进行,直至第一轮结束。 这时最小的数就被交换到第一个数的位置,再 进行第二轮比较,在进行第二轮比较时,由于外循 环的控制变量i增1,内循环的比较是从第二个数开 始(第一个数已被交换成最小的数,再不参加比 较)。以后,如此类推,直到排序完毕。(据分析此 法需用二重循环)
第一轮:外循环i为0, 内循环j为i+1~4(以数组元 素个数是5为例)。 a[0] a[1] a[2] a[3] a[4]
3
6
19Biblioteka 4未排序时的情形3 6 1 9 4 1 6 3 9 4 1 6 3 9 4
i为0, j为i+1=1,a[i](a[0])<a[j]( a[1]) 不换j++。 i为0, j为i+1=2,a[i](a[0])>a[j]( a[2]) 交换j++。 i为0, j为i+1=3,a[i](a[0])<a[j]( a[2]) 不换j++。
C语言技能考试题目-程序改错
题号:1功能:用起泡法对10个整数从小到大排序。
/**********FOUND**********/void sort(int x,int n){ int i,j,k,t;for(i=0;i<n-1;i++)/**********FOUND**********/for(j=0;j<n-i;j++)/**********FOUND**********/if(x[i]>x[i+1]){t=x[j];x[j]=x[j+1];x[j+1]=t; }}main(){ int i,n,a[100];printf("please input the length of the array:\n");scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&a[i]);/**********FOUND**********/sort(n,a);printf("output the sorted array:\n");for(i=0;i<=n-1;i++)printf("%5d",a[i]);printf("\n");}答案:1).void sort(int *x,int n) 或void sort(int x[],int n)2).for(j=0;j<n-1-i;j++) 或for(j=0;n-1-i>j;j++) 或for(j=0;j<n-(1+i);j++) 或for(j=0;n-(1+i)>j;j++) 或for(j=0;j<=n-2-i;j++)3). if(x[j]>x[j+1]) 或if(x[j+1]<x[j])4). sort(a,n);题号:2功能:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。
C语言经典例题
例题1 .用起泡法对10个整数按升序排序。
方法一# include <stdio.h>main(){int a[10],i,j,t;printf("Please input 10 numbers: ");for(i=0;i<10;i++)scanf("%d",&a[i]);for(j=0;j<9;j++)for(i=0;i<9-j;i++)if(a[i]>a[i+1]){ t=a[i];a[i]=a[i+1];a[i+1]=t;}printf("The sorted numbers: ");for(i=0;i<10;i++)printf("%d ",a[i]);printf("\n");}方法二# include <stdio.h>main(){int a[10],i,j,k,t,n=10;printf("Please input 10 numbers:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(a[k]<a[j])k=j;if(k!=i){ t=a[k]; a[k]=a[i]; a[i]=t; } }printf("The sorted numbers: ");for(i=0;i<10;i++)printf("%d ",a[i]);printf("\n");}例题2,求1!+2!+3!+…………..+20!(用子函数实现求阶乘)。
解:#include<stdio.h>Vioid main(){Float sum(int i);int s=0;Int I;For(i=1;i<=20;i++)S+=sum(i);Printf(“%f”,s);}Float sum(int i){Float f=1;Int j;For(j=1;j<=i;i++)f*=j;return(f);}例题3..输入两个正整数a和n求a+aa+…+aaaaa┉┉的和。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
str[j+1]=t;
}
}
main()
{
char str[100];
do
{
printf("请输入1个字符串:\n");
scanf("%s",str);
}
while(strlen(str)!=10);
sort(str);
printf("排序后字符串为:%s.\n",str);
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
for(i=0;i<10;i++)
printf("%d\t",a[i]);
}
#include <stdio.h>
void main()
{
int i, j, temp;
int element[10];
int *start, *end;
printf("\n请输入10个数:\n ");
for(i = 0;i < 10;i++)
{
scanf("%d", &element[i]);
if(*(start + j-1) > *(start+j))
{
temp = *(start + j-1);
*(start + j-1) = *(start+j);
*(start+j) = temp;
}
}
}
for(start = element;start < end;start++)
{
printf("%d ", *start);
}
printf("\n");
}
8.11写一函数,用起泡法对输入的10个字符按由小到大顺序排列2008-01-08 16:45/*运行结果为:
请输入1个字符串:
chinsungle
排序后字符串为:ceghilnnsu.
*/
#include <stdio.h>
#include <string.h>
#define N 10
{
printf("%d ", *start);
}
printf("\n\n排序后的数组:\n");
/* 输出排序后的数组 */
start=element;
for(i = 10;i > 0;i--)
{
for(j = 10 - i;j > 0;j--)
{
}
start = element; /* start 指针指向数组的第一个元素 */
end = element + 10; /* end 指针指向数组的最后一个元素 */
printf("\n原始数组:\n");
/* 输出原始数组 */
for(;start < end;start++)
}
#include <stdio.h>
void main()
{
int a[10];
int i,j,temp;
printf("请输入10个数:");
for(i=0;i<10;i++)
scanf("%d",ห้องสมุดไป่ตู้a[i]);
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
void sort(char str[])
{
int i,j,t;
for(i=1;i<N;i++)//总共进行N-1次冒泡运算
for(j=0;j<N-i;j++)//第一次N-1个回合,第二次N-2个回合,最后一次即第N-1次一个回合
if(str[j]>str[j+1])
{
t=str[j];