全国计算机等级考试二级C语言上机试题(填空题)

余年寄山水
604次浏览
2020年07月28日 17:22
最佳经验
本文由作者推荐

英语是什么-噶怎么读

第 1 题 请补充fun函数,fun函数的功能是求n的阶乘。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。
#include
long fun(int n)
{
if (n > 1)
return (n*fun(n-1));
return 1;
}
main()
{
printf("10!=%ld
", fun(10));
}

第二题
请在函数fun的横线上填写若干表达式,使从键盘上输入一个整数n,输出斐波纳契数列。
斐波纳契数列是一种整数数列,其中每数等于前面两数之和,如:0 1 1 2 3 5 8 13 ……
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。

#include
int fun(int n);
main()
{
int i, n = 0;
scanf("%d", &n);
for (i=0; iprintf("%d ", fun(i));
}
int fun(int n)
{
if (n==0)
return 0;
else if (n==1)
return 1;
else
return fun(n-1)+fun(n-2);
}
第三题
请补充函数fun(char *s),该函数的功能是把字符串中的内容逆置。
例如:字符串中原有的字符串为abcde,则调用该函数后,串中的内容为edcba。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。
#include
#include
#include
#define N 81
void fun(char *s)
{
int i, n = strlen(s)-1;
char t;
for (i=0; i{
t = s[i];
s[i] = s[n];
s[n] = t;
}
}
main()
{
char a[N];
printf("Enter a string:");
gets(a);
printf("The original string is:");
puts(a);
fun(a);
printf("
");
printf("The string after modified:");
puts(a);
}

第四题
请补充函数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; i<=n; i++)
if (i%3==0 || i%7==0)
sum += 1.0/i;
return sum;
}
main()
{
int n;
double s;
printf("
Input n: ");
scanf("%d", &n);
s = fun(n);
printf("

s=%f
", s);
}
第五题
给定程序的功能是求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一
的圆面积(注:圆面积公式为:S=πr2,在程序中定义的变量名要与公式的变量相同)。
例如,输入圆的半径值:19.527,输出为:s = 598.949991。
请勿改动主函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语
句。
#include
double fun(double r)
{
return 3.14159*r*r/2.0;
}
main()
{
double x;
printf("Enter x: ");
scanf("%lf", &x);
prin
tf(" s = %lf
", fun(x));
}
第六题
给定程序的功能是计算并输出下列级数的前N项之和SN,直到SN大于q为止,q的值通过形
参传入。
N+
SN=++++
123 N
例如,若q的值为50.0,则函数值为50.416687。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。
#include
double fun(double q)
{
int n;
double s;
n = 2;
s = 2.0;
while (s <= q)
{
s = s + (double)(n+1)/n;
n++;
}
printf("n=%d
",n);
return s;
}
main()
{
printf("%f
", fun(50));
}
第七题
函数fun的功能是:统计长整数n的各位上出现数字1、2、3的次数,并通过外部(全局)
变量c1、c2、c3返回主函数。
例如,当n=123114350时,结果应该为:c1=3 c2=1 c3=2。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。
#include
int c1, c2, c3;
void fun(long n)
{
c1 = c2 = c3 = 0;
while (n)
{
switch(n%10)
{
case 1:
c1++;
break;
case 2:
c2++;
break;
case 3:
c3++;
}
n /= 10;
}
}
main()
{
long n = 123114350L;
fun(n);
printf("
The result :
");
printf("n=%ld c1=%d c2=%d c3=%d
", n, c1, c2, c3);
}
第八题
请补充main函数,该函数的功能是:从键盘输入一组整数,使用条件表达式找出最大的整
数。当输入的整数为0时结束。
例如,输入1 2 3 5 4 0时,最大的数为5。
注意:部分源程序给出如下。
仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容。
#include
#include
#define N 100
main()
{
int num[N];
int i = -1;
int max = 0;
printf("
Input integer number:
");
do
{
i++;
printf("num[%d]=", i);
scanf("%d", &num[i]);
max = max} while(num[i]!=0);
printf("max=%d
", max);
}
第九题
给定程序的功能是分别统计字符串中大写字母和小写字母的个数。
例如,给字符串ss输入:AaaaBBb123CCccccd,则输出结果应为:upper = 5,lower = 9
请勿改动函数中的其他内容,仅在横线上填入所编写的若干表达式或语句。
#include
void fun(char *s, int *a, int *b)
{
while (*s)
{
if (*s>='A' && *s<='Z')
(*a)++;
if (*s>='a' && *s<='z')
(*b)++;
s++;
}
}
main()
{
char s[100];
int upper = 0, lower = 0;
printf("
Please a string : ");
gets(s);
fun(s, &upper, &lower);
printf("
upper = %d lower = %d
", upper, lower);
}
第十题
请补充main函数,该函数的功能是:从键盘输入3个整数,然后找出最大的数并输出。
例如,输入:12,45,43,输出为45。
仅在横线上填入所编写的若干表达式或语句,勿改动函
数中的其他任何内容。
#include
#include
main()
{
int a, b, c, max;
printf("
Input three numbers:
");
scanf("%d,%d,%d", &a, &b, &c);
printf("The three numbers are:%d,%d,%d
", a, b, c);
if (a > b)
max=a;
else
max=b;
if (max < c)
max=c;
printf("max=%d
", max);
}
第十一题
给定程序中,函数fun的功能是:把形参s所指字符串中下标为奇数的字符右移到下一个奇
数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注:
字符串的长度大于等于2)。
例如,形参s所指的字符串为:abcdefgh,执行结果为:ahcbedgf。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。
#include
void fun(char *s)
{
int i, n, k;
char c;
n = 0;
for (i=0; s[i]!='0'; i++)
n++;
if (n%2 == 0)
k = n-1;
else
k = n-2;
c = s[k]
for (i=k-2; i>=1; i=i-2)
s[i+2] = s[i];
s[1] = c;
}
main()
{
char s[80] = "abcdefgh";
printf("
The original string is : %s
", s);
fun(s);
printf("
The result is : %s
", s);
}
第十二题
请补充fun函数,该函数的功能是将字符串tt中的大写字母都改为对应的小写字母,其他字
符不变。
例如,若输入“Are you come from Sichuan?”,则输出“are you come from sichuan?”。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。#include
#include
#include
char *fun(char tt[])
{
int i;
for(i=0;tt[i];i++)
{
if((tt[i]>='A')&&(tt[i]<='Z'))
tt[i]+=32;
}
return (tt);
}

main()
{
char tt[81];
printf("
Please enter a string: ");
gets(tt);
printf("
The result string is:
%s",fun( tt ));
}
第十三题
请补充fun函数,该函数的功能是判断一个数是否为素数。该数是素数时,函数返回字符
串:"yes!",否则函数返回字符串:"no!",并在主函数中输出。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。
#include
#include
char *fun( int n )
{
int i, m;
m = 1;
for (i=2; iif (n%i==0)
{
m=0;
break;
}
if (m==1 && n>1)
return("yes!");
else
return("no!");
}
main()
{
int k = 0;
printf("Input:");
scanf("%d", &k);
printf("%s
", fun(k));
}
第十四题
请补充fun函数,该函数的功能是:依次取出字符串中所有小写字母,形成新的字符串,
并取代原字符串。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。
#include
#include
vo
id fun(char *s)
{
int i = 0;
char *p = s;
while (*p)
{
if (*p>='a' && *p<='z')
{
s[i] = *p;
i++;
}
p++;
}
s[i] = '0';
}
main()
{
char str[80];
printf("
Enter a string :");
gets(str);
printf("

The string is : %s
", str);
fun(str);
printf("

The string of changing is : %s
", str);
}
第十五题
给定程序的功能是判断字符ch是否与串str中的某个字符相同,若相同什么也不做,若不同
则插在串的最后。
请勿改动主函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语
句。
#include
#include
void fun(char *str, char ch )
{
while (*str && *str!=ch)
str++;
if (*str != ch)
{
str[0] = ch;
str[1] = 0;
}
}
main()
{
char s[81], c;
printf("
Please enter a string:
");
gets(s);
printf("
Please enter the character to search : ");
c = getchar();
fun(s, c);
printf("
The result is %s
", s);
}
第十六题
请补充fun函数,该函数的功能是:判断一个年份是否为闰年。
例如,1900年不是闰年,2004是闰年。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。
#include
#include
int fun(int n)
{
int flag = 0;
if (n%4 == 0)
if (n % 100 != 0)
flag = 1;
if (n % 400 == 0)
flag = 1;
return flag;
}
main()
{
int year;
printf("Input the year:");
scanf("%d", &year);
if (fun(year))
printf("%d is a leap year.
", year);
else
printf("%d is not a leap year.
", year);
}
第17题
给定程序的功能是将n个人员的考试成绩进行分段统计,考试成绩放在a数组中,各分段的
人数存到b数组中:成绩为60到69的人数存到b[0]中,成绩为70到79的人数存到b[1],成绩为80
到89的人数存到b[2],成绩为90到99的人数存到b[3],成绩为100的人数存到b[4],成绩为60分
以下的人数存到b[5]中。
例如,当a数组中的数据是:93、85、77、68、59、43、94、75、98。调用该函数后,b数
组中存放的数据应是:1、2、1、3、0、2。
请勿改动主函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语
句。
#include
void fun(int a[], int b[], int n)
{
int i;
for (i=0; i<6; i++)
b[i] = 0;
for (i=0; iif (a[i]<60)
b[5]++;
else
b[(a[i]-60)/10]++;
}
main()
{
int i, a[100] = {93, 85, 77, 68, 59, 43, 94, 75, 98}, b[6];
fun(a, b, 9);
printf("the result is: ");
for (i=0; i<6; i++)
printf("%d ", b[i]);
printf("
");
}
第十八题

str为一个字符序列。请补充fun函数,该函数的功能是:查找str中值为x的元素,返回找到
值为x的元素个数,并把这些值为x的元素下标依次保存在数组bb中。
例如,在"abcdef
ahij"中查找'a',结果为:2,下标依次为0、6。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。
#include
#include
#define N 20
int bb[N];
int fun(char *str, char ch)
{
int i = 0, n = 0;
char t = ch;
char *p = str;
while (*p)
{
if (*p==t)
bb[n++]=i;
p++;
i++;
}
return n;
}
main()
{
char str[N];
char ch;
int i, n;
printf("******* Input the original string*******
");
gets(str);
printf("******* The Original string *******
");
puts(str);
printf("******* Input character *******
");
scanf("%c", &ch);
n = fun(str, ch);
printf("
The number of character is: %d
", n);
printf("******* The suffix of character *******
");
for (i=0; iprintf(" %d ", bb[i]);
}
第十九题
给定程序的功能是计算score中m个人的平均成绩aver,将低于aver的成绩放在below中,通
过函数名返回人数。
例如,当score={10,20,30,40,50,60,70,80,90},m=9时,函数返回的人数应该
是4,below={10,20,30,40}。
请勿改动主函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语
句。
#include
#include
int fun(int score[], int m, int below[])
{
int i, j = 0;
float aver = 0.0;
for (i=0; iaver += score[i];
aver /= (float)m;
for (i=0; iif (score[i] < aver)
below[j++] = score[i];
return j;
}
main()
{
int i, n, below[9];
int score[9] = {10, 20, 30, 40, 50, 60, 70, 80, 90};
n = fun(score, 9, below);
printf("
Below the average score are: ");
for (i=0; iprintf("%d ", below[i]);
第二十题
给定程序的功能是求出能整除x且不是偶数的各整数,并放在数组pp中,这些除数的个数
由n返回。
例如,若x的值为30,则有4个数符合要求,它们是1,3,5,15。
请勿改动主函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语
句。
#include
void fun(int x, int pp[], int *n)
{
int i, j = 0;
for (i=1; i<=x; i+=2)
if ((x%i) == 0)
pp[j++] = i;
*n = j;
}
main()
{
int x, aa[1000], n, i;
printf("
Please enter an integer number:
");
scanf("%d", &x);
fun(x, aa, &n);
for (i=0; iprintf("%d ", aa[i]);
printf("
");
}
第二十一体
给定程序中,函数fun的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。
例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:def3*5*adh3*kjsdf7*。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。
#include
void fun(char *s)
{
int i, j, n;
for (i=0; s[i]!='0'; i++)
if (s[i]>='0' && s[i]<='9')

{
n = 0;
while (s[i+1+n] != 0)
n++;
for (j=i+n+1; j>i; j--)
s[j+1] = s[j];
s[j+1] = '*';
i = i+1;
}
}
main()
{
char s[80] = "ba3a54cd23a";
printf("
The original string is : %s
", s);
fun(s);
printf("
The result is : %s
", s);
}
第23题
在主函数中从键盘输入若干个数放入数组x中,用0结束输入但不计入数组。下列给定程序
中,函数fun的功能是:输出数组元素中小于平均值的元素。
例如:数组中元素的值依次为1,2,2,12,5,15,则程序的运行结果为1,2,2,5。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。
#include
#include
void fun(int x[], int n)
{
double sum = 0.0;
double average = 0.0;
int i = 0;
for (i=0; isum+=x[i];
average = sum/n;
for (i=0; iif (x[i] < average)
{
if (i%5 == 0)
printf("
");
printf("%d, ", x[i]);
}
}
main()
{
int x[1000];
int i = 0;
printf("
Please enter some data(end with 0):");
do
{
scanf("%d", &x[i]);
} while (x[i++] != 0);
fun(x, i-1);
}
第24题
函数fun的功能是:从三个形参a,b,c中找出中间的那个数,作为函数值返回。
例如,当a=3,b=5,c=4时,中间的数为4。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。
#include
int fun(int a, int b, int c)
{
int t;
t = (a > b) ? (b>c ? b : (a>c ? c : a)) :
((a > c) ? a :
((b > c) ? c : b));
return t;
}
main()
{
int a1 = 3, a2 = 5, a3 = 4, r;
r = fun(a1, a2, a3);
printf("
The middle number is : %d
", r);
}
第25题
函数fun的功能是:逆置数组元素中的值。形参n给出数组中数据的个数。
例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:
9、8、7、6、5、4、3、2、1。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。
#include
void fun(int a[], int n)
{
int i, t;
for (i=0; i{
t = a[i];
a[i] = a[n-1-i];
a[n-i-1] = t;
}
}
main()
{
int b[9] = {1, 2, 3, 4, 5, 6, 7, 8, 9}, i;
printf("
The original data :
");
for (i=0; i<9; i++)
printf("%4d ", b[i]);
printf("
");
fun(b, 9);
printf("
The data after invert :
");
for (i=0; i<9; i++)
printf("%4d ", b[i]);
printf("
");
}
第26题
请补充fun函数,该函数的功能求能整除x,且是偶数的数,把这些数保存在数组bb,并按
大到小输出。
例如,当x=20时,依次输出:20 10 4 2。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
式或语句。
#
include
#include
void fun(int k, int bb[])
{tint i;
int j = 0;
for (i=1; i<=k; i++)
if (k%i==0 && i%2==0)
bb[j++] = i;
printf("

");
for (i=--j; i>=0; i--)
printf("%d ", bb[i]);
}
main()
{
int k = 1;
int bb[100];
printf("
Please input X
");
scanf("%d", &k);
fun(k, bb);
}
第27题
请补充函数fun,该函数的功能是:统计所有小于等于n(n>2)的素数的个数,素数的个数作
为函数值返回。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。

#include
int fun(int n)
{
int i, j, count = 0;
printf("
The prime number between 2 to %d
", n);
for (i=2; i<=n; i++)
{
for (j=2; jif (i%j == 0)
break;
if (j >= i)
{
count++;
printf(count%15 ? "%5d" : "
%5d", i);
}
}
return count;
}
main()
{
int n = 20, r;
r = fun(n);
printf("
The number of prime is : %d
", r);
}
第28题
程序的功能是计算

s=å !
k=0
请勿改动主函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语
句。
#include
long fun(int n)
{
int i;
long s;
s = 1;
for (i=1; i<=n; i++)
s = s*i;
return s;
}
main()
{
long s;
int k, n;
scanf("%d", &n);
s = 0;
for (k=0; k<=n; k++)
s = s+fun(k);
printf("%ld
", s);
}
第29题
请补充fun函数,该函数的功能是求不超过给定自然数的各偶数之和。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。
#include
int fun(int x)
{
int i, s;
s = 0;
for (i=2; i<=x; i+=2)
s += i;
return s;
}
main()
{
int n;
do
{
printf("
Please enter natural numbers n:");
scanf("%d", &n);
} while (n <= 0);
printf("
不超过给定自然数%d的各偶数之和为%d
", n, fun(n));
}
第30题
请补充fun函数,该函数的功能是:把从主函数中输入的由数字字符组成的字符串转换成
一个无符号长整数,并且倒序输出。结果由函数返回。
例如:输入:123456,结果输出:654321。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。
#include
#include
#include
unsigned long fun(char *s)
{
unsigned long t = 0;
int k;
int i = 0;
i = strlen(s);
for (--i; i>=0; i--)
{
k = s[i]-'0';
t = t*10+k;
}
return t;
}
main()
{
char str[8];
printf("Enter a string made up of '0' to '9' digital character :
");
gets(str);
printf("The string is : %s
", str);
if (strlen(str) > 8)
printf(" The string is too long !");
else
printf("The result : %lu
", fun(str));
}
第31题
请补充fun函数,该函数的功能
是:把从主函数中输入的字符串str2接在字符串str1后面。
例如:str1="How are ",str="you?",结果输出:"How are you?"
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。


#include
#include
#define N 40
void fun(char *str1, char *str2)
{
int i = 0;
char *p1 = str1;
char *p2 = str2;
while (*(p1+i))
i++;
for (; *p2; i++)
*(p1+i) = *p2++;
*(p1+i) = '0';
}
main()
{
char str1[N], str2[N];
printf("******* Input the string str1 & str2*******
");
printf("
str1:");
gets(str1);
printf("
str2:");
gets(str2);
printf("******* The string str1 & str2*******
");
puts(str1);
puts(str2);
fun(str1, str2);
printf("******* The new string *******
");
puts(str1);
}
第32题
请补充fun函数,该函数的功能是求一维数组x[N]的平均值,并对所得结果进行四舍五入保
留两位小数。
例如:当x[10]={15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,10.0,16.0}时,输出结果为:avg=
15.030000。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。
#include
#include
double fun(double x[10])
{
int i;
long t;
double avg = 0.0;
double sum = 0.0;
for (i=0; i<10; i++)
sum+=x[i];
avg = sum/10;
avg = avg*1000;
t = (avg+5)/10;
avg = (double)t/100;
return avg;
}
main()
{
double avg, x[10] =
{15.6, 19.9, 16.7, 15.2, 18.3, 12.1, 15.5, 11.0, 10.0, 16.0};
int i;
printf("
The original data is :
");
for (i=0; i<10; i++)
printf("%6.1f", x[i]);
printf("

");
avg = fun(x);
printf("average=%f

", avg);
}
第33题
函数fun的功能是:将形参a所指数组中的前半部分元素的值和后半部分元素的值对换。形
参n中存放数组中数据的个数,若n为奇数,则中间的元素不动。
例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则调换后为:6、7、
8、9、5、1、2、3、4。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。
#include
#define N 9
void fun(int a[], int n)
{
int i, t, p;
p = (n%2 == 0) ? n/2 : n/2 + 1;
for (i=0; i{
t = a[i];
a[i] = a[p+i];
a[p+i] = t;
}
}
main()
{
int b[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9}, i;
printf("
The original data :
");
for (i=0; iprintf("%4d ", b[i]);
printf("
");
fun(b, N);
printf("
The data after moving :
");
for (i=0; iprintf("%4d ", b[i]);
printf("
");
}
第34题
请补充fun函数,该函数的功能是:分类统计一个字符串中元音字母和其它字符的个数
(不区分大小写)。
例如,
输入aeiouAUpqr,结果为A:2 E:1 I:1 O:1 U:2 other:3。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。
#include
#include
#define N 100
void fun(char *str, int bb[])
{
char *p = str;
int i = 0;
for (i=0; i<6; i++)
bb[i]=0;
while (*p)
{
switch (*p)
{
case 'A':
case 'a':
bb[0]++;
break;
case 'E':
case 'e':
bb[1]++;
break;
case 'I':
case 'i':
bb[2]++;
break;
case 'O':
case 'o':
bb[3]++;
break;
case 'U':
case 'u':
bb[4]++;
break;
default:
bb[5]++;
}
p++;
}
}
main()
{
char str[N], ss[5] = "AEIOU";
int i;
int bb[6];
printf("Input a string:
");
gets(str);
printf("the string is:
");
puts(str);
fun(str, bb);
for (i=0; i<5; i++)
printf("
%c:%d", ss[i], bb[i]);
printf("
other:%d", bb[i]);
}
第35题
str是全部由小写字母字符和空格字符组成的字符串,由num传入字符串的长度,请补充fun
函数,该函数的功能是:统计字符串str中的单词数,结果由变量num传回。每个单词之间都由
空格隔开,并且字符串str开始不存在空格。
例如:str="how are you",结果为:num=3。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。
#include
#define N 80
void fun(char *s, int *num)
{
int i, n = 0;
for (i=0; i<*num; i++)
if (s[i]>='a' && s[i]<='z' && s[i+1]==' ' || s[i+1]=='0')
n++;
*num=n;
}
main()
{
char str[N];
int num = 0;
printf("Enter a string :
");
gets(str);
while (str[num])
num++;
fun(str, &num);
printf("The number of word is : %d

", num);
}
第36题
str是一个由数字和字母字符组成的字符串,由变量num传入字符串长度。请补充fun函数,
该函数的功能是把字符串str中的数字字符转换成数字并存放到整型数组bb中,函数返回数组bb
的长度。
例如:str="Abc123e456hui7890",结果为:1234567890。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。
#include
#define N 80
int bb[N];
int fun(char s[], int bb[], int num)
{
int i, n = 0;
for (i=0; iif (s[i]>='0' && s[i]<='9')
{
bb[n] = s[i]-'0';
n++;
}
return n;
}
main()
{
char str[N];
int num = 0, n, i;
printf("Enter a string :
");
gets(str);
while (str[num])
num++;
n = fun(str, bb, num);
printf("
bb= ");
for (i=0; iprintf("%d", bb[i]);
}
第37题
从键盘输入一组无符号整数并保存在数组xx[N]中,以整数0结束输入,要求这些数的最大
位数不超过4位,其元素的个数通过变
量num传入fun函数。请补充fun函数,该函数的功能是:
从数组xx中找出个位和十位的数字之和大于5的所有无符号整数,结果保存在数组yy中,其个
数由fun函数返回。
例如:当xx[8]={123,11,23,222,42,333,14,5451}时,bb[3]={42,333,5451}。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。
#include
#define N 1000
int fun(int xx[], int bb[], int num)
{
int i, n = 0;
int g, s;
for (i=0; i{
g = xx[i]%10;
s = xx[i]/10%10;
if ((g+s) > 5)
bb[n++]=xx[i];
}
return n;
}
main()
{
int xx[N];
int yy[N];
int num = 0, n = 0, i = 0;
printf("Input number :
");
do
{
scanf("%u", &xx[num]);
} while (xx[num++] != 0);
n = fun(xx, yy, num);
printf("
yy= ");
for (i=0; iprintf("%u ", yy[i]);
}
第38题
请补充fun函数,该函数的功能是判断一个数的个位数字和百位数字之和是否等于其十位
上的数字,是则返回“yes!”,否则返回“no!”。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。
#include
#include
char *fun(int n)
{
int g, s, b;
g = n%10;
s = n/10%10;
b = n/100%10;
if ((g+b) == s)
return "yes!";
else
return "no!";
}
main()
{
int num = 0;
printf("******Input data *******
");
scanf("%d", &num);
printf("


");
printf("****** The result *******
");
printf("


%s", fun(num));
}
第39题
请补充main函数,该函数的功能是:从一个字符串中截取前面若干个给定字符数的子字符
串。其中,str1指向原字符串,截取后的字符串存放在str2所指的字符数组中,n中存放预截取
的字符个数。
例如,当str1="abcdefg",然后输入3,则str2="abc"。
注意:部分源程序给出如下。
仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容。
# include
# include
# define LEN 80
main()
{
char str1[LEN], str2[LEN];
int n, i;
printf("Enter the string:
");
gets(str1);
printf("Enter the position of the string deleted:");
scanf("%d",&n);
for (i=0; istr2[i]=str1[i];
str2[i] = '0';
printf("The new string is:%s
", str2);
}
第40题

请补充main函数,该函数的功能是:从键盘输入一个字符串并保存在字符str1中,把字符
串str1中下标为偶数的字符保存在字符串str2中并输出。
例如,当str1="abcdefg",则str2="aceg"。
仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容。
#include
#include
#define LEN 80
main()
{
char str1[LEN], str2[LEN];
char *p1 = str1, *p2 = str2;
int i = 0, j = 0;

printf("Enter the string:
");
scanf("%s",str1);
printf("****** the origial string ********
");
while (*(p1+j))
{
printf("%c", *(p1+j));
j++;
}
for (i=0; i*p2++ = *(str1+i);
*p2 = '0';
printf("
The new string is:%s
", str2);
}
第41题
请补充main函数,该函数的功能是:从键盘输入一个长整数,如果这个数是负数,则取它
的绝对值,并显示出来。
例如:输入:-12345678,结果为:12345678
仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容。
# include
# include
main()
{
long int n;
printf("Enter the data:
");
scanf("%ld",&n);
printf("****** the origial data ********
");
if (n < 0)
n=-n;
printf("

");
printf("%ld",n);
}
第42题
请补充main函数,该函数的功能是:从字符串str中取出所有数字字符,并分别计数,并把
结果保存在数组b中并输出,把其它字符保存在b[10]中。
例如:当str1="de123456789abc0908"时,结果为:0:2 1:1 2:1 3:1 4:1 5:1 6:1
7:1 8:2 9:2 other character:5。
仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容。
#include
#include
main()
{
int i, b[11];
char *str = "de123456789abc0908";
char *p = str;
printf("****** the origial data ********
");
puts(str);
for (i=0; i<11; i++)
b[i] = 0;
while (*p)
{
switch (*p)
{
case '0':
b[0]++;
break;
case '1':
b[1]++;
break;
case '2':
b[2]++;
break;
case '3':
b[3]++;
break;
case '4':
b[4]++;
break;
case '5':
b[5]++;
break;
case '6':
b[6]++;
break;
case '7':
b[7]++;
break;
case '8':
b[8]++;
break;
case '9':
b[9]++;
break;
default: b[10]++;
}
p++;
}
printf("****** the result ********
");
for (i=0; i<10; i++)
printf("
%d:%d", i, b[i]);
printf("
other character:%d", b[i]);
}
第43题
请补充fun函数,该函数的功能是:按'0'到'9'统计一个字符串中的奇数数字字符各自出现的
次数,结果保存在数组num中。注意:不能使用字符串库函数。
例如:输入:"x=1123.456+0.909*bc",结果为:1=2,3=1,5=1,7=0,9=2。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。
#include
#include
#define N 1000
void fun(char *tt, int num[])
{
int i, j;
int bb[10];
char *p = tt;
for (i=0; i<10; i++)
{
num[i] = 0;
bb[i] = 0;
}
while (*p)
{
if (*p>='0' && *p<='9')
bb[*p-'0']++;
p++;
}
for (i=1, j=0; i<10; i=i+2, j++)
num[j]=bb[i];
}
main()
{
char str[N];
int num[10], k;
printf("
Please enter a char string:");
gets(str);
printf("
*******The original stri
ng******
");
puts(str);
fun(str, num);
printf("
*******The number of letter******
");
for (k=0; k<5; k++)
{
printf("
");
printf("%d= %d ", 2*k+1, num[k]);
}
printf("
");
}
第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 = 0;
while (*p || *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);
}
第45题
请补充fun函数,该函数的功能是:先将在字符串s中的字符按逆序存放到t串中,然后把s
中的字符按正序连接到t串的后面。
例如:s中的字符串为ABCDE时,则t中的字符串应为EDCBAABCDE。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。
#include
#include
#include
void fun(char *s, char *t)
{
int s1, i;
s1 = strlen(s);
for (i=0; it[i] = s[s1-i-1];
for (i=0; it[s1+i] = s[i];
t[2*s1] = '0';
}
main()
{
char s[100], t[100];
printf("
Please enter string s:");
scanf("%s", s);
fun(s, t);
printf("The result is: %s
", t);
}
第46题
请补充fun函数,该函数的功能是:用来求出数组的最大元素在数组中的下标并存放在k所
的存储单元中。
例如,输入如下整数:876 675 896 101 301 401 980 431 451 777,则输出结果为:6,
80。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
式或语句。
#include
#include
void fun(int *s, int t, int *k)
{
int i, max;
max = s[0];
for (i=0; iif (s[i]>max)
{
max = s[i];
*k = i;
}
}
main()
{
int a[10] = {876, 675, 896, 101, 301, 401, 980, 431, 451, 777}, k;
fun(a, 10, &k);
printf("%d, %d
", k, a[k]);
}
第47题
数组xx[N]保存着一组3位数的无符号正整数,其元素的个数通过变量num传入fun函数。请
补充fun函数,该函数的功能是:从数组xx中找出个位和百位的数字相等的所有无符号整数,
结果保存在数组yy中,其个数由fun函数返回。
例如:当xx[8]={123,231,232,222,424,333,141,544}时,bb[5]={232,222,424
,333,
141}。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。
#include
#include
#define N 1000
int fun(int xx[], int bb[], int num)
{
int i, n = 0;
int g, b;
for (i=0; i{
g = xx[i]%10;
b = xx[i]/100;
if (g == b)
bb[n++]=xx[i];
}
return n;
}
main()
{
int xx[8] = {123, 231, 232, 222, 424, 333, 141, 544};
int yy[N];
int num = 0, n = 0, i = 0;
num = 8;
printf("******original data *******
");
for (i=0; iprintf("%u ", xx[i]);
printf("


");
n = fun(xx, yy, num);
printf("
yy= ");
for (i=0; iprintf("%u ", yy[i]);
}
第48题
请补充fun函数,该函数的功能是:把一个整数转换成字符串,并倒序保存在字符数组str
中。例如:当n=12345678时,str="87654321"。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。
#include
#include
#define N 80
char str[N];
void fun(long int n)
{
int i = 0;
while (n>0)
{
str[i] = n%10+'0';
n /= 10;
i++;
}
str[i]='0';
}
main()
{
long int n = 1234567;
printf("****** the origial data ********
");
printf("n=%ld", n);
fun(n);
printf("
%s", str);
}
第49题
请补充main函数,该函数的功能是求方程ax2+bx+c=0的两个实数根。方程的系数a、b、c
键盘输入,如果判别式(disc=b*b-4*a*c)小于0,则要求从新输入a、b、c的值。一元二次
程的求根公式为:
-±-
2a
例如,当a=1,b=2,c=1时,方程的两个根分别是:x1=-1.00,x2=-1.00。
注意:部分源程序给出如下。
仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容。
#include
#include
main()
{
double a, b, c, disc, x1, x2;
do
{
printf("Input a, b, c: ");
scanf("%lf,%lf,%lf", &a, &b, &c);
disc = b*b - 4*a*c;
if (disc < 0)
printf("disc=%lf
Input again!
", disc);
} while (disc<0);
printf("*******the result*******
");
x1 = (-b+sqrt(disc))/(2*a);
x2 = (-b-sqrt(disc))/(2*a);
printf("
x1=%6.2lf
x2=%6.2lf
", x1, x2);
}
第50题
请补充fun函数,该函数的功能是在字符串的最前端加入n个*号,形成新串,并且覆盖。
注意:字符串的长度最长允许为79。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表
达式或语句。
#include
#include
#include
void fun(char s[], int n)
{
char a[80], *p;
int i;
p = s;
for (i=0; ia[i] = '*';
do
{
a[i] = *p++;
i++;
} while (*(p));
a[i] = 0;
strcpy(s, a);
}
main()
{
int n;
char s[80
];
printf("
Enter a string:");
gets(s);
printf("
The string"%s"
", s);
printf("
Enter n(number of*):");
scanf("%d", &n);
fun(s, n);
printf("
The string after insert:"%s"
", s);
}

large的反义词-揽辔澄清


前景色和背景色的区别-季节拼音


黠鼠赋-西人


瀚海的意思-散水是什么意思


d开头的火车-居丧


四两命-修明


辞藻-帮衬


i开头的动物-鸣镝