文档库 最新最全的文档下载
当前位置:文档库 › 统计字符出现的次数

统计字符出现的次数

第38套试题
一、 填空题
请补充fun函数,该函数的功能是判断一个数的个位数字和百位数字之和是否等于其十位上的数字,是则返回“yes!”,否则返回”no!”。
主勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
#include
#include
char *fun(int n)
{
int g, s, b;
g = n%10;
s = n/10%10;
b = ___1___;
if ((g+b) == s)
return ___2___;
else
return ___3___;
}
main()
{
int num = 0;
printf("******Input data *******\n ");
scanf("%d", &num);
printf("\n\n\n");
printf("****** The result *******\n ");
printf("\n\n\n%s", fun(num));
}
参考答案:
1.n/100%10 2.”yes!” 3. “no!”
二、 改错题
下列给定程序中,函数fun的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式,例如变量a中的值原为8,b中的值原为3,程序运行后a中的值为3,b中的值为8。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
int fun(int *x, int y)
{
int t;
/********found********/
t = x; x = y;
/********found********/
return (y);
}
main()
{
int a = 3, b = 8;
printf("%d %d\n", a, b);
b = fun(&a, b);
printf("%d %d\n", a, b);
}
参考答案:
1. t = x; x = y;改为 t=*x; *x=y;
2. return y; 改为: return t;
三、 编程题
请编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。
例如,若输入字符串123412132,输入字符1,则输出3。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
#include
#include
#define M 81

int fun(char *ss, char c)
{

}

main()
{
char a[M], ch;
FILE *out;
printf("\nPlease enter a string:");
gets(a);
printf("\nPlease enter a char:");
ch = getchar();
printf("\nThe number of the char is: %d\n", fun(a, ch));
out=fopen ("out.dat", "w");
strcpy(a, "The number of the char is: ");
fprintf(out, "%d", fun(a, ' '));
fclose (out );
}
参考答案:
int fun(char *ss, char c)
{int i,cnt=0;
for(i=0;iif(ss[i]==c)
cnt++;
return cnt;
}
第4套题
一、填空题:
请补充函数fun,它的功能是:计算并输出n(包括n)以内能被3或7整除的所有自然数的倒数之和。
如:在主函数中从键盘给n输入30后,输出为s=1.226323。
请勿改动主函数main()和其它函数中的任何内容,仅在fun函数的横线上填入所编写的若干语句或表达式。
#include
double fun(int n)
{
int i;
double sum = 0.0;
for (i=1; ___1___; i++)
if (i%3==0 ___2___ i%7==0)
sum += ___3___/i;
return sum;
}
main()
{

int n;
double s;
printf("\nInput n: ");
scanf("%d", &n);
s = fun(n);
printf("\n\ns=%f\n", s);
}
参考答案:
1.i<=n 2.|| 3.1.0
二、改错题:
下列给定程序中,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;
printf("\nPlease a string : ");
gets(s);
fun(s, &upper, &lower);
printf("\n upper=%d lower=%d\n", upper, lower);
}
参考答案:
1.void fun(char *s,int a,int b)应改为 void fun(char *s,int *a,int *b)
2.a++ 应改为(*a)++;
3.b++ 应改为(*b)++;
三、编程题:
请编写一个函数Void fun(char *tt,int pp[]),统计在tt字符串中’a’到’z’26个字母各出现的次数,并依次放在pp所指的数组中。
如:当输入字符串abcdefgabcdeabc后,程序的输出结果应为:
33322110000000000000000000
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
# include
# include

void fun(char *tt, int pp[])
{

}

main()
{
char aa[1000];
int bb[26], k;
FILE *out;
printf("\nPlease enter a char string:");
scanf("%s",aa);
fun(aa,bb);
for(k=0;k<26 ; k++)
printf("%d",bb[k]);
printf("\n");
fun("a bosom friend afar brings a distant land near", bb);
out = fopen("out.dat", "w");
for (k = 0; k < 26; k++)
fprintf(out, "%d\n", bb[k]);
fclose(out);
}
参考答案:---------26分
void fun(char *tt, int pp[])
{int i;
for(i=0;i<26;i++)
pp[i]=0;
for(i=0;i<26;i++)
if(*tt!='\0') {pp[*tt-'a']++;tt++;}
}

第44套试题
一.填空题:
请补充fun函数,该函数的功能是:逐个比较a、b两个字符串对应位置中的字符,把ASCII值大或相等的字符依次存放在c数组中,形成一个新的字符串。
例如,若a中的字符串为aBCDeFgH,b中的字符串为:ABcd,则c中的字符串应为:aBcdeFgH.
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
#include
#include
void fun(char *p, char *q, char *c)
{
int k = ___1___;
while (*p ___2___ *q)
{
if (*p < *q)
c[k] = *q;
else
c[k] = *p;
if (*p)
p++;
if (*q)
q++;
k++;
}
}
main()
{
char a[10] = "aBCDeFgH", b[10] = "ABcd", c[80] = {'\0'};
fun(a, b, c);
printf("The string a:");
puts(a);
printf("The string b:");
puts(b);


printf("The result:");
puts(c);
}
参考答案:
1. 0 2. ||
二、改错题:
下列给出程序中,函数fun的功能是:根据形参m的值(2<=m<=9),在m列的二维数组中存放如下所示的数据,由main()函数输出。
例如,若输入2 若输入4
则输出: 则输出:
1 2 | 1 2 3 4
2 4 | 2 4 6 8
| 3 6 9 12
| 4 8 12 16
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删列,也不得更改程序的结果!
#include
#include
#define M 10
int a[M][M] = {0};
/********found********/
fun(int **a, int m)
{
int j, k;
for (j=0; jfor (k=0; k/********found********/
a[j][k] = k*j;
}
main()
{
int i, j, n;
printf(" Enter n:");
scanf("%d", &n);
fun(a, n);
for (i=0; i{
for (j=0; jprintf("%4d", a[i][j]);
printf("\n");
}
}
参考答案:
1. fun(int **a, int m) 改为: fun(int (*a)[M], int m)
2. a[j][k] = k*j; 改为 a[j][k]=(k+1)*(j+1);
三、编程题:
编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。
例如,假定输入的字符串为:asd asasdfg asd as zx67 asd mklo,子字符串为as,则应输出6.
请勿改动逐函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
#include
#include

int fun(char *str,char *substr)
{

}

main()
{
char str[81],substr[3];
int n;
FILE *out;
printf("输入主字符串: ");
gets(str);
printf("输入子字符串: ");
gets(substr);
puts(str);
puts(substr);
n=fun(str,substr);
printf("n=%d\n",n);
out=fopen ("out.dat", "w");
strcpy(str, "asd asasdfg asd as zx67 asd mklo");
strcpy(substr, "as");
fprintf(out, "%d", fun(str, substr));
fclose (out );
}
参考答案:
int fun(char *str,char *substr)
{
int i,cnt=0;
for(i=0;iif(substr[0]==str[i]&&substr[1]==str[i+1])
cnt++;
return cnt;
}
第61套试题
一.填空题:请补充main函数,该函数的功能是:计算每个学生科目的平均分,并把结果保存在数组bb中。
例如,当score[N][M]={{78.5,84,83,65,63},{88,91.5,89,93,95},{72.5,65,56,75,77}}时,三个学生的平均分为:74.7,91.3,69.1。
仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容。
#include
#define N 3
#define M 5
main()
{
int i, j;
static float score[N][M] =
{
{78.5, 84, 83, 65, 63},
{88, 91.5, 89, 93, 95},
{72.5, 65, 56, 75, 77}
};
float bb[N];
for (i=0; i___1___;
for (i=0; i{
for (j=0; j___2___;
bb[i] /= M;
}
for (i=0; iprintf("\nstudent%d\taverage=%5.1f

", i+1, bb[i]);
}
参考答案:1.bb[i]=0 2.bb[i]+=score[i][j]
二、改错题
下列给定程序中,函数fun的功能是:根据整型形参m,计算如下公式的值。
y=1/100*100 + 1/200*200 + 1/300*300 + …. + 1/m*m
例如,若m=2000,则应输出:0.000160。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
/********found********/
fun(int m)
{
double y = 0, d;
int i;
/********found********/
for (i=100, i<=m, i+=100)
{
d = (double)i*(double)i;
y += 1.0/d;
}
return (y);
}
main()
{
int n = 2000;
printf("\nThe result is %lf\n", fun(n));
}
参考答案:
1. fun(int m) 改为 double fun(int m)
2.for中的逗号改为分号
三、编程题
请编写函数fun,该函数的功能是:统计各年龄段的人数,N年龄通过调用随机函数获得,并放在主函数的age数组中;要求函数把0至9岁年龄段的人数放在d[0]中,把10至19岁年龄段的人数放在d[1]中,把20至29岁年龄段的人数放在d[2]中,其余依此类推,把100岁(含100)以上年龄的人数都放在d[10]中,结果在主函数中输出。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
#define N 50
#define M 11

void fun(int *a, int *b)
{

}

double rnd()
{
static t=29, c=217, m=1024, r=0;
r=(r*t+c)%m;
return((double)r/m);
}

main()
{
int age[N], i, d[M];
FILE *out ;
for(i=0; iage[i]=(int)(115*rnd());
printf("The original data :\n");
for(i=0; iprintf((i+1)%10==0?"%4d\n":"%4d",age[i]);
printf("\n\n");
fun( age, d);
out=fopen ("out.dat","w");
for(i=0;i<10;i++)
{
printf("%4d---%4d : %4d\n", i*10, i*10+9, d[i]);
fprintf(out, "%4d---%4d : %4d\n", i*10, i*10+9, d[i]);
}
printf(" Over 100 : %4d\n", d[10]);
fprintf(out, " Over 100 : %4d\n", d[10]);
fclose (out );
}
参考答案:
void fun(int *a, int *b)
{
int i,j;
for(j=0;jb[j]=0;
for(i=0;iif(a[i]>=0&&a[i]<=9)
b[0]+=1;
else if(a[i]>=10&&a[i]<=19)
b[1]+=1;
else if(a[i]>=20&&a[i]<=29)
b[2]+=1;
else if(a[i]>=30&&a[i]<=39)
b[3]+=1;
else if(a[i]>=40&&a[i]<=49)
b[4]+=1;
else if(a[i]>=50&&a[i]<=59)
b[5]+=1;
else if(a[i]>=60&&a[i]<=69)
b[6]+=1;
else if(a[i]>=70&&a[i]<=79)
b[7]+=1;
else if(a[i]>=80&&a[i]<=89)
b[8]+=1;
else if(a[i]>=90&&a[i]<=99)
b[9]+=1;
else
b[10]+=1;
}

相关文档
相关文档 最新文档