的
3-1. 编程,任意输入10个整数,按从小到大的顺序输出。 结果:
输入: 9、7、8、6、7、5,
输出: 5、6、7、7、8、9。 分析:用选择法排序。 main()/* sj1-3-1 */ {int j,k,e,t,a[10];
for(j=0;j<10;j++) scanf(\ for(j=0;j<9;j++) {t=j;
for(k=j+1;k<10;k++) if(a[t]>a[k]) t=k; e=a[t];a[t]=a[j];a[j]=e; } for(k=0;k<10;k++) printf(\ printf(\ }
3-2. 编程,任意输入10个人的成绩,按从大到小的顺序排列。运行程序时,只要输入名次,
计算机就能输出该名次对应的成绩。 结果:
输入: 4、7、3、6、1、5,12,0,23,-1 输入: 4
输出: The 4th is 6
分析:用选择法排序。第n名是a[n-1]。 main()/* sj1-3-2 */ {int j,k,e,t,n,a[10];
for(j=0;j<10;j++) scanf(\printf(“nput a number:\\n”); scanf(“%d”,&n); for(j=0;j<9;j++) {t=j;
for(k=j+1;k<10;k++) if(a[t]>a[k]) t=k; e=a[t];a[t]=a[j];a[j]=e; }
printf(“The %dth is %d\\n”,n,a[n-1]); for(k=0;k<10;k++) printf(\ printf(\ }
3-3. 编程,输入10个人的序号和成绩,对成绩从小到大排序,输出排序后的序号和成绩。 结果:
输入: 1,10 2,9 3,8 4,7 5,6 6,7 7,8 8,9 9,12 10,0
输出:10: 0
5: 6 4: 7 6: 7 3: 8 7: 8
2: 9 8: 9 1: 10 9: 12。
分析:用选择法排序。a[j][0]--序号,a[j][1]--成绩。 main()/* sj1-3-3 */
{int j,k,e,t,a[10][2];
for(j=0;j<10;j++) scanf(\ for(j=0;j<9;j++) {t=j;
for(k=j+1;k<10;k++) if(a[t][1]>a[k][1]) t=k; e=a[t][0];a[t][0]=a[j][0];a[j][0]=e; e=a[t][1];a[t][1]=a[j][1];a[j][1]=e;
}
for(k=0;k<10;k++)
printf(\ printf(\ }
3-4. 编程,输入10个人的序号和成绩,对成绩从从大到小进行排序,输出排序后的序号和
成绩。 结果:
输入: 1,10 2,9 3,8 4,7 5,6 6,7 7,8 8,9 9,12 10,0
输出:9: 12。
1: 10 8: 9 2: 9 7: 8 3: 8 6: 7 4: 7 5: 6 10: 0
分析:用选择法排序。a[j][0]--序号,a[j][1]--成绩。 main()/* sj1-3-4 */
{int j,k,e,t,a[10][2];
for(j=0;j<10;j++) scanf(\ for(j=0;j<9;j++) {t=j;
for(k=j+1;k<10;k++) if(a[t][1]
}
for(k=0;k<10;k++)
printf(\ printf(\ }
3-5. 编程,输入10个整数及其序号,求出10个整数的最大值、次大值、最小值和次小值,
并输出它们原来输入时的序号。
结果:输入:1,15 2.11 3,0 4,7 5,1 6,5 7,7 8,40 9,2 10,23
输出:8: 40 10: 23 3: 0 5: 1
分析:用选择法排序。a[j][0]--序号,a[j][1]--成绩。交换时a[j][0]、a[j][1]一起交换。 main()/* sj1-3-5 */
{int j,k,e,t,a[10][2];
for(j=0;j<10;j++) scanf(\ for(j=0;j<9;j++) {t=j;
for(k=j+1;k<10;k++) if(a[t][1]
}
printf(\ printf(\ }
3-6. 编程,输入10个整数,然后进行查找。输入要查找的整数,若找到,则输出该数在数组
中的下标位置,否则输出“can not found!”。
结果:输入:12 23 43 21 56 7 9 4 33 67(a数组的内容) 56(要找的数) 输出:56=a[4]
65(要找的数) 输出:65 can not found!
分析:用数组存放10个整数,对10个整数循环,输出找到的整数及其在数组中的下标。 main()/* sj1-3-6 */ {int j,n,a[10];
for(j=0;j<10;j++) scanf(\printf(“nput a number:\\n”); scanf(“%d”,&n); for(j=0;j<10;j++)
if(n==a[j]) {printf(“%d=a[%d]\\n”,n,j);break;} if(j>=10) printf(“ %d can not found!\\n”,n);
} 3-7.编程,输入一个字符串并删除其中的指定字符。例如,对于字符串abcdcf,指定删除c,
则结果为:abdf。 结果:输入:abcdcf和c 输出:abdf
分析:输入一个字符串s和要删除的字符ch,从字符串首开始逐个字符检查,每遇ch则将
后面的字符向前移动一个位置覆盖要删字符ch. #include \#include \main()/* sj1-3-7 */ {int j,k;
char a[80],ch; gets(a);
printf(\ scanf(\ j=0;
while(a[j]!='\\0') {if(ch==a[j])
for(k=j;a[k]!='\\0';k++) a[k]=a[k+1]; j++; }
puts(a); }
3-8. 编程,输入一行字符,将其反序后再输出。 结果:输入abcdefg, 输出:gfedcba
分析:输入n个字符到a数组,a[j]与a[n-j-1]互换(j=0,1,2,…,n/2-1)。 #include \#include \main()/* sj1-3-8 */ {int j,k,n; char a[80],ch; gets(a); n=strlen(a);
for(j=0;j a[j]=a[n-1-j]; a[n-1-j]=ch; } puts(a); } 3-9. 编程,输入一行字符,将其中的每个字符从小到大排列后输出。 结果:输入:china 输出: achin 分析:用选择法对字符数组进行排序。 #include \#include \main()/* sj1-3-9 */ {int j,k,t,n; char a[80],e; printf(\ n=strlen(a); for(j=0;j for(k=j+1;k 3-10. 编程,输入一行字符,将其中的每个字符从大到小排列后输出。 结果:输入:china 输出: nihca 分析:用选择法对字符数组进行排序。 #include \#include \main()/* sj1-3-10 */ {int j,k,t,n; char a[80],e; printf(\ n=strlen(a); for(j=0;j for(k=j+1;k 的最小值。二维数组也可能没有鞍点。 结果:⑴ 输入 n=4,m=4 1 2 3 4 5 5 5 5 5 5 5 5 5 5 5 5 输出: 鞍点为a[0][3]=4。 (2)输入 n=4,m=4 5 5 5 5 5 5 5 5 5 5 5 5 0 3 2 1 输出: 鞍点为a[3][1]=3。 分析:找出i行最大值所在的列号k(i=0,1,…,n), 若a[i][k]是k列最小,则a[i][k]是 鞍点。也可能没有鞍点。 main()/* sj1-3-11 */ { int i,j,l,n,m,k,a[20][20]; printf(\ scanf(\输入数组的行数n和列数m */ for(i=0;i