冒泡法:
49 38 65 97 76 13 27 第一趟:38 49 65 76 13 27 97 第二趟排序后 38 49 65 13 27 76 97 第三趟排序后 38 49 13 27 65 76 97 第四趟排序后 38 13 27 49 65 76 97 第五趟排序后 13 27 38 49 65 76 97 第六趟排序后 13 27 38 49 65 76 97
#include
{ int a[10]; int i,j,z;
printf(\输入10个数:\\n\
for(i=0;i<10;i++) { scanf(\ }
for(j=0;j<9;j++) for(i=0;i<9-j;i++) if(a[i]>a[i+1]) { z=a[i]; a[i]=a[i+1]; a[i+1]=z; } printf(\ for(i=0;i<10;i++) { printf(\从小到大*/ } }
选择排序 原理:
49 38 65 97 76 13 27
第一趟排序后 13 [38 65 97 76 49 27] 第二趟排序后 13 27 [65 97 76 49 38]
第三趟排序后 13 27 38 [97 76 49 65] 第四趟排序后 13 27 38 49 [76 97 65] 第五趟排序后 13 27 38 49 65 [97 76] 第六趟排序后 13 27 38 49 65 76 [97] 最后排序结果 13 27 38 49 49 65 76 97
#define x 5 void main() {
int a[x],i,j,d;
printf(\for(i=0;i
d=a[i]; a[i]=a[j]; a[j]=d; }
for(i=0;i 1、定义一个名为a的单精度实型一维数组,长度为4,所有元素的初值均为0的数定义语句是________________ 【答案】方法一:float a={0.0,0.0,0.0,0.0}; 方法二:float a[]={ 0.0,0.0,0.0,0.0}; 方法三:float a= {0.0}; 方法四: static float ; 2 下列数组定义语句中,错误的是() ① char x[1]=‘a‘; ②auto char x[1]={0}; ③ static char x[l]; ④ char x[l]; 【答案】 ① 3 用\冒泡排序法\对n个数据排序,需要进行n一1 步。其中第k步的任务是:自下而上,相邻两数比较,小者调上;该操作反复执行n-k次。现在假设有4个数据:4、l、3、2要排序,假定4为上、2为下,则利用\冒泡排序法\执行第2步后的结果是_________________。 【答案】 l、2、3、4 4 用\选择排序法\对n个数据排序,需要进行n-1步。其中第k步的任务是:在第k个数据到第n个数据中寻找最小数,和第k个数据交换。现在假设有4个数据:4、1、3、2要排序,则利用\冒泡排序法\执行第2步后的结果是______________________。 【答案】1、2、3、4 5 下列数组定义语句中,正确的是() ① int a[][]={1,2,3,4,5,6}; ② char a「3]=‘a‘,‘b‘; ③ int a[]= {1,2,3,4,5,6}; ④ static int a[][]={{1,2,3},{4,5,6}}; 【答案】③ 6 定义一个名为\的字符型数组,并且赋初值为字符串\的错误语句是() ①char s[]={‘1‘,‘2‘,‘3‘,‘“0 ‘}; ②char s「」={\; ③char s[]={\ ④ char s={‘1‘,‘2‘,‘3‘};【答案】③ 7 设有下列数据定义语句,则数组元素x[i]的值是__________________。 int i= 3,x={ 1,2,3}; 【答案】0 8 设有下列数据定义语句,则 puts(&s[0][0])的输出结果是__________; puts(s[0]〕 输出结果是_____________。 char s={{‘l‘,‘\0‘},{\,\,\\0\; 【答案】 1 9 设有下列数据定义语句: char a[10]={\,\,\,\; 则 puts(strcat(a[1],a[2]))的输出结果是________________; puts(strcpy(a[0],a[2]))的输出结果是________________。 【答案】2244 33 10 设有下列数据定义语句: char str[10]={\,\; 则printf(\%d\,strcmp(str[1],str[0]))的输出结果是__________; printf(\%d\,strcmp(strlwr(str[1]),str[0])的输出结果是_______。 [答案]某个小于0的任意整数 0 11 下列程序的功能是读取10个实数,然后依次输出前l个实数和、前2个实数和、…、前9个实数和、前10个实数和。请填写程序中缺少的语句。 main() {float f[10],X=0.0; int i; for(i=0;i<10;i++) scanf(\% f\, &f[i]); for(i=1;i<=10;i++) {_______________________ printf(\%2d----%f\n\,i,x); } } 【答案】 x=x+f[i-l]; 或 x+=f[i-l]; 12 运行下列程序的输出结果是() ① 111ll ②llll ③lll ④ 222 main() {int a[]={1,2,3,4, 5 },i; for( i=1;i< 5; i++) printf(\% 1d\, a[i]- a[i一1]); } 【答案】② 13 下列程序的功能是输入一个5行5列的实数矩阵,然后求出其中的最大数和最小数,并且对调这两个数后,再输出,请填写程序中缺少的语句。 main() { float f[ 5],max, x; int i,j,max_l,max_J,min_i,min_J; for(i=0;i<5;i++) for(j=0;j<5;j++) {scanf(\%f\,&x); f[i][j]=x; } max=min=f[0][0]; max_i=max_i=min_i=min_j= 0; for(i= 0;i<5;i++) for(j=0;j<5;j++) {if(max<f[i][j]) max=f[i][j],max_i=i,max_j=j; if(min>f[i][j]) ___________________ } f[max_i][max_j]=min; f[min_i][min_j]=max; for(i=0;i<5;i++) {printf(\\n\); for(j=0;j<5;j++) printf(\%8.2f\,f[i][j]); } } 【答案】min=f[i][j],min_i=i,min_j=j 14 阅读下列 程序,写出程序运行后的输出结果。 main() {int al[]={1,3,6,7,100},a2[]={2,4,5,8,100},a[10],i,j,k; i=j=0; for(k=0;k<8;k++) if(a1[i] a[k]=a2[j++]; for (k= 0; k< 8; k++ ) printf(\%1d\,a[k]); } 【答案】 12345678 15 阅读下列程序,写出程序运行后的输出结果。 #include \ main() {char s[20]={\,\,\; int i, k; for( k= 0, i=1; i< 3; i++) if((strcmp(s[k],s[i]))<0) k= i: puts(s「k」); } 【答案】 2347 16 阅读下列程序,写出程序的主要功能。 main() { int i, a[10], x, flag= 0; for(i=0; i<10;i十十) scanf(\%d\,& a [i]); scanf(\%d\,&x); for(i=0;i<10;i++) if( x== a[i]) { flag= i十1; break; } if(flag== 0 ) printf(\\n\); else