一维数组
编程练习6.1
输入 10 个数到数组 t 中,求最小值及最小值在数组 t 中的下标。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| #include <stdio.h> int main(void) { printf("****************************** 编程练习6.1 ******************************\n"); int i; int j; int min; int t[10]; printf("请输入10个数:\n"); for(i = 0;i < 10;i ++) { scanf("%d",&t[i]); } min = t[0]; for(i = 1;i <= 10;i ++) { if(t[i] < min) { min = t[i]; j = i; } } printf("最小值:%d\t下标:%d\n",min,j); return 0; }
|
编程练习6.2
输入 10 个数到数组 t 中,再输入 x ,如果有与 x 相等的数组元素,输出该数组元素的下标;否则,输出 -1。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| #include <stdio.h> int main(void) { printf("****************************** 编程练习6.2 ******************************\n"); int i; int n; int x; int flag; int temp; int t[10]; printf("请输入10个数:\n"); for(i = 0;i < 10;i ++) { scanf("%d",&t[i]); } printf("请输入x的值:"); scanf("%d",&x); for(i = 0;i < 10;i ++) { if(t[i] == x) { flag = 0; temp = i; break; } else { flag = 1; } } if(flag == 1) { printf("-1\n"); } else { printf("%d\n", temp); } printf("\n"); return 0; }
|
编程练习6.3
输入 10 个数到数组 t 中,按降序排序,输出排序结果。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| #include <stdio.h> int main(void) { printf("********************************* 编程练习6.3 *********************************\n"); int i; int j; int temp; int t[10]; printf("请输入10个数:\n"); for(i = 0;i < 10;i ++) { scanf("%d",&t[i]); } for(i = 1;i <= 10;i ++) { for(j = 0;j < 10-i;j ++) { if(t[j] < t[j + 1]) { temp = t[j]; t[j] = t[j+1]; t[j+1] = temp; } } } for(i = 0;i < 10;i ++) { printf("%d\t",t[i]); } printf("\n"); return 0; }
|
编程练习6.4
输入 10 个整数到数组 t 中(数组长度为偶数),将数组 t 中的数组元素倒置,输出倒置以后的数组 t 。例如,数组 t 中 10 个数组元素依次为 1 、3 、5、 7、 9 、 8、 6、 4 、 2 、 0,倒置以后 10 个数组元素依次为 0、 2、 4、 6、 8、 9、 7、 5、 3、 1。已知声明变量和数组声明为“ int i , tmp, t[10]; “,要求不再声明其他的变量或数组。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| #include <stdio.h> int main(void) { printf("*********************************** 编程练习6.4 ***********************************\n"); int i; int tmp; int t[10]; printf("请输入10个数:\n"); for(i = 0;i < 10;i ++) { scanf("%d",&t[i]); } for(i = 0;i < 10;i ++) { tmp = t[9-i]; printf("%d\t",tmp); } printf("\n"); return 0; }
|
编程练习6.5
输入 9 个整数到数组 t 中(数组长度为奇数),将数组 t 中的数组元素倒置,输出倒置以后的数组 t 。例如,数组 t 中 10 个数组元素依次为 2、 4、 6、 8、 9、 7、 5、 3、 1 ,倒置以后 9 个数组元素依次为 1、 3、 5、 7、 9、 8、 6、 4、 2 。已知声明变量和数组声明为“ int i , tmp, t[9]; “,要求不再声明其他的变量或数组。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #include <stdio.h> int main(void) { int i,tmp,t[9]; printf("请输入9个数:\n"); for(i = 0;i < 9;i ++) { scanf("%d",&t[i]); } for(i = 0;i < 9;i ++) { tmp = t[8-i]; printf("%d\t",tmp); } printf("\n"); return 0; }
|
编程练习6.6
已知数组声明为“ int a[10] = {0,10,20,30,40,50,60,70,80,90}; “ ,10个数组元素是按升序排列的。输入一个整数 n ,如果没有与 n 相等的数组元素,输出 -1 ;否则,删除与 n 相等的数组元素,要求剩余的九个数组元素是按升序排列的,输出数组。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| #include <stdio.h> int main(void) { int a[10] = {0,10,20,30,40,50,60,70,80,90}; int n,i,j,tip,flag; printf("请输入整数n:"); scanf("%d",&n); for(i = 0;i < 10;i ++) { if(a[i] == n) { flag = 1; tip = i; } } if(flag != 1) { printf("-1\n"); } if(flag == 1) { for(j = 0;j < 10;j ++) { if(tip != j) { printf("%5d",a[j]); } } } printf("\n"); return 0; }
|
二维数组
编程练习6.7
求 3 行 5 列二维数组中的最小值,及最小值在数组中的行号和列号,并输出。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| #include <stdio.h> int main(void) { printf("****************************** 编程练习6.7 ******************************\n"); printf("85\t73\t66\t98\t100\n99\t78\t56\t68\t69\n73\t58\t66\t52\t83\n"); int i,j,min,line,row; int a[3][5] = { {85,73,66,98,100}, {99,78,56,68,69}, {73,58,66,52,83}}; min = a[0][0]; for(i = 0;i < 3;i ++) { for(j = 0;j < 5;j ++) { if(min > a[i][j]) { min = a[i][j]; line = i + 1; row = j + 1; } } } printf("最小值:%d\t行号:%d\t\t列号:%d\n",min,line,row); return 0; }
|
编程练习6.8
求 3 行 5 列二维数组中每列数组元素的最小值,并输出。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #include <stdio.h> int main(void) { printf("********************************* 编程练习6.8 *********************************\n"); printf("82\t77\t93\t86\t99\n72\t66\t45\t53\t30\n100\t97\t88\t67\t98\n"); int i,j,min; int a[3][5] = {{82,77,93,86,99},{72,66,45,53,30},{100,97,88,67,98}}; for(i = 0;i < 3;i ++) { min = a[i][0]; for(j = 0;j < 5;j ++) { if(min > a[i][j]) { min = a[i][j]; } } printf("第%d行的最小值:%d\n",i,min); } return 0; }
|
编程练习6.9
求 3 行 3 列二维数组主对角线(从左上角到右下角)上元素之和。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| #include <stdio.h> int main(void) { printf("***************************** 编程练习6.9 *****************************\n"); printf("1\t2\t3\n4\t5\t6\n7\t8\t9\n"); int i,j,sum = 0; int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; for(i = 0;i < 3;i ++) { for(j = 0;j < 3;j ++) { if(i == j) { sum += a[i][j]; } } } printf("sum = %d\n",sum); return 0; }
|
编程练习6.10
二维数组 a (3 行 4 列)表示矩阵 A ,二维数组 b (4 行 5 列)表示矩阵 B ,计算矩阵 A 与 矩阵 B 的成绩。
数组与字符串
编程练习6.11
不调用库函数 strcpy,将以下数组 s1 中的字符串复制到数组 s2 中,并输出数组 s2 中的字符串。
1 2
| char s1[80], s2[80]; gets(s1);
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #include <stdio.h> int main(void) { int i = 0; char s1[80],s2[80]; gets(s1); while(s1[i] != '\0') { s2[i] = s1[i]; i ++; } printf("%s\n",s2); return 0; }
|
编程练习6.12
输入 10 个字符串,输出最大的字符串。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| #include <stdio.h> #include <string.h> int main(void) { printf("******************************** 编程练习6.12 ********************************\n"); char ch[10][100]; char max[100]; int i,j,n; printf("请输入10个字符串:\n"); for(i = 0;i < 10;i ++) { scanf("%s",ch[i]); } strcpy(max,ch[0]); for(i = 1;i < 10;i ++) { if(strcmp(ch[i],max) > 0) { strcpy(max,ch[i]); } } printf("max:%s\n",max); return 0; }
|
编程练习6.13
判断数组 s 中的字符串是不是回文。一个字符串从左向右读和从右向左读是一样的,该字符串是回文。例如,字符串 “abcdedcba” 是回文。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| #include <stdio.h> #include <string.h> int main(void) { int i,j,flag = 0; char s[80]; gets(s); j = strlen(s) - 1; for(i = 0;i < strlen(s);i ++) { if(s[i] != s[j]) { flag = 1; printf("%s 不是回文\n",s); break; } j --; } if(flag != 1) { printf("%s 是回文\n",s); } return 0; }
|
编程练习6.14
输出数组 s 中字符串的子串,子串从 s[begin] 开始,长度为 len 。
1 2 3 4
| char s[80]; int begin, len; gets(s); scanf("%d%d", &begin, &len);
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| #include <stdio.h> int main(void) { printf("****************************** 编程练习6.14 ******************************\n"); char s[80]; int begin, len; gets(s); scanf("%d%d", &begin, &len); for(;len > 0;len --,begin ++) { printf("%c",s[begin]); } printf("\n"); return 0; }
|