《高级语言程序设计》复习题1.docx

上传人:b****8 文档编号:10646770 上传时间:2023-02-22 格式:DOCX 页数:16 大小:36.54KB
下载 相关 举报
《高级语言程序设计》复习题1.docx_第1页
第1页 / 共16页
《高级语言程序设计》复习题1.docx_第2页
第2页 / 共16页
《高级语言程序设计》复习题1.docx_第3页
第3页 / 共16页
《高级语言程序设计》复习题1.docx_第4页
第4页 / 共16页
《高级语言程序设计》复习题1.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

《高级语言程序设计》复习题1.docx

《《高级语言程序设计》复习题1.docx》由会员分享,可在线阅读,更多相关《《高级语言程序设计》复习题1.docx(16页珍藏版)》请在冰豆网上搜索。

《高级语言程序设计》复习题1.docx

《高级语言程序设计》复习题1

一、单项选择题

(1)以下选项中,能用作用户标识符的是:

(C)

A)voidB)8_8C)_0_D)unsigned

(2)若有定义语句:

intx=10;,则表达式x-=x+x的值为(B)

A)-20B)-10C)0D)10

(3)设有定义:

inta=1,b=2,c=3;,以下语句中执行效果与其他三个不同的是(C)

A)if(a>b)c=a,a=b,b=c;B)if(a>b){c=a,a=b,b=c;}

C)if(a>b)c=a;a=b;b=c;D)if(a>b){c=a;a=b;b=c;}

(4)以下选项中,能用作数据常量的是(D)

A)o115B)0118C)1.5e1.5D)115L

(5)有以下语句

int a1,a2; char c1,c2;

scanf("%d%c%d%c",&a1,&c1,&a2,&c2);

若通过键盘输入,使得a1的值为12,a2的值为34,c1的值为字符a,c2的值为字符b,则正确的输入格式是(以下€代表空格,¿代表回车)(A)

A)12a34b¿B)12€a€34€b¿C)12,a,34,b¿D)12€a34€b¿

(6)若有定义:

intx[10],*pt=x;,则对数组元素的正确引用是(B)

A)*&x[10]B)*(x+3)C)*(pt+10)D)pt+3

(7)若文本文件filea.txt中原内容为:

hello,则运行以下程序后,filea.txt中的内容为(C)

main()

{FILE *f;

f=fopen("filea.txt","w+");

fprintf(f,"abc");

fclose(f);

}

A)helloabcB)abcloC)abcD)abchello

(8)以下程序的运行结果是(B)

intfun(inta,intb)

{if(b==0)returna;

elsereturn(fun(--a,--b));

}

main()

{printf("%d\n",fun(4,2));}

A)1B)2C)3D)4

(9)可在C程序中用作用户标识符的一组标识符是(A)。

A)and_2007B)Datey-m-dC)HiDr.TomD)caseBigl

(10)设有定义:

intk=0;,下列选项的4个表达式中与其他3个表达式的值不同的是(A)

A)k++B)k+=1C)++kD)k+1

(11)已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。

下列不能将变量ch中的大写字母转换为对应小写字母的语句是(D)

A)ch=(ch-'A')%26+'a'B)ch=ch+32C)ch=ch-'A'+'a'D)ch=('A'+ch)%26-'a'

(12)有以下程序

intfun()

{staticintx=1;

x+=1;returnx;

}

main()

{inti,s=1;

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

printf("%d\n",s);

}

程序运行后的输出结果是(B)

A)11B)21C)6D)120

(13)若有定义intx,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?

(x++):

(y++)中的条件表达式(x-y)等价的是(D)

A)(x-y<0)B)(x-y==0)C)(x-y>0)D)(x-y<0||x-y>0)

(14)以下程序运行后的输出结果是(C)

main()

{charstr[]="012xy\08s34f4w2";

inti,cnt=0;

for(i=0;str[i]!

=0;i++)

if(str[i]>='0'&&&&str[i]<='9')cnt++;

printf("%d\n",cnt);

}

A)8B)0C)3D)7

(15)以下程序运行后的输出结果是(A)

voidswap(char*x,char*y)

{char*t;

t=x;x=y;y=t;

printf("%s,%s\n",x,y);

}

main()

{char*s1="abc",*s2="123";

swap(s1,s2);

}

A)1bc,a23B)abc,123C)321,cbaD)123,abc

(16)设有如下函数定义

intfun(intk)

{if(k<1)return0;

elseif(k==1)return1;

elsereturnfun(k-1)+1;

}

若执行调用语句:

n=fun(5);,则n的值为(B)

A)0B)1C)3D)5

(17)以下程序运行后的输出结果是(D)

#include

typedefstruct{charname[9];charsex;intscore[2];}STU;

STUf(STUa)

{STUb={"Zhao",'m',85,90};

inti;

strcpy(a.name,b.name);

a.sex=b.sex;

for(i=0;i<2;i++)a.score[i]=b.score[i];

returna;

}

main()

{STUc={"Qian",'f',95,92},d;

d=f(c);

printf("%s,%c,%d,%d,",d.name,d.sex,d.score[0],d.score[1]);

printf("%s,%c,%d,%d\n",c.name,c.sex,c.score[0],c.score[1]);

}

A)Zhao,m,85,90,Zhao,m,85,90B)Qian,f,95,92,Zhao,m,85,90

C)Qian,f,95,92,Qian,f,95,92D)Zhao,m,85,90,Qian,f,95,92

(18)设有定义:

structcomplex

{intreal,unreal;}data1={1,8},data2;

则以下赋值语句中错误的是(A)

A)data2=(2,6);B)data2.real=data1.unreal;C)data2.real=data1.real;D)data2=data1;

(19)以下程序运行后的输出结果是(A)

main()

{intc=0,k;

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

switch(k)

{default:

c+=k;

case2:

c++;break;

case4:

c+=2;break;

}

printf("%d\n",c);

}

A)3B)5C)7D)9

(20)以下程序运行后的输出结果是(B)

#include

main()

{intm=1,n=2,*p=&m,*q=&n,*r;

r=p;p=q;q=r;

printf("%d,%d,%d\n",m,n,*p,*q);

}

A)1,2,1,2B)1,2,2,1C)2,1,2,1D)2,1,1,2

(21)以下程序运行后的输出结果是(D)

voidmain()

{inti=1,j=2,k=3;

if(i++==1&&(++j==3||k++==3))

printf(“%d%d%d”,i,j,k);

}

A)123B)234C)223D)233

(22)若文本文件filea.txt中原内容为:

hello,则运行以下程序后,filea.txt中的内容为(A)

main()

{FILE *f;

f=fopen("filea.txt","a+");

fprintf(f,"abc");

fclose(f);

}

A)helloabcB)abcloC)abcD)abchello

(23)若文本文件filea.txt中原内容为:

hello,则运行以下程序后,filea.txt中的内容为(B)

main()

{FILE *f;

f=fopen("filea.txt","r+");

fprintf(f,"abc");

fclose(f);

}

A)helloabcB)abcloC)abcD)abchello

二、程序阅读题

1.以下程序的功能是求出最小的3位“水仙花数”。

3位“水仙花数”是指一个3位数,它的每个位上的数字的立方之和等于它本身。

例如,33+73+03=370,因此370是一个3位的水仙花数。

请将程序填充完整。

voidmain()

{inti,n1,n2,n3;

for(i=100;i<1000;i++)/*

(1)*/

{

n1=i/100;/*

(2)*/

n2=i/10%10;/*(3)*/

n3=i%10;/*(4)*/

if((n1*n1*n1+n2*n2*n2+n3*n3*n3)==i)printf(“%disexistent!

”,i);/*(5)*/

}

if((n1*n1*n1+n2*n2*n2+n3*n3*n3)!

=i)printf("%d\n",i);/*(6)*/

elseprintf("Non-existent\n");

}

2.以下函数的功能是判断形式参数year所代表的年份是否为闰年,若是返回1,若不是返回0。

请将程序填充完整。

intisLeap(intyear)/*

(1)*/

{intleap;

if(year%4==0||year%100!

=0)leap=1;/*

(2)*/

elseif(year%400==0)leap=1;/*(3)*/

elseleap=0;

if(leap==1)printf(“%disLeap!

”,year);elseprintf(“%disnotLeap!

”,year);/*(4)*/

}

3.职员记录由工号(num)、基本工资(basePay)、津贴(subsidy)及总收入(income)构成,总收入等于基本工资与津贴的和。

以下程序中,在main函数中定义了N个职员的记录并赋值,但没有给总收入赋值。

首先要求在main函数中计算每个职员的总收入,然后在sort函数中按总收入从大到小排序,最后输出N个职员的记录。

#defineN3

typedefstruct

{charnum[10];

floatbasePay,subsidy;

floatincome;

}WK;

voidsort(WK*p)

{inti,j;

WKt;

for(i=0;i++)/*

(1)*/

for(j=i+1;j++)/*

(2)*/

{if()/*(3)*/

{/*(4)*/

/*(5)*/

/*(6)*/

}

}

}

voidmain()

{worker[N]={{"T1301",793.5,365.0},{"T1302",561.5,267.5},/*(7)*/

{"T1303",687.0,158.5}};

inti;

for(i=0;i

{worker[i].income=;}/*(8)*/

sort(worker);

for(i=0;i

/*(9)*/printf("%s,%f,%f,%f\n",,worker[i].basePay,worker[i].subsidy,);

}

4.阅读以下程序,写出程序的运行结果。

#defineN5

intfun(int*s,inta,intn)

{intj;

*s=a;j=n;

while(a!

=s[j])j--;

returnj;

}

main()

{ints[N+1];intk;

for(k=1;k<=N;k++)s[k]=k+1;

printf("%d\n",fun(s,4,N));

}

5.阅读以下程序,写出程序的运行结果。

voidmain()

{char*p="A8DY2dg3X";

inti,cnt,n;

i=0;cnt=0;n=0;

while(p[i]!

='\0')

{if(p[i]>='0'&&p[i]<='9')

{cnt++;n=n*10+p[i]-48;}

i++;

}

printf("cnt=%d\n",cnt);

printf("n=%d\n",n);

}

(1)

(2)

6.阅读以下程序,写出程序的运行结果。

voidmain()

{char*str="dfasfsadD",ch,i=0;

while((ch=str[i])!

='\0')

{if(i%2!

=0&&(ch>='a'&&ch<='z'))ch=ch-'a'+'A';

i++;

putchar(ch);

}

printf("\n");

}

7.以下函数的功能是按以下递归公式求函数值:

fun(n)=10(n=1)

fun(n)=fun(n-1)+2(n>1)

例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。

其中有三处错误,请找出并划线,再将正确代码填在相应行右侧的横线上。

intfun(n)

{intc;

if(n=1)c=10;

c=fun(n-1)+2;

returnc;

}

8.以下函数的功能是求出两个非零正整数的最大公约数,并作为函数值返回。

例如,若给num1和num2分别输入49和21,则输出的最大公约数为7;若给num1和num2分别输入27和81,则输出的最大公约数为27。

其中有三处错误,请找出并划线,再将正确代码填在相应行右侧的横线上。

voidfun(inta,intb)

{intr,t;

if(a

{t=a;

b=a;

b=t;

}

r=a%b;

while(r!

=0)

{a=b;

b=r;

r=a%b;

}

returna;

}

9.以下函数的功能是将s所指字符串中的字母转换为按字母序列的后继字母(但Z转换A,z转换为a),其他字符不变。

中有三处错误,请找出并划线,再将正确代码填在相应行右侧的横线上。

voidfun(char*s)

{while(*s!

='\0')

{if((*s>='A'&&*s<='Z')&&(*s>='a'&&*s<='z'))

{if(*s=='Z')*s='A';

elseif(*s=='z')*s='a';

*s+=1;

}

(*s)++;

}

}

三、程序编写题

注意:

要求写出完整的C语言代码,程序流程图可不画。

若没有写代码,只画出流程图,最多可得5分。

1.从键盘上输入一元二次方程ax2+bx+c=0的系数a、b、c,编程求该方程的根。

2.编写程序,判断两个字符串是否互为逆序串。

两个字符串互为逆序串是指,任意一个字符串按从尾部到首部的顺序读,与另一个字符串恰好相同。

例如,字符串string与字符串gnirts互为逆序串。

参考答案

一、单项选择题

(1)C

(2)B(3)C(4)D(5)A(6)B(7)C(8)B(9)A

(10)A(11)D(12)B(13)D(14)C(15)D(16)D(17)D

(18)A(19)A(20)B(21)D(22)A(23)B

二、程序阅读题

1.

(1)ii<=999

(2)n1=i/100;(3)n2=i/10%10;(4)n3=i%10;(5)break;

(6)i<=999

2.

(1)int

(2)year%4==0&&year%100!

=0(3)year%4==0&&year%100==0

(4)returnleap;

3.

(1)i

(2)jincome<(p+j)->income(4)t=*(p+i);(5)*(p+i)=*(p+j);

(6)*(p+j)=t;(7)WK(8)worker[i].basePay+worker[i].subsidy;

(9)worker[i].numworker[i].income

4.3

5.

(1)cnt=3

(2)n=823

6.dFaSfSaDD

7.

intfun(n)intfun(intn)

{intc;

if(n=1)c=10;if(n==1)

c=fun(n-1)+2;elsec=fun(n-1)+2;

returnc;

}

8.

voidfun(inta,intb)int

{intr,t;

if(a

{t=a;

a=b;

b=a;b=t;

}

r=a%b;

while(r!

=0)

{a=b;

b=r;

r=a%b;

}

returna;returnb;

}

9.

voidfun(char*s)

{while(*s!

='\0')

{if((*s>='A'&&*s<='Z')&&(*s>='a'&&*s<='z'))(*s>='A'&&*s<='Z')||(*s>='a'&&*s<='z')

{if(*s=='Z')*s='A';

elseif(*s=='z')*s='a';

*s+=1;else*s+=1

}

(*s)++;s++

}

}

三、程序编写题题

1.

参考C代码如下:

#include"stdio.h"

#include"math.h"

intmain()

{

inta,b,c,delta;

floatx,x1,x2;

printf("Inputa,b,c:

");

scanf("%d%d%d",&a,&b,&c);

if(a==0)printf("Erro!

\n");

else

{

delta=b*b-4*a*c;

if(delta<0)printf("Norealroot!

\n");

if(delta==0)

{

x=(float)(-b)/(2*a);

printf("x=%f\n",x);

}

if(delta>0)

{

x1=(-b+sqrt(delta))/(2*a);

x2=(-b-sqrt(delta))/(2*a);

printf("x1=%fx2=%f\n",x1,x2);

}

}

return0;

}

参考流程图如下:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1