浙工大C语言复习题和参考题答案_第1页
浙工大C语言复习题和参考题答案_第2页
浙工大C语言复习题和参考题答案_第3页
浙工大C语言复习题和参考题答案_第4页
浙工大C语言复习题和参考题答案_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录

C程序设计复习题集

一、C语言程序设计复习题

1.单项选择题..............................................41

2.填空题...........................................45

3.写输出结果题..............................................46

4.程序填空题...........................................53

5.编程题..............................................61

三、C语言程序设计复习题答案

1.单项选择题..............................................62

2.填空题..............................................63

3.写输出结果题...............................................63

4.程序填空题..............................................64

5.编程题(参考)..............................................65

C语言程序设计复习题

1单项选择题

在每题的四个备选答案中选出一个正确的,并将正确答案号码填在题后括号内。

1.用C语言编写的源文件经过编译,假设没有产生编译错误,那么系统将〔〕。

A、生成可执行目标文件B、生成目标文件

C、输出运行结果D、自动保存源文件

2.在C集成环境执行菜单命令“运行〃,假设运行完毕且没有系统提示信息,说明〔

A、源程序有语法错误B、源程序正确无误

C、源程序有运行错误D、源程序无编译、运行错误,但仅此无法确定其正确性

3.程序运行输出了错误的结果,可以排除以下哪一个因素〔

A、算法错误B、运行时输入数据错误C、未通过编译D、系统资源配置不当

4.以下各个错误中,属于编译错误的选项是〔

A、数组下标超界B、"==〃误写为“七〃C、死循环D、括号不配对

5.假设int类型数据字长为4,其最大值为〔

A、2"B、23,-1C、232-1D、2”

6.常数的书写格式决定了常数的类型和值,03322是〔

A、16进制int类型常数B、8进制int类型常数

C、10进制int类型常数D、10进制longint类型常数

7.2”是〔〕。

A、实型常数100B、值为100的整型常数C、非法标识符D、合法标识符

8.要为字符型变量a赋初值,以下语句中哪一个是正确的〔

A、chara='3';B、chara="3";C、chara=%;D、chara=*;

9.要为float类型变量x、y、z赋同一初值3.14,以下说明语句哪一个是正确的〔〕。

A、floatx,y,z=3.14;B、fIoatx,y,z=3*3.14;

C、floatx=3.14,y=3.14,z=3.14;D、floatx=y=z=3.14;

10.语句“floatpi=3.1415926535;z/将〔〕。

A、导致编译错误B、说明pi为初值3.1415926535的单精度实型常数

C、导致运行时的溢出错误D、说明pi为初值3.141593的单精度实型常数

11.算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为〔〕。

A、算术运算、赋值运算、关系运算B、算术运算、关系运算、赋值运算

C、关系运算、赋值运算、算术运算D、关系运算、算术运算、赋值运算

12.关系运算符中优先级最低的运算符是〔

A、“>="和"<=〃B、">〃和Qa二二"和“!="D、"<="和

13.逻辑运算符中,运算优先级按从高到低依次为〔〕。

A、&&,!,||B、||,&&,!C、&&,||,!D、!,&&,||

14.对C程序在作逻辑运算时判断操作数真、假的表述,以下哪一个是正确的〔

A、0为假非0为真B、只有1为真C、-1为假1为真D、0为真非0为假

15.表达式x=0&&y!=0||x!二0&&y=0等效于〔

A、x*y=0&&x+y!=0B、x*y==0&&(x+y-0)C、x=0||y=0D、x*y=01|x+y=0

16.表达式!x||a二二b等效于〔L

A、!((x||a)=b)B、!(x||y)=bC>!(x||(a=b))D、(!x)11(a==b)

17.以下格式符中,哪一个可以用于以8进制形式输出整数〔

A、%dB、%8dC、%oD、%ld

18.以下格式符中,哪一个可以用于以16进制形式输出整数〔

A、%16dB、%8xC、%d16D、%d

19.a是int类型变量,c是字符变量。以下输入语句中哪一个是错误的〔〕。

A、scanf(H%d,%c",&a,&c);B>scanf("%d%c",a,c);

C、scanf("%d%c",&a,&c);D>scanf("d=%d,c=%c",&a,&c);

20.字符变量ch='A',int类型变量K=25,语句printf("%3d,%d3\n“,ch,k);输出〔

A、65,253B、65253C、65,25D、A25

21.以下各语句序列中,能够且仅输出整型变量a、b中最大值的是〔

A、\f(a>b)printf("%d\nn,a);printf("%d\n",b);

B、printf(n%d\n",b);if(a>b)printf(H%d\n",a);

C、if(a>b)printf("%d\nH,a);elseprintf("%d\n",b);

D、if(a<b)printf("%cl\n",a);printf("%d\n",b);

22.以下各语句序列中,能够将变量u、s中最大值赋值到变量t中的是〔

A、if(u>s)t=u;t=s;B、t=s;if(u>s)t=u;

C、if(u>s)t=s;eIset=u;D、t=u;if(u>s)t=s;

23.以下各语句中,能够输出整型变量a、b中最大值的是〔〕。

A、printf("%d\n",(a>b)?a,b);B、(a>b)?printf("%d",a):printfb);

C、printf("%d",if(a>b)aelseb);D、printf("%d\n",(a>b)?a:b);

24.以下语句应将小写字母转换为大写字母,其中正确的选项是〔〕。

A、if(ch>=,a'&ch<='z')ch=ch-32;B、if(ch>='a'&&ch<='z')ch=ch-32;

C、ch=(ch>='a'&&ch<='z')?ch-32:";D、ch=(ch>'a'&&ch<'z')?ch-32:ch;

25.求整数1至10的和并存入变量s,以下语句中错误的选项是〔

A、s=0;for(i=1;i<=10;i++)s+=i;B、s=0;i=1;for(;i<=10;i++)s=s+i;

Gfor(i=1,s=0;i<=10;s+=i,i=i+1);D、for(i=1;s=0;i<=10;i++)s=s+i;

26.假设sizeof(int)为2,计算1至10的乘积,以下语句序列中正确的选项是〔

A、intjc=1;for(inti=2;i<=10;i++)jc*=i;

B、for(fIoatjc=1,inti=2;i<=10;i++,jc*=i);

C、floatjc=1;for(inti=2;i<=10;jc*=i,i=i+1);

D、for(floatjc=1;i=2;i<=10;i++)jc*=i;

27.以下语句中,哪一个可以输出26个大写英文字母〔〕。

A、for(a=,A';a<='Z';printf("%c",++a));B、for(a=,A';a<'Z';a++)printf("%c",a);

C、for(a=,A';a<='Z';printf("%c",a++));D、for(a=,A';a<'Z'jprintf("%c",++a));

28.与语句while(i>=0&&i<=10)if(i++==5)continue;printf("%f\n",1.0/(i-5));}

功能一样的是〔〕。

A、for(;i>=0&&i<=10;i++)if(i!=5)printf("%f\n",1.0/(i-5));

B、for(;i>=0&&i<=10;i++)if(i==5)printf("%f\n",1.0/(i-5));

C,for(;i>=0&&i<=10;i++)if(i!=5)printf("%f\n",1.0/(i-5));eIsebreak;

D、for(;i<=0&&i>=10;i++)if(i!=5)printf("%f\n",1.0/(i-5));

29.以下语句中与语句while(1){if(i>=100)break;s+=i;i++;}功能一样的是〔

A、for(;i<100;i++)s=s+i;B、for(;i<100;i++;s=s+i);

C、for(;i<=100;i++)s+=i;D、for(;i>=100;i++;s=s+i);

30.以下各语句定义了数组,其中哪一个是不正确的〔

A、chara[3][10]={"China","American","Asia"};B、intx[2][2]={1,2,3,4);

C,floatx[2][]={1,2,4,6,8,10};D、intm[][3]={1,2,3,4,5,6};

31.以下各语句定义了数组,其中哪一个是正确的〔〕。

A、chara[10],*p=a[0]B、intd[2][]={1,2,3,4,5,6);

C、floatx[][3]={1,2,4,6,8,10};D、intm[][]={"no_1","no_2","no_3"};

32.数组定义为inta[3][2]={1,2,3,4,5,6),以下表述中正确的选项是〔〕。

A、数组元素a[3][2]的值为6B、数组元素a[6]的值为6

C、数组元素a[0]的值为1D、a[0]不是int类型的数组元素

33.用宏名定义一个字符串,以下表述中哪一个是正确的(〕。

A、#definepi=3.14159;B、definepi=3.14159

C、#definepi"3.14159"D、#definepi(3.14159);

34.定义带参数的宏计算两式乘积〔如x‘+3・x-5与x-6],以下定义中哪个是正确的〔

A、#definemuit(u,v)u*vB、#definemuit(u,v)u*v;

C^#definemuit(u,v)(u)*(v)D、#definemuit(u,v)=(u)*(v)

35.宏定义#definediv(a,b)a/b的引用div(x+5,y-5)替换展开后是〔

A、x+5/y-5B、x+5/y-5;C、(x+5)/(y-5)D、(x+5)/(y-5);

36.定义带参数的宏“#definejh(a,b,t)t=a;a二b;b二t",使两个参数a、b的值交换,下

列表述中哪个是正确的〔〕。

A、不定义参数a和b将导致编译错误B、不定义参数a、b、t将导致编译错误

B、不定义参数t将导致运行错误D、不必定义参数a、b、t类型

37.以下语句定义p为指向float类型变量d的指针,其中哪一个是正确的〔

A、floatd,*p=d;B、floatd,*p=&d;C、float*p=&d,d;D、floatd,p=d;

38.对语句“inta[10],*p=a;,/,以下表述中哪一个是正确的(

A、*p被赋初值为a数组的首地址B、*p被赋初值为数组元素a[0]的地址

C^p被赋初值为数组元素a[1]的她址D、p被赋初值为数组元素a[0]的地址

39.p1指向某个整型变量,要使指针p2也指向同一变量,哪一个语句是正确的(〕。

A、p2=*&p1;B、p2=**p1;C、p2二&p1;D、p2=*p1;

40.假设指针p已经指向变量x,那么&*p相当于()。

A、xB、*pC、&xD、**p

41.假设指针p已经指向某个整型变量x,那么(*p)++相当于(〕。

A、p++B、x++C、*(p++)D、&x++

42.数组定义为“inta[4][5];,,,引用“a+3”表示()。

A、a数组第4列的首地址B、a数组第1行第4列元素的值

C、a数组第4行的首地址D、a数组第1列第4行元素的值

43,数组定义为“inta[4][5];,/,引用“a⑴+3”表示()。

A、a数组第2行第4列元素的地址B、a数组第2行第4列元素的值

C、a数组第4行的首地址D、a数组第1行第4列的首地址

44.数组定义为“inta⑷⑸;〃,引用“*(*a+1)+2”表示()o

A、a[1][0]+2B、a数组第1行第2列元素的地址

C、a[0][1]+2D、a数组第1行第2列元素的值

45.数组定义为“inta,以下哪一个引用是错误的()o

A、*aB、*(*(a+2)+3)C、&a[2][3]D、++a

46.共用体定义为"uniondata{charch;intx;}a;",以下哪一个是正确的()。

A、a.ch='x';a=10;B>a='x',10;C、a.x=10;a.ch='x';D、a='x";

47.共用体定义为“uniondata{charch;intx;}a;",以下哪一个是不正确的()。

A、a={'x',10};B>a.x=10;a.x++;C、a.ch='x';a.ch++;D、a.x=10;a.ch='x';

48.按位与运算:inta—7,b—12,c—s&b;变量c的值是()o

A、19B、4C、5D、9

49.按位或运算:inta=6,b=8,c=a|b;变量c的值是()。

A、2B、14C、48D、-2

50.按位异或运算:inta二14,b二15,c=a^b;变量c的值是()。

A、1B、15C、-1D、29

51.按位取反运算:inta=16,c=~a;,变量c的值是()。

A、17B、7C、84D、-17

52.左移运算:inta=16,c=a<<2;变量c的值是()。

A、67B、4C、1D、64

53.右移运算:inta=16,c>>2;变量c的值是()o

A、8B、1C、4D、64

54.以“只读”方式翻开文本文件a:\aa.dat,以下语句中哪一个是正确的()o

A、fp=fopen("a:\\aa.datn,"ab");B、fp=fopen("a:\\aa.dat","aH);

C、fp=fopen("a:\\aa.dat","wb");D、fp=fopen("a:\\aa.dat","r");

55.以“追加”方式翻开文本文件a:\aa.dat,以下语句中哪一个是正确的()。

A、fp=fopen(na:\\aa.datH,"ab'1);B、fp=fopen("a:\\aa.datn,"a");

C、fp=fopen("a:\\aa.dat","r+");D、fp=fopen("a:\\aa.dat","w");

56.为读写建设一个新的文本文件a:\aa.dat,以下语句中哪一个是正确的()。

A、fp=fopen("a:\\aa.dat",nab");B、fp=fopen("a:\\aa.dat","w+");

Gfp=fopen(',a:\\aa.dat","wb'*);D、fp=fopen("a:\\aa.dat","rb+");

2填空题

1.设floatx=2.5,y=4.7;inta=7;,表达式x+a%3*(int)(x+y)%2/4的值为0

2.设intx=17,y=5;执行语句x+=-x%―y后x的值为。

3.设intx=17,y=5;执行语句x%=x++/—y后x的值为。

4.设inta=7,b=6,c=5;,表达式(a+b)>(c*c)&&b=c||c>b的值为。

5.设inta=3,b=5,c=7;,表达式a>c||c>b!二0&&c==b+a的值为。

6.三角形边长a、b、c和s=(a+b+c)/2,计算其面积的算术表达式为。

7.方程ax?+bx+c=0系数a、b、c且存在两个实根,计算其中一个实根的算术表达式为。

8.p为本金,r为1年期存款年利率,计算存款p元5年到期时本金、利息总和(计复利)

的算术表达式为。

9.将数学式(x+1)e2x写作算术表达式为。

10.ch是字符变量,判断ch为大写英文字母的逻辑表达式为。

11.判断int类型变量n是否为两位整数的逻辑表达式为。

12.判断变量a、b的值均不为。的逻楫表达式为。

13.判断变量a、b是否绝对值相等而符号相反的逻辑表达式为。

14.判断变量a、b中必有且只有一个为。的逻辑表达式为。

15.m是值为两位数的整型变量,判断其个位是奇数而十位数是偶数的逻辑表达式为。

16.求解赋值表达式a=5+(c=6)后表达式值、a、c的值依次为。

17.求解赋值表达式a=(b=10)%(c=6),表达式值、a、b、c的值依次为。

18.求解逗号表达式x二a二3,6*a后,表达式值、x、a的值依次为。

19.求解逗号表达式(a=15,a*4),a+5,表达式值、a的值依次为。

20.求变量a、b中最大值的条件表达式为。

21.假设a二13、b=25、c=-17,条件表达式((y=(a<b]?a:b)<c)?y:c的值为。

22.假设s='d',执行语句s=(s>='a,&&s<='z')?s-32:s;字符变量s的值为。

23.整型变量x的值为25,语句"printf("%o",x);"的输出结果为。

24.整型变量m的值为27,语句printf("m=%x",m);的输出结果为。

25.语句printf("s%s","ma11");的榆出结果为。

26.假设intk=10,循环语句while(k=0)k=k-1;执行次。

27.假设intk=2,循环语句while(k!=0){printf("%d",k);k—;}执行次。

28.假设inti=10,s=0;,执行语句whiIe(s+=i—,—i);后s、i值分别为。

29.语句for(ints,i=1;i<=100;s+=i,i++);能否计算1〜100的和?原因是.

30.假设int类型变量字长为2,程序段intjc=1;for(inti=2;i<10;i++)jc*=i;能否计

算10的阶乘?原因是。

31.定义a为共有10个元素的静态存储int类型数组的语句为。

32.定义a为长度为10的字符串、同时为字符串赋初值"continue"的语句为。

33.定义a为共有5个元素的一维整型数组、同时定义p为指向a数组首地址的指针变量的

语句为。

34.定义a为4行5列的整型数组、同时定义p为指向a数组首地址的指针变量的语句为。

35.如定义语句为"chara[]="windows",b[]="95";",

语句"printf("%s",strcat(a,b));"的输出结果为。

36.定义语句为chara[15],b[]="windows95";,那么语句printf("%s",strcpy(a,b));

的输出结果为。

37.定义chara[]="Box",b[]="Boss";,语句printf("%d",strcmp(a,b));输出。

38.定义chara[10]="student";,语句"printfstrIen(a));"输出结果为。

39.定义chara□:"WINDOWS";,语句printfstrIwr(a));输出。

40.定义chara[]="hangzhou",*p=a;,

执行for(inti=0;*p!='\0';p++,i++);后i的值为。

41.宏定义#definef(x,y)printf(x,y)的引用f("%d\n",m);置换展开后为。

42.宏定义#definef(x,y)fopen(x,y)的引用f("a.txt","rw");置换展开后为。

43.宏定义#definef(c)c>='A'&&c<='Z'的引用f(x[i])置换展开后为。

44.表达式3&5、3|5、3||5的值分别为、、。

45.设intx=707,表达式x~x、x|x、~x"\的值分别为、、。

46.设intx=0707,表达式~x&&x、!x&&x、x>>3&~0的值分别为、、。

47.函数的参数为int类型时,虚参与实参结合的传递为。

48.函数的参数为float类型时,虚参与实参结合的传递为。

49.函数的参数为char*类型时,虚参与实参结合的传递为。

50.函数的实参为常量时,虚参与实参结合的传递为。

51.对以下递归函数,函数调用f(3)的返回值是。

intf(intn){return((n==0)?1:f(n-1)+2);}

52.函数f定义如下,调用f("1475")的返回值为。

intf(char*s){intk=0;while(*s)k+=*s++-'O';returnk;}

53.函数change定义如下,a=10、b=5,执行change(a,b)后a、b的值分别为。

voidchange(inta,intb){intt=0;t=a;a=b;b=t;}

54.开辟一个存储n个int数据的内存区、并将内存区首地址送入p[指向int类型的指针

变量〕的语句为。

55.释放由p所指向的内存区的语句为。

56.fp为文件位置指针,将fp移到离当前位置25个字节处的语句为。

3写输出结果题

1.#incIude<stdio.h>

voidmain()

{charch;intk=0;

for(ch="A";ch<1H1;ch++,k++)if(k%2==0)printf("%cH,ch);

printf("\n");

}输出结果:

2.#incIude<stdio.h>

voidmain()

{intk=0;

charc='A1;

do{

switch(c++){

case'A':k++;break;

case1B':k—;

case'C:k+=2;break;

case'D':k=k%2;break;

case'E':k=k*1O;break;

defauIt:k=k/3;

)

k++;

}while(c<*G');

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

}输出结果:

3.#incIude<stdio.h>

voidmain()

{inta[6]={12,4,17,25,27,16},b[6]={27,13,4,25,23,16),i,j;

for(i=0;i<6;i++){

for(j=0;j<6;j++)if(a[i]==b[j])break;

if(j<6)printf("%dH,a[i]);

)

printf("\nn);

}输出结果:

4.#incIude<stdio.h>

voidmain()

{inta[8]={1,0,1,0,1,0,1,0},i;

for(i=2;i<8;i++)a[i]+=a[i-1]+a[i-2];for(i=0;i<8;i++)printf(n%d",a[i]);

printf("\n");

}输出结果:

5.#include<stdio.h>

voidmain()

{ints=1,t=1,a,n;

scanf("%d%dM,&a,&n);

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

t=t*10+1;s=s+t;输入数据:2,4

)

s*=a;printf(,,SUM=%d\n",s);输出结果:

)

6.#include<stdio.h>

#definePR(x,y)printf(n%s=\t%d\n",x,y)

voidmain()

{intx=3,y=2,z=1;输出结果:

PR("x|y&z",x|y&z);PRx、&~z);

PR("x&y&z”,x&y&z);x=1;y=-1;

PR("!x|x",!x|x);PR("~x|x",~x|x);

)

7.#incIude<stdio.h>

voidmain()

{inta[5]={2,4,6,9,12),b[6]={2,3,4,6,8,9);

for(inti=0;i<5;i++)for(intj=0;j<6;j++)

if(*(a+i)=*(b+j))printf("%d",*(a+i));

printf("\n");

)输出结果:

8.#incIude<stdio.h>

#incIude<string.h>

voidmain()输出结果:

{charstr1[]="*******n;

for(inti=0;i<4;i++){

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

str1[i]=,';str1[strlen(str1)-1]='\0';

)

)

9.#include<stdio.h>

voidmain()

{chara[5][8];输出结果:

for(inti=0;i<5;i++)for(intj=0;j<8;j++)

if(i==0||i==4)a[i][j]='-';elsea[i][j]='';

for(i=1;i<4;i++){a[i][0]='|';a[i][5]='|';J

for(i=0;i<5;i++)a[i][6]='\0';

for(i=0;i<5;i++)printf("%s\n',,a[i]);

}

10.#include<stdio.h>

voidmain()

{chara[8],temp;inti,j;输出结果:

for(i=0;i<7;i++)a[i]=,a'+i;

for(i=0;i<3;i++){

temp=a[0];for(j=1;j<7;j++)a[j-1]=a[j];

a[6]=temp;a[7]='\0';

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

11.#incIude<stdio.h>

voidmain()输出结果:

{inti,j,n;

for(i=0;i<4;i++){

for(j=1;j<=i;j++)printf("");

n=7-2*i;

for(j=1;j<=n;j++)printf("%1d",n);

printf("\n");

)

J

12.#incIude<stdio.h>

voidmain()

{chara[8],temp;intj,k;

for(右0;j<7;j++)a[j]='a'+j;输出结果:

a[7]='\0';

for(j=0;j<3;j++){

temp=a[6];for(k=6;k>0;k—)a[k]=a[k-1];

a[0]=temp;printf("%s\n",a);

)

1

13.#incIude<stdio.h>输出结果:

voidprint(int,char,int);

voidmain()

{print(3,1);print(2,'*',3);

print(1,,5);print(2,'#',3);

print(2,'#1,3);

voidprint(intbegin,charpzf,intn)

{chara[50];

for(inti=0;i<begin;i++)a[i]='';

for(i=0;i<n;i++)a[begin+i]=pzf;

a[begin+i]='\0';printf("%s\n",a);

)

14.#include<stdio.h>

voidmain()运行时输入:5-73

{inta,b,c,find(int,int,int);

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

printf("%d\n%d,%d,%d\n",find(a,b,c),a,b,c);输出结果:

)

intfind(inta,intb,intc)

{intu,s,t;

u=((u=(a>b)?a:b)>c)?u:c;

t=((t=(a<b)?a:b)<c)?t:c;

s=a+b+c-u-t;a=u;

b=s;c=t;returns;

1

15.#include<stdio.h>

voidfun1(intn,inta[][3])输出结果:

{for(inti=0;i<n;i++)

for(intj=O;j<n;j++)a[i][j]=a[i]⑴;

1

voidmain()

{inta[3][3]={{6,4,2},{8,6,4},{9,6,3});

fun1(3,a);

for(inti=0;i<3;i++){

for(intj=0;j<3;j++)printf(n%d",a[i][j]);

printf(H\nn);

)

1

16.#include<stdio.h>

intfun3(intm)

Iinti;

if(m==21|m==3)return1;输出结果:

if(m<21|m%2==0)return0;

for(i=3;i<m;i=i+2)if(m%i==0)return0;

return1;

voidmain()

{intn;

for(n=1;n<10;n++)if(fun3(n)==1)printf(*'%d",n);

)

17.#include<stdio.h>

voidsub(int*a,int*b,int*c,m,n)

{inti,j;输出结果:

for(i=0;i<m;i++)*(c+i)=*(a+i);

for(j=0;j<n;j++,i++)*(c+i)=*(b+j);

)

voidmain()

{inti,x[5]={1,5,3,8,4},y[3]={9,-4,6},z[8];

sub(x,y,z,5,3);

for(i=0;i<8;i++)printf("%d",z[i]);

printf("Xn");

)

18.#include<stdio.h>

voidsort(char*a[],intn)输出结果:

{inti,j,I;char*temp;

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

I二i;

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

if(strcmp(a[j],a[l])<0)l=j;

if(I!=i){temp=a[i];a[i]=a[l];a[l]=temp;}

)

1

voidmain()

{char*name[4];intk;

charch[4][15]={"morning","afternoon","night","evening"};

for(k=0;k<4;k++)name[k]=ch[k];

sort(name,4);

for(k=0;k<4;k++)printf("%s\rin,name[k]);

)

19.#incIude"stdio.h"

voidpIine(char*a,charc,intI,intn)

{inti;

for(i=1;i<l;i++){*a=,,;a++;J输出结果:

for(i-1;i<=n;i++,*a=c,a++);*a='\0';

1

voidmain()

{chara[80];

inti;void(*pf)(char*,char,int,int);

pf=pline;

for(i=1;i<5;i++){(*pf)(a,'$',5-i,2*i-1);puts(a);)

)

20.#include"stdio.h"

intbinary(intx,inta[],intn)输出结果:

{intlow=0,high=n-1,mid;

while(low<=high){

mid=(low+high)/2;

if(x>a[mid])high=mid-1;

eIseif(x<a[mid])low=mid+1;

elsereturn(mid);

)

return-1;

)

voidmain()

{staticinta[]={4,0,2,3,1};inti,t,j;

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

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

while(j>=0&&t>a[j]){a[j+1]=a[j];j-;}

a[j+1]=t;

1

printf("%d\n",binary(3,a,5));

1

21.#include<math.h>

#include<stdio.h>输出结果:

voidmain()

{doubIef(doubIe,int);

printfC^lfXn';f(2.0,14));

)

doublef(doublex,intn)

{doublet;

if(n==1)t=x;

else{if(n/2*2==n)t=x*f(x,n/2);eIset=x*pow(f(x,n/2),2.0);}

returnt;

)

22.#include<stdio.h>

doublex,u,v输出结果:

doublet(doubIea,doubIe(*f)(doubIe))

{return(*f)(a*a);}

doublef(doublex)

{return2.0*x;}

doubleg(doublex)

{return2.0+x;}

voidmain()

{x=4.0;u=t(x,f);v=t(x,g);

printf("u=%5.3fv=%5.3f\n",u,v);

1

23.#include<stdio.h>

voidmain()

{staticstructs1{charc[4],*s;);

s1={“abc“,“deF'};

staticstructs2{char*cp;structs1ss1;)

s2={'ghi",{,,jkr',"mno',1l;

printf("%c,%c\nH,s1.c[0],*s1.s);输出结果:

printf("%s,%s\n",s1.c,s1.s);

printf("%s,%s\n",s2.cp,s2.ss1.s);

printf("%s,%s\nH,++s2.cp,++s2.ss1.s);

)

24.#include<stdio.h>

structs1{char*s;inti;structs1*s1p;};

voidmain()

{statics1a[]={{"abed",1,a+1},{"efgh",2,a+2),{"ijkI",3,a});

inti;

for(i=0;i<2;i++){输出结果:

printf("%d\n",-a[i].i);

printf("%c\nH,++a[i].s[3]);

)

)

4程序填空题

1.输入2个整数,输出它们的最小公倍数和最大公约数。

#include<stdio.h>

voidmain()

{intm,n,gbs,gys;

scanf((1_));

for(gbs=m;(2);gbs=gbs+m);

gys=(3)

(4)

2.输入N个实数,输出其中的最大值、最小值。

#incIude<stdio.h>

voidmain()

{floatno1,nmax,nmin;(1_)

scanf("%d",&n);scanf("%f",&no1);

nmax=no1;(2)

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

scanf(3));

if(nox>nmax)nmax=nox;(4)

)

printf("MAX=%fMIN=%f\nH,nmax,nmin);

)

3.输入20个数,输出它们的平均值,输出与平均值之差的绝对值为最小的数组元素。

#include<stdio.h>

(1)

voidmain()

{fIoata[20],pjz=0,s,t;inti,k;

(2)

for(i=0;i<20;i++)pjz+=a[i];

(3)

s=fabs(a[0]-pjz);

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

if(fabs(a[i]-pjz)<s){s=fabs(a[i]_pjz);t=a[i];}

(4)

)

4.输入假设干字符,分别统计数字字符个数、英文字母个数,输入换行符时输出统计结果。

#incIude<stdio.h>

voidmain()

{charch;(1)

while(((2))!=>\n,){

if(ch>='0,&&ch<='9,)s1++;

if(ch>=,a'&&ch<='z'(3))s2++;

)

(4)

)

5.输入m,求n使n!<=m<=(n+1)!,例如输入726,应输出n=6。

(1)

voidmain()

{int(2);

scanf((3));

for(n=2;jc<=m;n++)jc=jc*n;

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

)

6.以下程序计算并输出方程X2+Y2+Z2=1989的所有整数解。

#include<stdio.h>

voidmain()

{(1)

for(i1=-45;i1<=45;i1++)

for((2))

for(i3=-45;i3<=45;i3++)if((3))

printf((4),i1,i2,i3);

)

7.以下程序求n(n的值由运行时确定)个正整数的最小公倍数。

#include<stdio.h>

#include<stdlib.h>

voidmain()

{int*p,i,n,gbs;

(1)

P=(2);

for(i=0;i<n;i++)scanf("%d",p+i);gbs=*p;

11:for(i=1;i<n;i++)if((3)){gbs+=*p;(4)}

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

)

8.调用find函数求实参数组中最大值,再调用find函数求实参数组中最小值。

#include<stdio.h>

voidmain()

{fIoats,a[7]={2,6,3,8,3,12,9},find(fIoat*,int,int);

s=find(a,7,1);(1_)

(2)printf("%f\n",,s);

)

fIoatfind(float*p,intn,intfIag)

{inti;floatt,fh;

if(flag>=0)fh=1;elsefh=-1;(3)

for(i=1;i<n;i++)if(*(p+i)*fh>t*fh)t=*(p+i);

(4)

)

9.对数组按值从大到小的顺序排序后输出。

#include<stdio.h>

voidmain()

{floata[7]={2,6,3,8,3,12,9};voidsort(float*,int);

(1)

for(inti=0;i<7;i++)printf("%f",a[i]);

printf("\nH);

)

voidsort((2))

{inti,j,k;fIoatt;

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

k=i;for(j=i+1;j<n;j++)if(⑶)k=j;

(4)*(p+i)=*(p+k);*(p+k)=t;

)

1

10.以下程序读入时间将其加1秒后输出,格式为hh:mm:ss,当小时等于24小时置为0。

#include<stdio.h>

struct{inthour,minute,second;}time;

voidmain(void)

{scanf(n%d:%d:%d",[1]);time.second++;

if((2)==60){

(3)time,second=0;

if(time.minute=60){

time.hour++;time.minute=0;

if(⑷)time.hour=0;

)

1

printf("%d:%d:%d\n",time,hour,time.minute,time.second);

)

11.将编号从⑴到(11)的同学围成一圈,按以下顺序贺卡:⑴、(3)、(6)、(8)、(11)、⑵、⑸、⑺、

(10)、(1)、(4)、……,计算至少发到第几张时,每位同学发到的贺卡数同样多。

#incIude<stdio.h>

void

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论