输入10个数,用“起泡法”对10个数排序
- 格式:doc
- 大小:15.00 KB
- 文档页数:1
1有3个整数a,b,c,由键盘输入,输出其中最大的数.#include<stdio.h>void main(){int a,b,c;printf("输入三个数:");scanf("%d%d%d",&a,&b,&c);if(a>b&&a>c)printf("最大值为:%d",a);else if(b>a&&b>c)printf("最大值为:%d",b);elseprintf("最大值为:%d",c);}2给出一百分制成绩,要求输出成绩等级‘A’、‘B’,‘C’,‘D’,‘E’。
90分以上为‘A’,80~89为‘B’,70~79为‘C’,60~69为‘D’,60分以下为‘E’。
#include<stdio.h>void main(){float grade;scanf("%f",&grade);if (grade>=90&&<=100)printf("A");else if(grade>=80&&<90)printf("B");else if("grade>=70&&grade<80)printf("C");else if(grade>=60&&<70)printf("D");elseprintf(("E");}3. 输入两个正整数m和n,求其最大公约数和最小公倍数。
(辗转相除法)#include <stdio.h>main(){int a,b,m,n,temp;printf("请输入两个整数:\n");scanf("%d%d",&m,&n);if(m<n){temp=m;m=n;n=temp;}a=m;b=n;while(b!=0){temp=a%b;a=b;b=temp;}printf("最大公约数是:%d\n",a);printf("最小公倍数是:%d\n",n*m/a);}4、计算100至999之间有多少个数,其各位数字之和是5。
c语言期末考试题及其答案一选择题(7分,每小题0.5分)1.C语言源程序的基本单位是()。
A过程B函数C子程序D标识符2.下列程序的输出结果是()。
main(){inta=7,b=5;printf(\}A5B1C0D不确定值3.假设变量a,b均为整型,表达式(a=5,b=2,a>ba++:b++,a+b)的值是()。
A7B8C9D24.设a为int型变量,执行下列赋值语句后,a的取值分别是()。
a=125.534;a=(int)125.521%4;a=5<<2;A125,31,1B125,1,20C125,31, 20D125.534,2,205.设有如下程序段,下面描述中正确的是()。
intk=10;while(k=0)k=k-1;A循环执行一次B循环是无限循环C循环体语句一次也不执行D循环体语句执行一次6.以下程序的输出结果为()。
inti;voidprt(){for(i=5;i<8;i++)printf(\printf(\}main(){for(i=5;i<=8;i++)prt();}A某某某B某某某某某某某某某某某某C某某某某某某D某某某7.在C语言程序中,以下说法正确的是()。
A函数的定义可以嵌套,但函数的调用不可以嵌套B函数的定义不可以嵌套,但函数的调用可以嵌套C函数的定义和函数的调用都不可以嵌套D函数的定义和函数的调用都可以嵌套8.以下函数调用语句中含有()个实参。
func((e1,e2),(e3,e4,e5));A2B3C5D语法错误9.以下程序的输出结果为()。
#defineADD(某)某某某main(){inta=4,b=6,c=7,d=ADD(a+b)某c;printf(\}Ad=70Bd=80Cd=140Dd=70010.已知职工记录描述如下,在TurboC中,系统为变量w分配()字节的空间。
tructworker{intno;charname[20];chare某;union{intday;intmonth;intyear;}birth;}w;A29B20C25D611.设有以下定义,值为5的枚举常量是()。
冒泡排序是一种简单但效率较低的排序算法,它重复地走访要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。
这个过程持续重复,直到没有相邻的元素需要交换,也就是说该数列已经排序完成。
下面,我们将演示用冒泡排序对一个包含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),并不适合处理大规模的数据集,但对于小规模的数据集来说是一个简单而有效的排序方法。
程序填空1.从键盘上输入两个复数的实部与虚部,求出并输出它们的和、积、商。
2.以下程序的功能如(图1)。
|x+1| x<0f= 2x+1 0≤x≤5sinx+5 x>53.输入三个整数x,y,z,请把这三个数由小到大输出。
4.统计读入的整数数据中大于零的整数个数和小于零的整数个数。
用输入零来结束输入,程序中用变量i统计大于零的整数个数,用变量j统计小于零的整数个数。
5.以每行5个数输出500以内能被7或17整除的偶数,并求出其和。
6.以下程序不借助任何中间变量把a、b的值进行交换。
7.输出斐波那契(Fibonacci)数列(1,1,2,3,5,8,13……)的前20项。
8.求 1-3+5-7+……-99+101 的值。
9.输出如下形式的乘法表。
1*1=12*1=2 2*2=43*1=3 3*2=6 3*3=9……9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=8110.实现求解下面的式子的结果,请填空将程序补充完整。
s=1*2+2*3+3*4+…+20*21。
11.以下程序的功能是分别求出一批非零整数中的偶数、奇数的平均值,用零作为终止标记。
12.求任一整数x的各位数字之和。
13.以下程序的功能是求两个非负整数的最大公约数和最小公倍数。
14.以下程序的功能如(图1)。
15.算式:?2*7?=3848中缺少一个十位数和一个个位数。
编程求出使该算式成立时的这两个数,并输出正确的算式。
16.输出100到1000之间的各位数字之和能被15整除的所有数,输出时每10个一行。
17.下面的程序是求1!+3!+5!+……+n!的和.18.请编程序打印如下图形。
$$$$$$$$$$$$$$$19.打印出如下图案(菱形)*************************20.从键盘上输入20个元素的值存入一维数组m中,然后将下标为(0. 2. 4. 6. 8. 10……18)的元素值赋值给数组n,最后输出数组n的内容。
1.输入一个字符串,将其按给定的长度n格式化并输出,若n=0,则输出原字符串输入输入一个字符串输出格式化并输出样例输入asdfasdf3样例输出asdfasdf提示#include<stdio.h>#include<string.h>int main(){int n,m,i,j;char a[10000];gets(a);scanf("%d",&m);n=strlen(a);if(m==0)puts(a);else{for(i = 0; i < n; i += m){if(a[i] == '\0')return 0;for(j = 0; j < m; ++ j){if(a[i + j] == '\0'){printf("\n");return 0;}printf("%c", a[i + j]);}printf("\n");}}return 0;}2.题目描述输入一个长度不超过100 的字符串,删除串中的重复字符。
输入输入要检查的字符串,长度不超过100个字符。
例如:abacaeedabcdcd。
输出删除重复字符后的字符串。
例如:abced。
样例输入saas样例输出sa提示#include <stdio.h>int main(){char a[100];int i,j,m;scanf("%s",a);for(i=0;a[i]!=0;i++)for(j=i+1;a[j]!=0;j++)if(a[i]==a[j]){for(m=j;a[m]!=0;m++){a[m]=a[m+1];}j--;}puts(a);return 0;}3.请编写C程序,输入5个不同的且为字符格式的学生编号,将其先由大到小排序,再将最大的学生编号和最小的学生编号互换位置,然后输出此时5位学生的编号。
输入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]);}。
实现十个任意整数从小到大的排序算法
十个任意整数从小到大排序是指把十个任意整数从小到大组织起来,使得从第一个数据到最后一个数据,每个数据都比前一个数据大。
在排序过程中主要使用比较、交换及移位操作。
一般来说,能够将N个数据排序,只需要N-1次比较和交换操作,它的复杂度即为O(n),循环次数也只需要N-1次,效率比较高。
冒泡排序:
冒泡排序法就是把数据中从头部到尾部,相邻的元素两两比较,如果后一个元素比前一个元素的关键字小,则交换它们的位置,不断地进行比较,最终能够实现十个任意整数从小到大的排序。
快速排序:
快速排序法是将数据分割成两个部分,将小于基准值的元素放到基准值元素的左边,把大于基准值的元素放到右边,把基准值元素放到中间,然后再对两边的子序列进行基准值分割,最终能够实现十个任意整数从小到大的排序。
归并排序:
归并排序法就是将序列拆分成若干子序列,然后将拆分后的子序列排序,最后将排好序的子序列合并成一个整体,最终能够实现十个任意整数从小到大的排序。
插入排序:
插入排序法就是在序列中插入新元素,根据元素的大小将该元素插入到已有元素的正确位置中,完成元素的替换,从而得到一个新的已排序序列,最终能够实现十个任意整数从小到大的排序。
选择排序:
选择排序法就是在给出的序列中,从头部到尾部一次查找,找出一个最小值,并把这个值放到序列的最前面,然后再跳到下一个未查找元素,重复以上操作,直到完成排序,最终能够实现十个任意整数从小到大的排序。
堆排序:
堆排序法就是将待排序序列构造成一个大顶堆(即从最大堆调整),然后将堆顶元素与末尾元素进行交换,将末尾元素放入到堆中,重复以上操作,则能够实现十个任意整数从小到大的排序。
C语言考试题一、单项选择题(每题2分,共40分)1、一个算法应该具有“确定性”等五个特性,下面对另外4个特性的描述中错误的是(B)A、有零个或多个输入B、有零个或多个输出C、有穷性D、可行性2、C语言中最简单的数据类型包括(B)A、整型、实型、逻辑型B、整型、实型、字符型C、整型、字符型、逻辑型D、整型、实型、逻辑型、字符型3、设a和b均为double型变量,且a=5。
5、b=2。
5,则表达式(int)a+b/b的值是(D)A、 6.500000B、 6C、 5。
500000D、 6。
0000004、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是(B)A、 INPUT x、y、z;B、 scanf("%d%d%d",&x,&y,&z);C、 scanf(”%d%d%d”,x,y,z);D、 read("%d%d%d”,&x,&y,&z);5、设 int x=1, y=1;表达式(!x||y——)的值是(B)。
A、0B、1C、2D、—16、对两个字符数组a和b进行初始化char a[]="ABCDEF”;char b[ ]={'A',’B’,'C’,’D','E’,'F'}; 则以下叙述正确的是(D)。
A、a与b数组完全相同B、a与b长度相同C、a和b中都存放字符串D、a数组比b数组长度长7、为了避免在嵌套的条件语句if――else中产生二义性,c语言规定:else子句总是与(B)配对.A、缩排位置相同的ifB、其之前最近的ifC、其之后最近的ifD、同一行上的if8、下面不正确的字符串常量是(A)A、 'abc’B、”12'12”C、 "0”D、 " ”9、以下错误的if语句是(C).A、 if(x〉y) z=x;B、 if(x= =y) z=0;C、 if(x!=y) printf(”%d",x) else printf("%d”,y);D、 if(x<y) { x++;y-—;}10、若有说明:int a[3][4];则对a数组元素的非法引用是( D)。
(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 函数) (8) 已知y ,22221111123y n=++++,当n=100时,求y 的值。
(9)画出分段函数2221y 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) 对于,AXB YA B==,如果⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=753467294A ,⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=282637B ,,求解X,Y ;(14) 如果⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=753467294A ,242679836B ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦,求1122,*,.*,,,,T A B A B A B AB A B A A ---。
程序改错-------------------------------------1题目:在一个一维整型数组中找出其中最大的数及其下标。
程序中共有4条错误语句,请改正错误。
-----------------*/#define N 10/**********FOUND**********/float fun(int *a,int *b,int n){int *c,max=*a;for(c=a+1;c<a+n;c++)if(*c>max){max=*c;/**********FOUND**********/b=c-a;}return max;}main(){int a[N],i,max,p=0;printf("please enter 10 integers:\n");for(i=0;i<N;i++)/**********FOUND**********/scanf("%d",a[i]);/**********FOUND**********/m=fun(a,p,N);printf("max=%d,position=%d",max,p);}-------------------------------------『错误答案』:1 int fun(int *a,int *b,int n)2 *b=c-a;}3 scanf("%d",&a[i]);4 max=fun(a,&p,N);/*-----------------------------------2题目:用起泡法对10个整数从小到大排序。
程序中共有4条错误语句,请改正错误。
-------------------------------------/**********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]);sort(a,n);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)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++)3 if(x[j]>x[j+1]) 或if(x[j+1]<x[j])-------------------------------------3题目:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。
描述将10个数按从大到小顺序排列的基本思路与算法流程。
将10个数按从大到小顺序排列的基本思路是采用排序算法,其中最常用的算法是冒泡排序和快速排序。
冒泡排序的基本思路是依次比较相邻的元素,如果前一个元素比后一个元素大,则交换它们的位置,每次遍历都会将待排序序列中最大的元素放置在序列的末尾。
具体流程如下:
1. 从序列的第一个元素开始,比较相邻的元素。
2. 如果前一个元素比后一个元素大,则交换它们的位置。
3. 对整个序列进行一次遍历后,最大的元素会被放置在序列的末尾。
4. 对剩余的n-1 个元素进行遍历,重复上述操作直到整个序列有序。
快速排序的基本思路是选取一个基准元素,将序列中所有小于基准元素的元素放置在基准元素的左侧,所有大于或等于基准元素的元素放置在右侧,然后对左右两侧的序列分别进行递归排序。
具体流程如下:
1. 选择一个基准元素(通常是序列的第一个元素)。
2. 从左到右找到第一个大于或等于基准元素的元素,从右到左找到第一个小于基准元素的元素,交换这两个元素。
3. 重复上述操作直到左指针大于等于右指针。
4. 将基准元素和左指针所指向的元素交换位置,此时基准元素左侧的元素都小于基准元素,右侧的元素都大于或等于基准元素。
5. 递归地对左侧和右侧的子序列进行排序,直到整个序列有序。
无论是冒泡排序还是快速排序,都需要对整个序列进行一次遍历,所以它们的时间复杂度都是O(n^2)。
在实际应用中,可以选择其他的排序算法,如堆排序、归并排序等,以提高排序效率。
主要涉及的内容有:最基本的矩阵运算(填空),线性方程组(左乘右乘问题)、积分函数、符号变量定义及结果输出形式、多项式回归函数输出结果分析、线性回归函数输出结果分析、多项式的线性运算等相关内容。
实验一:(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 的图像。
第六章数组一、选择题1.在C语言中,引用数组元素时,其数组下标的数据类型允许是。
(0级)A)整型常量B)整型常量或整型表达式C)整型表达式D)任何类型的表达式2.以下对一维整型数组a的正确说明是。
(0级)A)int a(10); B)int n=10,a[n];C)int n; scanf(“%d”,&n); int a[n];D ) #define SIZE 10 int a[SIZE];以下能对一维数组a进行正确初始化的语句是。
(0级)A)int a[10]=(0,0,0,0,0);B)int a[10]={ };C)int a[ ]={0};D)int a[10]={10*1};4.不是给数组的第一个元素赋值的语句是。
(0级)A)int a[2]={1}; B) int a[2]={1*2};C)int a[2];scanf (“%d”,a);D)a[1]=1;5.下面程序的运行结果是。
(1级)main(){int a[6],i;for(i=1;i<6;i++){ a[i]=9*(i-2+4*(i>3))%5;printf("%2d",a[i]);}}A)-4 0 4 0 4 B)-4 0 4 0 3 C)-4 0 4 4 3 D)-4 0 4 4 06.下列定义正确的是。
(1级)A)static int a[]={1,2,3,4,5} B) int b[]={2,5}C) int a(10) D) int 4e[4]7.若有说明int a[][4]={0,0};则下列叙述不正确的是。
(0级)A) 数组a的每个元素都可以得到初值0B) 二维数组a的第一维的大小为1C) 因为对二维数组a的第二维大小的值除以初值个数的商为1,故数组a的行数为1D) 只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值8.设有char str[10],下列语句正确的是。
⾼级语⾔程序设计(⼀)《⾼级语⾔程序设计(⼀)》实践环节考核指导⼀、类型课程实验考核⼆、⽬的与要求⾼级语⾔程序设计是⼀门理论与实践密切结合、实践性较强的课程。
本考核主要达到两个⽬的:1、检查学⽣掌握C语⾔基本语法的⽔平;2、检查学⽣以C语⾔开发、调试简单程序的能⼒。
三、考核环境软件要求:Windows 7操作系统、Visual C++ 6.0英⽂版或Dev C++5.0。
考试平台:⾼等教育⾃学考试上机考试系统(计算机信息管理专业、计算机⽹络专业)四、考核内容1、C语⾔的简单命令、函数和基本的语法规则;2、循环、分⽀语法规则(特别是复杂条件式的书写规则);3、掌握⼀维数组和⼆维数组的定义及使⽤⽅法;4、函数的设计和调⽤⽅法;5、熟练掌握结构型的定义和使⽤⽅法。
五、考核时间与形式采⽤闭卷形式,考⽣⾸先从考核服务器下载考核⽤⽂件到d盘⽂件夹下,所有答案都直接做在⽂件夹内,最后根据考试要求把答案⽂件上传到考核服务器上(上传的答案⽂件不要压缩打包)。
请认真阅读“考试系统”使⽤说明。
六、注意事项1.遵守考场纪律,因计算机引起的问题请及时与监考⽼师联系;2.考⽣不要等到最后才上传答案⽂件,以免因最后时刻交卷⼈员太多造成服务器响应速度低;上传⽂件前务必关闭相应的软件。
例如上传Word⽂档前应关闭Word系统。
3.如果发现⽆法登录系统,请及时与监考⽼师联系,由监考⽼师协助处理。
4.本系统采取了⼀定安全性措施,系统⾃动记录考⽣的登录时间和登录微机(登录时间取⾃服务器)。
⼀旦发现同⼀时间段内有两台微机同时以某个考号登录系统,将按作弊处理。
⼀旦发现某台微机在考试期间⽤两个准考证号登录过考试系统。
也按照作弊处理。
5.考试完毕,主动删除D盘上的相关⽂件夹。
6.注意保护⾃⼰的⼆次登录密码,不要被其他考⽣知道。
7.考⽣在考试前如果使⽤了模拟环境,请于考试开始前关闭所有浏览器窗⼝,然后重新登录考试服务器。
七、题型与要求请参考以下样题。
程序改错题汇总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()函数中输出。
“起泡法”算法:以六个数9、8、5、4、2、0为例。
第1趟比较(p83,图)第2趟比较(p84,图)
第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]);
}。