c 试题
2010年06月02日
.1 若a、b、c、d都是int类型变量且初值为0,以下选项中不正确的赋值语句是
A) a=b=c=100; B) d++; C) c+b; D) d=(c=22)-(b++);
答案:C
3.2 以下选项中不是C语句的是
A) {int i; i++; printf("%d\n", i); } B) ; C) a=5,c=10 D) { ; } 答案:C
3.3 以下合法的C语言赋值语句是
A) A=B=58 B) k=int(a+b); C) a=58,b=58 D) --i; 答案:D
3.4 以下程序的输出结果是
A) 0 B) 1 C) 3 D)不确定的值 main() { int x=10,y=3; printf("%d\n", y=x/y); } 答案:C
3.5 若变量已正确说明为int类型,要给a、b、c输入数据,以下不正确的输入语句是
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);
答案:D
3.6 若变量已正确说明为float类型,要通过以下赋值语句给a赋予10、b赋予22、c赋予
33,以下不正确的输入形式是
A) 10 22 33 B) 10.0,22.0,33.0 C) 10.0 22.0 33.0 D) 10 22
33 scanf("%f %f %f", &a, &b, &c);
答案:B
3.7 若变量以正确定义,要将a和b中的数进行交换,下面不正确的语句组是
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;
答案:C
3.8 若变量已正确定义,以下程序段的输出结果是
A) 输出格式说明与输出项不匹配,输出无定值 B) 5.17000 C) 5.168000 D) 5.169000
x=5.16894; printf("%f\n",(int)(x*1000+0.5)/(float)1000);
答案:D
3.9 若有以下程序段,c3中的值是
A) 0 B) 1/2 C) 0.5 D) 1
int c1=1,c2=2,c3; c3=c1/c2;
答案:A
3.10 若有以下程序段,其输出结果是
A) 0,0,-10 B) 0,0,5 C) -10,3,-10 D) 3,3,-10
int a=0,b=0,c=0; c=(a-=a-5),(a=b,b+3); printf("%d,%d,%d\n",a,b,c);
答案:B
3.11 当运行以下程序时,在键盘上从第一列开始输入9876543210(此处代表Enter),则程序的输出结果是
A) a=98,b=765,c=4321
B) a=10,b=432,c=8765
C) a=98,b=765.000000,c=4321.000000
D) a=98,b=765,c=4321.0
main() { int a; float b,c; scanf("-?O",&a,&b,&c); printf("\na=%d,b=%f,c=%f\n",a,b,c); }
答案:C
3.12 以下程序的输出结果是
A) a=%2,b=%5
B) a=2,b=5
C) a=%%d,b=%%d
D) a=%d,b=%d
main() { int a=2,b=5; printf("a=%%d,b=%%d\n",a,b); }
答案:D
3.13 若int类型占两个字节,则以下程序段的输出是 A) -1,-1 B) -1,32767 C) -1,32768 D) -1,65535
int a=-1; printf("%d,%u\n",a,a);
答案:D
3.14 以下程序段的输出是 A) *496 * B) * 496* C) *000496* D)输出格式符不合法
int x=496; printf("*%-06d*\n",x);
答案:A
3.15 以下程序段的输出是 A) |3.1415| B) | 3.0| C) | 3| D) | 3.|
float a=3.1415; printf("|%6.0f|\n",a);
答案:C
3.16 以下程序段的输出是 A) |2345.67800| B) |12345.6780| C) |12345.67800| D) |12345.678| printf("|.5f|\n",12345.678);
答案:C
3.17 以下程序段的输出是 A) *0000057.66* B) * 57.66* C) *0000057.67* D) * 57.67* float a=57.666; printf("*0.2f*\n",a);
答案:C
3.18 若从终端输入以下数据,要给变量C赋以283.19,则正确的输入语句是 A) scanf("%f",c); B) scanf("%8.4f",&c); C) scanf("%6.2f",&c); D) scanf("%8",&c); 283.1900 表示Enter键
答案:由于印刷错误,本题没有正确答案。改正意见: 把选项A改为:scanf("%f",&c);或者把选项D改为:scanf("",&c);则可分别选择A或者D为正确答案。
3.19 若变量已正确说明,要求用以下语句给a赋予
3.12、给b赋予9.0,则正确的输入形式是(□代表空格) A) 3.12□□9.0 B) a=□□3.12b=□□□9 C) a=3.12,b=9 D) a=3.12□□,b=9□□□□ scanf("a=%f,b=%f",&a,&b); 表示Enter键 答案:C
3.20 以下程序的输出结果是
A) 9 8 B) 8 9 C) 6 6 D) 以上三个都不对
#include "math.h" main() { double a=-3.0, b=2; printf("%3.0f %3.0f\n",pow(b,fabs(a)),pow(fabs(a),b)); }
答案:B
二、填空题
3.21 若有以下定义,请写出以下程序段中输出语句执行后的输出结果。 (1)____(2)____(3)____ 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);
答案: -200 2500 i=-200, j=2500 i=-200 j=2500
3.22 变量i、j、k已定义为int类型并有初值0,用以下语句进行输入时 scanf("%d",&i); scanf("%d",&j); scanf("%d",&k); 当执行第一个输入语句,从键盘输入: 12.3 表示Enter键则变量i、j、k的值分别是____、____、____。
答案:12、0、0
3.23 复合语句在语法上被认为是____。空语句的形式是____。
答案:一条语句、 ;
3.24 C语句的最后用____结束。 答案:;
3.25 以下程序段,要求通过scanf语句给变量赋值,然后输出变量的值。写出运行时给k输入100,给a输入25.81,给x输入1.89234时的三种可能的输入形式____、_____、____。 int k; float a; double x; scanf("%d%f%lf",&k,&a,&x); printf("k=%d,a=%f,x=%f\n",k,a,x);
答案: (1) 100 25.81 1.89234 (2) 100 25.811.89234 (3) 100 25.81 1.89234
3.26 以下程序段的输出结果是____。 int x=0177; printf("x==,x=m,x=$%6o,x=%6x,x=%6u\n",x,x,x,x,x);
答案:x=127,x= 127,x= 177,x= 7f,x= 127
3.27 以下程序段的输出结果是____。 int x=0177; printf("x=%-3d,x=%-6d,x=$%-06d,x=$d,x=%d\n",x,x,x,x,x);
答案:27、x=127,x=127 ,x=$127 ,x=$000127,x=d
3.28 以下程序段的输出结果是____。 double a=513.789215; printf("a=%8.6f,a=%8.2f,a=.8f,a=.8lf\n",a,a,a,a);
答案:a=513.789215,a= 513.79,a= 513.78921500,a= 513.78921500
第二章 C程序设计的初步知识
一、选择题
2.1 以下选项中正确的整型常量是
A)12. B)-20 C)1,000 D)4 5 6
答案:B
2.2 以下选项中正确的实型常量是
A)0 B)3. 1415 C)0.329×10(2)(10的2次方) D).871
答案:D
2.3 以下选项中不正确的实型常量是 A)2.607E-1 B)0.8103e 2 C)-77.77 D)456e-2
答案:B
2.4 以下选项中不合法的用户标识符是
A)abc.c B)file C)Main D)PRINTF
答案:A
2.5 以下选项中不合法的用户标识符是
A)_123 B)printf C)A$ D)Dim 答案:C 2.6 C语言中运算对象必需是整型的运算符是 A)% B)/ C)! D)**
答案:A
2.7 可在C程序中用作用户标识符的一组标识符是
A)void define WORD B)as_b3 _123 If C)For -abc case D)2c DO SIG
答案:B
2.8 若变量已正确定义并赋值,符合C语言语法的表达式是
A)a=a+7; B)a=7+b+c,a++ C)int(12.3%4) D)a=a+7=c+b
答案:B
2.9 以下叙述中正确的是
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。
答案:B
2.10 以下叙述中正确的是
A)在C程序中无论是整数还是实数,只要在允许的范围内都能准确无误的表示。
B)C程序由主函数组成。
C)C程序由函数组成。
D)C程序由函数和过程组成。
答案:C
2.11 TURBO C中int类型变量所占字节数是
A)1 B)2 C)3 D)
4 答案:B
2.12 不合法的八进制数是
A)0 B)028 C)077 D)01
答案:B
2.13 不合法的十六进制数是 A)oxff B)0Xabc C)0x11 D)0x19
答案:A
二、填空题
2.14 若k为int整型变量且赋值11。请写出运算k++后表达式的值A)_____和变量的值B)_____。
答案:11、
12 2.15 若x为double型变量,请写出运算x=3.2,++x后表达式的值A)_____和变量的值B)_____。
答案:4.2、4.2
2.16 函数体由符号____开始,用符号____结束。函数体的前面是____部分,其后是____部分。
答案:{、}、定义、执行
2.17 C语言中的标识符可分为____、____、和预定义标识符三类。
答案:关键字、用户标识符
2.18 在C语言程序中,用关键字____定义基本整型量,用关键字____定义单精度实型变量,用关键字___定义双精度实型变量。 答案:int、float、double
2.19 把a1、a2定义成单精度实型变量,并赋初值1的定义语句是____。
答案:float a1=1.0,a2=1.0;
2.20 C程序中定义的变量,代表内存中的一个____。
答案:存储单元
2.21 表达式3.5+1/2的计算结果是____。
答案:3.5
2.22 对以下数学式,写出三个等价的C语言表达式____、____、____。 a×b ―― c 答案:a*b/c、a/c*b、b/c*a 2.23 表达式s=10应当读做“____”。
答案:将10赋给变量s
2.24 计算机中内存储器的最小存储单位称____,其中能容纳的数是____。 答案:位、0或1
2.25 通常一个字节包含____个二进制位。在一个字节中能存放的最大(十进制)整数是____,它的二进制数的形式是____;最小(十进制)整数是____,它的二进制数的形式是____。
答案:8、
255、1111 1111、-128、1000 0000
2.26 当计算机用两个字节存放一个整数时,其中能存放的最大(十进制)整数是____、最小(十进制)整数是____,它的二进制数的形式是____。
答案:65535、-32768、1000 0000 0000 0000
2.27 在C语言中整数可用____进制数、____进制数和____进制数三种数制表示。
答案:十、八、十六
一、选择题
1.下述标识符中,()是合法的用户标识符。
A.A#C B.getch C.void D.ab*
2.在C语言中,字符型数据在内存中是以()形式存放的。
A.原码 B.BCD码 C.反码 D.ASCII码
3.以下选项中不合法的用户标识符是()。
A.abc.c B.file C.Main D.PRONTF
4.以下选项中不合法的用户标识符是()。
A.123 B.printf C.A$ D.Dim
5.可以在C语言程序中用做用户标识符的一组标识符是()。
A.void B.as-b3 C.for D.2c
define -123 -abc Do
WORD If cas SIG
6.在以下各组标识符中,合法的用户标识符是(1)、(2)、(3)。
(1)A.001 B.table_1 C.0_t D.k%
Int t*.1 W10 point
(2)A.Fast_ B.void C.pbl D.
Fast+Big abs fabs beep
(3)A.xy_ B.longdouble C.*p D.CHAR
变量1 signed history Float
7.()是构成C语言的基本单位。
A.函数 B.过程 C.子程序 D.子例程
8.若有说明:char s1=’\067’;char s2="1";char s3=’1’;则s1中(1),s2中(2),s3中(3)。
(1).A.包含3个字符 B.包含2个字符
C.包含1个字符 D.无定值,说明不合
2).A.包含1个字符 B.包含2个字符
C.包含3个字符 D.无定值,说明不合法
(3).A.包含1个字符 B.包含2个字符
C.包含3个字符 D.无定值,说明不合法
9.若x为int型变量,则执行以下语句后,x的值为
x=6;
x+=x-=x*x
A.36 B.-60 C.60 D.-24
10.在C语言中,char 型数据在内存中是以()形式存储的。
A.原码 B.补码 C.ASCII码 D.反码
11.以下运算符中优先级最低的算符为(),优先级最高的为()。
A.&& B.& C.|= D.|| E.?: F.!=
12.若有运算符 >、*=、 % sizeof
B. % sizeof
C.*= > 语言的程序一行写不下时,可以
A.用逗号换行 B.用分号换行
C.在任意一空格处换行 D.用回车符换转
16.下述标识符中,()是合法的用户标识符。
A.A#C B.getch
C.void D.ab*
17.在C语言中,字符型数据在内存中是以()形式存放。
13.若有以下类型说明语句
char w; int x; float y; double z;
则表达式 w*x+z-y 的结果是()类型。
A.float B.char C.int D.double
14.若 w,x,y,z 均为int 型变量,则执行下面的语句后, w=(1), x=(2), y=(3), z=(4)。
w=5; x=4;
y=w++*w++*w++;
z=--x*=--x*--x;
(1)A.8 B.7 C.6 D.24
A.4 B.3 C.2 D.1
A.150 B.125 C.210 D.336
A.64 B.1 C.6 D.24
15.C语言的程序一行写不下时,可以
A.用逗号换行 B.用分号换行
C.在任意一空格处换行 D.用回车符换行
16.下述标识符中,()是合法的用户标识符。
A.A#C B.getch
C.void D.ab*
17.在C语言中,字符型数据在内存中是以()形式存放。
A.原码 B.BCD
C.反码 D.ASCII码
18.()是非法的C语言转义字符。
A.’\b’ B.’\0xf’
C.’\037’ D.’\’’
19.语句 char s=’\092’;的作用是
A.s包含1个字符 B.说明不合法, s的值不定。
C.使 s包含4个字符 D.使 s包含3个字符
20.在C语言中,int,char,和short三种类型数据所占用的内存
A.均为2个字节 B.由用户自己定义
C.由所用机器的机器字长决定 D.是任意的
21.高性能int类型的数据长度为2个字节,则 unsigned int 类型数据的取值范围是
A.0~255 B.0~65535
C.-32768~32767 D.-256~255
22.以下()是不正确的转义字符。
A.’\\’ B.’\’
C.’081’ D.’\0
23.一个C语言的程序是由()组成
A.主程序 B.子程序
C.函数 D.过程
24.一个C语言的程序总是从()开始的。
A.主过程 B.主函数
C.子程序 D.主程序
25.一个C语言的程序是由
A.一个主程序和若干个子程序组成 B.函数组成
C.若干过程组成 D.若干子程序组成
26.以下述叙不正确的是
A.一个C源程序可以由一个或多个函数组成
B.一个C源程序必须包含一个main函数
C.C程序的基本组成单位是函数
D.在C程序中注释说明只能位于一条语句的后面
27.C语言中规定:在一个源程序中main函数的位置
A.必须在最开始 B.必须在系统调用的库函数的后面
C.可以任意 D.必须在最后
28.一个C程序的执行是从
A.本程序的main函数开始,到main函数结束
B.本程序文件的第一个函数开始,到本程序的最后一个函数结束
C.本程序的main函数开始,到本程序的最后一个函数结束
D.本程序文件的第一个函数开始,到本程序main函数结束
29.以下述叙正确的是
A.在C程序中,main函数必须位于程序的最前面
B.C程序的每行中只能写一条语句
C.C语言本身没有输入输出语句
D.在对一个C程序进行编译的过程中,可发现注释中的拼写错误
二、填空题
1.将下列给出的常量分别归类到:整型常量、浮点常量和字符型常量
(1)0x7a (2)078 (3)6a (4)57L
(5)’m’ (6)"ab6" (7)-32 (8)3.4,256
(9)0e0 (10).e0 (11)-3.1e-5 (12)2e0
(13)0.012e003 (14)’\"’ (15)’xy’ (16)" "
(17)"\nab\t" (18)’\"’ (19)’\07’
2.指出下列标识符中哪些是非法的
(1)a_Char (2)b22c (3)286pc (4)-am
(5)_7b (6)ab# (7)Max_1 (8)__Star
(9)*itm (10)To-2 (11)for (12)"tt
3.C源程序的基本单位是____。
4.一个C源程序中至少应包含一个_____。
5.在一个C源程序中,注释部分二侧的分界符分别为___和___。
6.在C语言中,输入操作是由库函数____完成的,输出操作是由库函数____完成的。
答案:
一、选择题
1、 B 2.D 3.A 4.C 5.A
6. (1)A,(2)C (3)D 7. C 8. (10C (2)D (3)A
9. B 10.C 11.C, F 12. D
13. D 14. (1)A,(2)D, (3)B,(4) B
15. C 16. B 17.D 18. B
19. B 20. C 21. B 22.C
23. C 24. B 25.B 26. D
27. C 28. A 29. C
二、填空题
1、整型常量有(1) (4)
浮点型常量有: (9) (12) (13) (14)
字符型常量有: (5) (6) (16) (17) (18) (19) (20)
2、非法标识符有: 3) (4) (6) (9) (10) (12)
3、函数
4、主函数
5、(1)/* (2)*/
6、(1)scanf (2)printf
下面是编程经典32 题
【程序1】程序源代码:
main()
{
int i,j,k;
printf("\n");
for(i=1;i调试好的.
程序2代码:
#include "stdio.h"
void main()
{ long int i;
double bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
scanf("%ld",&i);
bonus1=100000*0.1;
bonus2=bonus1+100000*0.075;
bonus4=bonus2+200000*0.05;
bonus6=bonus4+200000*0.03;
bonus10=bonus6+400000*0.015;
if (i2)/*如果是闰年且月份大于2,总数天数应该加1*/
sum++;
printf ("It is the %dth day.",sum);
}
【程序5】
题目:输入三个整数x,y,z,请把这三个数由小到大输出。
1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
#include "stdio.h"
void main()
{
int x,y,z,t;
printf("请输入3个整数:\n");
scanf("%d,%d,%d",&x,&y,&z);
if (x>y)
{t=x;x=y;y=x;}
if (x>z)
{t=x;x=z;z=t;}
if (y>z)
{t=y;y=z;z=t;}
printf("你输入3个数从小到大的顺序为:%d,%d,%d\n",x,y,z);
}
程序6】
题目:用*号输出字母C的图案。
1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。
不要说简单哦,慢慢来,熟能生巧嘛~~~~~~~~
#include "stdio.h"
void main ()
{
printf ("Hello C---world!\n");
printf (" *****\n");
printf (" *\n");
printf (" *\n");
printf (" *****\n");
}
下面这一题我运行的时候处出现几个汉字外,并没有像题目说的那样Very Beautiful!.同志们看看你们的结果是什么.
程序7】
题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!
1.程序分析:字符共有256个。不同字符,图形不一样。
#include "stdio.h"
void main ()
{
char a=176,b=219;
printf("%c%c%c%c%c\n",b,a,a,a,b);
printf("%c%c%c%c%c\n",a,b,a,b,a);
printf("%c%c%c%c%c\n",a,a,b,a,a);
printf("%c%c%c%c%c\n",a,b,a,b,a);
printf("%c%c%c%c%c\n",b,a,a,a,b);
}
【程序8】
题目:输出9*9口诀。
1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
#include "stdio.h"
void main ()
{
int i,j,result;
printf ("\n");
for (i=1;i=3)
分析到这我们做题目就不会有多大的难度了 :
11题程序为:
main()
{
long int f1,f2;
int i;
f1=1;f2=1;
for (i=1;ik,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
#include "stdio.h"
void main()
{int n,i;
printf("\nplease input a number :\n");
scanf("%d",&n);
printf("%d=",n);
for(i=2;i=90分的同学用A表示,60-89分之间的用B表示,
60分以下的用C表示。
1.程序分析:(a>b)?a:b这是条件运算符的基本例子。
#include "stdio.h"
void main()
{int chji;
char biaosi;
printf("Please input a chji:\n");
scanf("%d",&chji);
biaosi=chji>=90?'A'chji>=60?'B':'C');
printf("%d belongs to %c\n",chji,biaosi);
}
【程序16】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数
第16题
#include
#include
#include
#include "math.h"
main()
{
int a,b,c=1,i,temp;
printf("输入2个正整数:");
scanf("%d%d",&a,&b);
if(a>b)
{
temp=a;
a=b;
b=temp;
}
for(i=2;i='a'&&c='A'&&c='0'&&c0)
{
i=(j+1)*2;
j=i;
day--;
}
printf("the total is %d\n",i);
}
【程序22】
题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定
比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出
三队赛手的名单。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
则表明此数不是素数,反之是素数。
#include
void main ()
{
char i,j,k;/*i是a的对手,j是b的,k是c的*/
for (i='x';i<='z';i++)
for (j='x';j<='z';j++)
{if (i!=j)
for (k='x';k<='z';k++)
{if (i!=k&&j!=k)
{if (i!='x'&&k!='x'&&k!='z')
printf("order is a--%c\tb--%c\tc--%c\n",i,j,k);
}
}
}
}
【程序23】
题目:打印出如下图案(菱形)
*
***
******
********
******
***
*
1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重
for循环,第一层控制行,第二层控制列。
这个题用数组:
#include
void main ()
{
char lingxing[][7]={{' ',' ',' ','*'},{' ',' ','*','*','*'},{' ','*','*','*','*','*'},
{'*','*','*','*','*','*','*'},{' ','*','*','*','*','*'},{' ',' ','*','*','*'},{' ',' ',' ','*'}};
int i,j;
for (i=0;i<7;i++)
{ for (j=0;j<7;j++)
printf("%c",lingxing[j]);
printf("\n");
}
}
还可以这样:#include
void main ()
{
int i,j,k;
for (i=0;i<=3;i++)
{
for (j=0;j=2-i;j++)
printf(" ");
for (k=0;k<=2*i;k++)
printf("*");
printf("\n");
}
for (i=0;i<=2;i++)
{
for (j=0;j<=i;j++)
printf(" ");
for (k=0;k<=4-2*i;k++)
printf("*");
printf("\n");
}
}
用函数调用也可以,自己试试.
【程序24】
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
1.程序分析:请抓住分子与分母的变化规律。
#include
void main ()
{int n,t,number=20;
float a=2,b=1,s=0;
for (n=1;n<=number;n++)
{
s+=a/b;
t=a;a+=b;b=t;//这一步是关键
}
printf("sum is %9.6f\n",s);
}
【程序25】
题目:求1+2!+3!+...+20!的和
1.程序分析:此程序只是把累加变成了累乘。
#include
void main ()
{
float n,s=0,t=1;
for (n=1;n<=20;n++)
{
t*=n;
s+=t;
}
printf("1+2!...+20!=%e\n",s);
}
还要注意溢出,大家说一下怎样判断.
还有下面的这个题<
程序26】
题目:利用递归方法求5!。
1.程序分析:递归公式:fn=fn_1*4!
#include
void main ()
{
int i;
printf("请输入求递归的数:\n");
scanf("%d",&i);
int fact (int );
printf("%d!=%d\n",i,fact(i));
}
int fact(int j)
{
int sum;
if (j==0)
sum=1;
else
sum=j*fact(j-1);
return sum;
}
考虑一下怎样判断溢出呢?
【程序27】
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
#include
char a[5];
void f(int n)
{
if (n<5)
{
f(n+1);//注意这里是重点。好好理解哦!
printf("%c",a[n]);
}
}
void main ()
{
printf("Input the string(lenth is 5):");
scanf("%s",a);
printf("After is :");
f(0);
}
【程序28】
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第
3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后
问第一个人,他说是10岁。请问第五个人多大?
28 题~
#include
age (int n)
{
int c;
if (n==1)
c=10;
else
c=age(n-1)+2;
return (c);
}
void main ()
{
printf("%d",age(5));
}
程序29】
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
#include
main( )
{
long a,b,c,d,e,x;
scanf("%ld",&x);
a=x/10000;/*分解出万位*/
b=x%10000/1000;/*分解出千位*/
c=x%1000/100;/*分解出百位*/
d=x%100/10;/*分解出十位*/
e=x%10;/*分解出个位*/
if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);
else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);
else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);
else if (d!=0) printf("there are 2, %ld %ld\n",e,d);
else if (e!=0) printf(" there are 1,%ld\n",e);
}
【程序30】
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
#include
main( )
{
long a,b,c,d,e,x;
scanf("%ld",&x);
a=x/10000;/*分解出万位*/
b=x%10000/1000;/*分解出千位*/
c=x%1000/100;/*分解出百位*/
d=x%100/10;/*分解出十位*/
e=x%10;/*分解出个位*/
if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);
else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);
else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);
else if (d!=0) printf("there are 2, %ld %ld\n",e,d);
else if (e!=0) printf(" there are 1,%ld\n",e);
}
【程序30】
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
#include
main( )
{
long ge,shi,qian,wan,x;
scanf("%ld",&x);
wan=x/10000;
qian=x%10000/1000;
shi=x%100/10;
ge=x%10;
if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/
printf("this number is a huiwen\n");
else
printf("this number is not a huiwen\n");
}
程序31】
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续
判断第二个字母。
#include
#include "conio.h" //getch 的头文件。
void main ()
{
char letter;
printf("Please input the first letter of someday\n");
while ((letter=getch())!='Y')
{switch (letter)
{
case 'S'rintf("please input second letter\n");
if ((letter=getch())='a')
printf("saturday\n");
else
if((letter=getch())='u')
printf("sunday\n");
else printf("data error\n");
break;
case 'F'rintf("friday\n");
break;
case 'M'rintf("monday\n");
break;
case 'T'rintf("please input second letter\n");
if((letter=getch())='h')
printf("thursday\n");
else
if ((letter=getch())='u')
printf("tuesday\n");
else printf("data error\n");
break;
case 'W'rintf("wednesday\n");
break;
defaultrintf("data error\n");
}
}
}
【程序32】
题目:Press any key to change color, do you want to try it. Please hurry up!
这个题目在TC中可以运行,在VC中运行不行,谁知道可以告诉我.谢谢!
2.程序源代码:
#include
void main(void)
{
int color;
for (color = 0; color < 8; color++)
{
textbackground(color);/*设置文本的背景颜色*/
cprintf("This is color %d\r\n", color);
cprintf("Press any key to continue\r\n");
getch();/*输入字符看不见*/
}
}
33题目:求100之内的素数
#include
#include "math.h"
void main ()
{
int m,i,k,h=0,leap=1;
printf("\n");
for (m=1;m<=100;m++)
{
k=sqrt(m
2010年06月02日
.1 若a、b、c、d都是int类型变量且初值为0,以下选项中不正确的赋值语句是
A) a=b=c=100; B) d++; C) c+b; D) d=(c=22)-(b++);
答案:C
3.2 以下选项中不是C语句的是
A) {int i; i++; printf("%d\n", i); } B) ; C) a=5,c=10 D) { ; } 答案:C
3.3 以下合法的C语言赋值语句是
A) A=B=58 B) k=int(a+b); C) a=58,b=58 D) --i; 答案:D
3.4 以下程序的输出结果是
A) 0 B) 1 C) 3 D)不确定的值 main() { int x=10,y=3; printf("%d\n", y=x/y); } 答案:C
3.5 若变量已正确说明为int类型,要给a、b、c输入数据,以下不正确的输入语句是
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);
答案:D
3.6 若变量已正确说明为float类型,要通过以下赋值语句给a赋予10、b赋予22、c赋予
33,以下不正确的输入形式是
A) 10 22 33 B) 10.0,22.0,33.0 C) 10.0 22.0 33.0 D) 10 22
33 scanf("%f %f %f", &a, &b, &c);
答案:B
3.7 若变量以正确定义,要将a和b中的数进行交换,下面不正确的语句组是
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;
答案:C
3.8 若变量已正确定义,以下程序段的输出结果是
A) 输出格式说明与输出项不匹配,输出无定值 B) 5.17000 C) 5.168000 D) 5.169000
x=5.16894; printf("%f\n",(int)(x*1000+0.5)/(float)1000);
答案:D
3.9 若有以下程序段,c3中的值是
A) 0 B) 1/2 C) 0.5 D) 1
int c1=1,c2=2,c3; c3=c1/c2;
答案:A
3.10 若有以下程序段,其输出结果是
A) 0,0,-10 B) 0,0,5 C) -10,3,-10 D) 3,3,-10
int a=0,b=0,c=0; c=(a-=a-5),(a=b,b+3); printf("%d,%d,%d\n",a,b,c);
答案:B
3.11 当运行以下程序时,在键盘上从第一列开始输入9876543210(此处代表Enter),则程序的输出结果是
A) a=98,b=765,c=4321
B) a=10,b=432,c=8765
C) a=98,b=765.000000,c=4321.000000
D) a=98,b=765,c=4321.0
main() { int a; float b,c; scanf("-?O",&a,&b,&c); printf("\na=%d,b=%f,c=%f\n",a,b,c); }
答案:C
3.12 以下程序的输出结果是
A) a=%2,b=%5
B) a=2,b=5
C) a=%%d,b=%%d
D) a=%d,b=%d
main() { int a=2,b=5; printf("a=%%d,b=%%d\n",a,b); }
答案:D
3.13 若int类型占两个字节,则以下程序段的输出是 A) -1,-1 B) -1,32767 C) -1,32768 D) -1,65535
int a=-1; printf("%d,%u\n",a,a);
答案:D
3.14 以下程序段的输出是 A) *496 * B) * 496* C) *000496* D)输出格式符不合法
int x=496; printf("*%-06d*\n",x);
答案:A
3.15 以下程序段的输出是 A) |3.1415| B) | 3.0| C) | 3| D) | 3.|
float a=3.1415; printf("|%6.0f|\n",a);
答案:C
3.16 以下程序段的输出是 A) |2345.67800| B) |12345.6780| C) |12345.67800| D) |12345.678| printf("|.5f|\n",12345.678);
答案:C
3.17 以下程序段的输出是 A) *0000057.66* B) * 57.66* C) *0000057.67* D) * 57.67* float a=57.666; printf("*0.2f*\n",a);
答案:C
3.18 若从终端输入以下数据,要给变量C赋以283.19,则正确的输入语句是 A) scanf("%f",c); B) scanf("%8.4f",&c); C) scanf("%6.2f",&c); D) scanf("%8",&c); 283.1900 表示Enter键
答案:由于印刷错误,本题没有正确答案。改正意见: 把选项A改为:scanf("%f",&c);或者把选项D改为:scanf("",&c);则可分别选择A或者D为正确答案。
3.19 若变量已正确说明,要求用以下语句给a赋予
3.12、给b赋予9.0,则正确的输入形式是(□代表空格) A) 3.12□□9.0 B) a=□□3.12b=□□□9 C) a=3.12,b=9 D) a=3.12□□,b=9□□□□ scanf("a=%f,b=%f",&a,&b); 表示Enter键 答案:C
3.20 以下程序的输出结果是
A) 9 8 B) 8 9 C) 6 6 D) 以上三个都不对
#include "math.h" main() { double a=-3.0, b=2; printf("%3.0f %3.0f\n",pow(b,fabs(a)),pow(fabs(a),b)); }
答案:B
二、填空题
3.21 若有以下定义,请写出以下程序段中输出语句执行后的输出结果。 (1)____(2)____(3)____ 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);
答案: -200 2500 i=-200, j=2500 i=-200 j=2500
3.22 变量i、j、k已定义为int类型并有初值0,用以下语句进行输入时 scanf("%d",&i); scanf("%d",&j); scanf("%d",&k); 当执行第一个输入语句,从键盘输入: 12.3 表示Enter键则变量i、j、k的值分别是____、____、____。
答案:12、0、0
3.23 复合语句在语法上被认为是____。空语句的形式是____。
答案:一条语句、 ;
3.24 C语句的最后用____结束。 答案:;
3.25 以下程序段,要求通过scanf语句给变量赋值,然后输出变量的值。写出运行时给k输入100,给a输入25.81,给x输入1.89234时的三种可能的输入形式____、_____、____。 int k; float a; double x; scanf("%d%f%lf",&k,&a,&x); printf("k=%d,a=%f,x=%f\n",k,a,x);
答案: (1) 100 25.81 1.89234 (2) 100 25.811.89234 (3) 100 25.81 1.89234
3.26 以下程序段的输出结果是____。 int x=0177; printf("x==,x=m,x=$%6o,x=%6x,x=%6u\n",x,x,x,x,x);
答案:x=127,x= 127,x= 177,x= 7f,x= 127
3.27 以下程序段的输出结果是____。 int x=0177; printf("x=%-3d,x=%-6d,x=$%-06d,x=$d,x=%d\n",x,x,x,x,x);
答案:27、x=127,x=127 ,x=$127 ,x=$000127,x=d
3.28 以下程序段的输出结果是____。 double a=513.789215; printf("a=%8.6f,a=%8.2f,a=.8f,a=.8lf\n",a,a,a,a);
答案:a=513.789215,a= 513.79,a= 513.78921500,a= 513.78921500
第二章 C程序设计的初步知识
一、选择题
2.1 以下选项中正确的整型常量是
A)12. B)-20 C)1,000 D)4 5 6
答案:B
2.2 以下选项中正确的实型常量是
A)0 B)3. 1415 C)0.329×10(2)(10的2次方) D).871
答案:D
2.3 以下选项中不正确的实型常量是 A)2.607E-1 B)0.8103e 2 C)-77.77 D)456e-2
答案:B
2.4 以下选项中不合法的用户标识符是
A)abc.c B)file C)Main D)PRINTF
答案:A
2.5 以下选项中不合法的用户标识符是
A)_123 B)printf C)A$ D)Dim 答案:C 2.6 C语言中运算对象必需是整型的运算符是 A)% B)/ C)! D)**
答案:A
2.7 可在C程序中用作用户标识符的一组标识符是
A)void define WORD B)as_b3 _123 If C)For -abc case D)2c DO SIG
答案:B
2.8 若变量已正确定义并赋值,符合C语言语法的表达式是
A)a=a+7; B)a=7+b+c,a++ C)int(12.3%4) D)a=a+7=c+b
答案:B
2.9 以下叙述中正确的是
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。
答案:B
2.10 以下叙述中正确的是
A)在C程序中无论是整数还是实数,只要在允许的范围内都能准确无误的表示。
B)C程序由主函数组成。
C)C程序由函数组成。
D)C程序由函数和过程组成。
答案:C
2.11 TURBO C中int类型变量所占字节数是
A)1 B)2 C)3 D)
4 答案:B
2.12 不合法的八进制数是
A)0 B)028 C)077 D)01
答案:B
2.13 不合法的十六进制数是 A)oxff B)0Xabc C)0x11 D)0x19
答案:A
二、填空题
2.14 若k为int整型变量且赋值11。请写出运算k++后表达式的值A)_____和变量的值B)_____。
答案:11、
12 2.15 若x为double型变量,请写出运算x=3.2,++x后表达式的值A)_____和变量的值B)_____。
答案:4.2、4.2
2.16 函数体由符号____开始,用符号____结束。函数体的前面是____部分,其后是____部分。
答案:{、}、定义、执行
2.17 C语言中的标识符可分为____、____、和预定义标识符三类。
答案:关键字、用户标识符
2.18 在C语言程序中,用关键字____定义基本整型量,用关键字____定义单精度实型变量,用关键字___定义双精度实型变量。 答案:int、float、double
2.19 把a1、a2定义成单精度实型变量,并赋初值1的定义语句是____。
答案:float a1=1.0,a2=1.0;
2.20 C程序中定义的变量,代表内存中的一个____。
答案:存储单元
2.21 表达式3.5+1/2的计算结果是____。
答案:3.5
2.22 对以下数学式,写出三个等价的C语言表达式____、____、____。 a×b ―― c 答案:a*b/c、a/c*b、b/c*a 2.23 表达式s=10应当读做“____”。
答案:将10赋给变量s
2.24 计算机中内存储器的最小存储单位称____,其中能容纳的数是____。 答案:位、0或1
2.25 通常一个字节包含____个二进制位。在一个字节中能存放的最大(十进制)整数是____,它的二进制数的形式是____;最小(十进制)整数是____,它的二进制数的形式是____。
答案:8、
255、1111 1111、-128、1000 0000
2.26 当计算机用两个字节存放一个整数时,其中能存放的最大(十进制)整数是____、最小(十进制)整数是____,它的二进制数的形式是____。
答案:65535、-32768、1000 0000 0000 0000
2.27 在C语言中整数可用____进制数、____进制数和____进制数三种数制表示。
答案:十、八、十六
一、选择题
1.下述标识符中,()是合法的用户标识符。
A.A#C B.getch C.void D.ab*
2.在C语言中,字符型数据在内存中是以()形式存放的。
A.原码 B.BCD码 C.反码 D.ASCII码
3.以下选项中不合法的用户标识符是()。
A.abc.c B.file C.Main D.PRONTF
4.以下选项中不合法的用户标识符是()。
A.123 B.printf C.A$ D.Dim
5.可以在C语言程序中用做用户标识符的一组标识符是()。
A.void B.as-b3 C.for D.2c
define -123 -abc Do
WORD If cas SIG
6.在以下各组标识符中,合法的用户标识符是(1)、(2)、(3)。
(1)A.001 B.table_1 C.0_t D.k%
Int t*.1 W10 point
(2)A.Fast_ B.void C.pbl D.
Fast+Big abs fabs beep
(3)A.xy_ B.longdouble C.*p D.CHAR
变量1 signed history Float
7.()是构成C语言的基本单位。
A.函数 B.过程 C.子程序 D.子例程
8.若有说明:char s1=’\067’;char s2="1";char s3=’1’;则s1中(1),s2中(2),s3中(3)。
(1).A.包含3个字符 B.包含2个字符
C.包含1个字符 D.无定值,说明不合
2).A.包含1个字符 B.包含2个字符
C.包含3个字符 D.无定值,说明不合法
(3).A.包含1个字符 B.包含2个字符
C.包含3个字符 D.无定值,说明不合法
9.若x为int型变量,则执行以下语句后,x的值为
x=6;
x+=x-=x*x
A.36 B.-60 C.60 D.-24
10.在C语言中,char 型数据在内存中是以()形式存储的。
A.原码 B.补码 C.ASCII码 D.反码
11.以下运算符中优先级最低的算符为(),优先级最高的为()。
A.&& B.& C.|= D.|| E.?: F.!=
12.若有运算符 >、*=、 % sizeof
B. % sizeof
C.*= > 语言的程序一行写不下时,可以
A.用逗号换行 B.用分号换行
C.在任意一空格处换行 D.用回车符换转
16.下述标识符中,()是合法的用户标识符。
A.A#C B.getch
C.void D.ab*
17.在C语言中,字符型数据在内存中是以()形式存放。
13.若有以下类型说明语句
char w; int x; float y; double z;
则表达式 w*x+z-y 的结果是()类型。
A.float B.char C.int D.double
14.若 w,x,y,z 均为int 型变量,则执行下面的语句后, w=(1), x=(2), y=(3), z=(4)。
w=5; x=4;
y=w++*w++*w++;
z=--x*=--x*--x;
(1)A.8 B.7 C.6 D.24
A.4 B.3 C.2 D.1
A.150 B.125 C.210 D.336
A.64 B.1 C.6 D.24
15.C语言的程序一行写不下时,可以
A.用逗号换行 B.用分号换行
C.在任意一空格处换行 D.用回车符换行
16.下述标识符中,()是合法的用户标识符。
A.A#C B.getch
C.void D.ab*
17.在C语言中,字符型数据在内存中是以()形式存放。
A.原码 B.BCD
C.反码 D.ASCII码
18.()是非法的C语言转义字符。
A.’\b’ B.’\0xf’
C.’\037’ D.’\’’
19.语句 char s=’\092’;的作用是
A.s包含1个字符 B.说明不合法, s的值不定。
C.使 s包含4个字符 D.使 s包含3个字符
20.在C语言中,int,char,和short三种类型数据所占用的内存
A.均为2个字节 B.由用户自己定义
C.由所用机器的机器字长决定 D.是任意的
21.高性能int类型的数据长度为2个字节,则 unsigned int 类型数据的取值范围是
A.0~255 B.0~65535
C.-32768~32767 D.-256~255
22.以下()是不正确的转义字符。
A.’\\’ B.’\’
C.’081’ D.’\0
23.一个C语言的程序是由()组成
A.主程序 B.子程序
C.函数 D.过程
24.一个C语言的程序总是从()开始的。
A.主过程 B.主函数
C.子程序 D.主程序
25.一个C语言的程序是由
A.一个主程序和若干个子程序组成 B.函数组成
C.若干过程组成 D.若干子程序组成
26.以下述叙不正确的是
A.一个C源程序可以由一个或多个函数组成
B.一个C源程序必须包含一个main函数
C.C程序的基本组成单位是函数
D.在C程序中注释说明只能位于一条语句的后面
27.C语言中规定:在一个源程序中main函数的位置
A.必须在最开始 B.必须在系统调用的库函数的后面
C.可以任意 D.必须在最后
28.一个C程序的执行是从
A.本程序的main函数开始,到main函数结束
B.本程序文件的第一个函数开始,到本程序的最后一个函数结束
C.本程序的main函数开始,到本程序的最后一个函数结束
D.本程序文件的第一个函数开始,到本程序main函数结束
29.以下述叙正确的是
A.在C程序中,main函数必须位于程序的最前面
B.C程序的每行中只能写一条语句
C.C语言本身没有输入输出语句
D.在对一个C程序进行编译的过程中,可发现注释中的拼写错误
二、填空题
1.将下列给出的常量分别归类到:整型常量、浮点常量和字符型常量
(1)0x7a (2)078 (3)6a (4)57L
(5)’m’ (6)"ab6" (7)-32 (8)3.4,256
(9)0e0 (10).e0 (11)-3.1e-5 (12)2e0
(13)0.012e003 (14)’\"’ (15)’xy’ (16)" "
(17)"\nab\t" (18)’\"’ (19)’\07’
2.指出下列标识符中哪些是非法的
(1)a_Char (2)b22c (3)286pc (4)-am
(5)_7b (6)ab# (7)Max_1 (8)__Star
(9)*itm (10)To-2 (11)for (12)"tt
3.C源程序的基本单位是____。
4.一个C源程序中至少应包含一个_____。
5.在一个C源程序中,注释部分二侧的分界符分别为___和___。
6.在C语言中,输入操作是由库函数____完成的,输出操作是由库函数____完成的。
答案:
一、选择题
1、 B 2.D 3.A 4.C 5.A
6. (1)A,(2)C (3)D 7. C 8. (10C (2)D (3)A
9. B 10.C 11.C, F 12. D
13. D 14. (1)A,(2)D, (3)B,(4) B
15. C 16. B 17.D 18. B
19. B 20. C 21. B 22.C
23. C 24. B 25.B 26. D
27. C 28. A 29. C
二、填空题
1、整型常量有(1) (4)
浮点型常量有: (9) (12) (13) (14)
字符型常量有: (5) (6) (16) (17) (18) (19) (20)
2、非法标识符有: 3) (4) (6) (9) (10) (12)
3、函数
4、主函数
5、(1)/* (2)*/
6、(1)scanf (2)printf
下面是编程经典32 题
【程序1】程序源代码:
main()
{
int i,j,k;
printf("\n");
for(i=1;i调试好的.
程序2代码:
#include "stdio.h"
void main()
{ long int i;
double bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
scanf("%ld",&i);
bonus1=100000*0.1;
bonus2=bonus1+100000*0.075;
bonus4=bonus2+200000*0.05;
bonus6=bonus4+200000*0.03;
bonus10=bonus6+400000*0.015;
if (i2)/*如果是闰年且月份大于2,总数天数应该加1*/
sum++;
printf ("It is the %dth day.",sum);
}
【程序5】
题目:输入三个整数x,y,z,请把这三个数由小到大输出。
1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
#include "stdio.h"
void main()
{
int x,y,z,t;
printf("请输入3个整数:\n");
scanf("%d,%d,%d",&x,&y,&z);
if (x>y)
{t=x;x=y;y=x;}
if (x>z)
{t=x;x=z;z=t;}
if (y>z)
{t=y;y=z;z=t;}
printf("你输入3个数从小到大的顺序为:%d,%d,%d\n",x,y,z);
}
程序6】
题目:用*号输出字母C的图案。
1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。
不要说简单哦,慢慢来,熟能生巧嘛~~~~~~~~
#include "stdio.h"
void main ()
{
printf ("Hello C---world!\n");
printf (" *****\n");
printf (" *\n");
printf (" *\n");
printf (" *****\n");
}
下面这一题我运行的时候处出现几个汉字外,并没有像题目说的那样Very Beautiful!.同志们看看你们的结果是什么.
程序7】
题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!
1.程序分析:字符共有256个。不同字符,图形不一样。
#include "stdio.h"
void main ()
{
char a=176,b=219;
printf("%c%c%c%c%c\n",b,a,a,a,b);
printf("%c%c%c%c%c\n",a,b,a,b,a);
printf("%c%c%c%c%c\n",a,a,b,a,a);
printf("%c%c%c%c%c\n",a,b,a,b,a);
printf("%c%c%c%c%c\n",b,a,a,a,b);
}
【程序8】
题目:输出9*9口诀。
1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
#include "stdio.h"
void main ()
{
int i,j,result;
printf ("\n");
for (i=1;i=3)
分析到这我们做题目就不会有多大的难度了 :
11题程序为:
main()
{
long int f1,f2;
int i;
f1=1;f2=1;
for (i=1;ik,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
#include "stdio.h"
void main()
{int n,i;
printf("\nplease input a number :\n");
scanf("%d",&n);
printf("%d=",n);
for(i=2;i=90分的同学用A表示,60-89分之间的用B表示,
60分以下的用C表示。
1.程序分析:(a>b)?a:b这是条件运算符的基本例子。
#include "stdio.h"
void main()
{int chji;
char biaosi;
printf("Please input a chji:\n");
scanf("%d",&chji);
biaosi=chji>=90?'A'chji>=60?'B':'C');
printf("%d belongs to %c\n",chji,biaosi);
}
【程序16】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数
第16题
#include
#include
#include
#include "math.h"
main()
{
int a,b,c=1,i,temp;
printf("输入2个正整数:");
scanf("%d%d",&a,&b);
if(a>b)
{
temp=a;
a=b;
b=temp;
}
for(i=2;i='a'&&c='A'&&c='0'&&c0)
{
i=(j+1)*2;
j=i;
day--;
}
printf("the total is %d\n",i);
}
【程序22】
题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定
比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出
三队赛手的名单。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
则表明此数不是素数,反之是素数。
#include
void main ()
{
char i,j,k;/*i是a的对手,j是b的,k是c的*/
for (i='x';i<='z';i++)
for (j='x';j<='z';j++)
{if (i!=j)
for (k='x';k<='z';k++)
{if (i!=k&&j!=k)
{if (i!='x'&&k!='x'&&k!='z')
printf("order is a--%c\tb--%c\tc--%c\n",i,j,k);
}
}
}
}
【程序23】
题目:打印出如下图案(菱形)
*
***
******
********
******
***
*
1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重
for循环,第一层控制行,第二层控制列。
这个题用数组:
#include
void main ()
{
char lingxing[][7]={{' ',' ',' ','*'},{' ',' ','*','*','*'},{' ','*','*','*','*','*'},
{'*','*','*','*','*','*','*'},{' ','*','*','*','*','*'},{' ',' ','*','*','*'},{' ',' ',' ','*'}};
int i,j;
for (i=0;i<7;i++)
{ for (j=0;j<7;j++)
printf("%c",lingxing[j]);
printf("\n");
}
}
还可以这样:#include
void main ()
{
int i,j,k;
for (i=0;i<=3;i++)
{
for (j=0;j=2-i;j++)
printf(" ");
for (k=0;k<=2*i;k++)
printf("*");
printf("\n");
}
for (i=0;i<=2;i++)
{
for (j=0;j<=i;j++)
printf(" ");
for (k=0;k<=4-2*i;k++)
printf("*");
printf("\n");
}
}
用函数调用也可以,自己试试.
【程序24】
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
1.程序分析:请抓住分子与分母的变化规律。
#include
void main ()
{int n,t,number=20;
float a=2,b=1,s=0;
for (n=1;n<=number;n++)
{
s+=a/b;
t=a;a+=b;b=t;//这一步是关键
}
printf("sum is %9.6f\n",s);
}
【程序25】
题目:求1+2!+3!+...+20!的和
1.程序分析:此程序只是把累加变成了累乘。
#include
void main ()
{
float n,s=0,t=1;
for (n=1;n<=20;n++)
{
t*=n;
s+=t;
}
printf("1+2!...+20!=%e\n",s);
}
还要注意溢出,大家说一下怎样判断.
还有下面的这个题<
程序26】
题目:利用递归方法求5!。
1.程序分析:递归公式:fn=fn_1*4!
#include
void main ()
{
int i;
printf("请输入求递归的数:\n");
scanf("%d",&i);
int fact (int );
printf("%d!=%d\n",i,fact(i));
}
int fact(int j)
{
int sum;
if (j==0)
sum=1;
else
sum=j*fact(j-1);
return sum;
}
考虑一下怎样判断溢出呢?
【程序27】
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
#include
char a[5];
void f(int n)
{
if (n<5)
{
f(n+1);//注意这里是重点。好好理解哦!
printf("%c",a[n]);
}
}
void main ()
{
printf("Input the string(lenth is 5):");
scanf("%s",a);
printf("After is :");
f(0);
}
【程序28】
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第
3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后
问第一个人,他说是10岁。请问第五个人多大?
28 题~
#include
age (int n)
{
int c;
if (n==1)
c=10;
else
c=age(n-1)+2;
return (c);
}
void main ()
{
printf("%d",age(5));
}
程序29】
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
#include
main( )
{
long a,b,c,d,e,x;
scanf("%ld",&x);
a=x/10000;/*分解出万位*/
b=x%10000/1000;/*分解出千位*/
c=x%1000/100;/*分解出百位*/
d=x%100/10;/*分解出十位*/
e=x%10;/*分解出个位*/
if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);
else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);
else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);
else if (d!=0) printf("there are 2, %ld %ld\n",e,d);
else if (e!=0) printf(" there are 1,%ld\n",e);
}
【程序30】
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
#include
main( )
{
long a,b,c,d,e,x;
scanf("%ld",&x);
a=x/10000;/*分解出万位*/
b=x%10000/1000;/*分解出千位*/
c=x%1000/100;/*分解出百位*/
d=x%100/10;/*分解出十位*/
e=x%10;/*分解出个位*/
if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);
else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);
else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);
else if (d!=0) printf("there are 2, %ld %ld\n",e,d);
else if (e!=0) printf(" there are 1,%ld\n",e);
}
【程序30】
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
#include
main( )
{
long ge,shi,qian,wan,x;
scanf("%ld",&x);
wan=x/10000;
qian=x%10000/1000;
shi=x%100/10;
ge=x%10;
if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/
printf("this number is a huiwen\n");
else
printf("this number is not a huiwen\n");
}
程序31】
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续
判断第二个字母。
#include
#include "conio.h" //getch 的头文件。
void main ()
{
char letter;
printf("Please input the first letter of someday\n");
while ((letter=getch())!='Y')
{switch (letter)
{
case 'S'rintf("please input second letter\n");
if ((letter=getch())='a')
printf("saturday\n");
else
if((letter=getch())='u')
printf("sunday\n");
else printf("data error\n");
break;
case 'F'rintf("friday\n");
break;
case 'M'rintf("monday\n");
break;
case 'T'rintf("please input second letter\n");
if((letter=getch())='h')
printf("thursday\n");
else
if ((letter=getch())='u')
printf("tuesday\n");
else printf("data error\n");
break;
case 'W'rintf("wednesday\n");
break;
defaultrintf("data error\n");
}
}
}
【程序32】
题目:Press any key to change color, do you want to try it. Please hurry up!
这个题目在TC中可以运行,在VC中运行不行,谁知道可以告诉我.谢谢!
2.程序源代码:
#include
void main(void)
{
int color;
for (color = 0; color < 8; color++)
{
textbackground(color);/*设置文本的背景颜色*/
cprintf("This is color %d\r\n", color);
cprintf("Press any key to continue\r\n");
getch();/*输入字符看不见*/
}
}
33题目:求100之内的素数
#include
#include "math.h"
void main ()
{
int m,i,k,h=0,leap=1;
printf("\n");
for (m=1;m<=100;m++)
{
k=sqrt(m