配色: 字号:
C语言程序设计试题及答案(十)
2016-06-08 | 阅:  转:  |  分享 
  
C语言程序设计试题及答案(十)

一、选择题:

1.以下不是C语言的特点的是(???)

A.C语言简洁、紧凑?????????????????B.能够编制出功能复杂的程序

C.C语言可以直接对硬件进行操作????D.C语言移植性好

2.以下不正确的C语言标识符是(???)。

A.ABC?????????B.abc????????C.a_bc?????????D.ab.c

3.一个c程序的执行是从(??).

A.main(???)函数开始,直到main(???)函数结束

B.第一个函数开始,直到最后一个函数结束

C.第一个语句开始,直到最后一个语句结束

D.main(???)函数开始,直到最后一个函数结束

4.以下不正确的语句(设有intp,q)是(???)。

A.P=3;?B.p/=q;??C.p十=3;?D.p&&=q

5.下列四组选项中,均不是C语言关键字的选项是(???).

A.define???B.getc?????C.include???D.while????

if??????????char????????sanf????????go

type??????????printf??????case????????pow

6.下面四个选项中,均是合法整形常量的选项是(??).

?A.160?????????????B.-0xcdf???????C.-01???????D.-0x48a

??-0xffff???????????01a??????????986,012????2e5

??????011?????????????0xe????????????0668????????0x

7.下面四个选项中,均是不合法浮点数的选项是(??).

?A.160.???????????B.123???????????C.-.18???????D.-e3

0.12?????????????2e4.2?????????????123e4?????0.234

??????e3????????????????.e5??????????????0.0??????????1e3

8.若有代数式3ae/bc,则不正确的C语言表达式是(?)

??A.a/b/ce3???????????????????????????????B.3ae/b/c

???????C.3ae/bc??????????????????????????????D.ae/c/b3

9.若以下变量均是整形,且num=sum=7;则计算表达式sUM=num++,sUM++,++num后sum的值为(?).

A.7?????????B.8????????C.9???????????????D.10

10.若有定义:inta=7;floatx=205,y=4.7;则表达式x+a%3(int)(x+y)%2/4的值是(?)。

?????A.2.500000?????????B.2.750000?????????C.3.500000?????????D.0.000000

11.sizeof(float)是(?)。

A.一个双精度型表达式??????????????B.一个整型表达式

??????C.一种函数调用???????????????????????D.一个不合法的表达式

12.设intn=3;则n十十的结果是(???)。

????A.2????????B.3??????C.4??????D.5

13.设有说明:charw;intx;floaty;doublez;则表达式wx+z-y值的数据类型为(??)。

?????A.float??????????????B.char??????????????C.int???????????????D.double.

14.若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是(?).

A.scanf(“%d%d1x,%1e”,&x,&y,&z);

B.scanf(“%2d%d%1f”,&x,&y,&z);

C.scanf(“%x%d%o”,&x,&Y);

D.scanf(“%x%o%6.2f”,&x,&y,&z);

15.以下说法正确的是(?).

A.输入项可以为一个实型常量,如scanf(“%f”,3.5);

B.只有格式控制,没有输入项,也能进行正确输入,如scanf(“a=%d,b=%d”);

C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(“%4.2f”,&f);

D.当输入数据时,必须指明变量的地址,如scanf(“%f”,&f);

16.以下程序的执行结果是(??)。

#include

main()

{

intsum,pad;

sum=pad=5;

pad=sum++;

pad++;

++pad;

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

}

A.7????????B.6??????????????C.5???????????????????D.4

17.巳知字母A的ASCII码是65,以下程序的执行结果是(?)。

#include

main()

{

?charc1=''A'',C2=''Y'';

?printf("%d,%d\n",c1,c2);

A.A,Y????????B.65,65?????????C.65,90?????????????D.65,89

18.为了避免嵌套的if-else语句的二义性,c语言规定else总是与(??)组成配对关系。

A.缩排位置相同的if

B.在其之前末配对的if

C.在其之前未配对的最近的if

D.同一行上的if

19.逻辑运算符两侧运算对象的数据类型(?).

?A.能是0或1

?B.只能是0或非0正数

?C.只能是整型或字符型数据

?????D.可以是任何类型的数据

20.设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是(??).

A.’x’&&’y’

B.x<=y

C.x||y+z&&y-z

D.!((x<y)&&!z||1)

21.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是(?).

A.A%2==1???B.!(A%2==0)???C.!(A%2)???D.A%2

22.以下不正确的if语句形式是(?).

A.if(x>y&&x!=y);

B.if(x==y)x十=y;

C.if(x!=y)scanf(“%d”,&x)e1sescanf(”%d,&y);

D.if(x<y){x十十;y十十;}

23.以下if语句语法正确的是(?).

A.if(x>0)

???printf(“%f“,x)

???elseprintf(“%f”,-x);

B.if(x>0)

{x=x+y;printf(“%f“,x);}

elseprintf(“%f”,-x)

C.if(x>0)

{x=x+y;printf(“%f“,x);}

elseprintf(“%f”,-x)

D.if(x>0)

{x=x+y;printf(“%f“,x);}

elseprintf(“%f”,-x)

elseprintf(“%f”,-x);

24.阅读以下程序

main()

{inta=5,b=0,c=0;

if(a=b+c)printf(“\n”);

else????printf(“$$$\n”);

}

以上程序(??).

A.语法有错不能通过编译??????????????????????B.可以通过编译但不能通过连接

C.输出???????????????????????????????????D.输出$$$

25.以下程序运行结果是(?).

main()

{inta=100,x=10,y=20,ok1=5,ok2=0;

?if(x
???if(y!=10)

????If(!ok1)

?????????a=1;

??????else

?????????if(ok2)??a=10;

?a=-1;

printf(“%d\n”,a);

}

A.1??????????B.0?????????????c.-1??????????????????D.不确定

26.执行以下程序段后,变量a,b,c得值分别是(?).

intx=10,y=9;

inta,b,c;

a=(--x==y++)?–x:++y;

b=x++;

c=y;

A.a=9,b=9,c=9?????????????????B.a=8,b=8,c=10

C.a=9,b=10,c=9????????????????D.a=1,b=11,c=10

27.若w,x,y,z,m均为int型变量,则执行下面语句后的m值是(?).

w=1;??x=2;??y=3;??z=4;

m=(w
m=(m
m=(m
A.1???????????B.2??????????????C.3????????????????D.4

28.语句while(!e);中的条件!e等价于(???)。

????A.e==0??????B.e!=1??????????C.e!=0????????????D.~e

29.下面有关for循环的正确描述是(??)

A.for循环只能用于循环次数已经确定的情况

B.for循环是先执行循环体语句,后判定表达式

C.在for循环中,不能用break语句跳出循环体

D.for循环体语句中,可以包含多条语句,但要用花括号括起来

30.C语言中while和do-while循环的主要区别是(?).

A.do-while的循环体至少无条件执行一次

B.while的循环控制条件比的循环控制条件严格

C.do-while允许从外部转到循环体内

D.do-while的循环体不能是复合语句

31.以下程序段(?).

x=-1;?do{x=xx;}?while(!x);

A.是死循环????????????????B.循环执行二次

C.循环执行二次??????????D.有语法错误

32.下面程序的运行结果是(?).

#include

main()

{inty=10;

do{y--;}while(--y);

printf(“%d\n”,y--);}

A.-1???????B.1???????????C.8???????????????D.0

33.以下正确的描述是(?).

A.continue语句的作用是结束整个循环的执行

B.只能在循环体内和switch语句体内使用break语句

C.在循环体内使用break语句或continue语句的作用相同

D.从多层循环嵌套中退出时,只能使用goto语句

34.c语言中(???)。

A.不能使用do-while语句构成的循环

B.do-while语句构成的循环必须用break语句才能退出

C.do—whiLe语句构成的循环,当while语句中的表达式值为非零时结束循环

D.do—while语句构成的循环,当while语句中的表达式值为零时结束循环

35.在C语言中,引用数组元素时,其数组下标的数据类型允许是()

????A.整型常量??B.整型表达式C.整型常量或整型表达式D.任何类型的表达式

36.在C语言中,一位数组的定义方式为:类型说明符数组名(?)。

A.[常量表达]?B.整型表达式C.[整型常量]或[整型表达式]D.[整型常量]

37.以下不能对二维整形数组a进行正确初始化的语句是(?)。

A.inta[2][3]={0};

B.inta[][3]={{1,2},{0}};

C.inta[2][3]={{1,2},{3,4},{5,6}};

D.inta[][3]={1,2,3,4,5,6};

38.若有说明:int?a[][4]={0,0};则下面正确的叙述是()。

A.数组a中每个元素均可得到初值0

?B.二维数组a的第一维大小为1

C.因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1

D.只有元素a0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

39.若有说明:inta[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是()。

A.2??????????B.3?????????C.4?????????D.无确定值

40.下面程序的运行结果是()。

charc[5]={‘a’,’b’,’\0’,’c’c,’\0’};

printf(“%s”,c);}

A.‘a’’b’

B.ab

C.abc

D.ab

41.有两个字符数组a、b,则以下正确的输入语句是(?)。

gets(a,b);

scanf(“%s%s”,a,b);

scanf(“%s%s”,&a,&b);

gets(“a”),gets(“b”);

?

A.s[j+=]=s[i]?????????B.s[++j]=s[i]

C.s[j]=s[i];j++??????D.s[j]=s[i]

42.若使用一维数组名作函数实参,则以下正确的说法是(?).

A.必须在主调函数中说明此数组的大小

B.实参数组类型与形参数组类型可以不匹配

C.在被调函数中,不需要考虑形参数组的大小

D.实参数组名与形参数组名必须一致

43.以下正确的说法是(?).

A.如果在一个函数中的复合语句中定义了一个变量,则该变量只在该复合语句中有效

B.在该函数中有效

C.在本程序范围内均有效

D.非法变量

44.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为(?).

A.自动(auto)B.静态(static)C.外部(extern)D.?寄存器(register)

45.以下程序的运行结果是(?)。

#defineMIN(x,y)??(x)<(y)?(x):(y)

main()

{inti=10,j+15,k;

k+10MIN(i,j);

printf(“%d\n”,k);

}

A.10??????????B.15????????????C.100??????????????D.150

46.C语言的编译系统对宏命令的处理是(?)。

A.在程序运行时进行的

B.在程序连接时进行的

C.和C程序中的其它语句同时进行编译的

D.在对源程序中的其它语句同时进行编译的

47.请读程序

#include

#defineMUL(x,y)(x)y

main()

{inta=3,b=4,c;

c=MUL(a++,b++);

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

}

上面程序的输出结果是(?)。

A.12??????B.15??????C.20???????D.16

48.以下程序的输出结果为(?)。

#definePT???5.5

#defineS(x)??PTxx

main()

{inta=1,b=2;

printf("%4.1\n",S(a+b));

}

A.12.0???????B.9.5??????C.12.5????D.33.5

49.在“文件包含”预处理语句的使用形式中,当#include后面的文件名用<>括起时,寻找被包含文件的方式是()。

A.仅仅搜索当前目录

B.仅仅搜索源程序所在目录

C.直接按系统设定的标准方式搜索目录

D.先在源程序所在目录搜索,再按系统设定的标准方式搜索

50.以下正确的描述是()。

A.C语言的预处理功能是指定完成宏替换和包含文件的调用

B.预处理指令只能位于C源程序文件的首部

C.凡是C源程序中行首以“#”标识的控制行都是预处理指令

D.C语言的编译预处理就是对源程序进行初步的语法检查

51.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是(?)。

?A.c=p1+p2;????B.p2=c?????C.p1=p2??????D.c=p1(p2);

52.设有下面的程序段:

?????????chats[]=”china”;charp;p=s;

?????????则下列叙述正确的是(?)。

A.s和p完全相同

B.数组s中的内容和指针变量p中的内容相等

C.s数组长度和p所指向的字符串长度相等D.p与s[0]相等

53.下面程序的运行结果是(?)。

????????#include

????????#include

????????main()

????????{

charp1,p2,str[50]=”abc”;

p1=”abc”;?p2=”abc”;

strcpy(str+1,strcat(p1,p2));

printf(“%s\n”,str);

}

A.abcabcabc??B.bcabcabc?C.aabcabc??D.cabcabc

54.若有定义:inta[2][3];则对数组a的第i行第j列(假设i,j已正确说明并赋值)元数值的正确引用为()。

???????A.((i+j)+j)?B.(a+i)[j]??C.(a+i+j)????D.(a+i)+j

55.若有定义:int?(p)[4];则标识符p(?)。

A.是一个指向整型变量的指针

B.是一个指针数组名

C.是一个指针,它指向一个含有四个整型元素的一维数组

D.定义不合法

56.若有以下定义和赋值语句,则对b数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的非法引用为(?)。

intb[2][3]={0},(p)[3];

p=b;

A.((p+i)+j)?????????B.(p[i]+j)

C.(p+i)+j??????????????D.((p+i))[j]

57.当说明一个结构体变量时系统分配给它的内存是(?).

A.各成员所需内存量的总和

B.结构中第一个成员所需内存量

C.成员中占内存量最大者所需的容量

D.结构中最后一个成员所需内存量

58.C语言结构体类型变量在程序执行期间(?).

A.所有成员一直驻留在内存中

B.只有一个成员驻留在内存中

C.部分成员驻留在内存中

D.没有成员驻留在内存中

59.以下对C语言中共用体类型数据的叙述正确的是(??)。

??????A.可以对共用体变量名直接赋值

??????B.一个共用体变量中可以同时存放其所有成员

??????C.一个共用体变量中不可能同时存放其所有成员

??????D.共用体类型定义中不能出现结构体类型的成员

60.C语言共用体型变量在程序运行期间?(?)??。

?????????A.所有成员一直驻留在内存中

?????????B.只有一个成员驻留在内存中

?????????C.部分成员驻留在内存中

?????????D.没有成员驻留在内存中

61.请读程序片段:

intx=20;

printf(“%d\n”,~x);

上面程序片段的输出结果是(??).

A.02

B.–20

C.-21

D.-11

62.在位运算中,操作数每左移一位,其结果相当于(??).

A.操作数乘以2

B.操作数除以2

C.操作数除以4

D.操作数乘以4

63.系统的标准输入文件是指(?)。

A.键盘???????B.显示器???????C.软盘???????D.硬盘

64.当顺利执行了文件关闭操作时,fclose函数的返回值是(?)。

?A.-1??????B.TURE???????C.0??????D.1

65.已知函数的调用形式:fread(buffer,size,count,fp);其中buffer代表的是?????????(?)。

?????A.一个整形变量,代表要读入的数据项总数

?????B.一个文件指针,指向要读的文件

?????C.一个指针,指向要读入数据的存放地址

?????D.一个存储区,存放要读的数据项

?

二、填空题:

1.C程序的基本单位是?????????。

2.表达式10%3的结果是??????????。

3.假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为????????。

4.在C语言中(以16位PC机为例),一个float型数据在内存中所占用的字节数为?????;

5.C语言所提供的基本数据类型包括:???????????????????????????????????????????。

6.表达式pow(2.8,sqrt(double(x)))值的数据类型为?????????????????。

7.以下程序的执行结果是???????????????????????????????。

#include

main()

{

floatf=3.5;

printf("%f,%g",f,f)

}

8.以下程序的执行结果是?????????????????。

#include

main()

{

floatf=31.41592;

printf("%f,%e",f,f)

}

9.以下程序的执行结果是?????????????????????????。

#include

main()

{

inta,b,c;

a=2;b=3;c=1;

if(a>c)

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

else

?printf("%d\n",b);

printf("end\n");

}

10.在C语言中,表示逻辑“真”值用????????????????.

11.有intx,y,z;且x=3,y=-4,z=5,则表达式(x&&y)==(x︱︱z)的值为?????????????。

12.下面程序从键盘输入的字符中统计数字字符的个数,用换行符结束循环。请填空。

intn=0,c;

c=getchar();

while(?????????????)

?{if(c>=‘0’&&c<=‘9’)n++;

?c=getchar();

?}

13.执行下面程序段后,k值是??????????????????????.

k=1;n=263;

do{k=n%10;n/=10}?while(n);

14.下面程序段中循环体的执行次数是??????????????????.

a=10;

b=0;

do{b+=2;a-+2+b;}while(a>=0);

15.若for循环用以下形式表示:

?????????????for(表达式1;表达式2;表达式3)??循环体语句

????????则执行语句for(i=0;i<3;i++)?printf(“”);时,表达式3执行?????????次。

16.以下程序的输出结果是__________。

main()

{ints[10]={1,2,3,4,5,6,7,8,9,10},p=s;

printf("%d\n",(p+4));

}

17.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为:???????????。(假设a[0][0]位于数组的第一个位置上。)

18.在C语言中,二维数组元素的内存中的存放顺序是??????????????。

19.在C语言中,一个函数一般由两个部分组成,它们是??????????????????????????。

20.以下程序的运行结果是??????????????????。

?????????#include

?????????f(inta[])

?????????{inti=0;

??????????while(a[i]<=10)

{printf(“%d”,a[i]);

?i++;}

}

main()

{inta[]={1,5,10,9,11,7};

?f(a+1);

}

21.设有以下宏定义:#defineWIDTH80

???????????????????#defineLENGTH(WIDTH+40)

则执行赋值语句:k=LENGTH20;(k为int型变量)后,k的值是???????????????。

22.下面的运行结果是????????????????。

#defineMUL(z)??(z)(z)

???????????main()

???????????{

????????????????printf(“%d\n”,MUL(1+2)+3);

???????????}

23.下面程序的运行结果是???????????????。

???#defineEXCH(a,b)?{intt;t=a;a=b;b=t;}

???main()

???{intx=5,Y=9;

EXCH(x,y);

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

}

24.下面程序段的运行结果是????????????。

chars[80],sp=”HELLO!”;

sp=strcpy(s,sp);

s[0]=’h’;

puts(sp);

25.下面程序段的运行结果是????????????。

???????????chars1=”AbcdEf”,s2=”aB”;

???????????s1++;

t=(strcmp(s1,s2)>0);

print(“%d\n”,t)

26.下面程序段的运行结果是???????????。

?????????charp=”PDP1-0”;

?????????intI,d;

?????????for(I=0;I<7;I++)

{d=isdigit((p+ii));

if(d!=0)?printf(“%c(p+I));

}

27.当运行以下程序时,从键盘输入book

book?

(表示回车,表示空格),则下面程序段运行的结果是??????????????。

chara1[80],a2[80],s1=a1,s2=a2;

gets(s1);gets(s2);

if(!strcmp(s1,s2))printf(“”):

elseprintf(“#”);

printf(“%d”,strlen(strcat(s1,s2)));

28.若已定义:

struct?num

{inta;

?intb;

?floatf;

}n={1,3,5.0};

structnumpn=&n;

则表达式(pn).a+pn->f的值是??????????。

29.在C语言中,&运算符作为双目运算符时表示的是????????运算.

30.在C语言中,文件的存取是以字符为单位的,这种文件被称作??????????文件。

?

三、编程题:

1.将一个字符串的内容颠倒过来。

2.求整形数组的最大值。

3.求字符串的长度(不用strlen)。

4.编写程序,将字符串str中的所有字符’k’删除。

5.找出二维数组的鞍点,即该位置上的元素是该行上的最大值,是该列上的最小值。二维数组也可能没有鞍点。

6.a是一个24的整型数组,且各元素均已赋值.函数max_value可求出其中的最大元素值max,并将此值返回主调函数.今有函数调用语句max=max_value(a);请编写max_value函数.

7.设计函数,实现字符串连接操作(不使用strcat)。

8.以下程序的功能是应用下面的近似公式计算e的n次方.函数f1用来计算每项分子的值,函数f2用来计算每项分母的值.请编写f1和f2函数.

ex=1=x=x2\2!+x3\3!…(前20项的和)

9.从键盘上输入若干个学生的成绩,计算出平均成绩,并输出不及格的成绩和人数。

10.设计函数,在二维数组中产生如下形式的扬辉三角形。

????1

????1???1

????1???2???1

????1???3???3???1

????1???4???6???4???1

????······

11.回文是从前向后和从后向前读起来都一样的句子。写一个函数,判断一个字符串是否为回文,注意处理字符串中有中文也有西文的情况。

12.约瑟夫环问题:编号为1,2,3,···,n的n个人按顺时针方向围坐一圈,每人持有一个正整数密码。一开始任选一个正整数m作为报数上限值,从第一个人开始按顺时针报数,报到m时停止,报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。设计程序求出出列顺序。

参考答案

?

一、选择题

1.B2.D3.A4.D5.A6.A7.B8.C9.A10.A11.B12.B13.D14.D15.D16.A17.D18.C19.D20.D21.C22.C23.B24.D25.C26.B27.A28.A29.D30.A31.C32.B33.B34.D35.C36.D37.C38.D39.B40.B41.B42.A43.A44.A45.B46.D47.A48.B49.C50.C51.B52.D53.C54.A55.C56.C57.A58.A59.C60.B61.C62.A63.A64.C65.C

二、填空题

1.函数?2.13.9?4.4?5.单精度型、双精度型、整型、字符型和枚举型6.双精度型(或:doubLe型)7.3.500000,3.5?8.?31.415920,3.14159e+019.end10.非0的数字11.112.c!=''\n''13.36?14.315.3?16.5??17.im+j+i18.按行主顺序存放19.函数说明部分和函数体?20.5?10?9?21.2400?22.12?23.x=8,y=524.hELLO!

25.126.1027.#928.6.0?29.按位与30.流式

?

三、编程题

1.解:注意交换位置的控制方法,参考程序如下:

#include

#include

voidchange(char?str[])

{intlen,i,j;

?charc;

?len=strlen(str);

?for(i=0,j=len-1;i
??{c=str[i];

????str[i]=str[j];

????str[j]=c;

??}

}

main()

{charstr[80];

?printf("Enterstring:");

?gets(str);

?change(str);

?printf("\nresultis:%s\n",str);

}

2.解:参考程序如下:

#include

intmax(inta[],intn)

{inti,mx;

?mx=a[0];

?for(i=1;i
???if(a[i]>mx)mx=a[i];

?returnmx;

}

main()

{inta[8]={23,4,6,12,33,55,2,45};

?printf("maxis%d\n",max(a,8));

}

3.解:参考程序如下:

#include

intstrlen(charstr[])

{inti;

?for(i=0;str[i]!=''\0'';i++);

?returni;

}

main()

{charstr[80];

?printf("Enterstring:");

?gets(str);

?printf("\nstringlengthis:%d\n",strlen(str));

}

4.解:将从字符串中删除所有字符’k’的功能定义为函数。参考程序如下:

#include

voiddelchar(charstr[],charc)

{inti,j;

?for(i=0,j=0;str[i]!=''\0'';i++)

????if(str[i]!=c)

????str[j++]=str[i];

?str[j]=''\0'';

}

main()

{charstr[80];

?inti,j;

?gets(str);

?delchar(str,''k'');

?puts(str);

}

5.解:依鞍点定义,对数组每行元素循环,找到当前行上最大元素,记下所在的列号,再判断此元素是否为对应列的最小元素。将寻找打印数组鞍点的操作定义为函数,如果没有鞍点,函数返回-1。参考程序如下:

#include

#defineN10

#defineM10

intandian(inta[][M],intn,intm)

{inti,j,k,max,maxcol;

?intflag1,flag2=0;/flag1标记每一行的最大值是否鞍点,flag2标记矩阵是否有鞍点/

?for(i=0;i
??{max=a[i][0];

????for(j=1;j
??????if(a[i][j]>max)

??????????{max=a[i][j];maxcol=j;}

????for(k=0,flag1=1;k
??????if(a[k][maxcol]
????????????flag1=0;

????if(flag1==1)

?????{printf("\n%3d%3d%5d\n",i,maxcol,max);

????????????flag2=1;

?????}

??}

?if(flag2==0)

?????return-1;

}

main()

{inti,j,n,m,a[N][M];

?printf("Enterrow&&col:");

?scanf("%d%d",&n,&m);

?printf("Enterarrayelement:");

?for(i=0;i
???for(j=0;j
?????scanf("%d",&a[i][j]);

?printf("\n");

?for(i=0;i
?{for(j=0;j
?????printf("%d",a[i][j]);

???printf("\n");

?}

?if(andian(a,n,m)==-1)

????printf("\nnoandian\n");

}

6.max_value(intarr[][4])

{??????}

?

max(intarr[][4])

{intI,j,max;

max=arr[0][0];

for(i=0;i<2;i++)

for(j=0;j<4;j++)

if(arr[i][j]>max)max=arr[i][j];

return(max);

}

7.解:注意结束字符的判断和处理,目标字符串的长度应足够长。参考程序如下:

#include

voidscat(chars1[],chars2[])

{inti,j;

?for(i=0;s1[i]!=''\0'';i++);

?for(j=0;s2[j]!=''\0'';j++)

???s1[i++]=s2[j];

?s1[i]=''\0'';

}

main()

{chars1[80]="Good";

?chars2[10]="morning";

?scat(s1,s2);

?printf("%s\n",s1);

}

8.ex=1=x=x2\2!+x3\3!…(前20项的和)

floatf2(intn)

{?????}

?

floatf1(intx,intn)

{?????}

?

main()

{floatexp=1.0;intn,x;

printf(“Inputanumber:”)’

scanf(“%d”,&x);?printf(“%d\n”,x);

exp=exp+x;

for(n=2;n<=19;n++)?exp=exp+f1(x,n)/f2(n);

printf(“\nTheisexp(%d)=%8.4f\n”,x,exp)’

}

?

运行结果:Inputanumber:3

?????????????????Theisexp(3)=20.0855

?

floatf2(intn)

{if(n==1)return1;

elsereturn(f2(n-1)n);

}

floatf1(intx,intn)

{intI;floatj=1;

for(I=1;I<=n;I++)j=jx;

returnj;

}

?

9.解:用输入负数表示输入结束。参考程序如下:

#include

main()

{floatscore[200],ave,sum,x;

?inti,n,count;

?printf("Enterscore:");

?scanf("%f",&x);

?n=0;

?sum=0.0;

?while(x>0&&n<200)

??{sum+=x;

????score[n++]=x;

????scanf("%f",&x);

??}

?ave=sum/n;

?printf("average=%f\n",ave);

?for(count=0,i=0;i
???if(score[i]<60)

?????{printf("%f\n",score[i]);

?????????count++;

?????}

?printf("%dnotpass\n",count);

??????????}

10.解:扬辉三角形各行数据规律:

(1)??每行第一个和最后一个数都是1

(2)??从第3行起,(3)?????除第一和最后一个数外,(4)??其余的数都是上一行同(5)???列和前一列两个数的和。

定义函数,将扬辉三角形的数据保存在二维数组中。参考程序如下:

#include

#defineN10

voidyanghui(inta[][N],intn)

{inti,j;

?for(i=0;i
???{a[i][0]=1;

?????a[i][i]=1;

???}

?for(i=2;i
???for(j=1;j
??????a[i][j]=a[i-1][j-1]+a[i-1][j];

?}

main()

{inti,j,n,a[N][N];

?printf("Entern:");

?scanf("%d",&n);

?yanghui(a,n);

?for(i=0;i
???{for(j=0;j<=i;j++)

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

?????printf("\n");

???}

}

11.解:依回文定义从字符串的起始字符向后,最后一个字符向前依次判断,遇汉字的第一个字符同时处理两个字符。参考程序如下:

#include

#include

inthuiwen(charstr[])

{inti,j,len,flag=1;

?len=strlen(str);

?for(i=0,j=len-1;i<=j;i++,j--);

????if(str[i]!=str[j])

?????????{if(str[i]>128&&str[j]>128)/两侧都是汉字字符/

??????????????{if(str[i]==str[j-1]&&str[i+1]==str[j])

????????????????????{i++;j--;}

?????????????????elseflag=0;

??????????????}

???????????elseflag=0;

?????????}

???returnflag;

}

main()

{charstr[50];

?printf("Enterstring:");

?gets(str);

?if(huiwen(str))

????printf("%sisapalindroma\n");

?else

????printf("%sisnotpalindroma\n");

}

12.解:设整型数组a中保存n个人的密码,对应的人出列后,数组元素置0作为标志。顺时针确定下一个人的方法,可将下标加1,再对n求余。参考程序如下:

#include

#defineN100

main()

{inta[100];

?inti,j,m,n,k=0;

?printf("Entern&m:");

?scanf("%d%d",&n,&m);

?printf("Entercodearray:");

?for(i=0;i
????scanf("%d",&a[i]);

?printf("\nOutput:\n");

?for(i=0;i
???{j=1;

?????while(j
?????{while(a[k]==0)/跳过已出列的人/

????????????k=(k+1)%n;

?????????j++;

?????????k=(k+1)%n;

?????}

?????while(a[k]==0)/跳过已出列的人/

k=(k+1)%n;

?????printf("%d",k);

?????m=a[k];a[k]=0;

???}

}



献花(0)
+1
(本文系我心依旧qxf...首藏)