day10 homework
This commit is contained in:
parent
07358e7842
commit
6d70975834
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
// 以下程序的输出结果是( )
|
||||
// A)17 B)18 C)19 D)20
|
||||
// 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;
|
||||
}
|
|
@ -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;
|
||||
}
|
Loading…
Reference in New Issue