二、程序题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<stdio.h>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<stdio.h>#include<string.h>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<stdio.h>#include<malloc.h>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<stdio.h>#include<string.h>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<stdio.h>#include<string.h>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<stdio.h>#include<string.h>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<stdio.h>#include<string.h>Myswap(char *a){unsigned int i = 0;unsigned int j = 0;char temp;for(i = 0; i<strlen(a)-1; i++){for(j = i+1; j<strlen(a); 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 <stdlib.h>#include <stdio.h>#include <time.h>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;}(注:专业文档是经验性极强的领域,无法思考和涵盖全面,素材和资料部分来自网络,供参考。