编程题:
40.请编写函数fun,该函数的功能是:移动字符串中的内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+l到最后的字符移到字符串的前部。
例如,字符串中原有的内容为ABCDEFGHIJK,m的值为3,移动后,字符串中的内容应该是DEFGHIJKABC。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
#include
#define N 80
void fun(char *w, int m)
{ char t;
t=*w;*w=*(w+m-1);*(w+m-1)+t;
if(m>1)
fun(w+1,m-2);
else return;
}
main()
{
char a[N]= “ABCDEFGHIJK”;
int m;
printf(“The original string:\n”);
puts(a);
printf(“\n\nEnter m: “);
scanf(“%d”,&m);
fun(a,m);
printf(“\nThe string after moving:\n”);
puts(a);
printf(“\n\n”);
}
41.请编写函数fun,该函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放在一个字符串中。
例如,若二维数组中的数据为:
则字符串中的内容应是WSHWSHWSHWSH。
注意;部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
#define M 3
#define N 4
void fun(char (*s)[N], char *b)
{ int i,j,k=0;
for(i=0;i for(j=0;j b[k++]=s[j][i]; b[k]=’\0′; } main() { char a[100],w[M][N]={{‘w’,'w’, ‘w’,'w’},{‘S’,'S’,'S’,'S’},{‘H’,'H’,'H’,'H’}}; int i,j; printf(“The matrix:\n”); for(i=0; i { for(j=0;j printf(“%3c”,w[i][j]); printf(“\n”); } fun(w,a); printf(“The A string:\n”); puts(a); printf(“\n\n”); } 改错题: 4.下列给定程序中,fun函数的功能是:分别统计字符串中大写字母和小写字母的个数。 例如,给字符串S输入:AaaaBBb123CCccccd,则应输出结果:upper=5,lower=9。 请改正程序中的错误,使它能计算出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include #include /********found********/ void fun(char *s,int a,int b) { while(*s) { /********found********/ if (*s>=’A'&&*s<=’Z') a++; /********found********/ if(*s>=’a'&&*s<=’z') b++; s++; } } main() { char s[100]; int upper=0, lower=0; clrscr(); printf(“\nPlease a string : “); gets(s); fun(s,&upper,&lower); printf(“\n upper=%d lower=%d\n”, upper,lower); } 7.下列给定程序中函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。 请修改程序中的错误,使它能计算出正确的结果。 注意:不要改动main函数,不得增行和删行,也不得更改程序的结构! 试题程序: #include #define N 20 void fun(int a[],int n) { int i,j,t,p; for(j=0;j { /********found********/ p=j