一、单选题
1.有如下程序段,其执行后的输出结果为( )。
main()
{int i=8;
while(i>1) {–i; printf(“%d”,i–);}
}
A. 753 B. 7531 C. 8642 D. 864
2.在下列的数组定义中,哪一个有语法错误( )。
A. int a[]={1,2,3,4,5}; B. int a[10]={0};
C. int a[][]={0,2,4,6,8}; D. int a[][5]={1,2,3,4,5,6,7};
3.有如下程序:
#define N 2
#define M N+1
#define NUM 2*(M)-1
main()
{int i;
for(i=1;i<=NUM;i++)
printf(“%d\n”,i);
}
该程序中的for循环执行的次数是( )。
A 5 B 4 C 3 D 6
4.设x、y均为整型变量,且x=8,y=7,则以下语句的输出结果是( )。
printf(“%d,%d\n”,++x,y++);
A 9,6 B 9,7 C 8,7 D 9,5
5.表达式x=x+1表示成增量表达式为( )。
A x+或++x B x++或+x C x++或++x D x+或+x
6.instrlen函数的功能是计算str所指字符的长度,并作为函数值返回。请填空。
int instrlen (char str)
{int i;
for(i=0; ( ) ;i++);
return (i);
}
A st [i] B sr[i] C str[i] D tr[i]
7.当不需要函数返回任何值时,则应把该函数类型定义为( )。
A void B viod C vdio Dvid
8.如有以下定义 int a[10]={1,2,3};则数组x在内存中所占字节数是( )。
A 21 B 19 C 22 D20
9.若有以下语句
main()
{char s=”1234\”\067”;
printf(“%s”,s);
输出结果为( )。
A 123”66 B 123”67 C 113”67 D 133”67
10.若有以下程序段:
main()
{int a=511;
unsigned char p;
p=(unsigned char)&a;
printf(“%d”,p);
}
输出结果为( )。
A 254 B 253 C 255 D 256
11.若有定义语句 “int a=25,b=10,c=15;”以下语句执行结果是( )。
if(a++<=25 &&b–<=2 && c++)
printf(“%d,%d,%d\n”,a,b,c);
else printf(“###%d,%d,%d\n”,a,b,c);
A ###26,8,15 B ###26,9,15 C ###25,9,15 D###26,9,16
12.设有下列运算符:<<、/、++、&&、<=,其中优先级最高的是( )。
A << B / C ++ D &&
13.若a为int 型变量,则以下哪一个语句是正确的( )。
A.int p=a; B. int p =a; C. int p=&a; D. int p=&a;
14.在以下一组运算符中,优先级最低的运符是( )。
A.! B.= C.== D. ,
15.若变量a为char类型,能正确判断出a为数字字母的表达式为( )。
A.0<=a<9 B.’0’<=a<=’9’
C.0<=a && a<=9 D.’0’<=a && a<=’9’
16.有如下程序:
main()
{int i,j;
for (i=1;i<=4;j++) j=j+i;
printf(“%d\n”,j);
}
该程序的的执行结果是( )。
A.不确定 B.6 C.10 D.死循环
17.以下程序中,while循环的循环次数是( )。
main()
{int i=2;
while(–i)
{printf(“%d”,i–);
if (i) i=i+3;
else break;
}
}
A.1 B. 2 C.3 D.死循环
18.以下程序的输出结果是( )。
main()
{int i, a[3][3]={0,1,2,3,4,5,6,7,8},p=&a[0][2];
for(i=0;i<4;i+=2) printf(“%d”,p[i]);
}
A.23 B.34 C.24 D.35
19.设有如下定义:
int a[]={1,2,3,4,5,6};
int p;
则下程序段的输出结果为( )。
p=a+1;
(p+4)+=(p+2)+=2;
printf(“%d,%d\n”,(p+4),(p+2));
A.5,9 B.12,6 C.6,12 D.9,5
29.在c语言中,可以提高执行效率的变量存储类别是( )。
A.auto B.register C.static D.extern
21.以下程序运行时,如果从键盘输入ABCDEFGH<回车>,则输出结果为( )。
#include “stdio.h”
#include “ctype.h”
int f(char s[])
{int i=0;
while(s[i++]!=’\0’);
return (i);
}
main()
{char str[10];
scanf(“%s”,str);
printf(“%d\n”,f(str));}
A.7 B.8 C.9 D.10
22.若要对C盘上temp子目录下名为my.bat的文本文件进行读写操作,则下面符合此要求的打开文件的函数调用为( )。
A.fopen(“c:\temp\my.bat”,”rw”)
B.fopen(“c:\temp\my.bat”,”rw”)
C.fopen(“c:\temp\my.bat”,”r+”)
D.fopen(“c:\temp\my.bat”,”r+”)
23.设有定义如下:#define F(N) 2N,表达式F(2+3)的值是( )。
A. 7 B. 8 C. 9 D.6
24.设有定义如下:int a=9,b=9,c=9; 顺序执行下列语句,变量b中的值是( )。
c=(a-=(b-5));
c=(a%11)+(b=3);
A. 2 B. 3 C. 4 D.5
25.算术表达式 80-‘a’+40/2的运算结果为( )类型。
A. In B. It C. Int D. nt
26.下面函数要求计算两个整数x、y之和,并通过形参z传回该和的值,请填空。
void add(int x,int y,int z)
{( )=x+y; return;}
A. S B. z C. z D. X
27.逻辑表达式 x>10 &&x<20的相反表达式为( )。
A. !(x>10 && x<20) 或 x<=10 || x>=20
B. !(x>10 && x<20) 或 x<=10 || x=20
C. !(x>10 && x<20) 或 x<=10 || x>20
D. !(x>10 && x<20) 或 x<10 || x>=20
28.假定要访问一个结构体x中的成员a,则表示方法为( )。
A. x.a B. xa C. x.A D. ax
29.如有以下程序
main()
{char s[10]={‘1’,’2’,’3’};
s[4]=’5’;
s[5]=’\0’;
printf(“%s”,s);}
则输出结果为( )。
A. 122 B. 223 C. 123 D. 133
30.若有定义:
int a=511,b=&a;
则 printf(“%o”,b);的输出结果为( )。
A. 776 B. 767 C. 777 D. 677
31.设i,j,k均为int 型变量,则执行完下面的for循环后,k的值为( )。
for(i=0,j=10;i<=j;i++,j–) k=i+j;
A. 10 B. 9 C. 8 D. 11
32.设字符型变量a=4,b=6,计算表达式 c=(a^b)<<2后的二进制值是( )。
A. 1001 B. 1010 C. 1000 D. 1100
33.下面的哪一个保留字不能作为函数返回类型( )。
A. long B. auto C. float D. char
34.以下程序的输出结果是( )。C
main()
{int k=017;
printf(“%d,%o,%x\n”,k,k,k);
}
A. 17,17,17 B. 17,21,11 C. 15,17,f D. 15,017,0xf
35.在C语言中,合法的字符常量是( )。
A. ’\xfg’ B. ’\083’ C. ”\0” D. ’\r’
36.以下程序的输出结果为( )。
main()
{char x=012;
printf(“%o\n”,x<<2);
}
A. 10 B. 50 C. 40 D. 48
37.若有以下语句,使得a=’a’,d=9,c=’b’,则输入格式正确的是(u 空格,CR为换行符)( )。
int i;
char a,b;
scanf(“%c%d%c”,&a,&i,&b);
A. au9ub B. a9ub C. a9b D. a CR 9 CR b
38.C语言程序从( )开始执行。
A. 程序中的第一个语句 B. 程序中的第一个函数
C. 程序中的第一个可执行语句 D. 程序中的main函数
39.假定a为一维数组,pa是指向数组a的指针变量,则访问a[i]的正确方式为( )。
A. a+i B. (pa+i) C. pa+i D. pa+i
40.以下程序运行后,输出结果为( )。
main()
{static char s[]=”ABCDEFGH”, t=”ABCDFGH”;
int i;
for (i=0;s[i]==t[i];i++);
printf(“%d\n”,t[i]-s[i]);}
A. 0 B. 1 C. –1 D. 死循环
41.下列程序的输出是( )
main()
{
unsigned a=32765;
a=a+3;
printf(“a=%d\n”,a);
}
A. a=32768 B. a=-32768 C. a=-1 D. a=1
42.如下列变量均合法定义,则以下合法的赋值表达式是( )
A. a=int(3.5) B. 3=a C. ++(a+b) D. a<<=3
43.下列叙述正确的是( )
A. C语言源程序可以直接在DOS环境中运行
B.Turbo C系统不提供编译和连接C 程序的功能
C.编译C语言源程序得到目标程序可以直接在DOS环境中运行
D.C语言源程序连接得到的可执行程序可以直接在DOS环境中运行
44.下列叙述错误的是( )
A.break语句可以使程序从switch语句中跳出来
B.continue 语句是为了结束本次循环,而不是终止整个循环的执行
C.break语句是为了使程序流程跳出循环体,提前结束循环
D.在switch语句中使用continue 和break语句的作用相同
45.若要在程序中使用标准输入输出库函数时,则必须在程序的开始用#include命令中使用( )头文件。
A. stdio.h B. stdi.h C. stdo.h D. stdio
46.设有语句int a=5;则执行语句a+=a-=aa;后,变量a的值是( )。
A.-41 B. -30 C. -42 D. -40
47.数学表达式 +2x-3y(x-y)的c语言表达式是( )。
A. (x+y)/(x-y)+2x-3y(x-y)
B. (x+y)/(x+y)+2x-3y(x-y)
C. (x-y)/(x-y)+2x-3y(x-y)
D. (x+y)/(x-y)+2x+3y(x-y)
48.假定x和y为double型,则表达式x=3,y=x+x/2的值是( )。
A. 500000 B. 501000 C. 500100 D. 510000
49.在每一个c语言程序中都必须包含有这样一个函数,该函数的函数名为( )。
A. main() B. min() C. man() D. mai ()
50.( )是c语言程序的基本单位。
A. 英语 B. 函数 C. 公式 D. 数学
51.执行以下程序段后,输出结果为( )。
main()
{int a[]={1,2,3,4,5,6};
int p=a+2, q=0;
q=p+2;
printf(“%d%d\n”,p,q);
}
A. 35 B. 34 C. 36 D. 33
52.有如下程序,则其输出结果为( )
main()
int a=3,b=-2,c=5;
if(a<b)
if(b<0) c=0;
else c++;
printf(“%d\n”, c);
}
A. 4 B. 5 C. 3 D. 6
53.下面程序的运行结果是( )。
main()
{int x=5,y=3;
printf(“%d”,(x++,++y));
}
A. 4 B. 3 C. 5 D. 6
54、有以下程序
void fun(int a,int b,int c)
{ a=3;b=4;c=5;}
main()
{
int x=1,y=2;z=3;
fun(x,y,z);
printf(“%d,%d,%d\n”,x,y,z);
}
输出结果是( )
A. 3,4,5 B. 1,2,3 C. 5,4,3 D. 3,2,1
55、下列叙述错误的是( )
A. if语句允许用户选择是否执行某一个操作
B. if~else语句允许用户选择是否执行两个操作中的某一个操作
C. switch语句允许用户选择执行多个操作的某一个操作
D. 多分支选择结构只能使用switch语句实现
56、有以下定义
int a=013;
int b=15;
则表达式a&b的值为( )
A.13 B.1 C.15 D.4
57、下述对C语言字符数组的描述中错误的是( )
A. 字符数组可以存放字符串
B. 字符数组中的字符串可以整体输入输出
C. 可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
D. 不可以用关系运算符对字符数组中的字符串进行比较
58、假定p所指对象的值为28,p+1所指对象的值为62,则p++的值为( )
A.28 B.29 C.62 D.63
59、若用数组名作为函数调用时的实参,则实际上传递给形参的是( )
A. 数组首元素的地址 B. 数组元素的个数
C. 数组的第一个元素的值 D. 数组中全部元素的值
60、设有如下定义
struct sk
{int a;float b;}data,p;
如有p=&data; 则对data中的a域的正确引用是( )
A. (p).a B. (p).data.a C. p.data.a D. p->data.a
61、while(!x)中的!x与下面哪个条件等价( )
A. x0 B. x!=0 C. x1 D. x!=1
62、设x和y均为逻辑值,则x||y为假的条件是( )
A. 其中一个为真 B. 其中一个为假
C. 两者均为真 D. 两者均为假
63、C语言规定为字符串结束标志的是( )
A. \n B. \r C. \0 D. \o
64、假定a是一个字符数组名,则元素a[5]的字节地址为( )。
A. a+5 B. a+4 C. a+3 D. a-5
65、如有以下程序段
union ss
{int i;
char a;
}s;
s.i=512
s.a=2
printf(“%d”,s.i)
则输出结果为( )。
A. 514 B. 512 C. 504 D. 513
66、以下程序段的输出结果是( )。
#include “string.h”
main()
{char p,q,s[80]=”ABCDEFGHIJK”;
p=”1234”;q=”5678”;
strcpy(s+2,p+2); strcpy(s+4,q+3);
printf(“%s”,s);
}
A. AB348 B. AB348 C. AB348 D. AB348
67、结构化程序设计规定的三种基本结构是顺序结构、选择结构和( )。
A. 逻辑结构 B. 循环结构 C. 公式结构 D. 函数结构
68、以下程序的输出结果是( )。
main()
{int a=0,i;
for(i=0;i<5;i++)
switch(i)
{case 0:
case 2:a+=3;
default:a+=5;
}
}
printf(“%d\n”,a);
}
A. 30 B. 33 C. 31 D. 32
69、c语言程序中的每条基本语句以( )作为结束符。
A. 。 B. , C. ; D.}
70、设a,b和c都是int型变量,且a=7,b=8,c=9,则下列表达式!((a<b)&&!c||1)的值为( )。
A. 3 B. 2 C. 1 D. 0
71、设x,y均为int型变量,则执行语句:x=y=5;x++||++y后,y的值为( )。
A. 1 B. 3 C. 4 D. 5
72、表达式(float)25/4的值为( )。
A. 6.250001 B. 6.250000 C. 6.240000 D. 6.150000
73、函数的返回表达式的类型与函数的类型不一致时,则返回值的类型由( )决定。
A. 函数类型 B. 函数关系 C. 函数模型 D. 函数结构
74.执行以下程序段,输出结果为( )
main()
{ int s=1,t=1,a=3,b=4;
if(a>0)s++;
if(a>b)t+=s;
else if(a==b)t=5;
else t=s++2;
printf(“%d\n”,t);
}
A.3 B.4 C. 5 D. 6
75.假定a为一数组名,则下面的哪一种表示有错误( )
A. a[i] B. a++ C. a D. (a+1)
76.下面标识符合法的是( )
A. a8b B. 3ab C. if D. ok?
77.如存在以下程序,则输出结果为( )
char s[]=”\\12345\\012”;
printf(“%d\n”,strlen(s));
A.5 B.6 C.7 D.14
78.设有以下说明语句( )
struct stu
{ int num;
char xm[10];
float cj;
}s[20];
则数组a所占空间大小为( )字节
A.16 B.14 C .320 D .280
79.设有以下函数( )
f(int i)
{ int j=0;
static int s=1;
return (s++)+(++i)+(++j);
}
main( )
{int i;
for(i=0;i<2;i++)printf(“%d”,f(0));
}
A.23 B.35 C.34 D. 24
二、多选题
1.如下列变量均合法定义,则以下不合法的赋值表达式是( )
A. a=int(3.5) B. 3=a C. ++(a+b) D. a<<=3
2.下面标识不符合法的是( )
A. a8b B. 3ab C. if D. ok?
3.下列叙述不正确的是( )
A. C语言源程序可以直接在DOS环境中运行
B.Turbo C系统不提供编译和连接C 程序的功能
C.编译C语言源程序得到目标程序可以直接在DOS环境中运行
D.C语言源程序连接得到的可执行程序可以直接在DOS环境中运行
4.数学表达式 +2x-3y(x-y)的c语言表达式不正确的是( )。
A. (x+y)/(x-y)+2x-3y(x-y)
B. (x+y)/(x+y)+2x-3y(x-y)
C. (x-y)/(x-y)+2x-3y(x-y)
D. (x+y)/(x-y)+2x+3y*(x-y)
5.设有如下定义
int arr[]={1,2,3,4,5};
int *p=arr;
*(p+2)+=2;
printf(“%d,%d\n”,p,(p+2));
则输出结果错误的是( )。
A. 1.4 B. 1.5 C. 1.6 D. 1.3
6.下列叙述正确的是( )
A. if语句允许用户选择是否执行某一个操作
B. if~else语句允许用户选择是否执行两个操作中的某一个操作
C. switch语句允许用户选择执行多个操作的某一个操作
D. 多分支选择结构只能使用switch语句实现
7.设有如下定义
struct sk
{int a;float b;}data,*p;
如有p=&data; 则对data中的a域的引用错误的是( )
A. (*p).a B. (*p).data.a C. p.data.a D. p->data.a
8.假定a为一数组名,则下面的哪一种表示是正确的( )
A. a[i] B. *a++ C. *a D. *(a+1)
9.如下列变量均合法定义,则以下不合法的赋值表达式是( )
A. a=int(3.5) B. 3=a C. ++(a+b) D. a<<=3
10.下列叙述正确的是( )
A.break语句可以使程序从switch语句中跳出来
B.continue 语句是为了结束本次循环,而不是终止整个循环的执行
C.break语句是为了使程序流程跳出循环体,提前结束循环
D.在switch语句中使用continue 和break语句的作用相同
11.下述对C语言字符数组的描述中正确的是( )
A. 字符数组可以存放字符串
B. 字符数组中的字符串可以整体输入输出
C. 可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
D. 不可以用关系运算符对字符数组中的字符串进行比较
12.以下程序段的输出结果错误的是( )。
#include “string.h”
main()
{char *p,*q,s[80]=”ABCDEFGHIJK”;
p=”1234”;q=”5678”;
strcpy(s+2,p+2); strcpy(s+4,q+3);
printf(“%s”,s);
}
A. AB348 B. AB348 C. AB348 D. AB348
13.以下程序的输出结果错误的是( )。
main()
{int a=0,i;
for(i=0;i<5;i++)
switch(i)
{case 0:
case 2:a+=3;
default:a+=5;
}
}
printf(“%d\n”,a);
}
A. 30 B. 33 C. 31 D. 32
14.c语言程序中的每条基本语句不以( )作为结束符。
A. 。 B. , C. ; D.}
15.在下列的数组定义中,哪几个有语法正确( )。
A. int a[]={1,2,3,4,5}; B. int a[10]={0};
C. int a[][]={0,2,4,6,8}; D. int a[][5]={1,2,3,4,5,6,7};
16.表达式x=x+1表示成增量表达式错误的为( )。
A x+或++x B x++或+x C x++或++x D x+或+x
17.若有以下语句
main()
{char *s=”1234\”\067”;
printf(“%s”,s);
输出结果错误的为( )。
A 123”66 B 123”67 C 113”67 D 133”67
18.若有以下程序段:
main()
{int a=511;
unsigned char p;
p=(unsigned char)&a;
printf(“%d”,*p);
}
输出结果错误的为( )。
A 254 B 253 C 255 D 256
19.若a为int 型变量,则以下哪一个语句是不正确的( )。
A.int *p=a; B. int p =*a; C. int *p=&a; D. int p=&a;
20.下面的哪一个保留字能作为函数返回类型( )。
A. long B. auto C. float D. char
21.若有以下语句,使得a=’a’,d=9,c=’b’,则输入格式不正确的是(u 空格,CR为换行符)( )。
int i;
char a,b;
scanf(“%c%d%c”,&a,&i,&b);
A. au9ub B. a9ub C. a9b D. a CR 9 CR b
22.假定a为一维数组,pa是指向数组a的指针变量,则访问a[i]的不正确方式为( )。
A. *a+i B. *(pa+i) C. *pa+i D. pa+i
23.设x、y均为整型变量,且x=8,y=7,则以下语句的输出结果错误的是( )。
printf(“%d,%d\n”,++x,y++);
A 9,6 B 9,7 C 8,7 D 9,5
24.以下程序的输出结果错误的是( )。
main()
{int i, a[3][3]={0,1,2,3,4,5,6,7,8},*p=&a[0][2];
for(i=0;i<4;i+=2) printf(“%d”,p[i]);
}
A.23 B.34 C.24 D.35
25.若要对C盘上temp子目录下名为my.bat的文本文件进行读写操作,则下面不符合此要求的打开文件的函数调用为( )。
A.fopen(“c:\temp\my.bat”,”rw”)
B.fopen(“c:\temp\my.bat”,”rw”)
C.fopen(“c:\temp\my.bat”,”r+”)
D.fopen(“c:\temp\my.bat”,”r+”)
26.逻辑表达式 x>10 &&x<20的相反表达式错误的为( )。
A. !(x>10 && x<20) 或 x<=10 || x>=20
B. !(x>10 && x<20) 或 x<=10 || x=20
C. !(x>10 && x<20) 或 x<=10 || x>20
D. !(x>10 && x<20) 或 x<10 || x>=20
27.若有定义:
int a=511,*b=&a;
则 printf(“%o”,*b);的输出结果错误的为( )。
A. 776 B. 767 C. 777 D. 677
28.有如下程序:
main()
{int i,j;
for (i=1;i<=4;j++) j=j+i;
printf(“%d\n”,j);
}
该程序的的执行结果错误的是( )。
A.不确定 B.6 C.10 D.死循环
三、判断题
1.f(int a[], int m, int n)
{int i,s=0;
for(i=m;i<n;i+=i+2)
s=s+a[i];
return (s);
}
main()
{int x,a[]={9,8,7,6,5,4,3,2,1};
x=f(a,3,5);
printf(“%d\n”,x);}
运算结果为5。
2.main()
{char ch[2][5]={“3773”,”6363”}, p[2];
int i,j,s=0;
for(i=0;i<2;i++)
p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]!=’\0’;j+=2)
s=10s+p[i][j]-‘0’;
printf(“%d\n”,s);}
运算结果为3766。
3.main()
{int a[5]={1,3,5,7,9},b[3]={2,4,6},*p,*q,i,j;
p=a;q=b;
printf(“\n”);
while(p<a+5 && q<b+3)
if(*p<q) printf(“%3d”,p++);
else printf(“%3d”,q++);
while(p<a+5) printf(“%3d”,p++);
while(q<b+3) printf(“%3d”,q++);
}
运算结果为1 2 3 4 5 6 7 8。
4.void main()
{char a[]=”abacdaabcabagfcad”;
int i1=0,i2=0,i=0;;
while(a[i])
{if(a[i]’a’) i1++;
if(a[i]’b’) i2++;
i++;}
printf(“i1=%d,i2=%d\n”,i1,i2);}
运算结果为 i1=7,i2=3。
5.main()
{int a[]={7,4,8,6,9,5,3,10,2,1};
int i,j,k;
for(j=3;j<=9;j++)
{k=a[j];
i=j-3;
while(i>=0 &&a[i]>k) {a[i+3]=a[i];i=i-3;}
a[i+3]=k;
}
for(i=0;i<=9;i++)
printf(“%d ”,a[i]);
}
运算结果为1 4 2 3 9 5 6 1 0 8 7。
6.float ave(a,n)
float a[];
int n;
{int i;
float s;
for(i=0,s=0;i<n;i++)
s=s+a[i];
return (s/n);
}
程序(段)或函数的功能为:求数组a中前n+1个数的平均。
7.SD(int a[], int n, int k)
{int b=0;
for(int i=0;i<n;i++)
if(a[i]k) b++;
return (b);}
程序(段)或函数的功能为:在数组前n个元素中,查找与k+1相等的元素个数.
8.# include “stdio.h”
main()
{FILE fp1, fp2;
if((fp1=fopen(“name1.dat”,”r”))==NULL)
{printf(“open error\n”); exit(0);}
if((fp2=fopen(“name2.dat”,”w”))==NULL)
{printf(“open error\n”); exit(0);}
while(!feof(fp1))
fputc(fgetc(fp1),fp2);
fclose(fp1);
fclose(fp2);
}
程序(段)或函数的功能为:把name1.dat文件内容复制到name2.dat中。
9.double SA(double x,int n)
{int p=1,s=1,i;
for( i=1;i<=n;i++)
{p=x;
s+=1.0p/(i+1);}
return s;
}
程序(段)或函数的功能为:求1+x/2+x2/3+……+xn/(n+1)。
10.main()
{int i, s=0;
static c=0;
for(i=1;i<10;i++)
{c=c+i;
s=s+c;
}
printf(“%d”,s);
}
程序(段)或函数的功能为:求1+(1+2)+(1+2+3)+……+(1+2+……+9)的和。
11.int a=2,b=4;
max(int a,int b)
{int c;
c=a>b?a:b;
return ©;}
main()
{int a=6,c;
c=max(a,b);
printf(“max=%d”,c);
}
运算结果为:max=6。
12.main()
{int i=0;
while(i<3)
{i++;
printf(“%d”,i);
}
}
运算结果为:123。
13.void swap(int *i, int *j)
{int z;
z=*i; *i=*j; j=*i;
}
main()
{int a[6]={5,1,4,3,2,6},i,j;
for(i=0,j=5;i<j;i+=2,j–)
swap(a+i,a+j);
for(i=0;i<5;i++)
printf(“%5d”,a[i]);
}
运算结果为:6 1 2 3 2。
14.#include “string.h”
main()
{char p[5][10]={“chain”,”america”,”africa”,”moto”,”class”},
(*q)[10],s[80];
int i,j;
q=p;
for(i=0;i<5;i++)
for(j=0;j<4-i;j++)
if(strcmp(q[j],q[j+1])>0)
{strcpy(s,q[j]);
strcpy(q[j],q[j+1]);
strcpy(q[j+1],s);
}
for(i=0;i<5;i++)
printf(“\n %s”,p[i]);
}
运算结果为: africa。
america
chain
class
moto
15.void SA(char ch)
{switch(ch)
{case ‘A’:case ‘a’:printf(“well!”);break;
case ‘B’:case ‘b’:printf(“good!”);break;
case ‘C’:case ‘c’:printf(“pass!”);break;
default:
printf(“bad!”);
}
}
void main()
{char a[6]=”Abcaf”;
int i;
for( i=0;a[i];i++)
SA(a[i]);
}
运算结果为:well ! well ! pass! well! bad!。
16.#define N 20
void main()
{int a[N],i,m=0;
float s=0;
int b[N];
for(i=0;i<N;i++)
{scanf(“%d”,&a[i]);
s+=a[i]; }
s/=N;
for(i=0;i<N;i++)
if(a[i]>=s)
{ b[m]=a[i];
printf(“%d”,b[m++]);}
}
程序(段)或函数的功能为:输入N个数,输出低于平均数的所有数.
17.void SE(int *p1,int *p2)
{int t;
t=*p1;
*p1=*p2;
*p2=t;}
main()
{int a,b;
int *p1,p2;
scanf(“%d,%d”,&a,&b);
p1=&a; p2=&b;
if(a>b) SE(p1,p2);
printf(“%d,%d\n”,a,b);}
程序(段)或函数的功能为:a,b两数由大到小排序。
18.long int p(int i)
{static lont int k=1;
k=ik;
return (k);
}
main()
{int n,i;
scanf(“%d”,&n);
for(i=1;i<=n;i++)
printf(“%d!=%ld\n”,i,p(i));
}
程序(段)或函数的功能为:输出1-n阶乘。
19.#define MAX(x,y) (x)>(y)? (x):(y)
main()
{int a,b,t;
scanf(“%d%d”,&a,&b);
t=MAX(a,b);
printf(“%d\n”,t);
}
程序(段)或函数的功能为:输出两数的最大值。
20.f(int n)
{if (n/100) printf(“%d”,n);
else { f(n/10);
printf(“%d”,n%10);
}
}
main()
{int n;
scanf(“%d”,&n);
f(n);
}
程序(段)或函数的功能为:输入整数n,按位原序输出。
21.void main()
{int s=0,i;
for( i=1; ; i++)
{if(s>50) break;
if(i%3==0) s+=i;
}
printf(“i=%d,s=%d\n”,i,s);
}
运算结果为i=19,s=63。
22.void main()
{int s1=0,s2=0,i;
for(i=0;i<10;i++)
if(i%2) s1=s1+i;
else s2=s2+i;
printf(“s1=%d,s2=%d\n”,s1,s2);}
运算结果为s1=35,s2=25。
23.f(int a)
{int b=0;
static c=5;
b=b+3;
c=2c;
return(a+b+c);
}
main()
{int a=2,i;
for(i=0;i<=2;i++)
printf(“%d”,f(a));
}
运算结果为152545。
24.main()
{int a,b,c;
a=9; b=5;
c=max(a,b);
printf(“max=%d”,c);
}
int max(int x, int y)
{int z;
if (x>y) z=x;
else z=y;
return (z);
}
运算结果为max=9。
25.main()
{int a[3][3]={1,1,1},i,j;
for(i=1;i<3;i++)
for(j=i;j<3;j++)
{a[i][j]=a[i-1][j]+a[i-1][j-1];
a[j][i]=a[j][i]-a[i][j];
}
for(i=1;i<3;i++){printf(“\n”);
for(j=1;j<3;j++)
printf(“%5d”,a[i][j]);
}
}
运算结果为 0 1
1 0
26.void ch(char str1[],char str2[],char str[])
{int i,j;
for(i=0;str1[i]!=’\0’;i++)
str[i]=str1[i];
for(j=0;str2[j]!=’\0’;j++)
str[i+j]=str2[j];
str[i+j]=’\0’;
}
main()
{char s1[80],s2[80],s[80];
scanf(“%s”,s1);
scanf(“%s”,s2);
ch(s1,s2,s);
printf(“The new string is %s\n”,s);
}
程序(段)或函数的功能为将字符串s1和s2合并复制到字符串s中。
27.#define PI 3.14159
#define S® PIRR
#define L® 2PIR
main()
{int r,s,l;
scanf(“%d”,&r);
s=S®;
l=L®;
printf(“s=%d\nl=%d\n”,s,l);
程序(段)或函数的功能为求半径为r的圆的周长的半径。
28.#include <math.h>
int SB(int x)
{int a=(int)sqrt(x);
int i=2;
while (i<=a){
if (x%i0) break;
i++;}
if(i<=a) return 0; else return 1;}
程序(段)或函数的功能为判断x是否为素数。
29.main()
{int n;
for(n=1;n<=1000;n++)
{if (n%5!=0)
continue;
printf(“%d”,n);
}
}
程序(段)或函数的功能为求1-1000中所有5的倍数。
30.#include<string.h>
void main()
{char *a[5]={“student”,”worker”,”cadre”,”apple”,”peasent”};
char *p1;
int i;
p1=a[0];
for( i=0;i<5;i++)
if(strcmp(a[i],p1)>0) p1=a[i];
printf(“%s\n”,p1);}
程序(段)或函数的功能为求字符串数组a中最小的字符串。
31、main()
{union ss
{char s[2];
int i;
}a;
a.i=123;
a.s[0]=3; a.s[1]=2;
printf(“%d”,a.i);
}
运算结果为515。
32、void f(int x,int y, int *p1, int p2)
{p1=2x; p2=xy;}
main()
{int a,b,c,d;
a=9; b=7;
f(a,b,&c,&d);
printf(“%d,%d\n”,c,d);
}
运算结果为18,63。
33、main()
{int a=3;
while (–a)
printf(“%d”,a–);
}
运算结果为2。
34、void main()
{ int a=10,b=20;
printf(“%d %d\n”,a,b);
{int b;
a=4;
int b=a+35;
printf(“%d %d\n”,a,b);}
printf(“%d %d\n”,a,b);
}
运算结果为 10 20
40 75
40 20
35、main()
{int a[10]={7,4,8,6,9,5,3,10,2,1};
int i, max, min;
max=min=0;
for(i=0;i<10;i++)
if (a[max]<a[i]) max=i;
else if(a[min]>a[i]) min=i;
i=a[max]; a[max]=a[9]; a[9]=i;
i=a[min]; a[min]=a[0]; a[0]=i;
for(i=0;i<10;i++) printf(“%5d”,a[i]);
}
运算结果为10 4 8 6 9 5 3 1 2 6 。
36、float fac(int n)
{float f;
if(n<0)
printf(“error!”);
else
if(n0||n==1)f=1;
else f=fac(n-1)*n;
return f;
}
main()
{int n;
float y;
scanf(“%d”,&n);
y=fac(n);
printf(“%d!=%10.0f”,n,y);
}
程序(段)或函数的功能为:求n!.
37、#include “stdio.h”
main()
{FILE *fp1, *fp2;
if((fp1=fopen(“name1.dat”,”r”))==NULL)
{printf(“cannot open file\n”);exit(0);}
if((fp2=fopen(“name2.dat”,”w”))NULL)
{printf(“cannot open outfile\n”);exit(0);}
while(!feof(fp1))fputc(fgetc(fp1),fp2);
fclose(fp1);
fclose(fp2);
}
程序(段)或函数的功能为:实现文件的剪切。
38、int f()
{static i=0;
i++;
return i;
}
main()
{int i,s=0;
for(i=0;i<5;i++)
s+=f();
printf(“%d\n”,s);
}
程序(段)或函数的功能为:求0到5的和。
39、int LA(int *a,int n)
{int s=0,i;
for (i=0;i<n;i++)
s+=a[i];
return s;}
void main(){
int a[]={10,20,30,40,50,60};
int b=LA(a,5);
printf(“b=%d\n”,b);}
程序(段)或函数的功能为:求数组a中前5个元素之和。
40、int f(int n)
{
int i;
for(i=2;i<=n;i++)
if(n%i0) return (0);
return 1;
}
程序(段)或函数的功能为:判断一个数是否素数。