二、程序题
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; } 农业农村工作知识试题及答案