day10 homework

This commit is contained in:
flykhan 2023-07-15 17:55:35 +08:00
parent 07358e7842
commit 6d70975834
9 changed files with 211 additions and 0 deletions

18
day10/homework/h11.c Normal file
View File

@ -0,0 +1,18 @@
#include <stdio.h>
void fun(char *c, int d)
{
printf("%d\n", *c); // 97
c = c + 1;
printf("%d\n", *c); // 65
d = d + 1;
printf("fun ---> %c, %c\n", *c, d);
}
int main()
{
char a = 'A', b = 'a';
fun(&b, a);
printf("main --> %c, %c\n", a, b);
return 0;
}

16
day10/homework/h11_2.c Normal file
View File

@ -0,0 +1,16 @@
#include <stdio.h>
void fun(char *c, int *d)
{
*c = *c + 1;
*d = *d + 1;
printf("fun ---> %c, %c\n", *c, *d);
}
int main()
{
char a = 'A', b = 'a';
fun(&b, &a);
printf("main --> %c, %c\n", a, b);
return 0;
}

26
day10/homework/h12.c Normal file
View File

@ -0,0 +1,26 @@
// 设计函数int toInt(char *str), 实现将字符串转成数值的功能。 【提示】如 toInt("123") 返回 123
#include <stdio.h>
int toInt(char *str)
{
int n = 0;
while (*str)
{
if (*str < '0' || *str > '9') // 先判断是否是数字
{
return -1;
}
n = n * 10 + *str - '0'; // 将字符转换为数字
str++;
}
return n;
}
int main()
{
char *s = "123";
int n = toInt(s);
printf("%d\n", n);
return 0;
}

28
day10/homework/h14.c Normal file
View File

@ -0,0 +1,28 @@
// 设计函数,给定两个字符串指针,实现将第二字符串的内容拼接到第一个字符串中,并返回第一个字符串指针。
#include <stdio.h>
char *concat(char *dest, char *src)
{
while (*dest) // 找到 dest 的末尾
{
dest++;
}
while (*src) // 将 src 的内容复制到 dest 的末尾
{
*dest = *src;
dest++;
src++;
}
*dest = '\0'; // 最后补上字符串结束符
return dest; // 返回 dest 的首地址
}
int main()
{
char m[128] = "";
concat(m, "disen");
concat(m, ", 666");
printf("%s\n", m); // 输出结果disen, 666
return 0;
}

37
day10/homework/h15.c Normal file
View File

@ -0,0 +1,37 @@
// 设计函数接收一个数值类型的5行3列的二维数组和查找的数值返回数值在二维数组的序号。
// 【提示】第一个元素的序号为0 第二行第一个元素的序号为3
#include <stdio.h>
int find(int (*arr)[3], int num)
{
int *p = arr[0]; // arr[0] == &arr[0][0]
// int *p = &arr[0][0]; // arr[0] == &arr[0][0]
int n = 0;
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 3; j++)
{
// if (arr[i][j] == num)
if (*(p + i * 3 + j) == num) // arr[i][j] == *(p+i*3+j)
{
return n;
}
n++; // 序号加1
}
}
return -1; // 没找到
}
int main()
{
int a[5][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 9, 9},
{10, 11, 12},
{13, 14, 15}};
printf("%d\n", find(a, 9)); // 输出结果7
return 0;
}

25
day10/homework/h4.c Normal file
View File

@ -0,0 +1,25 @@
// 以下程序的输出结果是哪一项 ? ()
// #include <stdio.h>
// main()
// {
// int a[12] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, \* p[4] = {NULL}, i = 0;
// for (i = 0; i < 4; i++)
// p[i] = &a[i\* 3];
// printf("%d\n", *p[3]);
// }
// A.输出项不合法 B.4 C.7 D.10
#include <stdio.h>
int main()
{
int a[12] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12},
*p[4] = {NULL},
i = 0;
for (i = 0; i < 4; i++)
p[i] = &a[i * 3];
printf("%d\n", *p[3]); // 10
return 0;
}

19
day10/homework/h5.c Normal file
View File

@ -0,0 +1,19 @@
// 有以下说明和语句, 则p2 - p1的值为多少 ? int a[10] = {0}, *p1 = NULL, *p2 = NULL;
// p1 = a;
// p2 = &a[5];
// A.5 B.6 C.10 D.没有指针与指针的减法
#include <stdio.h>
#include <stdint.h>
int main()
{
int a[10] = {0},
*p1 = NULL,
*p2 = NULL;
p1 = a;
p2 = &a[5]; // p2 指向 a[5] 的地址
printf("%ld\n", p2 - p1); // 同一个数组的指针相减,得到的是两个指针之间的元素个数
return 0;
}

28
day10/homework/h8.c Normal file
View File

@ -0,0 +1,28 @@
// 以下程序的输出结果是(
// A17 B18 C19 D20
// main()
// {
// int a[] = {2, 4, 6, 8, 10}, y = 1, x = 0, *p = NULL;
// p = &a[1];
// for (; x < 3; x++)
// y += *(p + x);
// printf(“% d\n”, y);
// }
#include <stdio.h>
int main()
{
int a[] = {2, 4, 6, 8, 10},
y = 1,
x = 0,
*p = NULL;
p = &a[1];
for (; x < 3; x++)
y += *(p + x);
printf("%d\n", y);
return 0;
}

14
day10/homework/h9.c Normal file
View File

@ -0,0 +1,14 @@
// 下面程序段的运行结果是_________.char *s = "abcde";
// s += 2;
// printf("%d", s);
// a) cde b)字符'c' c)字符'c'的地址 d)无确定的输出结果
#include <stdio.h>
int main()
{
char *s = "abcde";
s += 2;
printf("%d\n", s); // %d 会将 s 当作 int 输出,但是 s 是 char * 类型,所以会出现不确定的输出结果
return 0;
}