您的位置:

高级超经典c语言编程题目,高级超经典c语言编程题目答案

本文目录一览:

c语言编程100题,有没有大神帮帮忙

您好,c语言经典100题:

【程序1】

题目:有1,2,3,4个数字,能组成多少个互不相同且无重复数字的三位数

都是多少

1.程序分析:可填在百位,十位,个位的数字都是1,2,3,4.组成所有的排列后再去

掉不满足条件的排列.

2.程序源代码:

main()

{

int

i,j,k;

printf("\n");

for(i1;i5;i++)

/*以下为三重循环*/

for(j1;j5;j++)

for

(k1;k5;k++)

{

if

(i!ki!jj!k)

/*确保i,j,k三位互不相同*/

printf("%d,%d,%d\n",i,j,k);

}

}

【程序2】

题目:企业发放的奖金根据利润提成.利润(i)低于或等于10万元时,奖金可提10%;利润高

于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提

成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于

40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于

100万元时,超过100万元的部分按1%提成,从键盘输入当月利润i,求应发放奖金总数

1.程序分析:请利用数轴来分界,定位.注意定义时需把奖金定义成长整型.

2.程序源代码:

main()

{

long

int

i;

int

bonus1,bonus2,bonus4,bonus6,bonus10,bonus;

scanf("%ld",i);

bonus1100000*0.1;bonus2bonus1+100000*0.75;

bonus4bonus2+200000*0.5;

bonus6bonus4+200000*0.3;

bonus10bonus6+400000*0.15;

if(i100000)

bonusi*0.1;

else

if(i200000)

bonusbonus1+(i-100000)*0.075;

else

if(i400000)

bonusbonus2+(i-200000)*0.05;

else

if(i600000)

bonusbonus4+(i-400000)*0.03;

else

if(i1000000)

bonusbonus6+(i-600000)*0.015;

else

bonusbonus10+(i-1000000)*0.01;

printf("bonus%d",bonus);

}

【程序3】

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少

1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后

的结果满足如下条件,即是结果.请看具体分析:

2.程序源代码:

#include

"math.h"

main()

{

long

int

i,x,y,z;

for

(i1;i2)/*如果是闰年且月份大于2,总天数应该加一天*/

sum++;

printf("it

is

the

%dth

day.",sum);}

【程序4】

题目:输入某年某月某日,判断这一天是这一年的第几天?

1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊

情况,闰年且输入月份大于3时需考虑多加一天。

2.程序源代码:

main()

{

int

day,month,year,sum,leap;

printf("\nplease

input

year,month,day\n");

scanf("%d,%d,%d",year,month,day);

switch(month)/*先计算某月以前月份的总天数*/

{

case

1:sum0;break;

case

2:sum31;break;

case

3:sum59;break;

case

4:sum90;break;

case

5:sum120;break;

case

6:sum151;break;

case

7:sum181;break;

case

8:sum212;break;

case

9:sum243;break;

case

10:sum273;break;

case

11:sum304;break;

case

12:sum334;break;

default:printf("data

error");break;

}

sumsum+day;

/*再加上某天的天数*/

if(year%4000||(year%40year%100!0))/*判断是不是闰年*/

leap1;

else

leap0;

if(leap1month2)/*如果是闰年且月份大于2,总天数应该加一天*/

sum++;

printf("It

is

the

%dth

day.",sum);}

【程序5】

题目:输入三个整数x,y,z,请把这三个数由小到大输出.

1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果xy则将x与y的值进行交换,

然后再用x与z进行比较,如果xz则将x与z的值进行交换,这样能使x最小.

2.程序源代码:

main()

{

int

x,y,z,t;

scanf("%d%d%d",x,y,z);

if

(xy)

{tx;xy;yt;}

/*交换x,y的值*/

if(xz)

{tz;zx;xt;}/*交换x,z的值*/

if(yz)

{ty;yz;zt;}/*交换z,y的值*/

printf("small

to

big:

%d

%d

%d\n",x,y,z);

}

【程序6】

题目:用*号输出字母c的图案.

1.程序分析:可先用'*'号在纸上写出字母c,再分行输出.

2.程序源代码:

#include

"stdio.h"

main()

{

printf("hello

c-world!\n");

printf("

****\n");

printf("

*\n");

printf("

*

\n");

printf("

****\n");

}

【程序7】

题目:输出特殊图案,请在c环境中运行,看一看,very

beautiful!

1.程序分析:字符共有256个.不同字符,图形不一样.

2.程序源代码:

#include

"stdio.h"

main()

{

char

a176,b219;

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控制列.

2.程序源代码:

#include

"stdio.h"

main()

{

int

i,j,result;

printf("\n");

for

(i1;i10;i++)

{

for(j1;j10;j++)

{

resulti*j;

printf("%d*%d%-3d",i,j,result);/*-3d表示左对齐,占3位*/

}

printf("\n");/*每一行后换行*/

}

}

【程序9】

题目:要求输出国际象棋棋盘.

1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格.

2.程序源代码:

#include

"stdio.h"

main()

{

int

i,j;

for(i0;i8;i++)

{

for(j0;j8;j++)

if((i+j)%20)

printf("%c%c",219,219);

else

printf("

");

printf("\n");

}

}

【程序10】

题目:打印楼梯,同时在楼梯上方打印两个笑脸.

1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数.

2.程序源代码:

#include

"stdio.h"

main()

{

int

i,j;

printf("\1\1\n");/*输出两个笑脸*/

for(i1;i11;i++)

{

for(j1;ji;j++)

printf("%c%c",219,219);

printf("\n");

}

}

【程序11】

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月

后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少

1.程序分析:

兔子的规律为数列1,1,2,3,5,8,13,21....

2.程序源代码:

main()

{

long

f1,f2;

int

i;

f1f21;

for(i1;i20;i++)

{

printf("%12ld

%12ld",f1,f2);

if(i%20)

printf("\n");/*控制输出,每行四个*/

f1f1+f2;

/*前两个月加起来赋值给第三个月*/

f2f1+f2;

/*前两个月加起来赋值给第三个月*/

}

}

【程序12】

题目:判断101-200之间有多少个素数,并输出所有素数.

1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,

则表明此数不是素数,反之是素数.

2.程序源代码:

#include

"math.h"

main()

{

int

m,i,k,h0,leap1;

printf("\n");

for(m101;m200;m++)

{

ksqrt(m+1);

for(i2;ik;i++)

if(m%i0)

{leap0;break;}

if(leap)

{printf("%-4d",m);h++;

if(h%100)

printf("\n");

}

leap1;

}

printf("\nthe

total

is

%d",h);

}

求一些c编程题

C语言超级经典400道题目

1、C语言程序的基本单位是____ A) 程序行 B) 语句 C) 函数 D) 字符、C、1

2、C语言程序的三种基本结构是____ A、顺序结构,选择结构,循环结构 B、递归结构,循环结构,转移结构 C、嵌套结构,递归结构,顺序结构 D、循环结构,转移结构,顺序结构、A、1

3、C语言规定,程序中各函数之间 A) 既允许直接递归调用也允许间接递归调用 B) 不允许直接递归调用也不允许间接递归调用 C) 允许直接递归调用不允许间接递归调用 D) 不允许直接递归调用允许间接递归调用、A、1

4、C语言中可处理的文件类型是( ) A) 文本文件和数据文件 B)文本文件和二进制文件 C) 数据文件和二进制文件 D)数据代码文件、B、1

5、C语言可执行程序的开始执行点是( ) A) 程序中第一条可执行语句 B) 程序中第一个函数 C) 程序中的main函数 D) 包含文件中的第一个函数、C、1

6、C语言提供的合法的数据类型关键字是 A)double B) short C) integer D) char、B、1

7、C语言中,运算对象必须是整型数的运算符是 A) % B) \ C) %和\ D) * *、A、1

8、C语言中函数返回值的类型是由( )决定。 A) return语句中的表达式类型 B) 调用函数的主调函数类型 C) 调用函数时临时 D) 定义函数时所指定的函数类型、D、1

9、C语言中数组名作为参数传递给函数,作为实在参数的数组名被处理为_____。 A、 该数组的长度。 B、该数组的元素个数。 C、 该数组中各元素的值。 D、 该数组的首地址。、D、1

10、C语言中数组下标的下限是________。 A、1 B、0 C、视具体情况 D、无固定下限、B、1

11、C语言中提供的合法关键字是____ A、swith B、cher C、case D、default、D、1

12、C语言中文件的存取方式是________。 A、顺序存取 B、随机存取 C、顺序存取、随机存取均可 D、顺序存取、随机存取均不可、C、1

13、C语言中最简单的数据类型包括 A) 整型、实型、逻辑型 B) 整型、实型、字符型 C) 整型、字符型、逻辑型 D) 整型、实型、逻辑型、字符型、B、1

14、sizeof(float)是( ) A) 一种函数调用 B) 一个不合法的表示形式 C) 一个整型表达式 D) 一个浮点表达式、C、1

15、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是 A) input x,y,z; B) scanf("%d%d%d",x,y,z); C) scanf("%d%d%d",x,y,z); D) read("%d%d%d",x,y,z);、B、1

16、表达式:10!=9的值是 A) true B) 非零值 C) 0 D) 1、D、1

17、表示关系x=y=z的c语言表达式为 A) (X=Y)(Y=Z) B) (X=Y)AND(Y=Z) C) (X=Y=Z) D) (X=Y)(Y=Z)、A、1

18、程序片段:在TC20中, int i=65536; printf("%d\n",i);的输出结果是____ A) 65536 B) 0 C) 有语法错误,无输出结果 D) -1、B、1

19、当调用函数时,实参是一个数组名,则向函数传送的是____ A) 数组的长度 B) 数组的首地址 C) 数组每一个元素的地址 D) 数组每个元素中的值、B、1

20、对嵌套子程序调用说法正确的是____。 A、 外层子程序可以调用所有的内层子程序 B、 内层了程序只可以调用包含本身的外层子程序,不可以隔层调用 C、 外分程序必须能完全套住内分程序 D、 以上说法均不正确、C、1

21、对于基类型相同的两个指针变量之间,不能进行的运算是 A) B) = C) + D) -、C、1

22、合法的C语言中,合法的长整型常数是 A) '\t' B) "A" C) 65 D) A、A、1

23、假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是 A) 3 B) 6 C) 10 D) 20、D、1

24、假定有以下变量定义: int k=7 ,x=12; 则能使值为3的表达式是 A x%=(k%=5) B x%=(k-k%5) C x%=k-k%5 D (x%=k)-(k%=5)、D、1

25、请读程序片段(字符串内没有空格): printf("%d\n",strlen("ATS\n012\1\\"));的输出结果是 A) 11 B) 10 C) 9 D) 8 、C、1

26、请选出合法的C语言赋值语句 A) a=b=58 B) i++; C) a=58,b=58 D) k=int(a+b);、B、1

27、若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是 A) -3 B) 9 C) -12 D) 6、C、1

28、若int类型占两个字节,则以下语句输出为________。 int k=-1; printf("%d,u%\n",k,k); A、-1,-1 B、-1,65536 C、-1,32768 D、-1,65535、D、1

29、若变量a是int类型,并执行了语句:a=‘A'+1、6;,则正确的叙述是 A) a的值是字符C B) a的值是浮点型 C) 不允许字符型和浮点型相加 D) a的值是字符‘A’的ASCII值加上1。、D、1

30、若变量已正确说明为float类型,要通过语句scanf("%f %f %f ",a,b,c);给a赋于10、0,b赋予22、0,c赋予33、0,不正确的输入形式是: A) 10 B) 10、0,22、0,33、0 22 33 C) 10、0 D) 10 22 22、0 33、0 33、B、1

31、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为 A) a0 B) !a C) a=0 D) a、B、1

32、若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是 A)1 B)2 C)2、0 D)2、5、C、1

33、若有定义:int a=8,b=5,c;,执行语句c=a/b+0、4;后,c的值为 A) 1、4 B) 1 C) 2、0 D) 2、B、1

34、若有定义:int x,y;char a,b,c;并有以下输入数据(此处 CR 代表换行符,/u代表空格): 1u2 AuBuC 则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C 的正确程序段是 A) scanf("x=%d y+%d",x,y);a=getchar();b=getchar();c=getchar(); B) scanf("%d %d",x,y);a=getchar();b=getchar();c=getchar(); C) scanf("%d%d%c%c%c,x,y,a,b,c); D) scanf("%d%d%c%c%c%c%c%c:x,y,a,a,b,b,c,c);、D、1

35、若有定义和语句: char s[10]:s="abcd";printf("%s\n",s); 则结果是(以下u代表空格) A) 输出abcd B) 输出a C) 输出abcduuuuu D) 编译不通过、D、1

36、若有以下程序段, int c1=1,c2=2,c3; c3=1、0/c2*c1; 则执行后,c3中的值是 A) 0 B) 0、5 C) 1 D) 2、A、1

37、若有以下定义: char a; int b; float c; double d; 则表达式a*b+d-c值的类型为 A) float B) int C) char D) double、D、1

38、若有以下定义和语句 char c1='b',c2='e'; printf("%d,%c\n",c2-c1,c2-'a'+"A"); 则输出结果是: A)2,M B)3,E C)2,E D)输出项与对应的格式控制不一致,输出结果不确定、B、1

39、若有以下函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函数调用语句中实参的个数是 A)3 B)4 C)5 D)6、A、1

40、若执行下面的程序时从键盘上输入3和4,则输出是____ A) 14 B) 16 C) 18 D) 20 main( ) { int a,b,s; scanf("%d %d",a,b); s=a; if(a、B、1

41、若执行下面的程序时从键盘上输入5,则输出是 A) 7 B) 6 C) 5 D) 4 main() { int x; scanf("%d",x); if(x++5) printf("%d\n",x); else printf("%d\n",x--);}、B、1

42、若执行以下程序时从键盘上输入9,则输出结果是 A) 11 B) 10 C) 9 D) 8 main( ) { int n; scanf("%d",n); if(n++、B、1

43、设 a、b、c、d、m、n均为 int型变量,且 a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式 (m=ab)(n=cd)运算后,n的值为____ A) 0 B) 1 C) 2 D) 3、C、1

44、设 int a=12,则执行完语句 a+=a-=a*a后,a的值是 A) 552 B) 264 C) 144 D) -264、D、1

45、设 int b=2;表达式(b2)/(b1)的值是 A) 0 B) 2 C) 4 D) 8、A、1

46、设a,b和c都是int型变量,且a=3,b=4,c=5,则下列表达式中,值为0的表达式是________ A)'a''b' B)a=b C)a||b+cb-c D)!((aB)!C||1)、D、1 p

47、设x、y、z和k都是int型变量,则执行表达式:x=(y=4,z=16,k=32)后,x的值为 A 4 B 16 C 32 D 52、C、1

48、设x=3,y=-4,z=6,写出表达式的结果。 !(xy)+(y!=z)||(x+y)(y-z) A、0 B、1 C、-1 D、6、B、1

49、设x和y均为int 型变量,则以下语句:x+=y;y=x-y;y=x-y;x-=y;的功能是 A、把x 和y按从大到小排列 B、把x和y按从小到大排列 C、无确定结果 D、交换x和y中的值、D、1

50、设有 int x=11; 则表达式 (x++ * 1/3) 的值是 A) 3 B) 4 C) 11 D) 12、A、1

51、设有如下的变量定义: int i =8,k ,a,b ; unsigned long w=5; double x=1,42,y=5、2; 则以下符合C语言语法的表达式是 A、 a+=a-=(b=4)*(a=3) B、 x%(-3); C、 a=a*3=2 D、 y=float(i)、A、1

52、设有如下定义: char *aa[2]={"abcd","ABCD"}; 则以下就法中正确的是 A) aa数组成元素的值分别是"abcd"和ABCD" B) aa是指针变量,它指向含有两个数组元素的字符型一维数组 C) aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址 D) aa数组的两个元素中各自存放了字符'a'和'A'的地址、D、1

53、设有如下定义: int x=10,y=3,z; 则语句 printf("%d\n",z=(x%y,x/y)); 的输出结果是 A) 1 B) 0 C) 4 D) 3、D、1

54、设有数组定义: char array [ ]="China"; 则数组 array所占的空间为 A) 4个字节 B) 5个字节 C) 6个字节 D) 7个字节、C、1

55、设有说明语句:char a='\72';则变量a A) 包含1个字符 B) 包含2个字符 C) 包含3个字符 D) 说明不合法、A、1

56、设有以下语句:int x=03,y=02,z=01;那么语句printf("%d",x|y~Z)的执行结果( )。 (A) 1 (B) 2 (C) 3 (D) 0、C、1

57、下列if语句中,不正确的是________。 A、if(xy); B、if(x==y) x+=y; C、if(x!=y) scanf("%d",x) else x=1; D、if(x、C、1

58、下列变量定义中合法的是 A) short _a=1-、le-1; B) double b=1+5e2、5; C) long do=0xfdaL; D) float 2_and=1-e-3;、A、1

59、下列标识符中不合法的是_______ A、s_name B、_e C、fox D、3DS、D、1

60、下列不正确的转义字符是 A) '\\' B) '\" C) '074' D) '\0'、C、1

61、请读程序: main() { int a=1,b=2; printf("%d\n",a=a+1,a+6,b+2);} 则上面程序的输出结果是____ A、2 B、3 C、4 D、1、A、1

62、请读程序: int i=0,j=0,a=6; if((++i0)||(++j0))a++; printf("i=%d,j=%d,a=d%\n",i,j,a); 则上面程序的输出结果是____ A、i=0,j=0,a=6 B、i=1,j=0,a=7 C、i=1,j=1,a=6 D、i=1,j=1,a=7、B、1

63、下列程序段的输出结果为________? int y=1; while(y--); printf("y=%d\n",y); A、y=-1B、y=0C、死循环D、y=9 、A、1

64、下列程序执行后的输出结果是 A) 3 B) 6 C) 9 D) 随机数 main() { int a[3][3], *p,i; p=a[0][0]; for(i=p; i、B、1

65、下列程序执行后的输出结果是 A) G B) H C) i D) J main() { int x='f'; printf("%c \n",'A'+(x-'a'+1)); }、A、1

66、下列程序执行后的输出结果是(小数点后只写一位) A) 6 6 6、0 6、0 B) 6 6 6、7 6、7 C) 6 6 6、0 6、7 D) 6 6 6、7 6、0 main() { double d; float f; ling l; int i; i=f=1=d=20/3; printf("%d %ld %f %f \n", i,l,f,d); }、A、1

67、下列可作为C语言赋值语句的是 A)x=3,y=5 B)a=b=6 C)i--; D)y=int(x);、C、1

68、下列描述中不正确的是 A) 字符型数组中可以存放字符串 B) 可以对字符型数组进行整体输入、输出 C) 可以对整型数组进行整体输入、输出 D) 不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值、C、1

69、下列说法中正确的是________。 A、在switch语句中一定要使用break语句 B、在switch语句中不一定要使用break语句 C、break语句是switch语句的一部分 D、break只能用于switch语句中、B、1

70、下列运算符其优先级最高的是________。 A、|| B、 C、+ D、=、C、1

71、下面的DO循环中,一共循环( )次。 M=5 N=1 DO WHiLE N=M N=N+1 ENDDO (A) 1 (B) 6 (C) 4 (D) 5、D、1

72、请读程序: #include main() { int a=1,b=4,c=2; float x=5、5,y=9、0,z; z=(a+b)/c+sqrt((double)y)*1、2/c+x; printf("%f\n",z); } 则上面程序的输出结果是____ A、数据溢出B、9、3C、9、300000D、0、93、C、1

73、请读程序: int a,b,c; a=(b=(c=10)+5)-5; printf("a,b,c=d%,d%,d%",a,b,c); c=a=0; b=(a+10); printf("a,b,c=%d,d%,d%",a,b,c); 则上面程序的输出结果是____ A、a,b,c=0,10,10 a,b,c=10,15,10 B、a,b,c=10,15,10 a,b,c=10,15,10 C、a,b,c=10,15,10 a,b,c=0,10,0 D、a,b,c=10,15,10 a,b,c=10,15,15、C、1

74、写出下列语句执行后a,b的值。 int a=6,b; b=(++b)+(a++); A、a=8,b=14 B、a=7,b=8 C、a=14,b=14 D、a=8,b=8、A、1

75、请读程序: m=1234、123; printf=("%-8、3f\n",m); printf=("%10、3f\n",m); 则上面程序的输出结果是____ A、1234、12300 1234、123 B、1234、123 1234、123 C、1234、123 1234、12300 D、1234、12300 1234、123、B、1

76、一个C语言的语句至少应包一个________ A、{} B、逗号 C、分号 D、什么不要、C、1

77、一个完整的C源程序是________。 A、要由一个主函数(或)一个以上的非主函数构成 B、由一个且仅由一个主函数和零个以上(含零)的非主函数构成 C、要由一个主函数和一个以上的非主函数构成 D、由一个且只有一个主函数或多个非主函数构成、B、1

78、已知整型变量a=13和b=6,则ab的值是________,a^b的值是________ A、4 13 B、4 11 C、1 11 D、4 13、B、1

79、以下for语句构成的循环执行了( )次。 # include #define N i #define M N+1 # define NUM (M+1)*M/2 main( ) {int i,n=0; for (i=1;i=num;i++) {n++; printf("%d",n); } } (A) 5 (B) 6 (C) 8 (D) 9、C、1

80、以下程序的输出结果是____ # include main( ) { printf("%d\n",NULL); } (A) 不确定的 (B) 0 (C) -1 (D) 1、B、1

81、在调用函数时,以下描述中正确的是________。 A、调用函数时,实参可以是表达式 B、调用函数时,将为形参分配内存单元 C、调用函数时,实参与形参的原型必须一致 D、调用函数时,实参与形参可以用内存单元、D、1

82、有以下程序段 int k=0 while(k=1)k++; while 循环执行的次数是 A) 无限次 B) 有语法错,不能执行 C) 一次也不执行 D) 执行1次、A、1

83、有以下函数 char fun(char *p) { return p; } 该函数的返回值是 A) 无确切的值 B) 形参p中存放的地址值 B) 一个临时存储单元的地址 D) 形参p自身的地址值、B、1

84、语句printf("%d\n",12012);的输出结果是____ A) 12 B) 8 C) 6 D) 012、B、1

85、语句:printf("%d",(a=2)(b= -2);的输出结果是____ A) 无输出 B) 结果不确定 C) -1 D) 1、D、1

86、运算完下面的C语言程序段以后,a的值是______,b的值是______,c的值是________。 int x=10,y=9; int a,b,c; a=(--x==y++)?--x:++y; b=x++; c=y; A、6 9 13 B、8 7 11 C、8 9 10 D、8 7 10、C、1

87、在C语言程序中,注释部分从哪开始,到哪结束? A、从(到)结束 B、从REM开始无结束志标志 C、无起始标志 D、从/*开始,*/结束、D、1

88、在C语言提供的合法的关键字是 A) swicth B) cher C) Case D) default、D、1

89、在C语言中,不正确的int类型的常数是____ A) 32768 B) 0 C) 037 D) 0xAF、A、1

90、在C语言程序中,当while语句构成的循环中的条件为______时,结束循环。 A、0 B、1 C、true D、非0、A、1

91、在C语言中,函数的隐含存储类别是 A) auto B) static C) extern D) 无存储类别、C、1

92、在C语言中,合法的长整型常数是 A) OL B) 4962710 C) 324562 D) 216D、A、1

93、在C语言中,合法的字符常量是 A) '\084' B) '\x43' C) 'ab' D) "\0"、B、1

94、在C语言中,若对函数类型未加明显式说明,则函数的隐含类型是____类型 A) void B) double C) int D) char、C、1

95、在C语言中,形参的缺省存储类是 A) auto B) register C) static D) extern、A、1

96、在C语言中,要求运算数必须是整型的运算符是 A) % B) / C) D) !、A、1

97、在宏定义 #define PI 3、14159中,用宏名PI代替一个 A) 单精度数 B) 双精度数 C) 常量 D) 字符串、D、1

98、在C语言程序中,可以用做变量名的是____ A) 1e5 B) a1 C) int D) *p、B、1

99、在以下一组运算符中,优先级最高的运算符是 A)= B)= C)% D)、C、1

100、字符(char)型数据在微机内存中的存储形式是____ A) 反码 B) 补码 C) EBCDIC码 D) ASCII码、D、1

101、执行语句: for (i=1;i++、C、2

102、指出下面正确的输入语句是( ) A:scanf("a=b=%d",a,b) B:scanf("a=%d,b=%f",a,b) C:scanf("%3c",c) D:scanf("%5、2f",a)、B、2

103、执行下面的程序后,a的值为 main() { int a,b; for (a=1,b=1;a=100;a++) { if(b=20) break; if(b%3==1) {b+=3; continue; } b-=5; } } A) 7 B) 8 C) 9 D) 10、B、2

104、在执行以下程序时,如果从键盘上输入:ABCdef〈回车〉,则输出为 A)ABCdef B)abcdef C)abc D)DEF # include main() { chsr ch; while((ch=getchar())!='\n') { if(ch='A' ch='Z')ch=ch+32; 、C、2

105、整型变量x和y的值相等、且为非0值,则以下选项中,结果为零的表达式是 A) x || y B) x | y C) x y D) x ^ y、D、2

106、在以下定义中,正确的说明语句为____ A) int a['a'] B)int a[3,4] C)int a[ ][ ] D)int *a[10]、D、2

107、执行下列程序时输入:123456789,输出结果是 A) 123,456,789 B) 1,456,789 C) 1,23,456,789 D) 1,23,456 main() { char s[100]; int c, i; scanf("%c",c); scanf("%d",i); scanf("%s",s); printf("%c,%d,%s \n",c,i,s); }、D、2

108、执行下面程序片段的结果是 int x=23; do { printf("%2d",x--);} while(!x); A) 打印出321 B) 打印出23 C) 不打印任何内容 D) 陷入死循环、B、2

109、在说明语句:int *f();中,标识符f代表的是____ A) 一个用于指向整型数据的指针变量 B) 一个用于指向一维数组的行指针 C) 一个用于指向函数的指针变量 D) 一个返回值为指针型的函数名、D、2

110、在下列选项中,不正确的赋值语句是____ A) ++t; B) n1=(n2=(n3=0)); C) k=i==j; D) a=b+c=1;、D、2

111、在C语言中,若需一变量只在本文件中所有函数使用,则该变量的存储类别是________ A、extern B、register C、auto D、static、D、2

112、在C语言程序中,当do-while语句构成的循环中的条件为______时,结束循环。 A、0 B、1 C、true D、非0、A、2

113、在16位C编译系统上,若定义long a; ,则能给a赋40000的正确语句是 A) a=20000+20000; B) a=4000*10; C) a=30000+10000; D) a=4000L*10L;、D、2

114、阅读以下程序: main() { int x; scanf("%d",x); if(x--、B、2

115、运行以下程序后,如果从键盘上输入china#,则输出结果为 A、2,0 B、5,0 C、5,5 D、2,5 #include main( ) { int v1=0,v2=0; char ch ; while ((ch=getchar())!='#') switch (ch ) { case 'a': case 'h': default: v1++; case '0':v2++; } printf("%d,%d\n",v1,v2);、C、2

116、请读程序: main() { int a=1,b=2,c=3; ++a; c+=++b; { int b=4,c; c=b*3; a+=c; printf("first:%d,%d,%d\n",a,b,c); a+=c; printf("Second:%d,%d,%d\n",a,b,c); } printf("third:%d,%d,%d\n",a,b,c); } 该程序的输出是________。 A、first: 12,4,12 Second: 26,4,12 third: 4,3,6B、first: 14,4,12 Second: 26,12,12 third: 26,3,4C、first: 14,4,12 Second: 26,4,12 third: 26,3,6 D、first: 14,4,12 Second: 26,6,12 third: 26,4,6、C、2

117、阅读程序: #include main() { int a[10]={1,2,3,4,5,6,7,8,9,0},*p; p=a; printf("%x\n",p); printf("%x\n",p+9); } 该程序有两个printf 语句, 如果第一个printf 语句输出的是194, 则第二个printf语句的输出结果是 A) 203 B) 204 C) 1a4 D) 1a6、D、2

118、与 y=(x0?1:x0) y=1; B) if(x) else if(x0)y=1; else y=0; else if(x=0) if(x0)y=1; if(x0)y=1; else if(x==0)y=0; else y=-1; else y=-1;、A、2

119、以下合法的赋值语句是 A) x=y=100 B) d--; C) x+y; D) c=int(a+b);、B、2

120、以下函数返回a所指数组中最小的值所在的下标值 fun(int *a, int n) { int i,j=0,p; p=j; for(i=j;i、D、2

121、以下函数值的类型是 fun ( float x ) { float y; y= 3*x-4; return y; } A) int B) 不确定 C) void D) float、A、2

122、以下说法中正确的是 A) C语言程序总是从第一个的函数开始执行 B) 在C语言程序中,要调用的函数必须在main()函数中定义 C) C语言程序总是从main()函数开始执行 D) C语言程序中的main()函数必须放在程序的开始部分、C、2

123、以下所列的各函数首部中,正确的是 A) void play(var a:integer,var b:integer) B) void play(int a,b) C) void play(int a,int b) D) sub play(a as integer,b as integer)、C、2

124、以下叙述正确的是 A)输入项可以是一个实型常量,如: scanf("%f"、3、5); B)只有格式控制,没有输入项,也能正确输入数据到内存,例如: scanf("a=%d,b=%d); C)当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如: scanf("%4、2f",f); D)当输入数据时,必须指明变量地址,例如: scanf("%f、f); 、C、2

125、以下叙述正确的是 A) do-while语句构成的循环不能用其它语句构成的循环来代替。 B) do-while语句构成的循环只能用break语句退出。 C) 用do-while语句构成的循环,在while后的表达式为非零时结束循环。 D) 用do-while语句构成的循环,在while后的表达式为零时结束循环。、D、2

126、以下叙述中不正确的是 A) 在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值。 B) 在C中,在调用函数时,实在参数和对应形参在类型上只需赋值兼容。 C) 在C中,外部变量的隐含类别是自动存储类别。 D) 在C中,函数形参可以说明为register变量。、C、2

127、以下叙述中不正确的是____ A) 在不同的函数中可以使用相同名字的变量 B) 函数中的形式参数是局部变量 C) 在一个函数内定义的变量只在本函数范围内有效 D) 在一个函数内的复合语句中定义的变量在本函数范围内有效、D、2

128、以下程序运行后,输出结果是 A)1000 B)10010 C)00110 D)10100 main () { int y=18,i=0,j,a[8]; do { a[i]=y%2;i++; y=y/2; } while(y=1); for(j=i-10;j--)printf(%d",a[j]); printf("h\n"); }、B、2

129、以下程序运行后,如果从键盘上输入: book book 则输出结果是 A)*8 B)#9 C)#6 D)*9 #include main() {char a1[80],a2[80],*s1=a1,*s2=a2; gets(s1); gets(s2); if(!strcmp(s1,s2)) printf(“*”); else printf(“#”); printf(“%d\n”,strlen(strcat(s1,s2))) }、B、2

130、以下程序运行后,输出结果是 A)6385 B)22 C)33 D)693825 main() { char ch[2][5]={"693","825"},*p[2]; int i,j,s=0; for (i=0;i='0' p[i][j]='9';j+=2) s=10*s+p[i][j]-'0'; printf("%d\n",s); }、A、2

131、以下程序运行后,输出结果是 A)84 B)99 C)95 D)44 int d=1; fun (int p) { int d=5; d+=p++; printf("%d",d); } main() { int a=3; fun(a); d+=a++; printf("%d\n",d); }、A、2

132、以下程序执行后a的值是 A)4 B)1 C)0 D)运行时出错,a无定值 main() { int a,k=4,m=6,*p1=k,*p2=m; a=p1==m; printf("%d\n",a); } 、C、2

133、以下程序执行后sum的值是 A)15 B)14 C) 不确定 D)0 min() { int i , sum; for(i=1;i、C、2

134、以下程序中,while循环的循环次数是 main() { int i=0; while(i、D、2

135、以下定义语句中,错误的是 A) int a[]={1,2}; B) char *a[3]; C) char s[10]="test"; D) int n=5,a[n];、D、2

136、以下对C语言函数的有关描述中,正确的是 A) 在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 B) C函数既可以嵌套定义又可以递归调用 C) 函数必须有返回值,否则不能使用函数 D) C程序中有调用关系的所有函数必须放在同一个源程序文件中、A、2

C语言编程题

要输入的分数太多,我懒得手数,用2位随机数代替手输入,输入函数我单独写了,你需要调用就行了,详细看备注。

#includestdio.h

#includestdlib.h

#includetime.h

#define stuNum 15//学生人数

#define scNum 7//模块数

typedef struct stu//定义学生数据结构

{

    int sid;//学生ID

    int sc[scNum];//对应7个模块成绩

    int sum;//总成绩

}STU;

void insertSTU(STU *stu);//输入15个学生的信息

void insertTest(STU *stu);//测试,用随机数代替输入,我懒得输入那么多成绩,你要手输,调用insertSTU替换该函数

void printfSTU(STU *stu);//按输入顺序打印15名学生7模块成绩  及  每个模块前三名的成绩

int main()

{

    STU stu[stuNum];//定义15个学生

   // int i,j,sc;

   srand(time(NULL));

    insertTest(stu);//想手动输入这里改成insertSTU(stu)

    printfSTU(stu);

    return 0;

}

void printfSTU(STU *stu)//按输入顺序打印15名学生7模块成绩  及  每个模块前三名信息 及 总分前三名信息

{

    int i,j,k,sc;

    STU *max[3],*sum[3],newstu;//max对应7个模块前3的学生结构指针 sum对应总分前3学生结构指针

    for(i=0;istuNum;i++)

    {

        printf("编号%02d的学生7模块成绩及总分分别为:",stu[i].sid);

        for(j=0;jscNum;j++)

        {

            sc=stu[i].sc[j];

            printf("%02d ",sc);

        }

        printf("%d\n",stu[i].sum);

    }

    for(j=0;jscNum;j++)

    {

        for(k=0;kscNum;k++)

        {

            newstu.sc[k]=0;

            newstu.sum=0;

        }

        max[0]=max[1]=max[2]=newstu;

        for(i=0;istuNum;i++)

        {

            if(stu[i].sc[j]max[0]-sc[j])

                max[0]=(stu[i]);

            else if(stu[i].sc[j]max[1]-sc[j])

                max[1]=(stu[i]);

            else if(stu[i].sc[j]max[2]-sc[j])

                max[2]=(stu[i]);

        }

        printf("模块%02d前3名分别为:编号:%02d分数:%02d  编号:%02d分数:%02d  编号:%02d分数:%02d   \n",j+1,max[0]-sid,max[0]-sc[j],max[1]-sid,max[1]-sc[j],max[2]-sid,max[2]-sc[j]);

    }

    sum[0]=sum[1]=sum[2]=newstu;

    for(i=0;istuNum;i++)

    {

        if(stu[i].sumsum[0]-sum)

            sum[0]=(stu[i]);

        else if(stu[i].sumsum[1]-sum)

            sum[1]=(stu[i]);

        else if(stu[i].sumsum[2]-sum)

            sum[2]=(stu[i]);

    }

    printf("总分前3名分别为:编号:%02d总分:%02d  编号:%02d总分:%02d  编号:%02d总分:%02d   \n",sum[0]-sid,sum[0]-sum,sum[1]-sid,sum[1]-sum,sum[2]-sid,sum[2]-sum);

}

void insertSTU(STU *stu)//输入15个学生的信息

{

    int i,j,sc;

    for(i=0;istuNum;i++)

    {

        stu[i].sid=i+1;

        stu[i].sum=0;

        printf("输入编号%d的学生的7个模块成绩:",i+1);

        for(j=0;jscNum;j++)

        {

            //scanf("%d",sc);// 我懒得输入那么多成绩,就用随机数代替,你要输入把这句恢复

            sc=(int)(rand()%100);//用随即2位数代替输入,不需要就注释掉

            stu[i].sc[j]=sc;

            stu[i].sum=stu[i].sum+sc;

        }

    }

}

void insertTest(STU *stu)//测试用代替输入

{

    int i,j,sc;

    for(i=0;istuNum;i++)

    {

        stu[i].sid=i+1;

        stu[i].sum=0;

        for(j=0;jscNum;j++)

        {

            sc=(int)(rand()%100);

            stu[i].sc[j]=sc;

            stu[i].sum=stu[i].sum+sc;

        }

    }

}

C语言经典题目

1.正确的算法:

如果n=3, 过河时间为A+B+C

如果n=2, 好算, 不费口舌了

如果n=4, 这个是重点:

每次优先考虑把最慢两人送过河

把n人中最快两人记为A,B, 最慢两人记为C,D(过河时间ABCD), n人问题实质上转换为4人过河问题, 参考到4人过河时的优化,

记AB过河, A回, CD过河, B回, 为方法X, 实质是利用最快两人进行优化, 耗时A+2B+D

记AD过河, A回, AC过河, A回, 为方法y, 实质是利用最快一人来过河, 耗时2A+C+D

每次比较这两个方法, 如果x快, 使用x方法, 如果y快, 则用y, 并且, 一旦某次使用y方法后, 以后都不用比较了, 全部使用y方法过河

2.算法正确性证明:

为什么每次先让最慢两人过河? 因为他们迟早要过河...早过晚过一样, 而晚过的话, 有可能时间不能被优化, 所以选择最先过

为什么是两人, 不是三人? 因为这船一次只能两人, 三人问题和两人问题的优化一样, 所以一次考虑三人毫无意义, 同理, 三人以上不加考虑

为什么某次用y过河后不用再比较xy了?

先看这个例子:

1 99 100 101

用x方法是99+1+101+99= 300

y方法是 101+1+100+1 = 203

y比x快的原因是2A+C+D A+2B+D, 即 A+C2B

容易想到, 从此以后A+C都会小于2B了(因为C越来越小)

3.补充:

算法分析就到这里了, 至于具体的程序...楼主既然是ACMer, 这个应该不困难

当然, 如果楼主需要的话, 也可以给出程序

10道经典的C语言例题(含参考程序)

1.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如,153是一个“水仙花数”,因为153=1^3+5^3+3^3。

#include

#include

int main()

{

int bai_wei,shi_wei,ge_wei,i,sum=0;

for(i=100;i1000;i++)

{

bai_wei=i/100;

shi_wei=(i%100)/10;

ge_wei=i%10;

if(i==pow(bai_wei,3)+pow(shi_wei,3)+pow(ge_wei,3))

{

printf("%d ",i);

sum++;

if(sum%5==0)

printf(" ");

}

}

printf(" ");

return 0;

}

2.请输入任意两个整数x和y,求其最大公约数和最小公倍数。

#include

int main()

{

int x,y,min,max,i;

printf("请输入任意两个整数:");

scanf("%d%d",x,y);

min=xy?y:x;

max=xy?x:y;

for(i=min;i0;i--)

if(x%i==0y%i==0)

{

printf("这两个整数的最大公约数为:%d ",i);

break;

}

for(i=max;i=x*y;i++)

if(i%x==0i%y==0)

{

printf("这两个整数的最小公倍数为:%d ",i);

break;

}

return 0;

}

3.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

#include

#include

#define N 50

int main()

{

int sum1=0,sum2=0,sum3=0,sum4,i=0;

char str[N];

printf("请输入一串字符串:");

scanf("%s",str);

for(i=0;istrlen(str);i++) p="" /strlen(str);i++)

{

if((str[i]='a'str[i]='A'str[i]='Z'))

sum1++;

if(str[i]==' ')

sum2++;

if(str[i]='0'str[i]='9')

sum3++;

}

sum4=strlen(str)-sum1-sum2-sum3;

printf("英文字母的个数:%d ",sum1);

printf("空格的个数:%d ",sum2);

printf("数字的个数:%d ",sum3);

printf("其他符号的个数:%d ",sum4);

return 0;

}

4.求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

#include

#include

int main()

{

int a,n,s=0,i,x=0,y=0;

printf("请输入整数a的值:");

scanf("%d",a);

printf("请输入相加的个数n:");

scanf("%d",n);

for(i=0;in;i++) p="" /n;i++)

{

x=y+2*pow(10,i);

y=x;

s=s+x;

}

printf("s=%d ",s);

return 0;

}

5.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3。编程找出1000以内的所有完数。

#include

int main()

{

int sum=0,i,j;

printf("在1000以内的完数有:");

for(i=2;i=1000;i++)

{

for(j=1;ji;j++) p="" /i;j++)

if(i%j==0)

sum=sum+j;

if(sum==i)

printf("%d ",i);

sum=0;

}

printf(" ");

return 0;

}

6.输入一个不多于5位的正整数,要求:1、求它是几位数;2、逆序打印出个位数字。

#include

int pows(int a,int n)

{

int sum=1,i;

for(i=0;in;i++) p="" /n;i++)

sum=sum*a;

return sum;

}

int main()

{

int n,i,k,x;

printf("n=");

scanf("%d",n);

for(i=1;i6;i++)

if(n/pows(10,i)==0)

{

printf("%d ",i);

k=i;

break;

}

for(i=0;ik;i++) p="" /k;i++)

{

x=n/pows(10,i)%10;

printf("%d",x);

}

printf(" ");

return 0;

}

7.输入一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

#include

int main()

{

int n,a[5],i=0;

printf("请输入一个5位数:");

scanf("%d",n);

while(n!=0)

{

a[i]=n%10;

n=n/10;

i++;

}

if(a[0]==a[4]a[1]==a[3])

printf("这个数是回文数 ");

else

printf("这个数不是回文数 ");

return 0;

}

8.利用递归算法,将所输入的5个字符,以相反顺序打印出来。

#include

void digui(char a[],int n)

{

if(n==1)

printf("%c",a[0]);

else

{

printf("%c",a[n-1]);

digui(a,n-1);

}

}

int main()

{

char str[5];

printf("请输入5个字符:");

scanf("%s",str);

digui(str,5);

printf(" ");

return 0;

}

9.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…球出这个序列的前20项之和。

#include

int main()

{

int i,a=1,b=1;

float sum=0.0;

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

{

sum=sum+(float)(a+i)/b;

b=a+i;

a=i;

}

printf("sum=%f ",sum);

return 0;

}

10.利用递归算法求5!。

#include

int digui(int n)

{

if(n==1)

return 1;

else

return n*digui(n-1);

}

int main()

{

int n,sum;

printf("n:");

scanf("%d",n);

sum=digui(n);

printf("sum=%d ",sum);

return 0;

}

经典C语言编程30例(二)

【程序31】

题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续

判断第二个字母。

1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。

2.程序源代码:

#include

void main()

{

char letter;

printf("please input the first letter of someday\n");

while ((letter=getch())!='Y')/*当所按字母为Y时才结束*/

{ switch (letter)

{case 'S':printf("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':printf("friday\n");break;

case 'M':printf("monday\n");break;

case 'T':printf("please input second letter\n");

if((letter=getch())=='u')

printf("tuesday\n");

else if ((letter=getch())=='h')

printf("thursday\n");

else printf("data error\n");

break;

case 'W':printf("wednesday\n");break;

default: printf("data error\n");

}

}

}

==============================================================

【程序32】

题目:Press any key to change color, do you want to try it. Please hurry up!

1.程序分析:

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】

题目:学习gotoxy()与clrscr()函数

1.程序分析:

2.程序源代码:

#include

void main(void)

{

clrscr();/*清屏函数*/

textbackground(2);

gotoxy(1, 5);/*定位函数*/

cprintf("Output at row 5 column 1\n");

textbackground(3);

gotoxy(20, 10);

cprintf("Output at row 10 column 20\n");

}

==============================================================

【程序34】

题目:练习函数调用

1. 程序分析:

2.程序源代码:

#include

void hello_world(void)

{

printf("Hello, world!\n");

}

void three_hellos(void)

{

int counter;

for (counter = 1; counter = 3; counter++)

hello_world();/*调用此函数*/

}

void main(void)

{

three_hellos();/*调用此函数*/

}

==============================================================

【程序35】

题目:文本颜色设置

1.程序分析:

2.程序源代码:

#include

void main(void)

{

int color;

for (color = 1; color 16; color++)

{

textcolor(color);/*设置文本颜色*/

cprintf("This is color %d\r\n", color);

}

textcolor(128 + 15);

cprintf("This is blinking\r\n");

}

==============================================================

【程序36】

题目:求100之内的素数

1.程序分析:

2.程序源代码:

#include

#include "math.h"

#define N 101

main()

{

int i,j,line,a[N];

for(i=2;ifor(i=2;i for(j=i+1;j {

if(a[i]!=0a[j]!=0)

if(a[j]%a[i]==0)

a[j]=0;}

printf("\n");

for(i=2,line=0;i{

if(a[i]!=0)

{printf("]",a[i]);

line++;}

if(line==10)

{printf("\n");

line=0;}

}

}

==============================================================

【程序37】

题目:对10个数进行排序

1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,

下次类推,即用第二个元素与后8个进行比较,并进行交换。

2.程序源代码:

#define N 10

main()

{int i,j,min,tem,a[N];

/*input data*/

printf("please input ten num:\n");

for(i=0;i{

printf("a[%d]=",i);

scanf("%d",a[i]);}

printf("\n");

for(i=0;iprintf("]",a[i]);

printf("\n");

/*sort ten num*/

for(i=0;i{min=i;

for(j=i+1;jif(a[min]a[j]) min=j;

tem=a[i];

a[i]=a[min];

a[min]=tem;

}

/*output data*/

printf("After sorted \n");

for(i=0;iprintf("]",a[i]);

}

==============================================================

【程序38】

题目:求一个3*3矩阵对角线元素之和

1.程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。

2.程序源代码:

main()

{

float a[3][3],sum=0;

int i,j;

printf("please input rectangle element:\n");

for(i=0;i3;i++)

for(j=0;j3;j++)

scanf("%f",a[i][j]);

for(i=0;i3;i++)

sum=sum+a[i][i];

printf("duijiaoxian he is %6.2f",sum);

}

==============================================================

【程序39】

题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后

此元素之后的数,依次后移一个位置。

2.程序源代码:

main()

{

int a[11]={1,4,6,9,13,16,19,28,40,100};

int temp1,temp2,number,end,i,j;

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

for(i=0;i10;i++)

printf("]",a[i]);

printf("\n");

printf("insert a new number:");

scanf("%d",number);

end=a[9];

if(numberend)

a[10]=number;

else

{for(i=0;i10;i++)

{ if(a[i]number)

{temp1=a[i];

a[i]=number;

for(j=i+1;j11;j++)

{temp2=a[j];

a[j]=temp1;

temp1=temp2;

}

break;

}

}

}

for(i=0;i11;i++)

printf("m",a[i]);

}

==============================================================

【程序40】

题目:将一个数组逆序输出。

1.程序分析:用第一个与最后一个交换。

2.程序源代码:

#define N 5

main()

{ int a[N]={9,6,5,4,1},i,temp;

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

for(i=0;i printf("M",a[i]);

for(i=0;i {temp=a[i];

a[i]=a[N-i-1];

a[N-i-1]=temp;

}

printf("\n sorted array:\n");

for(i=0;i printf("M",a[i]);

}

【程序41】

题目:学习static定义静态变量的用法

1.程序分析:

2.程序源代码:

#include "stdio.h"

varfunc()

{

int var=0;

static int static_var=0;

printf("\40:var equal %d \n",var);

printf("\40:static var equal %d \n",static_var);

printf("\n");

var++;

static_var++;

}

void main()

{int i;

for(i=0;i3;i++)

varfunc();

}

==============================================================

【程序42】

题目:学习使用auto定义变量的用法

1.程序分析:

2.程序源代码:

#include "stdio.h"

main()

{int i,num;

num=2;

for (i=0;i3;i++)

{ printf("\40: The num equal %d \n",num);

num++;

{

auto int num=1;

printf("\40: The internal block num equal %d \n",num);

num++;

}

}

}

==============================================================

【程序43】

题目:学习使用static的另一用法。

1.程序分析:

2.程序源代码:

#include "stdio.h"

main()

{

int i,num;

num=2;

for(i=0;i3;i++)

{

printf("\40: The num equal %d \n",num);

num++;

{

static int num=1;

printf("\40:The internal block num equal %d\n",num);

num++;

}

}

}

==============================================================

【程序44】

题目:学习使用external的用法。

1.程序分析:

2.程序源代码:

#include "stdio.h"

int a,b,c;

void add()

{ int a;

a=3;

c=a+b;

}

void main()

{ a=b=4;

add();

printf("The value of c is equal to %d\n",c);

}

==============================================================

【程序45】

题目:学习使用register定义变量的方法。

1.程序分析:

2.程序源代码:

void main()

{

register int i;

int tmp=0;

for(i=1;i=100;i++)

tmp+=i;

printf("The sum is %d\n",tmp);

}

==============================================================

【程序46】

题目:宏#define命令练习(1)

1.程序分析:

2.程序源代码:

#include "stdio.h"

#define TRUE 1

#define FALSE 0

#define SQ(x) (x)*(x)

void main()

{

int num;

int again=1;

printf("\40: Program will stop if input value less than 50.\n");

while(again)

{

printf("\40:Please input number==");

scanf("%d",num);

printf("\40:The square for this number is %d \n",SQ(num));

if(num=50)

again=TRUE;

else

again=FALSE;

}

}

==============================================================

【程序47】

题目:宏#define命令练习(2)

1.程序分析:

2.程序源代码:

#include "stdio.h"

#define exchange(a,b) { \ /*宏定义中允许包含两道衣裳命令的情形,此时必须在最右边加上"\"*/

int t;\

t=a;\

a=b;\

b=t;\

}

void main(void)

{

int x=10;

int y=20;

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

exchange(x,y);

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

}

==============================================================

【程序48】

题目:宏#define命令练习(3)

1.程序分析:

2.程序源代码:

#define LAG

#define SMA

#define EQ ==

#include "stdio.h"

void main()

{ int i=10;

int j=20;

if(i LAG j)

printf("\40: %d larger than %d \n",i,j);

else if(i EQ j)

printf("\40: %d equal to %d \n",i,j);

else if(i SMA j)

printf("\40:%d smaller than %d \n",i,j);

else

printf("\40: No such value.\n");

}

==============================================================

【程序49】

题目:#if #ifdef和#ifndef的综合应用。

1. 程序分析:

2.程序源代码:

#include "stdio.h"

#define MAX

#define MAXIMUM(x,y) (xy)?x:y

#define MINIMUM(x,y) (xy)?y:x

void main()

{ int a=10,b=20;

#ifdef MAX

printf("\40: The larger one is %d\n",MAXIMUM(a,b));

#else

printf("\40: The lower one is %d\n",MINIMUM(a,b));

#endif

#ifndef MIN

printf("\40: The lower one is %d\n",MINIMUM(a,b));

#else

printf("\40: The larger one is %d\n",MAXIMUM(a,b));

#endif

#undef MAX

#ifdef MAX

printf("\40: The larger one is %d\n",MAXIMUM(a,b));

#else

printf("\40: The lower one is %d\n",MINIMUM(a,b));

#endif

#define MIN

#ifndef MIN

printf("\40: The lower one is %d\n",MINIMUM(a,b));

#else

printf("\40: The larger one is %d\n",MAXIMUM(a,b));

#endif

}

==============================================================

【程序50】

题目:#include 的应用练习

1.程序分析:

2.程序源代码:

test.h 文件如下:

#define LAG

#define SMA

#define EQ ==

#include "test.h" /*一个新文件50.c,包含test.h*/

#include "stdio.h"

void main()

{ int i=10;

int j=20;

if(i LAG j)

printf("\40: %d larger than %d \n",i,j);

else if(i EQ j)

printf("\40: %d equal to %d \n",i,j);

else if(i SMA j)

printf("\40:%d smaller than %d \n",i,j);

else

printf("\40: No such value.\n");

}

【程序51】

题目:学习使用按位与 。

1.程序分析:00=0; 01=0; 10=0; 11=1

2.程序源代码:

#include "stdio.h"

main()

{

int a,b;

a=077;

b=a3;

printf("\40: The a b(decimal) is %d \n",b);

b=7;

printf("\40: The a b(decimal) is %d \n",b);

}

==============================================================

【程序52】

题目:学习使用按位或 | 。

1.程序分析:0|0=0; 0|1=1; 1|0=1; 1|1=1

2.程序源代码:

#include "stdio.h"

main()

{

int a,b;

a=077;

b=a|3;

printf("\40: The a b(decimal) is %d \n",b);

b|=7;

printf("\40: The a b(decimal) is %d \n",b);

}

==============================================================

【程序53】

题目:学习使用按位异或 ^ 。

1.程序分析:0^0=0; 0^1=1; 1^0=1; 1^1=0

2.程序源代码:

#include "stdio.h"

main()

{

int a,b;

a=077;

b=a^3;

printf("\40: The a b(decimal) is %d \n",b);

b^=7;

printf("\40: The a b(decimal) is %d \n",b);

}

==============================================================

【程序54】

题目:取一个整数a从右端开始的4~7位。

程序分析:可以这样考虑:

(1)先使a右移4位。

(2)设置一个低4位全为1,其余全为0的数。可用~(~04)

(3)将上面二者进行运算。

2.程序源代码:

main()

{

unsigned a,b,c,d;

scanf("%o",a);

b=a4;

c=~(~04);

d=bc;

printf("%o\n%o\n",a,d);

}

==============================================================

【程序55】

题目:学习使用按位取反~。

1.程序分析:~0=1; ~1=0;

2.程序源代码:

#include "stdio.h"

main()

{

int a,b;

a=234;

b=~a;

printf("\40: The a's 1 complement(decimal) is %d \n",b);

a=~a;

printf("\40: The a's 1 complement(hexidecimal) is %x \n",a);

}

==============================================================

【程序56】

题目:画图,学用circle画圆形。

1.程序分析:

2.程序源代码:

/*circle*/

#include "graphics.h"

main()

{int driver,mode,i;

float j=1,k=1;

driver=VGA;mode=VGAHI;

initgraph(driver,mode,"");

setbkcolor(YELLOW);

for(i=0;i=25;i++)

{

setcolor(8);

circle(310,250,k);

k=k+j;

j=j+0.3;

}

}

==============================================================

【程序57】

题目:画图,学用line画直线。

1.程序分析:

2.程序源代码:

#include "graphics.h"

main()

{int driver,mode,i;

float x0,y0,y1,x1;

float j=12,k;

driver=VGA;mode=VGAHI;

initgraph(driver,mode,"");

setbkcolor(GREEN);

x0=263;y0=263;y1=275;x1=275;

for(i=0;i=18;i++)

{

setcolor(5);

line(x0,y0,x0,y1);

x0=x0-5;

y0=y0-5;

x1=x1+5;

y1=y1+5;

j=j+10;

}

x0=263;y1=275;y0=263;

for(i=0;i=20;i++)

{

setcolor(5);

line(x0,y0,x0,y1);

x0=x0+5;

y0=y0+5;

y1=y1-5;

}

}

==============================================================

【程序58】

题目:画图,学用rectangle画方形。

1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

2.程序源代码:

#include "graphics.h"

main()

{int x0,y0,y1,x1,driver,mode,i;

driver=VGA;mode=VGAHI;

initgraph(driver,mode,"");

setbkcolor(YELLOW);

x0=263;y0=263;y1=275;x1=275;

for(i=0;i=18;i++)

{

setcolor(1);

rectangle(x0,y0,x1,y1);

x0=x0-5;

y0=y0-5;

x1=x1+5;

y1=y1+5;

}

settextstyle(DEFAULT_FONT,HORIZ_DIR,2);

outtextxy(150,40,"How beautiful it is!");

line(130,60,480,60);

setcolor(2);

circle(269,269,137);

}

==============================================================

【程序59】

题目:画图,综合例子。

1.程序分析:

2.程序源代码:

# define PAI 3.1415926

# define B 0.809

# include "graphics.h"

#include "math.h"

main()

{

int i,j,k,x0,y0,x,y,driver,mode;

float a;

driver=CGA;mode=CGAC0;

initgraph(driver,mode,"");

setcolor(3);

setbkcolor(GREEN);

x0=150;y0=100;

circle(x0,y0,10);

circle(x0,y0,20);

circle(x0,y0,50);

for(i=0;i16;i++)

{

a=(2*PAI/16)*i;

x=ceil(x0+48*cos(a));

y=ceil(y0+48*sin(a)*B);

setcolor(2); line(x0,y0,x,y);}

setcolor(3);circle(x0,y0,60);

/* Make 0 time normal size letters */

settextstyle(DEFAULT_FONT,HORIZ_DIR,0);

outtextxy(10,170,"press a key");

getch();

setfillstyle(HATCH_FILL,YELLOW);

floodfill(202,100,WHITE);

getch();

for(k=0;k=500;k++)

{

setcolor(3);

for(i=0;i=16;i++)

{

a=(2*PAI/16)*i+(2*PAI/180)*k;

x=ceil(x0+48*cos(a));

y=ceil(y0+48+sin(a)*B);

setcolor(2); line(x0,y0,x,y);

}

for(j=1;j=50;j++)

{

a=(2*PAI/16)*i+(2*PAI/180)*k-1;

x=ceil(x0+48*cos(a));

y=ceil(y0+48*sin(a)*B);

line(x0,y0,x,y);

}

}

restorecrtmode();

}

==============================================================

【程序60】

题目:画图,综合例子。

1.程序分析:

2.程序源代码:

#include "graphics.h"

#define LEFT 0

#define TOP 0

#define RIGHT 639

#define BOTTOM 479

#define LINES 400

#define MAXCOLOR 15

main()

{

int driver,mode,error;

int x1,y1;

int x2,y2;

int dx1,dy1,dx2,dy2,i=1;

int count=0;

int color=0;

driver=VGA;

mode=VGAHI;

initgraph(driver,mode,"");

x1=x2=y1=y2=10;

dx1=dy1=2;

dx2=dy2=3;

while(!kbhit())

{

line(x1,y1,x2,y2);

x1+=dx1;y1+=dy1;

x2+=dx2;y2+dy2;

if(x1=LEFT||x1=RIGHT)

dx1=-dx1;

if(y1=TOP||y1=BOTTOM)

dy1=-dy1;

if(x2=LEFT||x2=RIGHT)

dx2=-dx2;

if(y2=TOP||y2=BOTTOM)

dy2=-dy2;

if(++countLINES)

{

setcolor(color);

color=(color=MAXCOLOR)?0:++color;

}

}

closegraph();

}