c语言输入252则输出应该是20,[转载]计算机C语言二级上级考试套题(一)

本文提供了四套编程题目,包括程序填空、改错和设计。第一套题目涉及计算圆面积、序列求和及特定序列求和。第二套题目要求计算两数之间所有数的和、修正错误的序列计算函数以及统计字母出现次数。第三套题目包含字符比较、字符串处理和字母计数。第四套题目涉及字符串处理、数字因子积计算和特定条件筛选。每道题目都有参考答案和修改建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一套

1.程序填空题

给定程序的功能是:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积(注:圆面积公式为:

2,在程序中定义的变量名要与公式的变量相同)。

例如,输入圆的半径值:19.527,输出为:s=598.949991。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。

试题程序:

#include

double fun( double r)

{

return 3.14159*【1】/2.0;

}

void main()

{

double

x;

printf("Enter x: ");

scanf("%lf",【2】);

printf("s=%lfn",fun(【3】));

}

2.程序改错题

下列给定程序中,函数fun的功能是:计算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…f(n)的值。

例如,当n为5时,函数值应为10.407143。f(x)函数定义如下:

f(x)=

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include 

#include 

#include 

#include 

f(double x)

{

if(x==0.0||x==2.0)

return

0.0;

else if(x<0.0)

return(x-1)/(x-2);

else

return(x+1)/(x-2);

}

double fun(int n)

{

int i; double s=0.0,y;

for(i=-n; i<=n;i++)

{ y=f(1.0*i); s+=y;}

return s

}

void main()

{ system("CLS");

printf("%fn", fun(5));

}

3.程序设计题

编写函数fun,函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。

S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)

例如,若n的值为11时,函数的值为1.833333。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

#include

#include

#include

float fun(int n)

{

}

void main()

{

FILE *wf;

int n;

float s;

system("CLS");

printf("nPlease enter N: ");

scanf("%d",&n);

s=fun(n);

printf("The result is:%fn " , s);

wf=fopen("out.dat","w");

fprintf (wf,"%f",fun(11));

fclose(wf);

}

【参考答案】:1.(1)r*r (2)&x (3)x

.2. (1)错误:f(double

x) 正确:double f(double x)

2)错误:return

s 正确:return s;

3. float fun(int n)

{

int

i,s1=0;

float

s=0.0;

for(i=1;i<=n;i++) {

s1=s1+i;

s=s+1.0/s1;

}

return s; }

第2套

1.程序填空题

请补充main函数,该函数的功能是:计算两个自然数n和m(m<10000)之间所有数的和(n和m从键盘输入)。

例如,当n=1,m=100时,sum=5050;当n=100,m=1000时,sum=495550。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。

试题程序:

#include

#include

#include

void main()

{

int n,m;

long sum;

【1】;

system("CLS");

printf("nInput n,mn");

scanf("%d,%d",&n,&m);

while(n<=m)

{

【2】;

n++;

}

printf("sum=%【3】n",sum);

}

2.程序改错题

下列给定程序中,fun函数的功能是:根据形参m,计算下列公式的值:

t=1+1/2+1/3+1/4+…+1/m

例如,若输入5,则应输出2.283333。

请改正程序中的错误,使它能计算出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include

#include

#include

double fun(int m)

{

double t=1.0;

int I;

for(I=2;I<=m;I++)

t+=1.0/k;

return I;

}

void main()

{int m;

system("CLS");

printf("nPlease enter 1integer number:

");

scanf("%d",&m);

printf("nThe result is %1fn", fun(m));

}

3.程序设计题

请编写一个函数 void fun(char *tt,int

pp[]),统计在tt字符串中"a"到"z"26个字母各自出现的次数,并依次放在pp所指数组中。

例如,当输入字符串abcdefghabcdeabc后,程序的输出结果应该是:3 3 3 2 2 1 1 1 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

#include

#include

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

{

}

void main( )

{

FILE *wf;

char aa[1000];

int bb[26], k;

system("CLS");

printf("nPlease enter a char string : ")

;

scanf("%s",aa);

fun(aa,bb);

for (k=0 ;k<26 ; k++)

printf("%d ",bb[k]) ;

printf("n ");

wf=fopen("out.dat","w");

fun ("abcdefgabcdeabc",bb) ;

for (k=0 ;k<26 ; k++)

fprintf(wf,"%d ",bb[k]) ;

fclose(wf);

}

【参考答案】:1. (1)

sum=0 (2)

sum+=n (3) ld

2.

(1)错误:t+=1.0/k; 正确:t+=1.0/I;

(2)错误:return

I; 正确:return t;

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

{

int

i;

for(i=0;i<26;i++)

pp[i]=0;

for(;*tt!=' ';tt++)

if(*tt>='a'&&*tt<='z')

pp[*tt-'a']++;

}

第3套

1.

程序填空题

给定程序的功能是:判断字符ch是否与串str中的某个字符相同,若相同什么也不做,若不同则插在串的最后。

注意:部分源程序给出如下。

请勿改动函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。

试题程序:

#include 

#include 

void fun (char *str,char ch)

{

while (*str

&&*str !=ch) str++;

if(*str【1】ch)

{ str[0]=ch;

【2】=0;

}

}

void main()

{char s[81],c;

system("CLS");

printf("nPlease enter a string : ");

gets(s);

printf("n Please enter the character to

search : ");

c=getchar();

fun(【3】);

printf("nThe result is %sn",s);

}

2.程序改错题

下列给定程序中,函数fun的功能是:分别统计字符串中大写字母和小写字母的个数。例如,给字符串s输入:AaaaBBb123CCccccd,则应输出结果:upper=5,lower=9。

请改正程序中的错误,使它能计算出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include

#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("nplease a string :");

gets(s);

fun(s,&upper,&lower);

printf("n upper=%d lower=%dn",upper,lower);

}

3.程序设计题

请编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。

例如,若输入字符串123412132,输入字符1,则输出3。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

#include

#include

#define M 81

int fun(char *ss, char c)

{

}

void main()

{

FILE *wf;

char a[M], ch;

system("CLS");

printf("nPlease enter a string: ");

gets(a);

printf("nPlease enter a char: ");

ch=getchar();

printf("nThe number of the char is: %dn",

fun(a,ch));

wf=fopen("out.dat","w");

fprintf(wf,"%d",fun("123412132",'1'));

fclose(wf);

}

【参考答案】:1. (1) !=  (2) str[1]或*(str+1)

(3) s,c

2. (1)错误:void fun(char *s, int a, int b)

正确:void fun(char *s, int *a, int *b)

(2)错误:a++; 正确:(*a)++;

(3)错误:b++; 正确:(*b)++;

3. int fun(char *ss, char c)

{

int

i=0;

for(;*ss!=' ';ss++)

if(*ss==c)

i++;

return

i;

}

第4套

1. 程序填空题

请补充函数fun,该函数的功能是:把ASCII码为偶数的字符从字符串str中删除,结果仍然保存在字符串str中,字符串str从键盘输入,其长度作为参数传入函数fun。

例如,输入"abcdef",输出"ace"。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。

试题程序:

#include

#include

#define N 80

【1】

{

int i, j;

【2】;

for (i=0;i

{

if(s[i]%2!=0)

s[j++]=s[i];

}

【3】;

}

void main()

{

int i=0, strlen=0;

char str[N];

system("CLS");

printf("nInput a string:n");

gets(str);

while(str[i]!=' ')

{

strlen++;

i++;

}

fun(str, strlen);

printf("n*** display string ***n");

puts (str);

}

2.程序改错题

下列给定程序中函数fun的功能是:计算正整数num各位上的数字之积。例如,若输入252,则输出应该是20。若输入202,则输出应该是0。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include

#include

long fun(long num)

{

long k;

do

{

k

*=num%10;

num

=10;

}while(num);

return(k);

}

main()

{

int n;

printf("Please enter a number: ");

scanf("%ld",&n);

printf("n%ldn",fun(n));

}

2. 程序设计题

请编写一个函数fun,它的功能是:求出1到m(含m)之内能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。

例如,若传给m的值为50,则程序输出:

7 11 14 21 22 28 33 35 42 44 49

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

#include

#include

#define M 100

void fun(int m, int *a, int *n)

{

}

void main()

{

FILE *wf;

int aa[M],n,k;

system("CLS");

fun(50,aa,&n);

for(k=0;k

if((k+1)%20==0)

{printf("%4d",aa[k]);

printf("n");

}

else

printf("%4d",aa[k]);

printf("n");

wf=fopen("out.dat","w");

for(k=0;k

fprintf(wf,"%4d",aa[k]);

fclose(wf);

}

【参考答案】:1.(1) void fun(char s[],int n)

(2) j=0

(3) s[j]=' '

2. (1)错误:long

k; 正确:long k=1;

(2)错误:num=10;  正确:num/ =10;

3. void fun(int m, int *a, int *n)

{

int

i,j=0;

for(i=1;i<=m;i++)

if(i%7==0||i%11==0)

a[j++]=i;

*n=j;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值