C语言当N大于10且小于100,计算机C语言二级上机考试套题(二十)

第81套

1.

程序填空题:

请补充函数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

c[k]=*q;

else c[k]=*p;

if(*p) p++;

if(*q) q++ ;

k++;

}

}

main()

{ char a[10]="fshADfg",b[10]="sdAEdi",c[80]={'\0'};

fun(a,b,c);

printf("The string a:"); puts(a);

printf("The string b:"); puts(b);

printf("The result :"); puts(c);

}

2.

程序改错题:

下列给定程序中,函数fun的功能是:从字符串s中删除所有小写字母c。

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

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

试题程序:

#include 

void fun(char *s)

{int i, j;

for(i=j=0; s[i]!= '\0';i++)

if(s[i]!=

'c')

s[j]=s[i];

s[i]='\0';

}

void main()

{ char s[80];

printf("\nEnter a

string: ");

gets(s);

printf("The original

string: ");

puts(s);

fun(s);

printf("The string after deleted: ");

puts(s);

printf("\n\n ");

}

3. 程序设计题:

假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了尾部的*号之外,将字符串中其他*号全部删除。形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言的字符串函数。

例如,若字符串中的内容为****A*BC*DEF*G******,删除后,字符串中的内容应当是ABCDEFG******。

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

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

试题程序:

#include

#include

void fun(char *a,char p[81])

{

}

void main()

{

FILE *wf;

char

s[81],*t,p[81]="****A*BC*DEF*G******";

printf("Enter a string:\n ");

gets(s);

t=s;

while(*t)

t++;

t--;

while(*t=='*')

t--;

fun(s,t);

printf("The string after deleted:\n");

puts(s);

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

t=p;

while(*t)

t++;

t--;

while(*t=='*')

t--;

fun(p,t);

fprintf(wf,"%s",p);

fclose(wf);

}

【参考答案】:1.

(1)0 (2) ||

2.

(1)错误:s[j]=s[i]; 正确:s[j++]=s[i];

(2)错误:s[i]='\0'; 正确:s[j]= '\0'

3. void fun(char *a,char *p)

{

char

*t=a;

for(;t<=p;t++)

if(*t!='*')

*(a++)=*t;

for(;*t!='\0';t++)

*(a++)=*t;

*a='\0';

}

第82套

程序填空题:

请补充函数fun,该函数的功能是:在字符串的最前端加入n个*号,形成新串,并且覆盖。注意:字符串的长度最长允许为79。

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

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

试题程序:

#include 

#include 

#include 

#include 

void fun(char s[],int n)

{

char a[80],*p;

int I;

p=【1】;

for(I=0;I

a[I]= '*';

do

{a[I]=【2】;

I++;

}while(【3】);

a[I]=0;

strcpy(s,a);

}

void main()

{int n;char s[80];

system("CLS");

printf("\nEnter a string: ");gets(s);

printf("\nThe string:%s\n",s);

printf("\nEnter n (number of*):");

scanf("%d",&n);

fun(s,n);

printf("\nThe string after

inster:%s\n",s);

}

程序改错题:

下列给定程序中,函数fun的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCII码升序排序后输出。例如,若输入edcba,则应输出abcde。

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

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

试题程序:

#include 

#include 

void fun(char t[])

{

char c;

int I,j;

for(I=strlen(t);I;I--)

for(j=0;j

if(t[j]

{

c= t[j];

t[j]=t[j+1];

t[j+1]=c;

}

}

main()

{

char s[81];

system("CLS");

printf("\nPlease enter a

character string :");

gets(s);

printf("\n\nBefore sorting

:\n %s",s);

fun(s);

printf("\nAfter sorting decendingly:\n

%s",s);

}

程序设计题:

假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。

例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是****A*BC*DEF*G。

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

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

试题程序:

#include

#include

void fun (char *a)

{

}

void main()

{

FILE *wf;

char s[81],t[81]="****A*BC*DEF*G*******";

printf("Enter a string :\n");

gets(s);

fun(s);

printf("The string after deleted:\n");

puts(s);

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

fun(t);

fprintf(wf,"%s",t);

fclose(wf);

}

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

*p++ (3) *(p)或*p或*p!=0

2. (1)错误:for(i=strlen(t);i;i--)

正确:for(i=strlen(t)-1;i;i--) 或

for(i=strlen(t)-1;i>0;i--)

3. void fun (char *a)

{

while(*a!='\0')

a++;

a--;

while(*a=='*')

a--;

*(a+1)=

'\0';

}

第83套

程序填空题:

请补充main函数,该函数的功能是:把字符串str1中的非空格字符拷贝到字符串str2中。

例如,若str1="glad to see you!",则str2="gladtoseeyou!"。

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

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

试题程序:

#include

#include

#define N 80

void main()

{

static char str1[N]="glad to see you!";

char str2[N];

int I=0,j=0;

system("CLS");

printf("\n***** str1*****\n ");

puts(str1);

while(str1[I])

{

if(【1】)

str2[j++]=str1[I];

【2】;

}

printf("\n***** str2 *****\n ");

for(I=0;I

printf("%c",str2[I]);

}

程序改错题:

已知一个数列从0项开始的前3项:0,0,1,以后的各项都是其相邻的前3项之和。下列给定的程序中,函数fun的功能是:计算并输出该数列前n项的平方根之和sum。n的值通过形参传入。例如,当n=10时,程序的输出结果应为23.197745。

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

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

试题程序:

#include

#include 

#include 

#include 

fun(int n)

{double sum, s0, s1, s2, s; int k;

sum=1.0;

if (n<=2) sum=0.0;

s0=0.0; s1=0.0; s2=1.0;

for (k=4;k<=n;k++)

{

s=s0+s1+s2;

sum+=sqrt(s);

s0=s1;s1=s2;s2=s;

}

return sum

}

void main()

{int n;

system("CLS");

printf("Input N=");

scanf("%d",&n);

printf("%f\n",fun(n));

}

程序设计题:

假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参n给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后*号的个数。在编写函数时,不得使用C语言提供的字符串函数。

例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是A*BC*DEF*G。

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

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

试题程序:

#include

#include

void fun (char *a,int n ,int

h , int e)

{

}

void main()

{

FILE *wf;

char s[81],*t,*f;

char p[81]="****A*BC*DEF*G*******";

int m=0,tn=0, fn=0;

printf("Enter a string :\n");

gets(s);

t=f=s;

while(*t)

{t++;m++;}

t--;

while(*t=='*')

{t--;tn++;}

while(*f=='*')

{f++;fn++;}

fun( s, m, fn, tn);

printf("The string after deleted:\n");

puts(s);

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

fun(p,21,4,7);

fprintf(wf,"%s",p);

fclose(wf);

}

【参考答案】:1. (1) str1[i]!='

' (2) i++

2. (1)错误:fun(int

n) 正确:double fun(int n)

(2)错误:return

sum 正确:return sum;

3.void fun (char *a,int n ,int h , int e)

{

int

i,j=0;

for(i=h;i

a[j++]=a[i];

a[j]='\0';

}

第84套

1.

程序填空题:

给定程序中,函数fun的功能是:有

矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。

例如,若N=3,有下列矩阵:

1 2 3

4 5 6

7 8 9

计算结果为:

1 0 0

6 5 0

10 14 9

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

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

试题程序:

#include

#define N 4

void fun(int (*t)【1】)

{

int i,j;

for(i=1;i

{

for(j=0;j

{

【2】=t[i][j]+t[j][i];

【3】=0;

}

}

}

main()

{

int

i,j,t[][N]={12,21,33,44,52,45,36,27,18,9,66,73,84,45,36,27,18};

printf("\nThe original array:\n ");

for(i=0;i

{

for(j=0;j

printf("%4d",t[i][j]);

printf("\n");

}

fun(t);

printf("\nThe result is:\n");

for(i=0;i

{

for(j=0;j

printf("%4d",t[i][j]);

printf("\n");

}

}

2.

程序改错题:

下列给定程序中,函数fun的功能是:计算n的5次方的值(规定n的值大于2且小于8),通过形参指针传回主函数;并计算该值的个位、十位、百位上数字之和作为函数值返回。例如,7的5次方是1

6807,其低3位数的和值是15。

请改正函数fun中的错误,使它能得出正确的结果。

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

试题程序:

#include 

#include 

int fun(int n,int *value)

{

int d,s,i;

d=0;

s=1;

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

d=d*n;

*value=d;

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

{

s=s+d%10;

s=s/10;

}

return s;

}

void main()

{

int n,sum,v;

do

{

printf("\n Enter n(2

scanf("%d",&n);

}while(n<=2||n>=8);

sum=fun(n,&v);

printf("\n\nThe result: \n value=%d

sum=%d\n\n" ,v,sum);

}

3.

程序设计题:

请编写函数fun,其功能是:将s所指的字符串中ASCII值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。

例如,若s所指字符串中的内容为ABCDEFG12345,其中字符A的ASCII码值为奇数、……、字符1的ASCII码值也为奇数……都应当删除,其他依次类推。最后t所指的数组中的内容应是BDF24。

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

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

试题程序:

#include

#include

#include

#include

void fun(char *s,char t[])

{

}

main()

{

char s[100],t[100],Msg[]="Please enter string

S:";

FILE *out;

printf(Msg);

scanf("%s",s);

fun(s,t);

printf("\nThe result is :%s\n",t);

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

fun(Msg,t);

fprintf(out,"%s",t);

fclose(out);

}

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

[N] (2)

t[i][j] (3) t[j][i]

2.

(1)错误:d=0; 正确:d=1;

(2)错误:s=1; 正确:s=0 ;

(3)错误:s=s/10; 正确:d=d/10

;

3. void fun(char *s,char t[])

{

int

i,j=0,n;

n=strlen(s);

for(i=0;i

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

{

t[j]=s[i];

j++;

}

t[j]='\0';

}

第85套

程序填空题:

给定程序中,函数fun的功能是:将 矩阵中元素的值按列右移1个位置,右边被移出的元素绕回左边。

例如,N=3,有下列矩阵:

1 2 3

4 5 6

7 8 9

计算结果为:

3 1 2

6 4 5

9 7 8

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

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

试题程序:

#include

#define N 4

void fun(int (*t)[N])

{

int i,j,x;

for(i=0;i

{

x=t[i][【2】];

for(j=N-1;j>0;j--)

t[i][j]=t[i][j-1];

t[i][【3】]=x;

}

}

main()

{

int

i,j,t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10};

printf("\nThe original array:\n ");

for(i=0;i

{

for(j=0;j

printf("%4d",t[i][j]);

printf("\n");

}

fun(t);

printf("\nThe result is:\n");

for(i=0;i

{

for(j=0;j

printf("%4d",t[i][j]);

printf("\n");

}

}

_

程序改错题:

下列给定程序中,函数fun的功能是:逐个比较a、b两个字符串对应位置上的字符,把ASCII值大或相等的字符依次存放存到c数组中,形成一个新的字符串。例如,若a中的字符串为aBCDeFgH,b中的字符串为ABcd,则c中的字符串应为aBcdeFgH。

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

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

试题程序:

#include 

#include 

void fun(char *p,char *q,char *c)

{

int k=1;

while(*p!=*q)

{ if (*p

c[k]=*q;

else c[k]=*p;

if(*p) p++;

if(*q) q++ ;

k++;

}

}

main()

{ char a[10]="fshADfg",b[10]="sdAEdi",c[80]={'\0'};

fun(a,b,c);

printf("The string a:"); puts(a);

printf("The string b:"); puts(b);

printf("The result :"); puts(c);

}

程序设计题:

请编写函数fun,其功能是:将s所指字符串中除了下标为奇数,同时ASCII值也为奇数的字符之外,其余的字符全部删除,串中剩余字符所形成的一个新串放在t所指的数组中。

例如,若s所指字符串中的内容为ABCDEFG12345,其中字符A的ASCII码值虽为奇数,但所在元素的下标为偶数,因此必需删除;而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除,其他依次类推。最后t所指的数组中的内容应是135。

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

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

试题程序:

#include

#include

#include

#include

void fun(char *s, char t[])

{

}

void main()

{

char s[100],t[100];

FILE *out;

printf("\nPlease enter string S: ");

scanf("%s",s);

fun(s,t);

printf("\nThe result is: %s\n",t);

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

strcpy(s,"ABCDEFG12345");

fun(s,t);

fprintf(out,"%s",t);

fclose(out);

}

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

N (2)

N-1 (3) 0

2. (1)错误:int

k=1; 正确:int k=0 ;

(2)错误:while(*p !=

*q) 正确:while(*p || *q)

3. void fun(char *s,char t[])

{

int

i,j=0,n;

n=strlen(s);

for(i=0;i

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

{

t[j]=s[i];

j++;

}

t[j]='\0';

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值