文档库 最新最全的文档下载
当前位置:文档库 › 最新指针经典练习题及答案

最新指针经典练习题及答案

最新指针经典练习题及答案
最新指针经典练习题及答案

二、程序题

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)

{

strcpy(b, *a);

break;

}

c++;

a++;

}

}

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;

}

/*5、有5个字符串,首先将它们按照字符串中的字符个数由小到大排列,再分别取出每个字符串的第三个字母合并成一个新的字符串输出

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

#include

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

{

int i = 0;

int j = 0;

char temp[100];

for(i = 0; i<5; i++)

{

b[i] = strlen(a[i]);

}

for(i = 0; i<4; i++)

{

for(j = i+1; j<5; j++)

{

if(b[i]>b[j])

{

strcpy(temp, a[i]);

strcpy(a[i], a[j]);

strcpy(a[j], temp);

}

}

}

for(i = 0; i<5; i++)

{

if(strlen(a[i])<3)

{

strcat(c, " ");

}

else

{

c[i] = a[i][2];//strcat(c, &a[i][2]);

}

}

}

int main()

{

char a[100][100];

int i = 0;

int b[100] = {""};

char c[100] = "";

for(i = 1; i<6; i++)

{

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

gets(a[i-1]);

}

fun(a, b, c);

for(i = 0; i<5; i++)

{

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

}

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

return 0;

}

/*6、定义一个动态数组,长度为变量n,用随机数给数组各元素赋值,然后对数组各单元排序,定义swap函数交换数据单元,要求参数使用指针传递。*/ #include

#include

Myswap(char *a)

{

unsigned int i = 0;

unsigned int j = 0;

char temp;

for(i = 0; i

{

for(j = i+1; j

{

if(a[i] > a[j])

{

temp = a[i];

a[i] = a[j];

a[j] = temp;

}

}

}

}

int main()

{

char s[100] = "";

int i = 0;

int j = 0;

while(s[i-1] != '\n')

{

s[i] = getchar();

i++;

}

Myswap(s);

for(j = 0; s[j]; j++)

{

printf("%c ",s[j]);

}

printf("\n");

return 0;

}

#include

#include

#include

int fun(int *a, int *b, int *c)

{

int count = 0;

while(*b)

{

if(*b == *a)

{

*c = *b;

count++;

c++;

}

a++;

b++;

}

return count;

}

int main()

{

int i = 0;

int num;

int a[10];

int b[10] = {0};

int c[10] = {0};

for(i = 0; i<6; i++)

{

a[i] = 1+rand()%6;

}

printf("请输入六个数:");

for(i = 0; i<6; i++)

{

scanf("%d", &b[i]);

}

printf("\n");

num = fun(a, b, c);

printf("出奖号码为:");

for(i = 0; i<6; i++)

{

printf("%d ", a[i]);

}

printf("\n");

printf("中奖号码为:");

for(i = 0; c[i]; i++)

{

printf("%d ", c[i]);

}

printf("\n");

printf("中奖个数为:%d\n", num);

return 0;

}

农业农村工作知识试题及答案

相关文档