指针经典练习题及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)