指针经典练习题及答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

二、程序题

1、计算字符串中子串出现的次数。要求:用一个子函数subString()实现,

参数为指向字符串和要查找的子串的指针,返回次数。

2、加密程序:由键盘输入明文,通过加密程序转换成密文并输出到屏幕上。

算法:明文中的字母转换成其后的第4个字母,例如,A变成E(a变成e),

Z变成D,非字母字符不变;同时将密文每两个字符之间插入一个空格。

例如,China转换成密文为G l m r e。

要求:在函数change中完成字母转换,在函数insert中完成增加空格,

用指针传递参数。

3、字符替换。要求用函数replace将用户输入的字符串中的字符t(T)都替换为e(E),

并返回替换字符的个数。

4、编写一个程序,输入星期,输出该星期的英文名。用指针数组处理。

5、有5个字符串,首先将它们按照字符串中的字符个数由小到大排列,

再分别取出每个字符串的第三个字母合并成一个新的字符串输出

(若少于三个字符的输出空格)。要求:利用字符串指针和指针数组实现。

6、定义一个动态数组,长度为变量n,用随机数给数组各元素赋值,

然后对数组各单元排序,定义swap函数交换数据单元,要求参数使用指针传递。7、实现模拟彩票的程序设计:随机产生6个数字,与用户输入的数字进行比较,

输它们相同的数字个数(使用动态内存分配)。

/*1、计算字符串中子串出现的次数。要求:用一个子函数subString()实现, 参数为指向字符串和要查找的子串的指针,返回次数。*/

#include

int subString(char *a, char *b)

{

int i = 0;

int j = 0;

int m = 0;

char *p = b;

while(*a)

{

while(*a)

{

if(*a == *b)

{

break;

}

a++;

}

while(*b)

{

if(*a != *b)

精选文档

{

return m;

}

else

{

m = m;

}

b++;

a++;

}

// a++;

b = p;

++m;

}

return m;

}

int main()

{

char a[100];

char b[100];

printf("请输入字符串a:");

gets(a);

printf("请输入字符串b:");

gets(b);

printf("%d", subString(a, b));

return 0;

}

/*2、加密程序:由键盘输入明文,通过加密程序转换成密文并输出到屏幕上。

算法:明文中的字母转换成其后的第4个字母,例如,A变成E(a变成e),

Z变成D,非字母字符不变;同时将密文每两个字符之间插入一个空格。

例如,China转换成密文为G l m r e。

要求:在函数change中完成字母转换,在函数insert中完成增加空格,

用指针传递参数。 */

#include

#include

void change(char *p)

{

while(*p)

{

*p = *p+4;

p++;

}

}

精选文档

int main()

{

char a[2][100] = {""};

printf("请输入明文:");

gets(a[0]);

change(a[0]);

strcpy(a[1], a[0]);

printf("密文为:");

printf("%s\n", a[1]);

return 0;

}

/*3、字符替换。要求用函数replace将用户输入的字符串中的字符t(T)都替换为e(E),并返回替换字符的个数。 */

#include

#include

int Myreplace(char *p)

{

int i = 0;

while(*p)

{

if(*p == 't'||*p == 'T')

{

*p = *p-15;

i++;

}

p++;

}

return i;

}

int main()

{

int m;

char a[100];

char *p = a;

printf("请输入字符串:");

gets(a);

m = Myreplace(a);

printf("%s\n", p);

printf("%d\n", m);

return 0;

}

精选文档

/*4、编写一个程序,输入星期,输出该星期的英文名。用指针数组处理。*/

#include

#include

void fun(char (*a)[100], char *b, char *c, int *m)

{

int i = 0;

int j = 0;

while(c[i])

{

if(c[i] == *m)

{

strcpy(b, a[i]);

break;

}

i++;

}

}

int main()

{

char a[][100] = {"yi", "er", "san", "si", "wu", "lui", "qi"};

char c[100] = {1, 2, 3, 4, 5, 6, 7};

char b[100] = "";

// char *p = b;

int m;

scanf("%d", &m);

fun(a, b, c, &m);

printf("%s\n", b);

return 0;

}

第二种方法

/*4、编写一个程序,输入星期,输出该星期的英文名。用指针数组处理。*/

#include

#include

void fun(char (*a)[100], char *b, char *c, int *m)

{

while(*c)

{

if(*c == *m)

相关文档
最新文档