抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

数组类型编程练习题

一维数组

编程练习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
#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
3
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;
}

评论




2019-2022 覃浩的博客 鄂ICP备2021017381号-1 正在载入...

PoweredHexo
HostedGitHub & Coding
DNSDNSPod
CDN腾讯云CDN
PictureBed腾讯云CDN
ThemeVolantis