C语言程序设计期末考试题库_
《C语言程序设计期末考试题库》
1、 题型统计及分值分配
题型
章序
单选
填空
程序分析
改错
编程
1-2
18
14
10
7
4
3
13
6
4
11
10
8
2
5
13
4
6
6
13
8
1
7
7
0
2
8-11
6
0
5
12-14
9
0
15
10
6
合计
100
50
15
15
15
2、...
《C语言程序设计期末考试题库》
1、 题型统计及分值分配
题型
章序
单选
填空
程序
改错
编程
1-2
18
14
10
7
4
3
13
6
4
11
10
8
2
5
13
4
6
6
13
8
1
7
7
0
2
8-11
6
0
5
12-14
9
0
15
10
6
合计
100
50
15
15
15
2、组卷建议
试卷的试题类型及分值为:
1、单选题(20个,每个1分,共20分)
2、填空题(15个空,每空1分,共15分)
3、程序分析题(2个,共20分)
4、改错题(3个,共30分)
5、编程题(1个,共15分)
一、选择题
第1、2章:
*1.以下选项中正确的整形常量是( B)
A )12 B) -20 C)1,000 D) 4 5 6
* 2.以下选项中正确的实型常量是
( D )
A )0 B)3.1415
C)0.329*102 D ).871
* 3.以下选项中不正确的实型常量是是( B )
A)2.607E-1 B)0.8103e 2 C)-77.77 D)456e-2
* 4.以下选项中不合法的用户标识符是(A )
A)abc.c B)file C)Main D)PRINTF
* 5.以下选项中不合法的用户标识符是( C )
A)_123 B)printf C) A$ D) Dim
* 6.C语言中运算对象必须是整型的运算符是(A )
A)% B)/ C) ! D) * *
# 7.可在C程序中用作用户标识符的一组标识符是( B )
A)void B)as_b3 C)For D) 2c
define _123 _abc
DO
WORD If case SIG
# 8.若变量已正确定义并赋值,符合C语言语法的表达式是
(B )
A)a=a+7; B)a=7+b+c,a+ + C)int(12.3%4) D)a=a+7=c+b
# 9.以下叙述中正确的是( A )
A)a是实型变量,c允许进行赋值a=10,但不可以这样说:实型变量中允许存放整型值
B)在赋值表达式中,赋值号左边即可以变量也可以是任意表达式
C) 执行表达式a=b后,在内存中a和b存储单元中的原有值都将改变,a的值已由原值改变为b的值,b的值由原值变为0.
D)已有a=3,b=5,当执行了表达式a=b,b=a之后,使a中的值为5,b中的值为3。
# 10.以下叙述中正确的是(C )
A)在C程序中无论是整数还是实数,只要在允许的范围内都能准确无误的表示。
B)C程序由主函数组成
C) C程序由若干函数组成
D)C程序中只允许包含一个函数。
* 11.VC6.0中int类型变量所占字节数是(D )
A)1 B)2 C)3 D)4
* 12.合法的八进制数是(A )
A)0 B)028 C) -077 D) 01.0
* 13.不合法的十六进制数是( A )
A)oxff B)0Xabc C)0x11 D) 0x19
*14.组成C语言程序的是___C___。
A、
子程序 B、过程 C、函数 D、主程序和子程序
*15.语句printf(“%%d%d”, 123); 将输出:( C )
A、%123%d B、 %%d123 C、 %d123 D、上述语句语法有错
*16.下列四组选项中,均是C语言关键字的选项是__B____。
A、auto enum include B、switch typedef continue
C、signed union scanf D、if struct type
*17.以下选项中属于C语言的数据类型是 __C____。
A、复数型 B、逻辑型 C、双精度型 D、集合型
*18.在C语言中,int char short三种类型数据在内存中所占用的字节数__D____。
A、由用户自己定义 B、均为2个字节
C、是任意的 D、由所用机器的机器字长以及相应的编译系统决定
第3章:
* 19. 若a、b、c、d都是int类型变量且初值为0,以下选项中不正确的赋值语句是( C )
A) a=b=c=100; B) d++; C) c+b; D) d=(c=22)-(b++);
*20. 以下选项中不是C语句的是( C )
A) {int i; i++; printf("%d\n", i); } B) ; C) a=5,c=10 D) { ; }
* 21. 以下合法的C语言赋值语句是(D )
A) A=B=58 B) k=int(a+b); C) a=58,b=58 D) --i;
# 22. 以下程序的输出结果是( C )
#include
main( )
{ int x=10,y=3; printf("%d\n", y=x/y); }
A) 0 B) 1 C) 3 D)不确定的值
# 23.若变量已正确为int类型,要给a、b、c输入数据,以下正确的输入语句是(D )
A) read(a,b,c);
B) scanf("%d%d%d",a,b,c);
C) scanf("%D%D%D",&a,&b,&c);
D) scanf("%d%d%d",&a,&b,&c);
※ 24. 若变量已正确说明为float类型,要通过以下赋值语句
scanf("%f %f %f", &a, &b, &c);给a赋予10、b赋予22、c赋予33,以下不正确的输入形式是(B )
A) 10 22 33 B) 10.0,22.0,33.0 C) 10.0 22.0 33.0 D) 10 22 33
* 25. 若变量已正确定义,要将a和b中的数进行交换,下面不正确的语句组是( C )
A) a=a+b,b=a-b,a=a-b; B) t=a,a=b,b=t;
C) a=t; t=b; b=a; D) t=b; b=a; a=t;
※26.若有正确定义语句,
double x=5.16894;
语句printf("%f\n",(int)(x*1000+0.5)/( double)1000); 输出结果是(D )
A) 输出说明与输出项不匹配,输出无定值 B) 5.17000
C) 5.168000 D) 5.169000
# 27. 若有以下程序段:
int c1=1,c2=2,c3;
c3=c1/c2;
printf(“%d\n”,c3);
执行后的输出结果是( A )
A) 0 B) 1/2 C) 0.5 D) 1
# 28. 若有以下程序段,其输出结果是(B )
int a=0,b=0,c=0;
c=(a-=a-5),(a=b,b+3);
printf("%d,%d,%d\n",a,b,c);
A) 0,0,-10 B) 0,0,5 C) -10,3,-10 D) 3,3,-10
# 29.a是int型变量,c是字符变量。下列输入语句中哪一个是错误的( B )。
A、scanf("%d,%c",&a,&c); B、scanf("%d%c",a,c);
C、scanf("%d%c",&a,&c); D、scanf("d=%d,c=%c",&a,&c);
# 30、printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串的长度大于5,则输出时( B ).
A、从左起输出该字符串,右补空格 B、按原字符串长度从左向右全部输出
C、右对齐输出该字符串,左补空格 D、输出错误信息
#31.语句printf(“%d\n”,strlen(“ATS\n012\1\\”));的输出结果是( C )。
A、11 B、10 C、9 D、8
第4章:
* 32. 下列运算符中优先级最高的算符是( A )
A)! B)% C)一; D)&&
* 33. 下列运算符中优先级最低的算符是( A )
A)|| B)!= C)<= D)+
* 34. 为表示关系:x≥y≥x,应使用的C语言表达式是( A )
A)(x>=y)&&(y>=z)
B)(x>=y)AND(y>≡x)
C)(x>=y>=z)
D)(x>=y)&(y>=z)
* 35. 设a、b和c都是int型变量,且a=3,b=4,c=5则以下的表达式中值为0的表达式是( D )
A)a&&b B)a<=b C)a||b+c&&b-c D)!((a
main()
{ int a=2,b=-1,c=2;
if(a
main()
{ int w=4,x=3,y=2,z=1;
printf(”%d\n”,(w
main()
{ int a,b,s;
scanf("%d%d",&a,&h);
s=a;
if(a
main()
{
int k=-3;
if (k<=0) printf(“* * * *\n”)
else
printf(“&&&&\n”);
}
程序的输出结果是( D)
A)输出##### B) 输出&&&& c)输出####&&&& D)有语法错不能通过编辑
*40.下列各语句序列判别变量x、y的大小,若x5)
printf ("%d\n",m);
else
printf ("%d\n",m--);
}
A、7 B、 6 C、5 D、4
#42.所有变量均已正确定义,则下列程序段运行后y的值是__A__。
int a=0,y=10;
if(a = 0) y - -;
else if(a>0) y++;
else y += y;
A、20 B、11 C、9 D、0
第5章
*43.有以下程序段
int k,j,s;
for(k=2;k<6;k++,k++)
{s=1;
for(j=k;j<6;j++) s+=j;
}
printf(”%d\n”,s);
程序段的输出结果是(D )
A)9 B)1 C)11 D)10
# 44. 有以下程序段:
int i,j,m=0;
for(i=1;i<=15;i+=4)
for(j=3;j<=19:j+=4)m++;
printf(”%d\n”,m);
程序段的输出结果是( C )
A)12 B)15 C)20 D)25
* 45. 有以下程序段:
int n=10;
while(n>7)
{ n--;
printf(”%d\n”,n);
}
程序段的输出结果是( B )
A)10 B)9 C)10 D)9
9 8 9 8
8 7 8 7
7 6
# 46. 有以下程序段:
int x = 3;
do
{printf(”%3d”,x-=2);
}
while(!(--x));
程序段的输出结果是(C )
A)1 B)3 O C)1 -2 D)死循环
*47. 有以下程序:
#include
main()
{ int i,sum;
for(i=1;i<6;i++ ) sum+=sum;
printf(”%d\n”,sum);
}
程序的输出结果是( C )
A)15 B)14 C)不确定 D)O
# 48. 有以下程序:
#include
main()
{int y=10;
for( ;y>0;y--)
if(y%3==0)
{ printf(”%d”,--y);continue;(B )
}
}
程序的输出结果是
A)741 B)852 C)963 D)875421
* 49. 有以下程序段:
int x;
for(x=3;x<6;x++)
printf((x%2)?("**%d"):("##%d\n"),x);
程序段的输出结果是( D )
A)**3 B)##3 C)##3 D)**3##4
##4 **4 **4##5 **5
**5 ##5
# 50. 有以下程序:
#include
main()
{ int i;
for(i=1;i<=5;i++)
{ if(i%2) printf("*");
else continue;
printf("#");
}
printf("$\n");
}
程序的输出结果是( A )
A)*#*#*#$ B)#*#*#*$ C)*#*#$ D)#*#*$
# 51. 以下叙述中正确的是( D )
A)do--while语句构成的循环不能用其他语句构成的循环来代替
B)do-while语句构成的循环只能用break语句退出
C)用do-while语句构成循环时,只有在while后的表达式为非零时结束循环
D)用do-while语句构成循环时,只有在while后的表达式为零时结束循环
# 52. 有以下程序:
#include
main()
{ int x,i;
for(i=1;i<=100;i++)
{x=i;
if(++x%2==0)
if(++x%3==0)
if(++x%7==0)
printf{”%d”,x);
}
printf(”\n”);
}
程序的输出结果是( A )
A)28 70 B)42 84 C)26 68 D)39 81
※53.在下列选项中,没有构成死循环的程序是__A____。
A 、
int i =100;
whine(1) /*括号中是阿拉伯数字“1”*/
{ i=i%100+1;
if (i>100)break;
}
B、
for (;;);
C、
int k=1000;
do
{++k;}
while(k>=1000);
D 、
int s=36;
while (s);
--s;
*54.在C语言中,while语句后的一对圆括号中,用以决定是否继续循环的表达式( B )。
A、只能用逻辑表达式
B、可用任意表达式
C、只能用逻辑表达式或关系表达式
D、只能用关系表达式
*55.有如下程序
main()
{ int i, sum;
for(i=1;i<=3; sum++) sum+=i;
printf(“%d\n”,sum);
}
该程序的执行结果是( C )。
A、 6
B、3
C、死循环
D、0
第6章:
*56. c语言中的简单数据类型有( B)
A)整型、实型、逻辑型 B)整型、实型、字符型
c)整型、字符型、逻辑型 D)整型、实型,逻辑型、字符型
*57. C语言中,字符(char)型数据在微机内存中的存储形式是(D )
A)反码 B)补码 c)EBCDIC码 D)ASCⅡ码
*58. 设有定义语句:char a='\72'; 则变量a(A )
*A)包含1个字符 B)包含2个字符 C)包含3个字符 D)定义不合法
*59. C语言中,下列不合法的字符常量是( D)
A)'\xff' B)'\65' C)'&' D)'\028'
*60. c语言中,下列不合法的字符串常量是( )
A)"\121" B)'y=' C)"\n\n" D)"ABCD\x6d"
*61. 判断char型变量c是否为大写字母的最简单且正确的表达式是(D )
A)'A'<=c<='Z' B)(c>='A')||(c<='Z')
C) ('A'<=c)AND('Z'>=c) D) (c>='A')&&(c<='Z')
*62.有以下程序:
#include
main()
{
char c1='A',c2='Y';
printf("%d,%d\n",c1,c2);
}
程序的输出结果是( D )
A)因输出格式不合法,无正确输出 B)65,90
C)A,Y D)65,89
# 63.有以下程序:
#include
main()
{ char x='A';
x=(x>='A'&&x<='Z')?(x+32):x;
printf("%c\n",x);
}
程序的输出结果是(B )
A)A B)a C)Z D)z
*64. 有以下程序:
#include
main()
{ char ch;
ch='A'+'5'-'3';
printf("%d,%c\n",ch,ch);
}
程序的输出结果是( A )
A)67,C B)B,C C)C,D D)不确定的值
# 65. 有以下程序:
#include
main()
{ int c;
while((c=getchar())!='\n')
{ switch(c-'2')
{ csse 0 :
case 1 : putchar(c+4);
case 2 : putchar(c+4);break;
case 3 : putchar(c+3);
default : putchar(c+2);break;
}
} printf("\n");
}
从第一列开始输入数据:2473,代表Enter键,程序的输出结果是( A )
A)668977 B)668966 C)66778777 D)6688766
※ 66. 若变量已正确定义,要求用语句:scanf("%f%c%f%c",&a,&cl,&b,&c2);给c1赋予字符%,给c2赋予字符#,给a赋予2.O,给b赋予4.0,则正确的输入形式是('Ц'代表空格,代表Enter健)( C )
A)2.0Ц%Ц4.0Ц# B)2.0%4.0Ц#
C)2%ЦЦ4# D)2Ц%Ц4Ц#
# 67.在Vc6.0中,已知数组int a[4][5]的首地址为30055(十进制),则元素a[2][4]的内存地址为( D )。
A、30069 B、30083 C、30075 D、30111
*68.设int a[][3]={1,2,3,4,5,6,7,8,9};则数组a的第一维的大小是__B____。
A、2 B、3 C、4 D、无确定值
第7章
*69.以下叙述中正确的是( C )
A)C语言程序总是从第一个定义的函数开始执行
B)在C语言程序中,要调用的函数必须在main()函数中定义
C)C语言程序总是从main()函数开始执行
D)c语言程序中的main()函数必须放在程序的开始部分
*70. 已定义了以下函数
fff(float x)
{ printf(”%d\n”,x*x);}
该函数的类型是( C )
A)与参数x的类型相同 B)void类型 c)int类型 D)无法确定
#71. 有函数调用语句;func((expl,exp2),(exp3,exp4,exp5));,此函数调用语句含有的实参个数是( B )
A)1 B)2 C)4 D)5
# 72. 有以下程序:
#include
int func(int a,int b)
{ int c;
c=a+b; return c;
}
main()
{ int x=6,y=7,z=8,r;
r=func((x--,y++,x+y),z--); printf("%d\n",r);
}
程序的输出结果是( C )
A)11 B)20 C)21 D)31
※ 73. 有以下程序:
#include
int f(int,int);
main()
{ int i=2,p;
p=f(i,i+1) printf(”%d\n,p);
}
int f(int a,int b)
{ int c;
c=a;
if(a>b) c=1;
else if(a==b) c=0;
else c=-1;
return(c);
}
程序的输出结果是( A )
A)-1 B)0 C)1 D)2
*74.在C语言程序中,有关函数的定义正确的是___B___。
A、函数的定义可以嵌套,但函数的调用不可以嵌套
B、函数的定义不可以嵌套,但函数的调用可以嵌套
C、函数的定义和函数的调用均不可以嵌套
D、函数的定义和函数的均可以嵌套
*75.putchar函数可以向终端输出一个___D___。
A、整型变量表达式值 B、实型变量值
C、字符串 D、字符或字符型变量值
第8-11章
*76.若有定义:int x,*pb;则正确的赋值表达式是(A)
A)pb=&x B)pb=x C)*pb=&x D)*pb=*x
#77.若有以下程序:
#include
void sub(int x, int y, int *z)
{*z=y-x;}
main()
{int a,b,c;
sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);
printf(“%d,%d,%d\n”,a,b,c);
}
程序的输出结果是:( B )
(A)5,2,3 (B)-5,-12,-7 (C)-5,-12,-17 (D)5,2,7
#78.若有以下程序:
main()
{int k=2,m=4,n=6,*pk=&k,*pm=&m,*p;
*(p=&n)=*pk*(*pm);
printf(“%d\n”,n);
}
程序的输出结果是:( C )
(A)4 (B)6 (C)8 (D)10
#79.若有以下程序:
main()
{int * *k=2, *a, b=100;
a=&b; k=&a;
printf(“%d\n”,* *k);
}
程序的输出结果是:( B )
(A)运行出错 (B)100 (C)a的地址 (D)b的地址
#80.若有以下程序:
#include
void sub(double x, double *y, double *z)
{*y=*y-1.0; *z=*z+x;}
main()
{double a=2.5,b=9.0,*pa,*pb;
pa=&a; pb=&b;
sub(b-a,pa,pa);
printf(“%f\n”,a);
}
程序的输出结果是:( C )
(A)9.000000 (B)1.500000 (C)8.000000 (D) 3.000000
#81.若有以下程序:
#include
void prtv( int *x )
{ printf(“%d\n”,++*x);}
main()
{ int a=25;
prtv(&a);
}
程序的输出结果是___D___。
A、23 B、24 C、25 D、26
第12-14章
* 82. c语言中,形参的缺省的存储类型是(A )
A)auto(自动) B)static(静态) C)register(寄存器) D)extern(外部)
*83. 以下叙述中错误的是( D)
A)一个变量的作用域的开始位置完全取决于变量定义语句的位置
D)全局变量可以在函数以外的任何部位进行定义
c)局部变量的“生存期”只限于本次函数调用.因此不可能将局部变量的运算结果保存至下一次调用
D)一个变量说明为static存储类是为了限制其他编译单位的引用。
* 84.给出以下定义:
char x[ ]="abcdefg";
char y[ ]={'a','b','c','d','e','f','g'};
则正确的叙述为( C)。
A、 数组X和数组Y等价 B、 数组X和数组Y的长度相同
C、 数组X的长度大于数组Y的长度 D、 数组X的长度小于数组Y的长度
* 85.已知各变量的类型说明如下:
int k,a,b;
unsigned long w=5;
double x=1.42;
则以下不符合C语言语法的表达式是( A )。
A、x%(-3) B、w += -2
C、k=(a=2,b=3,a+b) D、a+=a-=(b=4)*(a=3)
* 86.在C语言中,以下正确的说法是( A )
A、实参和与其对应的形参各占独立的存储单元
B、实参和与其对应的形参占用同一个存储单元
C、只有当实参和与其对应的形参同名时才占用同一个存储单元
D、形参是虚拟的,不占用存储单元
* 87.以下对C语言函数的有关描述中,正确的是( A )。
A、在C语言程序中,调用函数时,只能把实参的值传递给形参,形参的值不能传送给实参
B、C语言函数既可以嵌套定义又可嵌套调用
C、C语言函数必须有返回值,否则不能使用函数
D、在C语言程序中有调用关系的所有函数必须放在同一个源程序文件中
* 88.以下正确的叙述是____D__。
A、在C程序中,每行只能写一条语句B、若a是实型变量,C程序允许赋值a=10,因此实型变量中允许存放整型数据
C、在C程序中,无论是整数还是实数,都能够准确无误地表示
D、在C程序中,%是只能用于整数运算的运算符
# 89.以下程序(程序左边的数字为行编号)
1 #include
2 #include
3 main()
4{ char s[]="string";
5 puts(s);
6 strcat(s,"hello");
7 printf("%3s\n",s);
}
此程序( C )。
A、 没有错 B、 第1行有错 C、 第6行有错 D、 第7行有错
* 90. 以下字符中,不正确的C语言转义字符是( D )
A、‘\t’ B、 ‘\011’ C、‘\n’ D、 ‘\018
第15章:
* 91. 有以下程序:
#include
main()
{ char x=040;
printf("%d\n",x=x<<1);
}
程序运行后的输出结果是(D )
A) 100 B)160 C)120 D)64
※ 92. 设有定义语句:
char a=3, b=6,c;
则执行赋值语句c=a^b<<2;后变量c中的二进制值是(A )
A)00011011 B)00010100 C)00011100 D)00011000
* 93.有以下程序:
#include
main()
{short int x=35; char z=’A’;
printf("%d\n",(x&15)&&(z<'a'));
}
程序运行后的输出结果是(B )
A)0 B)l C)2 D)3
# 94. 有以下程序:
#include
main()
{ short int a=5,b=6,c=7,d=8,m=2,n=2;
printf("%d\n",(m=a>b)&(n=c>d));
}
程序运行后的输出结果是(A )
A)0 B)1 C)2 D)3
* 95.以下程序的输出结果是( D )
main()
{int k=2, n=6, m=1;
n=n*k-m ;
printf(“%d”,n);
}
A、 4 B、6 C、8 D、11
# 96.下列程序段执行后s值为____C__。
int i=5, s=0;
do if (i%2)
continue;
else
s+=i;
while (- -i);
A、 15 B、9 C、 6 D、以上均不是
* 97.以下叙述正确的是( D )。
A、while语句构成的循环不能用其它语句构成的循环来代替。
B、while语句构成的循环只能用break语句退出。
C.while语句构成的循环,在while后的表达式为非零时结束循环。
D、 用while语句构成的循环,在while后的表达式为零时结束循环。
* 98.以下程序(程序左边的数字为行编号)
1 #include
2 #include
3 main()
4{ char s[15]="string";
5 puts(s);
6 strcat(s,"hello");
7 printf("%3s\n",s);
}
程序会___A___。
A、 没有错 B、 第1行有错 C、 第6行有错 D、 第7行有错
* 99.设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是( B )。
A、7 B、8 C、6 D、2
* 100. C语言可执行程序的开始执行点是( C )
A、 程序中第一条可执行语言 B、 程序中第一个函数
C、 程序中的main函数 D、 包含文件中的第一个函数
二、填空题
第1章:
* 1. 在VC6.0环境中用RUN命令运行一个c程序时,所运行的程序的后缀是______。
答案:.exe
* 2. c语言源程序文件的后缀是_____,经过编译后,生成文件的后缀是_____,经过连接后,生成文件的后缀是_____。
答案:.c .obj .exe
* 3. 结构化程序由_____、_____、_____三种基本结构组成。
答案:顺序、选择、循环
*4. C语言中的标识符只能由___、____、数字等三种字符组成,且第一个字符不为______.
答案:字母、下划线、数字
第2章:
* 1.若k为int型变量且赋值11。请写出运算k++后表达式的值_________和变量k的值_________。
答案:11 12
* 2.若x为double型变量,请写出运算x=3.2,++x后表达式的值_________和变量x的值_________。
答案:4.2 4.2
* 3. 函数体由符号____开始,到符号____结束。函数体的前面是____部分,其后是____部分。
答案:{、}、定义(数据)、执行
* 4. C语言中的标识符可分为____、____、和预定义标识符三类。
答案:关键字、用户标识符
* 5. 在C语言程序中,用关键字____定义基本整型量,用关键字____定义单精度实型变量,用关键字___定义双精度实型变量。
答案:int、float、double
* 6.把a1、a2定义成单精度实型变量,并赋初值1的定义语句是____。
答案:float a1=1.0,a2=1.0;
* 7. C程序中定义的变量,代表内存中的一个____。
答案:存储单元
# 8.表达式3.5+1/2的计算结果是____。
答案:3.5
# 9、若a=6,b=4,c=3,则表达式 a&&b+c||b-c的值是______
答案: 1
*10、在C语言中, float类型数据占__个字节。
答案: 4
第3章:
# 3.1 若有以下定义,请写出以下程序段中输出语句执行后的输出结果。
int i=-200,j=2500;
printf("(1) %d ,%d",i,j);
printf("(2) i=%d, j=%d\n",i,j);
printf("(3) i=%d\n j=%d\n",i,j);
____________ ____________ ____________
答案:(1)-200,2500 (2)i=-200, j=2500 (表示Enter键) (3)i=-200 (表示Enter键)j=2500
# 3.2 变量i、j、k已定义为int类型并有初值0,用以下语句进行输入时:
scanf("%d",&i); scanf("%d",&j); scanf("%d",&k);
当执行第一个输入语句,从键盘输入: 12.3 (表示Enter键)
则变量i、j、k的值分别是____、____、____。
答案:12、0、0
* 3.3 复合语句在语法上被认为是____。空语句的形式是____。
答案:一条语句、 ;
* 3.4 C语句的最后用____结束。 答案:;
· 3.5 以下程序段,
int k; float a; double x;
scanf("%d%f%lf",&k,&a,&x);
printf("k=%d,a=%f,x=%f\n",k,a,x);
要求通过scanf语句给变量赋值,然后输出变量的值。写出运行时给k输入100,给a输入25.81,给x输入1.89234时的三种可能的输入形式
(1)_______________________
(2)_______________________
(3)_______________________
答案: (1) 100空格 25.81空格 1.89234
(2) 100 回车25.811.回车89234
(3) 100 Tab 25.81Tab 1.89234
#6.若想通过以下输入语句使a=5.0,b=4,c=3,则输入数据的形式应该是_______________。
int b,c; float a;
scanf("%f,%d,c=%d",&a,&b,&c);
答案: 5.0,4,c=3
第4章:
*1 . c语言中用_______表示逻辑值“真”,用______表示逻辑值“假”。
答案: 非零,零
* 2 . C语言中的关系运算符“!=”的优先级比“<=”______.
答案:低
* 3. C语言中的逻辑运算符“&&”比“||”的优先级______
答案:高
* 4 . c语言中的关系运算符“= =”比逻辑运算符“&&”的优先级______
答案:高
* 5. c语言中逻辑运算符______的优先级高于算术运算符。
答案:!
# 6. 将下列数学式改写成c语言的关系表达式或逻辑表达式:A)______B)______。
A)a=b或a4
答案: a= =b || a 4 || x< - 4
# 7. 请写出以下程序的输出结果________。
#include
main()
{int a=100;
if(a>100) printf("%d\n",a>100);
else printf("%d\n",a<=100);
}
答案: 1
# 8. 请写出与以下表达式等价的表达式:A)______________B)______________
A)!(x>0) B)!0
答案: x<=0 1
* 9. 当a=1,b=2,c=3时,以下if语句执行后,a、b、c中的值分别为_______、______、______.
if(a>c)
b=a;a=c ;c=b;
答案: a=3 , b=2 , c=2
※ 10. 若变量巳正确定义,以下语句段的输出结果是______。
x=0;y=2;z=3;
switch(x)
{ case 0: switch(y==2)
{case 1: printf(”*”); break;
case 2: printf(”%”);break;
}
case 1: switch(z)
{ case 1: printf(”$”);
case 2: printf(”*”);break;
default: printf(”#“);
}
}
答案: * #
第5章:
# 1. 当执行以下程序段后,i的值是________、j的值是________、k的值是________。
int a,b,c,d,i,j,k;
a=10;b=c=d=5;i=j=k=0;
for(;a>b;++b) i++;
while(a>++c) j++;
do k++; while(a>d++);
答案: 5, 4, 6
# 2. 以下程序段的输出结果是________。
int k,n,m;
n=10;m=1;k=1;
while(k++<=n)m*=2;
printf("%d\n",m);
答案: 1024
※ 3.以下程序的输出结果是_________。
#include
main()
{int x=2;
while(x--);
printf("%d\n",x);
}
答案: -1
*4. 以下程序段的输出结果是_________。
int i=0,sum=1;
do{sum+=i++;}while(i<5);
printf("%d\n",sum);
答案: 11
第6章
* 1. C语言中,字符在内存中占_________个字节。
答案: 1
* 2. 调用C语言提供的对字符进行处理的库函数时,在#include命令行中应包含的头文件是_________。
答案: ctype.h
# 3. 若变量已正确定义.在执行以下while语句时,输人字符A后,ch的值是_________·
while(ch=getchar()= ='A');
答案:1
#4. 若变量已正确定义,要通过以下语句绐a、b、c、d分别辅人字符A、B、C、D,给w、x、y、z分别输入整数10、20、30、40,正确的输入形式是_________,请用代表Enter键。
seanf("%d%c%d%c%d%c%d%c",&w,&a,&x,&b,&y,&c,&z,&d);
答案: 10A 20B 30C 40D
※ 5. 若有以下定义和输入语句,要求给c1、c2分别辅人字符A和B,给a1、a2分别输入7.29和101.298,
从键盘正确辅人数据的形式是______________________。
char c1,c2; float a1,a2; ·
scanf("%f%f",&al,&a2);scahf("%c%c",&cl,&c2);
答案: 7.29 101.298AB↙ (7.29↙101.298AB↙)
※ 6. 若有以下定义和输入语句,要求给c1、c2分别输入字符A和B,给a1、a2分别输入7.29和101.298,从键盘正确辅人数据的形式是______________________。
char c1,c2; float al,a2;
scanf("%c%f%c%f",&cl,&a1,&c2,&a2);
答案:A7.29B101.298↙
※ 7. 若有以下定义和输入语句,要求给c1,c2,c3分别输人字符A、B和C,请写出从键盘正确输人数据的形式______________________。
char c1,c2,c3;
scanf("%4c",&c1);
scanf("%4c",&c2);
scanf("%4c",&c3);
答案: AЦЦЦ↙ BЦЦЦ↙ CЦЦЦ↙
# 8.已知数组double a[4][5]的首地址为30055(十进制),则元素a[1][4]的地址为______。
答案:30127
第15章
* 1. 设变量a的二进制数是00101101,若想通过运算a^b使a的高四位取反,低四位不变,则b的二进制数应是_________。
答案:11110000
* 2.a为任意整数。能将变量a清零的表达式是________。
答案: a & 0
*3. a为八进制数07101。能将变量a中的各二进制位均置成1的表达式是___________。
答案: a | 1
* 4. 能将两字节变量x的高八位全置1,低八位字节保持不变的表达式是___________。
答案: x | 1111111100000000
# 5. 运用位运算,能将八进制数012500除以4,然后赋给变量a的表达式是___________。
答案:a = 012500>>2
*6.运用位运算,能将字符变量ch中的大写字母转换成小写字母的表达式是___________。
答案:ch | 32
#7.在位运算中,操作数每右移一位(移出位不含1),其结果相当于______。十进制数57^42=_________(结果写为十进制数)。
答案:除以2 19
# 8、以下程序运行后输出结果是______
main()
{ int ,x,y,z;
x=1;y=2;z=3;
printf("%d,%d",x*z,y);
}
答案:3,2
三、程序分析题
第3-7章
# 1.以下程序的输出结果是__________
#include
unsigned fun6(unsigned num)
{ unsigned k=1;
do
{ k*=num%10; num/=10;
}
while(num);
return k;
}
main()
{
unsigned n=26;
printf("%d\n",fun6(n));
}
答案: 12
# 2.以下程序的输出结果是__________
#include
double sub(double x,double y,double z)
{ y-=1.0;z=z+x;return z;}
main()
{
double a=2.5,b=9.0;
printf("%f\n",sub(b-a,a,a));
}
答案: 9.000000
# 3.以下程序的功能是计算s=
,请填空:
#include
long f(int n)
{ int i; long s;
s=___________;
for(i=1;i<=n;i++) s=_______;
return s;
}
main()
{
long s;int k,n;
scanf(“%d”,&n);
s=____________;
for(k=0;k<=n;k++) s=s+_________________;
printf(“%ld\n”,s);
}
答案:1 s*i 0 k
※ 4.
fun1(int a, int b)
{ int c;
a+=a; b+=b;
c=fun2(a,b);
return c*c; }
fun2(int a,int b)
{ int c;
c=a*b%3;
return c;}
main()
{ int x=11,y=19;
printf(“%d\n”,fun1(x,y));
}运行程序的结果是__________。
答案:4
# 5. #define N 2
#define M N+1
#define NUM (M+1)*M/2
mian()
{ int i;
for(i=0; i<=NUM; i++);
printf(“%d\n”,i);}程序中的for循环执行的次数是_____。
答案:8
※ 6. 有以下程序段:
s=1.0; for(k=1;k<=n;k++) s=s+1.0/(k*(k+1));
printf(“%f\n”,s);
完成以下程序段使其功能与之完全相同:
s=0.0;
________________
k=0;
do{ s=s+d; _________________;
d=1.0/(k*(k+1));
}while(__________);
printf(“%f\n”,s);
答案: d=1.0 , k++ , k<=n
# 7.阅读以下程序:
#define MIN(x,y) (x)<(y)?(x):(y)
main()
{ int i,j,k;
i=10; j=15; k=10*MIN(i,j);
}运行程序后的输出结果是______________________________。
答案:15
※ 8.以下程序的功能是:从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。请填空。
#include
main()
{float x,amax,amin;
scanf("%f",&x);
amax=x;amin=x;
while(_______)
{if(x>amax)amax=x;
if(______)amin=x;
scanf("%f"&x);
}
printf("\namax=%f\namin=%f\n",amax,amin);
}
答案:x>=0 , x
int ast(int x,int y,int *cp,int *dp)
{ *cp=x+y;
*dp=x-y; }
main( )
{ int a,b,c,d;
a=4; b=3;
ast(a,b,&c,&d);
printf(“%d,%d\n”,c,d); }
运行程序的结果是__________。
答案:7 1
※ 3. 以下程序运行后的输出结果是 _________________
#include
main()
{ int a=3,b=2,c=1;
c-=++b; b*=a+c;
{ int b=5,c=12;
c/=b*2; a-=c; printf("%d,%d,%d",a,b,c);
a+=--c;
}
printf("%d,%d,%d\n",a,b,c);
}
答案: 2 ,5 ,1 3 ,2 ,-2
※ 4. 以下程序运行后的输出结果是_________________。
#include
void fun( )
{ static int a;
a+=2;printf("%d",a);
}
main()
{ int cc;
for(cc=1;cc<=4;cc++) fun( );
printf("\n");
}
答案:2 4 6 8
※5. 给定程序中,函数fun的功能是:把形参s所指字符串中最右边的n个字符复制到形参t所指字符数组中,形成一个新串。若s所指字符串的长度小于n,则将整个字符串复制到形参t所指字符数组中。
例如,形参s所指的字符串为:abcdefgh,n的值为5,程序执行后t所指字符数组中的字符串应为:defgh。
#include
#include
#define N 80
void fun(char *s, int n, char *t)
{ int len,i,j=0;
len=strlen(s);
if(n>=len) strcpy(__1__);
else {
for(i=len-n; i<=len-1; i++) t[j++]= __2__ ;
t[j]= __3__ ;
}
}
main()
{ char s[N],t[N]; int n;
printf("Enter a string: ");gets(s);
printf( "Enter n:"); scanf("%d",&n);
fun(s,n,t);
printf("The string t : "); puts(t);
}
答案:(1)t,s(2)s[i](3)0
四、改错题: 请改正以下程序的错误。(说明:标有/************found************/的下方一行有错误)
第1-6章
* 1.
/************found************/
#include stdio.h ;
main( ) / * main function * /
float r, s; /*r is radius*/,/*s is area of circular*/
r = 5.0 ;
/************found************/
s=3.14159 * r2;
printf("%f\n",s);
答案:
#include"stdio.h"或者#include
s=3.14159 * r *r;}
*2.
/************found************/
#include ‘stdio.h’
/************found************/
main /* main function */
{
float a,b,c,v; /*a,b,c are sides, v is volume of cube*/
a = 2.0 ; b = 3.0 ; c = 4.0
v = a * b * c;
printf("%f\n",v);
}
答案:
#include"stdio.h"或者#include
main( ) /* main function */
* 3. 以下程序的功能是求圆的周长,请改正错误:
#include “stdio.h”;
/************found************/
main( ); \* main function \*
{ float r,l ;
/************found************/
R=5.0;
/************found************/
l=2*3.14159*r2;
printf(“%f\n”,l); }
答案:main( ) /* main function */ r=5.0; l=2*3.14159*r;
* 4.
main( )
{double a,b,c,s,v;
/************found************/
printf(input a,b,c:\n);
/************found************/
scanf(“%d,%d,%d”,a,b,c);
s=a*b; v=a*b*c; /* 计算长方形的面积、体积*/
/************found************/
printf(“%d %d %D”,a,b,c);
/************found************/
printf(“s=%f\n”,s,”v=%d\n”,v);
}
当程序执行时,屏幕的显示和要求输入形式如下:
input a,b,c:2.0 2.0 3.0
a=2.000000,b=2.000000,c=3.000000
s=4.000000,v=12.000000
答案: printf(“input a,b,c:\n”); scanf(“%lf,%lf,%lf”,&a,&b,&c); printf(“a=%f,b=%f,c=%f”,a,b,c); printf(“s=%f,v=%f\n”,s,v);
# 5.
#include
#include
/************found************/
void fun( int k )
{ int n; float s, w, p, q;
n = 1; s = 1.0;
while ( n <= k )
{ w = 2.0 * n; p = w - 1.0; q = w + 1.0; s = s * w *w/p/q;
n++;
}
/************found************/
return s
}
main ( )
{
printf("%f\n", fun (10));
}
答案:void改为float return s;
#6、给定程序MODI1.C中fun函数的功能是:求出以下分数序列的前n项之和。
和值通过函数值返回main函数。
例如,若 n = 5,则应输出: 8.391667。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
#include
/**************found**************/
fun (int n )
{ int a = 2, b = 1, c, k ;
double s=0.0 ;
for ( k = 1; k <= n; k++ )
{ s = s + 1.0 * a / b ;
/**************found**************/
c = a; a += b; b += c;
}
return(s) ;
}
main( )
{ int n = 5 ;
printf( "\nThe value of function is: %lf\n", fun ( n ) ) ;
}
答案:(1)double fun (int n)(2)c=a;a+=b;b=c;
#7、给定程序MODI1.C中函数 fun 的功能是:判断一个整数是否是素数,若是返回1,否则返回0。
在main()函数中,若fun返回1输出YES,若fun返回0输出NO!。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数。不得增行或删行,也不得更改程序的结构!
#include
int fun ( int m )
{ int k = 2;
while ( k <= m && (m%k))
/************found************/
k++
/************found************/
if (m = k )
return 1;
else return 0;
}
main( )
{ int n;
printf( "\nPlease enter n: " ); scanf( "%d", &n );
if ( fun ( n ) ) printf( "YES\n" );
else printf( "NO!\n" );
}
答案:(1)k++;(2)if(m==k)
第7-11章
※ 1、函数fun的功能是: 比较两个字符串,将长的那个字符串的首地址作为函数值返回。
请改正函数fun中指定部位的错误, 使它能得出正确的结果。
注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构!
#include
/**********found**********/
char fun(char *s, char *t)
{ int sl=0,tl=0; char *ss, *tt;
ss=s; tt=t;
while(*ss)
{ sl++;
/**********found**********/
(*ss)++;
}
while(*tt)
{ tl++;
/**********found**********/
(*tt)++;
}
if(tl>sl) return t;
else return s;
}
main()
{ char a[80],b[80],*p,*q; int i;
printf("\nEnter a string : "); gets(a);
printf("\nEnter a string again : "); gets(b);
printf("\nThe longer is :\n\n\"%s\"\n",fun(a,b));
}
答案:(1)char *fun(char *s,char *t)(2)ss++;(3)tt++;
※ 2、给定程序MODI1.C中函数fun的功能是:在p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。
例如,调用fun函数之前给字符串输入:ABCDeFGH,
调用后字符串中的为:eABCDFGH。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include
fun( char *p )
{ char max,*q; int i=0;
max=p[i];
while( p[i]!=0 )
{ if( maxp )
{ *q=*(q-1);
q--;
}
p[0]=max;
}
main()
{ char str[80];
printf("Enter a string: "); gets(str);
printf("\nThe original string: "); puts(str);
fun(str);
printf("\nThe string after moving: "); puts(str); printf("\n\n");
}
答案:(1)q=p+i;(2)while(q>p)
※ 3、给定程序MODI1.C中函数fun的功能是:根据整型形参m,计算如下
的值。
1 1 1 1
y = ------- + --------- + --------- + …… + -------
100*100 200*200 300*300 m*m
例如,若m = 2000,则应输出: 0.000160。
请改正程序中的语法错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
#include
/************found************/
fun ( int m )
{ double y = 0, d ;
int i ;
/************found************/
for( i = 100, i <= m, i += 100 )
{ d = (double)i * (double)i ;
y += 1.0 / d ;
}
return( y ) ;
}
main( )
{ int n = 2000 ;
printf( "\nThe result is %lf\n", fun ( n ) ) ;
}
答案:(1)double fun(int m)(2)for(i=100;i<=m;i~1+=0)
※ 4、给定程序MODI1.C中函数 fun 的功能是: 读入一个字符串(长度<20 ),将该字符串中的所有字符按ASCII码升序排序后输出。
例如, 若输入: edcba, 则应输出: abcde。
请改正程序中的错误,使它能统计出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
#include
void fun( char t[] )
{
char c;
int i, j;
/**********found***********/
for( i = strlen( t ); i; i-- )
for( j = 0; j < i; j++ )
/**********found***********/
if( t[j] < t[ j + 1 ] )
{
c = t[j];
t[j] = t[ j + 1 ];
t[j + 1 ] = c;
}
}
main()
{
char s[81];
printf( "\nPlease enter a character string: " );
gets( s );
printf( "\n\nBefore sorting:\n \"%s\"", s );
fun( s );
printf( "\nAfter sorting decendingly:\n \"%s\"", s );
}
答案:(1)for(i = strlen( t )-1; i;i--)(2)if(t[j] > t[j + 1 ] )
※ 5、给定程序MODI1.C中 fun 函数的功能是:分别统计字符串中大写字母和小写字母的个数。
例如, 给字符串 s 输入:AAaaBBb123CCccccd,则应输出结果:upper = 6, lower = 8。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
#include
/**********found**********/
void fun ( char *s, int a, int b )
{
while ( *s )
{ if ( *s >= 'A' && *s <= 'Z' )
/**********found**********/
*a=a+1 ;
if ( *s >= 'a' && *s <= 'z' )
/**********found**********/
*b=b+1;
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 = %d\n", upper, lower );
}
答案:(1)void fun ( char *s, int *a, int *b )(2)++(*a);(3)++(*b);
#6、给定程序MODI1.C中函数fun的功能是: 交换主函数中两个变量的值。例如: 若变量a中的值原为8,b中的值为3。程序运行后a中的值为3, b中的值为8。
请改正程序中的错误, 使它能计算出正确的结果。
注意: 不要改动 main 函数, 不得增行或删行, 也不得更改程序的结构!
#include
/*********found**********/
int fun(int x,int y)
{
int t;
/*********found**********/
t=x;x=y;y=t;
}
main()
{
int a,b;
a=8;b=3;
fun(&a,&b);
printf("%d, %d\n",a,b);
}
答案:(1)int fun(int *x,int *y)(2)t=*x;*x=*y;*y=t;
#7.给定程序MODI1.C中函数 fun 的功能是:求出以下分数序列的前n项之和。和值通过函数值返回到main函数。
2 3 5 8 13 21
┄┄ , ┄┄ , ┄┄ , ┄┄ , ┄┄ , ┄┄ , ……
1 2 3 5 8 13
例如,若n = 5,则应输出:8.391667。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
/************found************/
void fun ( int n )
{ int a, b, c, k; double s;
s = 0.0; a = 2; b = 1;
for ( k = 1; k <= n; k++ ) {
/************found************/
s = s + (Double)a / b;
c = a; a = a + b; b = c;
}
return s;
}
main( )
{ int n = 5;
printf( "\nThe value of function is: %lf\n", fun ( n ) );
}
答案:(1)double fun ( int n )(2)s=s+(double)a/b;
※ 8、给定程序MODI1.C中函数 fun 的功能是:计算n!。
例如,给n输入5,则输出120.000000。
请改正程序中的错误,使程序能输出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
double fun ( int n )
{ double result = 1.0 ;
/************found************/
if n = = 0
return 1.0 ;
while( n >1 && n < 170 )
/************found************/
result *= n--
return result ;
}
main ( )
{ int n ;
printf("Input N:") ;
scanf("%d", &n) ;
printf("\n\n%d! =%lf\n\n", n, fun(n)) ;
}
答案:(1)if (n==0)(2)result *= n-- ;
五、编程题
第3章
* 3.1 编写程序,把560分钟换算成用小时和分钟表示,然后进行输出。
答案:
main( )
{
int hour,minute;
hour=560/60;
minute=560%60;
printf("hour=%d,minute=%d",hour,minute);
}
* 3.2 编写程序,输入两个整数:1500和350,求出它们的商数和余数并进行输出。
答案:
#include
main( )
{
int num1,num2,i,j; /* 定义变量 i-商,j-余数 */
printf("input num1 and num2:\n");
scanf("%d%d",&num1,&num2);
i=num1/num2;
j=num1%num2;
printf("商=%d\n 余数=%d",i,j);
}
* 3.3 编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数点后一位数,对小数点后第二位数进行四舍五入,最后输出结果。
答案:
main( )
{
double a,b,c,average=0;
printf("input a,b,c(double):\n");
scanf("%lf%lf%lf",&a,&b,&c);
average=(a+b+c)/3;
average=average*10;
average=average+0.5;
average=(int)average;
average=average/10;
printf("average=%lf",average);
}
——————————————————————————————————————
* 3.4 编写程序,读入三个整数给a,b,c,然后交换它们中的数,把a中原来的值给b,把b中原来的值给c,把c中的值给a。
答案:
main( )
{
int a,b,c,t=0;
printf("input a b c:\n");
scanf("%d%d%d",&a,&b,&c);
t=c;c=b;b=a;a=t;
printf("a=%d b=%d c=%d",a,b,c);
}
第4章
* 4.1 编写程序,输入一个整数,打印出它是奇数还是偶数。
答案:
main( )
{
int i;
printf("input a integer:\n");
scanf("%d",&i);
if(i%2==0) /*条件判断*/
printf("%d is a even",i);
else
printf("%d is a odd",i);
}
* 4.2 编写程序,输入a、b、c三个数,打印出最大者。
答案:
main( )
{
int a,b,c,max = 0;
printf("input (int)a b and c:\n");
scanf("%d%d%d",&a,&b,&c);
max = a;
if(max1e-6) /* fabs求浮点型数据的绝对值 */
{
t=t*i;
sum=sum+1/t;
i++;
}
printf("e=%lf",sum);
}
※ 5.3编写程序,打印以下图形:
*
***
*****
*******
*****
***
*
答案:
#include
main( )
{
int i,j;
for(i=1;i<=7;i++) /*控制行数*/
{
for(j=1;j<=7;j++) /*控制星数*/
{
if((j<=fabs(4-i))||(j>7-fabs(4-i)))
printf(" ");
else
printf("*")
}
printf("\n");
}
}
# 5.4.译密码。
为使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文。
假设:按以下规律将电文编成密码:
将字母A变成字母E,a变成e,即变成其后的第四个字母,非字母符不变!
请编写程序实现此功能。
答案:
#include
main()
{
char c;
while((c=getchar())!=‘\n’)
{
if(c>=’a’&&c<=‘z’)||(c>=‘A’&&c<=‘Z’)
{
c=c+4;
if(c>’Z’&&c<=‘Z’+4||c>’z’) c=c-26;
}
printf(“%c”,c);
}
}
# 5.5.打印出所有的“水仙花数”。所谓“水仙花数”是指一个3位数,其各位数字的立方和恰好等于它本身。例如,371=33+73+13。
答案:
main ( )
{ int n, i, j, k;
for( n=100; n<1000; n++ )
{ i=n/100;
j=n/10%10;
k=n%10;
if ( n == i*i*i+j*j*j+k*k*k)
printf (“%d = %d*%d*%d+%d*%d*%d +%d*%d*%d \n”, n,i,i,i,j,j,j,k,k,k);
}
}
※ 5.6编程实现猴子吃桃问题:
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,就只剩一个桃子了。求第一天共摘多少桃子。
答案:
main()
{ int day,x1,x2;
day=9;
x2=1;
for(;day>0;day--)
{x1=(x2+1)*2;
x2=x1;
}
printf(“total=%d\n”,x1);
}
第6章
※ 6.1 请编写输出以下图案的程序,图案的行数由输入的值确定。
A
BBB
CCCCC
DDDDDDD
EEEEEEEEEEE
答案:
#include
main()
{
int i,j,k,n;
char a='A';
printf("please input:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n-i;j++)
printf(" ");
for(k=1;k<=2*i-1;k++)
printf("%c",a);
a=a+1;
printf("\n");
}
}
第7-10章
※ 1. 编写函数,根据整型形参m的值,计算如下公式的值。
t=1-1/(2 x 2)-1/(3 x 3)-...-1/(m x m)
例如:若m=5,则应输出0.536389。
答案:
main()
{
float t=1;
float f2(int);
int i,m;
scanf("%d",&m);
for(i=2;i<=m;i++)
t=t-f2(i);
printf("t=%f",t);
}
float f2(int m)
{
float s;
s=1.0/(m*m);
return s;
}
# 2. 编写函数用以求表达式x2-5x+4,x作为参数传给函数,调用此函数求:
y1=22-5*2+4
y2=(x+15)2-5*(x+15)+4
y3=sin2x-5*sinx+4
答案:
#include math.h
float fun(float x)
{
float y;
y=pow(x,2)-5*x+4;
return y;
}
main()
{
float x,y1,y2,y3;
clrscr();
printf("Enter x:\n");
scanf("%f",&x);
y1=fun(2);
y2=fun((x+15));
y3=fun(sin(x));
printf("y1=%f\ny2=%f\ny3=%f\n",y1,y2,y3);
}
_1211399375.unknown
_1301228070.unknown
本文档为【C语言程序设计期末考试题库_】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。