1.改写strlen strcpy strcmp strcat
代码:
1 #include <stdio.h>
2 #include <string.h>
3
4 char strcpy1()
5 {
6
7 char str[100] = "";
8 char str1[100];
9 int count = 0;
10 int i = 0;
11 printf("请输入一个字符串:");
12 scanf("%s",str);
13 while(str[i] != '\0')
14 {
15 str1[i] = str[i];
16 i++;
17 }
18 printf("%s\n",str1);
19 }
20 char strlen1()
21 {
22 char str[100];
23 int i = 0;
24 printf("请输入一个字符串:");
25 scanf("%s",str);
26 while(str[i] != '\0')
27 {
28 i++;
29 }
30 printf("%d\n",i);
31 }
32
33 int strcmp1()
34 {
35 char str1[100];
36 char str2[100];
37 printf("str1=");
38 scanf("%s",str1);
39 printf("str2=");
40 scanf("%s",str2);
41
42 int i = 0;
43
44 while (str1[i] == str2[i]) {
45 if (str1[i] == '\0') {
46 break;
47 }
48 i++;
49 }
50 int result = str1[i] - str2[i];
51 if (result < 0) {
52 printf("str1 < str2\n");
53 } else if (result > 0) {
54 printf("str1 > str2\n");
55 } else {
56 printf("str1 = str2\n");
57 }
58
59 }
60 int strcat1()
61 {
62 char str1[100];
63 char str2[100];
64 printf("str1=");
65 scanf("%s",str1);
66 printf("str2=");
67 scanf("%s",str2);
68 int len1 = strlen(str1);
69 int len2 = strlen(str2);
70 int len = len1 + len2;
71 char str3[len];
72
73 for (int i = 0; i < len1; i++) {
74 str3[i] = str1[i];
75 }
76 for (int i = 0; i < len2; i++) {
77 str3[len1 + i] = str2[i];
78 }
79
80 printf("%s\n", str3);
81 }
82
83 int main(int argc, const char *argv[])
84 {
85
86 // strcpy1();
87 // strlen1();
88 // strcmp1();
89 strcat1();
90 return 0;
91 }
运行结果:
2.现有一个字符串char str[32] = "a1pbv8";要求编写一段代码实现字符串倒置,str中存储的内容为"8vbp1a"
代码:
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[]
{
char str[32];
char temp;
printf("请输入字符串:");
scanf("%s",str);
for(int i=0;i<strlen(str)/2;i++)
{
temp = str[i];
str[i] = str[strlen(str)-1-i]
str[strlen(str)-1-i] = temp;
}
printf("%s\n",str);
return 0;
}
运行结果:
3.求二维数组的最大值,并输出最大值对应的行号和列号。
代码:
1 #include <stdio.h>
2 int main(int argc, const char *argv[])
3 {
4 int rows, cols;
5 printf("请输入二维数组: ");
6 scanf("%d %d", &rows, &cols);
7
8 int arr[rows][cols];
9 for (int i = 0; i < rows; i++) {
10 for (int j = 0; j < cols; j++) {
11 scanf("%d", &arr[i][j]);
12 }
13 }
14
15 int max = arr[0][0];
16 int maxRow = 0;
17 int maxCol = 0;
18
19 for (int i = 0; i < rows; i++) {
20 for (int j = 0; j < cols; j++) {
21 if (arr[i][j] > max) {
22 max = arr[i][j];
23 maxRow = i;
24 maxCol = j;
25 }
26 }
27 }
28
29 printf("max = %d\n", max);
30 printf("row = %d column = %d\n", maxRow, maxCol);
31
32 return 0;
33 }
运行结果:
4.输出一个十行的杨辉三角
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
代码:
#include <stdio.h>
int main(int argc, const char *argv[])
{
int rows;
printf("请输入杨辉三角形的行数:");
scanf("%d", &rows);
int coef = 1;
for (int i = 0; i < rows; i++) {
for (int j = 0; j <= i; j++) {
if (j == 0 || i == 0) {
coef = 1;
} else {
coef = coef * (i - j + 1) / j;
}
printf("%4d", coef);
}
printf("\n");
} return 0;
}
运行结果: