while((ch=while getchar n())!='/n' {s=(node*)malloc(sizeof(node));}什么意思啊

一、判断题:(每小题1分,共6分)
1、若有说明int c;则while(c=getchar());是正确的C语句。 ( )
2、int i,*p=&i;是正确的C说明。 ( )
3、7&3+12的值是15。 (
4、while 1 i,j;
一定是错误的C说明。 ( )
5、for( ; ; )S中的语句S必执行无穷多次。
6、unsigned 和void 在C中都是保留的。 ( )
二、单项选择题(每小题1分,共5分)
1、设有int i;则表达式i=1,++i,++i||++i,i的值为 ( )
2、设有int i;则表达式(i=1,i=10)?i++||++i:++i的值为 ( )
3、设有int a[
]={10,11,12},*p=&a[0];则执行完*p++;*p+=1;后a[0],a[1],a[2]的值依次是 ( )
A.10,11,12
B.11,12,12
C.10,12,12
D.11,11,12
4、设有int i, j, 则表达式i=1,j=2,k=3, i&&j&k 的值为 ( )
A.1 B.2 C.3 D.0
5、设有说明int
s[2]={0,1},*p=s; 则下列错误的C语句是 ( )
A.s+=1; B.p+=1; C.*p++; D.(*P)++;
三、填空题(每小题2分,共10分)
1、char *(*pa)[10];说明pa是______________。
2、表达式98&&8&&31&1的值为________________。
3、printf(&%5.3f\n&,45);输出为_____________。
4、表达式~3&(2&3^4)的值为_______________。
5、若有说明int i,j,k;则表达式i=10,j=20,k=30,k*=i+j的值为_______________。
四、程序分析,给出下列各程序的执行结果(输出)
1、#include &stdio.h&
&&&&&& int f(n)
&&&&&& int
&&& {static
&&& while(n)
&&& return
&&& main()
&&& {int i,j;
&&& i=f(3); j=f(5);
&&& printf(&\nThe output of 5.1. is:\n\n&);
printf(&i=%d j=%d \n&,i,j);
2、#include &stdio.h&
&&& trans(m,n)
&&& int m,n;
&&& {int i;
&&& i=m%n;trans(m/n,/);
(i&10) printf(&%d&,i);
printf(&%c&,'A'+i-10);
&&& {int i;
&&& printf(&\nThe output of 5.3 is:\n\n&);
&&& printf(&\n%d-&-&,-23);
&&& trans(21,3);
&&& printf(&\n%d-&&,123);
&&& trans(123,16);
3、#include &stdio.h&
&&& #include &malloc.h&
&&& typedef struct node
&&& struct node *
&&& }t_node;
&&& create(h)
&&& t_node
&&& int i,m=0;t_node *p,*q;
&&& scanf(&%d&,&i);
&&& while(i)
&&& p=(t_node*)malloc(sizeof(t_node));
&&& p-&d=i&m?i:m;m=i;p-&next=NULL;
&&& if(*h)
&&& q-&next=p;
&&& scanf(&%d&,&i);
&&& t_node
*h=NULL,*p;
&&& create(&h);p=h;printf(&\nThe output of
4.3 is:\n\n&);
&&& while(p)
&&& {printf(&%d&,p-&d);
4、#include &stdio.h&
&&& main()
&&& { int m,n,sign,t;
&&& scanf(&%d%d&,&m,&n);
&&& while(m*n){
(m&=0&&n&=0||m&=0&&n&=0) sign=0;
&&& m=m&0?m:-m; n=n&0?n:-n;
&&& while(n--)
&&& printf(&\nThe result is:&);
(sign) printf(&-&);
&&& printf(&%d\n&,t);
&&& scanf(&%d%d&,&m,&n);
5、#include &stdio.h&
a[10]={1,2,3,4,5,6,7};
&&& int *m,n;
&&& if(n&1)
&&& {t=*m;*m=*(m+n-1);*(m+n-1)=t;
&&& rev(m+1,n-2);
&&& main()
&&& {int i;
&&& printf(&\nThe output of 5.5 is:\n\n&);
&&& rev(a+2,6);
&&& for(i=0;i&10;i++)
&&& printf(&%d&,a[i]);
&&& printf(&\n&);
&&& rev(a,5);
&&& for(i=0;i&10;i++)
&&& printf(&%d&,a[i]);
&&& printf(&\n&);
五、在下面程序中横线处填上适当字句,使其能正确执行(6分)
[程序说明] 该程序用于计算cos
x值,依据公式为:
要求输入X(以角度计)和误差值epsil。当epsil&=0时程序停止执行。
#include &stdio.h&
#define PI 3.141526
double ex(x,epsil)
float x,epsil;
double t,s; int
s=0.0; t=1.0; n=1;
while ((t&=0.0?t:-t)&epsil){
s+=t;___(1)___;___(2)___;
float x,epsil;
printf(&Input x,epsil:(epsil&=0 to quit)\n&);
scanf(&%f%f&,&x,&epsil);
while(epsil&0.0){
x*=PI/180;
printf(&e^%f=%f\n&,x,ex(x,epsil));
printf(&Input x,epsil:(epsil&=0 to quit)\n&);
scanf(&%f%f&,&x,&epsil);
六、在下面程序中横线处填上适当字句,使其能正确执行(18分)
[程序说明]该程序能计算两个整数集合A与B的差,其中A与B的元素都以值的递增
次序存放中单链表中,A中的同一元素允许在单链表中出现多次,A与B的差也以值的
递增次序存于单链表内,但是同一元素不允许出现多次。假定调用diff前a,b的值已
#include &stdio.h&
typedef struct node{
struct node *
void diff(a,b,c)
tnode *a,*b,__(1)__;
int last_a; tnode *p;
*c=NULL; last_a=-9999;
while(a&&b){
if(a-&d==b-&d){
if (a-&d&d-&d)
if (a-&d!=last_a){
last_a=a-&d;
p=(tnode *)malloc(sizeof(tnode));
p-&d=last_a;
p-&next=*c;
if(__(5)__){
last_a=a-&d;
p-&d=last_a;
p-&next=*c;
void print(h)
printf(&%d &,h-&d);
tnode *a,*b,*c;
diff(a,b,&c);
&&&&&&&&&&&&&&&&&&&&&& 试卷二
一、选择题
1 C语言中最简单的数据类型包括
&&&&A)整型、实型、逻辑型B)整型、实型、字符型
&&&&C)整型、字符型、逻辑型D)整型、实型、逻辑型、字符型
2 C语言中,运乍对象必须是整型数的运算符是
&&&A) %B) 、C) %和、D) **
3 为表示关系x≥y≥z,应使用C语言表达式
&&&A)(x)=y)&&(y)=z)B(x)=y)AND(y)=z)
&&&C)(x)=y)=z)D)(x)=y)&(y)=z)
4下述对C语言字符数组的描术中错误的是
&&&&A)字符数组可以存放字符串
&&&&B)字符数组中的字符串可以整体输入、输出
&&&&C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
&&&&D)不可以用关系运算符对字符数组中的字符串进行比较
5 设有如下定义:
&&&&int x=10,y=3,z;
&&&&则语句
&&&&printf(“%d、n”,z=(x%y,x/y));
&&&&的输出结果是
&&&&A)1 B)0
&&&&C)4 D)3
6 以下程序的输出结果是
&&&&main()
&&&&{int x=10,y=10;
&&&&printf(“%d %d、n”,x——,——y);
&&&&A)10 10 B)9 9
&&&C)9 10 D)10 9
7 以下说法中正确的是
&&&&A)C语言程序总是从第一个的函数开始执行
&&&&B)在C语言程序中,要调用的函数必须在main()函数中定义
&&&&C)C语言程序总是从main()函数开始执行
&&&&D)C语言程序中的main()函数必须放在程序的开始部分
8 执行下面的程序后,a的值为
&&&&main()
&&&&{int a,b;
&&&&for (a=1,b=1;a&=100;a)
&&&&{if(b)=20}
&&&&if(b%3==1)
&&&&}b--=5;
&&&&A}7 B}8 &&&&C)9 D)10
9 以下程序段的输出结果是
&&&&int x=3;
&&&&{printf(“%3d”,x——=2);}
&&&&while(!(——x));
&&&&A)1 B)3 0&&&C)1——2 D)死循环
10 定义如下变量:
&&&&int n=10;
&&&&则下列循环的输出结果是
&&&&while(n&7)
&&&&{n——;
&&&&printf(“%d、n”,n);
&&&&A)10B)9 C)10 D)9
11 两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是
&&&&main()
&&&&scanf(“%d”,&x);
&&&&if(x&)5}printf(“%d”,x);
&&&&else printf(“%d、n”,x ——);
&&&&A)7和5 B)6和3 C)7和4 D)6和4
12 执行以下程序后,y的值是
&&&&main ()
&&&&{int a[]={2,4,6,8,10};
&&&&int y=1,x,*p;
&&&&p=&a[1];
&&&&for(x=0;x&3;x)
&&&&y =*(p+x);
&&&&printf(“%d\n”,y);
&&&&A)17 B)18 C)19 D)20
&13 下列程序执行后输出的结果是:
&&&&int d=1;
&&&&fun (int q)
&&&&{int d=5;
&&&&d =p ;
&&&&printf(“%d”,d);
&&&&main()
&&&&{int a=3;
&&&&fun(a);
&&&&d =a ;
&&&&printf(“%d\n”,d);
&&&&A)8 4 B)9 6 C)9 4 D)8 5
14 C语言提供的合法的数据类型关键字是
&&&&A)Double B)short C)integer D)Char
15 在C语言中,合法的长整型常数是
&&&&A)0L B)4962710 C)0. D)2.1869e10
16 表达式:10!=9的值是
&&&&A)true B)非零值C)0 D)1
17 若有说明和语句:
&&&&int a=5;
&&&&此处表达式a的值是
&&&&A)A)7 B)6 C)5 D)4
18 在下列选项中,不正确的赋值语句是
&&&&A)t;B)n1=(n2=(n3=0));
&&&&C)k=i==j;D)a=bc=1;
19 若有说明:int i,j=7,*p=&i;,则与i=j;等价的语句是
&&&&A)I=*P;B)*P=*&J;C)i=&j;D)i=**p;
20 不能把字符串:Hello!赋给数组b的语句是
&&&&A)char b[10]={'H','e','l','l','o','!'};
&&&&B)char b[10];b=“Hello!”;
&&&&C)char b[10];strcpy(b,“Hello!”);
&&&&D)char b[10]=“Hello!”
21 以下程序的输出结果是
&&&&A)6 B)6789 C)'6'D)789
&&&&main()
&&&&{char a[10]=”6789”,*p;
&&&&&&&p=a;
&&&&printf(“%s\n”,p);
22 &以下程序的输出结果是
&&&&A}2 0 B}3 1 C}3 2 1 0 D}2 1 0
&&&&main()
&&&&{int n=4;
&&&&while(n&0){ n--; printf(“%d ”,n); }
23 以下程序运行后,输出结果是
&&&&A)84 B)99 C)95 D)44
&&&&int d=1l
&&&&fun (int p)
&&&&{int d=5;
&&&&printf(“%d”,d);
&&&&main()
&&&&{itn a=3;
&&&&fun(a);
&&&&printf(“%d、n”,d);
24 在下列选项中,没有构成死循环的程序估是
&&&&A)int i =100;
&&&&whine(1)
&&&&{i=i%3;
&&&&if (i&100)
&&&B)for (;;);
&&&C)int k=1000;
&&&&do {k;} while(k&1000);
&&&D)int s=36;
&&&&while (s);--s;
25 阅读以下程序:
scanf(&%d&,&x);
if(x--&5) printf(&%d&'x);
else printf(&%d&'x++);
程序运行后,如果从键盘上输人5,则输出结果是
A)3 B) 4 C) 5 D) 6
26 以下程序的输出结果是
{ int num= 0;
while(num&=2)
{ num++; printf(&%d\n&,num);
A} 1 B} 1 C}1 D} l
27 以下程序的输出结果是
{ char c='z';
printf(&%c&,c-25);
A) a B) Z C) z-25 D) y
28以下选项中,非法的字符常量是
A) '\t' B) '\17' C)&n& D) '\xaa'
29 若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是
A) i=*p; B) p*=*&j; C) i=&j; D) i=**p;
30 以下定义语句中,错误的是
A) int a[]={1,2}; B) char *a[3];
C) char s[10]=&test&; D) int n=5,a[n];
31 以下程序的输出结果是
{ int i, a[10];
for(i=9;i&=0;i--) a[i]=10-i;
printf(&%d%d%d&,a[2],a[5],a[8]);
A) 258 B) 741 C) 852 D) 369
32以下数组定义中不正确的是
A) int a[2][3];
B) int b[][3]={0,1,2,3};
C) int c[100][100]={0};
D) int d[3][]={{1,2},{1,2,3},{1,2,3,4}};
33以下程序的输出结果是
{ int a[4][4]={{1,3,5},{2,4,6},{3,5,7}};
printf(&%d%d%d%d\n&,a[0][3],a[1][2],a[2][1],a[3][0];
A} 0650 B} 1470 C} 5430 D} 输出值不定
34以下选项中,不能正确赋值的是
A) char s1[10];s1=&Ctest&;
B) char s2[]={'C', 't', 'e', 's', 't'};
C) char s3[20]=&Ctest&;
D) char *s4=&Ctest\n&
35 &以下程序的输出结果是
for(a=1, b=1; a&=100; a++)
{ if(b&=10)
if (b%3= =1)
printf(&%d\n&,a);
A) 101 B) 6 C) 5 D) 4
36&&有以下程序段
while(k=1) k++;
while 循环执行的次数是
A) 无限次 B) 有语法错,不能执行
C) 一次也不执行 D) 执行1次
37 以下程序执行后sum的值是
A)10 B)6 C) 不确定 D)0
for(i=1;i&4;i++) sum+=i;
printf(&%d\n&,sum);
38 &以下程序的输出结果是
A) 1,5,9 B) 1,4,7 C) 3,5,7 D)3,6,9
{ int i, x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i&3;i++) printf(&%d,&,x[i][2-i]);
39 以下程序的输出结果是
A) 18 B) 19 C) 20 D)21
{ int a[3][2]={ {1,2},{3,4},{5,6} },i,j,s=0;
for(i=0;i&3;i++)&
for(j=0;j&2;j++)s+=a[i][j];
printf(&%d\n&,s);
40 以下程序的输出结果是:
{ int a=1, b=2;
a=a+b; b=a-b; a=a-b;
printf(&%d,%d\n&, a, b );&
A)1,2 B)3,1 C)3,2 D)2,1
二、填空题
1 以下程序运行后的输出结果是【1】。
{ int i=10, j=0;
{ j=j+i; i-;
while(i&2);
printf(&%d\n&,j);
2 设有以下程序:
{ int n1,n2;
scanf(&%d&,&n2);
while(n2!=0)
{ n1=n2%10;
printf(&%d&,n1);
程序运行后,如果从键盘上输入1298;则输出结果为【2】。
3 以下函数的功能是:求x的3次方,请填空。
double fun( double x)
for(i=1, z=x; i&3;i++) z=z* 【3】;
4 下面的程序是求1+2+…+10的值,请填空:
{int I,s=0;
for(I=1;I&=10;I++)
5 下面的程序是求1*2*3*…10,请填空:
{int I,s=【5】;
6 下面的程序是求数组a中的最大值,请填空
{int a[5]={23,4,5,2,32},I,
max=【7】;
for(I=1;I&=4;I++)
if(max&a[i]) 【8】;
7下面程序的输出结果是【9】:
int abc(int z)
{return z+10;
{int x=3,y;
printf(“%d”,y);
8下面程序的输出结果是【10】:
{int x=11,*p=x;
printf(“%d”,x);
For(I=1;I&=10;I++)
一、单项选择题 (本大题共10小题,每小题1分,共10分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填在题后的括号内。错选、多选或未选均无分。
1.正确的自定义标识符是 ( )
A.a=2 B.a+b
C.name D.default
2.错误的转义字符是 ( )
A.'\091' B.'\\'
C.'\0' D.'\''
3.设int a,b,c;执行表达式a=b=1,a++,b+1,c=a+b--后,a,b和c的值分别是 ( )
A.2,1,2 B.2,0,3
C.2,2,3 D.2,1,3
4.在C语言中,错误的常数是 ( )
A.1E+0.0 B.5.
C.0xaf D.0L
5.下面运算符优先级最高的是 ( )
6.若数组名作实参而指针变量作形参,函数调用实参传给形参的是 ( )
A.数组的长度 B.数组第一个元素的值
C.数组所有元素的值 D.数组第一个元素的地址
7.变量的指针含意是指变量的 ( )
A.值 B.地址
C.存储 D.名字
8.设int k;则语句for(k=0;k=1;k++);和语句for(k=0;k==1;k++);执行的次数分别是 ( )
A.无限和0 B.0和无限
C.都是无限 D.都是0
9.某文件中定义的静态全局变量(或称静态外部变量)其作用域是 ( )
A.只限某个函数 B.本文件
C.跨文件 D.不限制作用域
10.设struct { } Q, *p=&Q;错误的表达式是( )
A.Q.a B.(*p),b
C.p-&a D.*p.b
二、填空题 (本大题共5小题,每空2分,共20分)
请在每小题的空格上填上正确答案。错填、不填均无分。
11.在C语言中,单目运算符的结合方向(运算方向)是_____________;唯一的一个三目运算符是_____________。
12.字符串&A\\B&的内容是_____________,存储需要的字节数是_____________。
13.设int a[10],b[3][3];数组元素a[5]和b[1][2]分别用指针表示的形式是_____________和_____________。
14.编译预处理的三种形式除宏定义外,还有_____________和_____________。
15.文件操作方式&w&和&rb+&的含义分别是__________________________和__________________________。
三、程序分析题 (本大题共7小题,每小题5分,共35分)
阅读下列程序,将输出结果分别写到各题右侧的空白处。
{int a=3,b=9,c=2;
if(a if(a printf(&%5d%5d%5d\n&,a,b,c);
void change(int *x,int y)
t=*x;*x=y;y=t;
{int a=3,b=5;
change(&a,b);
printf(&a=%d,b=%d\n&,a,b);
for(j=4;j&=2;j--)
{case 0: printf(&%4s&,&ABC&);
case 1: printf(&%4s&,&DEF&);
case 2: printf(&%4s&,&GHI&);break
case 3: printf(&%4s&,&JKL&);
default: printf(&%4s&,&MNO&);
printf(&\n&);
{int j,a[6]={1,2}};
for(j=3;j&6;j++)
a[j]=a[j/2]+a[j%3]-a[j-2];
for(j=0;j&6;j++)
printf(&%5d&,a);
printf(&\n&);
int f(int a)
{int b=0;static int c=3;
a++;++c;++b;
return a+b+c;
for(i=0;i&2;i++)print(&%5d&,f(a));
printf(&\n&);
#define N 2
#define M N+1
#define NUM 2*M+1
int fib(int n)
return n&3?2:fib(n-1)+fib(n-2);
printf(&%5d%5d\n&,NUM,fib(5));
22.假设在DOS提示符下显示源程序如下(PROG.exe程序也在C盘中):
C&type PROC.c
main(int argc,char * argv[])
{while(--argc&0)
printf(&%s&,argv[argc]);
printf(&\n&);
写出执行下列命令后的输出结果
C&PROG 2008 OLYMPIC BEIJING &回车&
四、程序填空题 (本大题共2小题,每空3分,共15分)
23.任意输入三条边(a,b,c)后,若能构成三角形且为等腰、等边和直角,则分别输出DY、DB和ZJ,若不能构成三角形则输出NO。
{ float a,b,c,a2,b2,c2
scanf(&%f%f%f%,&a,&b,&c);
printf(&%5.1f,%5.1f,%5.1f&,a,b,c);
if(a+b&c&&b+c&a&&a+c&b)
if(____________________________________)printf(&DY&);
if(____________________________________)printf(&DB&);
a2=a*a;b2=b*b;c2=c*c;
if(____________________________________)printf(&ZJ&);
printf(&\n&);
else printf(&NO\n&);
24.输出下列图形。
1 2 3 4 5 6 7 8 9 main()
2 3 4 5 6 7 8 9 int I,J;
3 4 5 6 7 8 9 for(I=1;I&=_________;I++)
4 5 6 7 8 9 for(J=_________;J&=9;J++)printf(&%2d&,J);
5 6 7 8 9 printf(&\n&);
五、程序设计题 (本大题共2小题,每小题10分,共20分)
写出下列问题的程序。
25.输入十个整数,计算出平均值(aver),找出其中最大者(max)和最小者(min)并将三者输出。
26.将十个实型数输入数组(float n[10];)逆序存放后再输出。
一.选择题(40%)
1.下列各选项中,()是有效的标识符。
A)abB)3dayC)day-3D)#abc
2.已知有定义:char ch;则如下正确的赋值为()。
A)ch='M'B)ch='55'C)ch="M"D)ch="55"
3.已知int y; float x=-3;执行语句 y=x%2;则变量y的值是()。
A)1B)-1C)0D)语句本身是错误的
4.已知字母b的ASCII码为98,如ch为字符型变量,则表达式ch='b'+'5'-'2'的值为()。
A)eB)dC)102D)100
5.已知int j,i=1;则执行j=-i++; i和j的值为()。
A)1,-1B)1,1C)2,-1D)2,1
6.已知 int a=-1,b=4,k; k=(++a&0&&!(b――&0));则k, a, b的值分别为()。
A)1,0,4B)1,0,3C)0,0,3D)0,0,4
7.C语言程序的基本单位是( )。
A)语句B)程序行C)函数D)字符
8.下列程序的运行结果是()。
{char s[20]=“China”;
printf("%d\n",strlen(s));
A)5B)6C)20D)无显示
9.已知int i,j,k;scanf(“%d%d%d”,&i,&j,&k);若从键盘送入i,j,k的值分别为1,2,3时,则错误的输入方式是()。
A)1,2,3B)1(回车)2(回车)3(回车)
C)123 D)1(回车)23
10.有以下程序段
while(k=1) k++;
while循环执行的次数 ()。
A)无限次B)有语法错,不能执行C)一次也不执行D)执行1次
11.当调用函数时,实参是一个数组名,则向函数传递的是()。
A)数组的长度B)数组每一个元素的地址C)数组的首地址D)数组每个元素中的值 
12.以下程序的输出结果是()。
{Int j,x[3][3]={1,2,3,4,5,6,7,8,9};
for(j=0;j&3;j++) printf("%d,",x[j][2-j])) ;
A)1,5,9B)1,4,7C)3,5,7D)3,6,9
13.语句for( i =0;i++&3;) ;执行后,变量i的值为(  )。
A)2B)3C)4D)5
14.以下程序的输出结果是()。
{int a=0,b=3,k;
printf("%d\n",k=(a%b,a/b));
A)0B)1C)2D)4
15.下列叙述中正确的是()。
函数定义不有嵌套,但函数调用可以嵌套
函数定义可以嵌套,但函数调用不可以嵌套
函数定义和函数调用都不能嵌套
函数定义与函数调用都可以嵌套
16.已知说明语句int (*p)( );,则下列叙述正确的是()。
p是一个指针变量,它指向一个一维数组
p是一个指针变量,它指向一个整型数据
p是一个指针变量,它指向一个返回值是整数的函数
以上都不对
17.若x为整型变量,以下定义指针的正确语句是()。
A)int p=&x;B)intp=x;
C)int *p=&x;D)p=x;
18.若有以下结构变量
则对成员a合适的引用为以下的(  )项。
A)p.x.aB)p-&x.aC)(*p).x.aD)(*p).a
19.C语言中文件的存取是以()单位
A)函数B)语句C)字节D)记录
20.当调用函数fputc输出字符时,若操作不成功,则返回的值是()。
A)EOFB)1C)0D)输出的字符
二.请给出下列程序的运行结果(40%)
1.main( )
{int i=3,j=4;
printf(“%d,%d\n”,i++,j++);
printf(“%d,%d\n”,++i,++j);
运行结果:
2.#define SQR(x) x*x
{int a=10,k=2,m=1;
a/=SQR(k+m)/SQR(k+m);
printf("%d\n",a);
运行结果:
3.main( )
{char *p="Wednesday";
printf("%s\n",p);
运行结果:
4.long fun(int n)
if(n==1||n==2) s=2;
else s=n-fun(n-1);
return s;
{printf("%ld\n",fun(3));
运行结果:
5.#include"stdio.h"
{char b[ ] ="program";
char *a="PROGRAM";
printf("\n%c%s\n",*a,b+1);
printf("%s\n",&b[3]);
运行结果:
6.main( )
{char ch[2][5]={"6937",,8254"},p[2][5];
int j,k,s=0;
for(j=0;j&2;j++)p[j]=ch[j];
forj=0;j&2;j++)
for(k=0;p[j][j]&'\0';j+=2)
s=10*s+p[j][k]-'0';
printf("%d\n",s);
运行结果:
7.main( )
for(j=1;j&=5;j++)
{if(j%2==0) printf("*");
else continue;
printf("#");
printf("$\n");
运行结果:
8.main( )
for(j=0;j&10;j++)
{if(j%2!=0) continue;
printf("%d",j);
 运行结果:
三.编程题(20%)(四题中任选二题)
判断输入整数x的正负性和奇偶性。
从键盘输入10个整数,求出其中的最大值。
输入一行字符,统计其中的数字、字母、空格和其它字符出现的次数。
求整数m的所有素数因子,并输出。
选择题(1-20每小题2分,共40分)
(1) 在C语言中,如果下面的变量都是int类型,则输出的结果是() 。
sum=pad=5; pAd=sum + + ,pAd + + , + + pAd;
printf(&%d\n&,pad);
A) 7 B) 6 C) 5 D) 4
(2) 以下程序的输出结果是() 。
# include &stdio.h&
int i=010 , j = 10;
printf(&%d,%d\n&,+ +i , j - -);
A) 11,10 B) 9,10 C) 010,9 D) 10,9
(3) 已知在ASCII代码中,字母A的序号为65,以下程序的输出的结果是() 。
# include &stdio.h&
char c1='A', c2='Y';
printf(&%d,%d\n&,c1,c2);
A) 因输出格式不合法,输出错误信息 B)65,90 C)A,Y D)65,89
(4) 语句while(!E);中的条件!E等价于 () 。
A)E = = 0 B)E!=1 C)E!=0 D)~E
(5) 以下程序的输出结果是 ()。
# include &stdio.h&
printf(&%d\n&,NULL);
A) 不确定的(因变量无定义) B)0 C)-1 D)1
(6) 以下函数调用语句中含有()个实参。
func((exp1,exp2),(exp3,exp4,exp5));
A) 1 B) 2 C) 4 D) 5
(7) 下面的程序中()有错误(每行程序前面的数字是行号)。
1 #include &stdio.h&
4 float a[3]={0,0};
6 for(i=0;i&3;i + + ) scanf(&%d&,&a[i]);
7 for(i=1;i&3;i + + ) a[0]=a[0]+a[i];
8 printf(&%f\n&,a[0]);
A) 没有 B)第4行 C)第6行 D)第8行
(8) 设有语句int a=3;则执行了语句a+=a-=a*a;后,变量a的值是() 。
A)3 B)0 C)9 D)-12
(9) 以下的for循环() 。
for(x=0,y=0; (y!=123)&&(x&4); x + + );
A) 是无限循环 B)循环次数不定 C)执行4次 D)执行3次
(10) 设有语句char a='\72';则变量a () 。
A)包含1个字符 B)包含2个字符 C)包含3个字符 D)说明不合法
(11) C语言中 () 。
A)不能使用do-while语句构成的循环
B)do-while语句构成的循环必须用break语句才能退出
C)do-while语句构成的循环,当while语句中的表达式值为非零时结束循环
D)do-while语句构成的循环,当while语句中的表达式值为零时结束循环
(12) 以下程序的输出结果是() 。
# include &stdio.h&
# include &string.h&
char str[12]={'s','t','r','i','n','g'};
printf(&%d\n&,strlen(str));
A) 6 B) 7 C) 11 D) 12
(13) 以下程序的输出结果是 () 。
# include &stdio.h&
int a=2,c=5;
printf(&a=%%d,b=%%d\n&,a,c);
A) a=%2,b=%5 B) a=2,b=5 C) a=%%d,b=%%d D) a=%d,b=%d
(14) 以下程序的输出结果是 () 。
# include&stdio.h&
int a ,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf(&%d,%d\n&,a,b);
A) 6,1 B) 2,1 C) 6,0 D) 2,0
(15) 以下for语句构成的循环执行了() 次。
# include &stdio.h&
# define N 2
# define M N+1
# define NUM (M+1)*M/2
int i , n=0;
for ( i=1;i&=NUM;i + + );
printf(&%d&,n);
printf(&\n&);
A) 5 B) 6 C) 8 D) 9
(16) 设有以下语句,则()不是对a数组元素的正确引用,其中0≤i&10。
int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a;
a[p-a] B) *(&a[i]) C) p[i] D) *(*(a+i))
(17) 以下程序的输出结果是() 。
# include&stdio.h&
int i=1,j=3;
printf(&%d&,i + + );
{ int i=0; i+=j*2; printf(&%d,%d&,i,j); }
printf(&%d,%d\n&,i,j);
A) 1,6,3,1,3 B) 1,6,3,2,3 C) 1,6,3,6,3 D) 1,7,3,2,3
(18) 以下程序的输出结果是() 。
# include &stdio.h&
int k=4,m=1,p;
p=func(k,m); printf(&%d,&,p); p=func(k,m); printf(&%d\n&,p);
func(int a,int b)
static int m=0,i=2;
i+=m+1; m=i+a+b;
return(m);
8,17 B) 8,16 C) 8,20 D) 8,8
(19) 设有以下语句:
char str1[]=&string&,str2[8],*str3,*str4=&string&;
则 () 不是对库函数strcpy的正确调用,此库函数用业复制字符串。
A) strcpy(str1,&HELLO1&); B) strcpy(str2,&HELLO2&);
C) strcpy(str3,&HELLO3&); D) strcpy(str4,&HELLO4&);
(20) C语言中形参的缺省存储类别是 () 。
A)自动(auto) B)静态(static) C)寄存器(register) D)外部(extern)
填空题(每空5分,共30分)
(1)以下程序求a数组中的所有素数的和,函数isprime用来判断自变量是否为素数。素数是只能被1和本身整除且大于1的自然数。
#include &stdio.h&
int i,a[10],*p=a,sum=0;
printf(&Enter 10 num:\n&);
for(i=0;i&10;i + + ) scanf(&%d&,&a[i]);
for(i=0;i&10;i + + )
if(isprime(*(p+ ____(1)_____ )) = = 1)
printf(&%d&,*(a+i));
sum+=*(a+i);
printf(&\nThe sum=%d\n&,sum);
isprime(int x)
for(i=2;i&=x/2;i + + )
if(x%i = = 0)
return (0);
______(2)______;
(2) 以下程序调用invert函数按逆序重新放置a数组中元素的值。a数组中的值在main函数中读入。
#include &stdio.h&
#define N 10
invert(int *s,int i,int j)
*(s+j)=(s+j);
invert(s, ___(3)___ ,j-1);
int a[N],i;
for(i=0;i&N;i + + ) scanf(&%d&,a+ ____(4)___ );
invert(a,0,N-1);
for(i=0;i&N;i + + ) printf(&%d&,a[i]);
printf(&\n&);
(3)以下程序的功能是将字符串a中下标值为偶数的元素由小到大排序,其他元素不变.
#include &stdio.h&
char a[ ]=”labchmfye”,t;
for(i=0;i&7;i+=2)
for(j=i+2;j&9;____(5)___)
if(____(6)____)
a[i]=a[j];
printf(“\n”);
阅读程序题(每题5分共20分)
(1) 阅读下列程序:
#include&stdio.h&
int i, j, row, column,m;
static int array[3][3]={{100,200,300},{28,72,-30},{-850,2,6}};
m=array[0][0];
for (i=0; i&3; i++)
for (j=0; j&3; i++)
if (array[i][j]&m)
m=array[i][j]; row=i; column=j;
printf(&%d,%d,%d\n&,m,row,column);
上述程序的输出结果是_________ 。
(2) 下面程序的输出结果是_______ 。
#include&stdio.h&
int a=3, b=2, c=1;
{ int b=5, c=12;
printf( '%d,%d,%d,&,a,b,c);
printf( '%d,%d,%d,&,a,b,c);
(10) 请读程序 。
#define PR(ar) printf(&%d&, ar)
{ int j, a[]={ 1,3,5,7,9,11,13,15}, *p=a+5;
for(j=3; j--)
case 2: PR(*p++);
case 3: PR(*(--p));
}上面程序的输出结果是__________.
(4) 下面程序的输出是__________ 。
long fun5(int n)
if((n==1)||(n==2))
s=n+fun5(n-1);
return(s);
x=fun5(4);
printf(&%ld\n&,x);
程序题(10分)
输入两个整数,求他们相除的余数,用带参数的宏来编程实现.
选择题(1-20每小题2分,共40分)
(1) 下列语句中符合C语言语法的赋值语句是
A) a=7+b+c=a+7; B) a=7+b++=a+7; C) a=7+b,b++,a+7 D) a=7+b,c=a+7;
(2) 在C语言中,要求运算数必须是整型的运算符是
A) % B) / C) & D) !
(3) 已知字母A的ASCII码为十进制的65,下面程序的输出是
A) 67,D B) B,C C) C,D D) 不确定的值
{ char ch1,ch2;
ch1='A'+'5'-'3';
ch2='A'+'6'-'3';
printf(&%d,%c\n&,ch1,ch2);
(4) 下面程序的输出是
A) 0 B) 1 C) 3 D) 不确定的值
{ int x=10,y=3;
printf(&%d\n&,y=x/y);
(5) 若执行下面的程序时从键盘上输入3和4,则输出是
A) 14 B) 16 C) 18 D) 20
int a,b,s;
scanf(&%d %d&,&a,&b);
if(a&b)s=b;
printf(&%d\n&,s);
(6) 下面的程序
A) 有语法错误不能通过编译
B) 输出* * * *。
C) 可以通过编译,但是不能通过连接,因而不能运行。
D) 输出# # # #。
{ int x=3,y=0,z=0;
if(x=y+z)printf(&* * * *&);
else printf(&# # # #&);
(7) 下面的程序
A) 输出的是1 B) 输出的是1和-2 C) 输出的是3和0 D) 是死循环
{ int x=3;
printf(&%d\n&,X-=2);
}while(!(--x));
(8) 下面程序的输出是
A) 17 B) 18 C) 23 D) 24
{ int x=023;
printf(%d\n&,--x);
(9) 若执行下面的程序时从键盘上输入5,则输出是
A) 7 B) 6 C) 5 D) 4
scanf(&%d&,&x);
if(x++&5) printf(&%d\n&,x);
else printf(&%d\n&,x--);
(10) 下面程序的输出是
A) 3 B) 4 C) 1 D) 2
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
printf(&%d\n&,*(p+2));
(11) 执行下面程序中的输出语句,a的值是
A) 65 B) 20 C) 15 D) 10
printf(&%d\n&,(a=3*5,a*4,a+5));
(12) 下面程序的输出是
A) 0 0 3 B) 0 1 2 C) 1 0 3 D) 1 1 2
{ int a=-1, b=4,k;
k=(a++&=0)&&(!(b--&=0));
printf(&%d %d %d\n&,k,a,b);
(13) 下面程序的输出是
A) xyzabcABC B) zabcABC C) yzabcABC D) xyabcABC
#include&stdio.h&
#include&string.h&
char *p1=&abc&,*p2=&ABC&,str[50]=&xyz&;
strcpy(str+2,strcat(p1,p2));
printf(&%s\n&, str);
(14) 下面程序的输出是
A) 741 B) 852 C) 963 D) 875421
for( ; y&0; y--)
if(y%3==0)
printf(&%d&, --y);
(15) 下面程序的输出是
A) 100 B) 160 C) 120 D) 64
char x=040;
printf(&%d\n&,x=x&&1);
(16) 以下说法中正确的是
A) C语言程序总是从第一个的函数开始执行
B) 在C语言程序中,要调用的函数必须在main()函数中定义
C) C语言程序总是从main()函数开始执行
D) C语言程序中的main()函数必须放在程序的开始部分
(17) 执行下面的程序后,a的值为
for (a=1,b=1;a&=100;a++)
{ if(b&=20)
if(b%3==1)
A) 7 B) 8 C) 9 D) 10
(18) 以下程序段的输出结果是
printf(&%3d&,x-=2);
} while(!(--x));
A) 1 B) 3 0 C) 1-2 D) 死循环
(19) 两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是
scanf(&%d&,&x);
if(x + + &5)
printf(&%d&,x);
printf(&%d\n&,x - -);
A) 7和5 B) 6和3 C) 7和4 D) 6和4
(20) 设有如下定义: char *aa[2]={&abcd&,&ABCD&}; 则以下就法中正确的是
A) aa数组成元素的值分别是&abcd&和ABCD&
B) aa是指针变量,它指向含有两个数组元素的字符型一维数组
C) aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
D) aa数组的两个元素中各自存放了字符'a'和'A'的地址
填空题(每空5分,共30分)
(1) 以下程序的功能是:人键盘上输入若干个学生的成绩, 统计并输出最高成绩和最低成绩,当输入负数时结束输入.请填空.
float x,amax,
scanf(&%f&,&x);
amax=x; amin=x;
while(___(1)____)
if(x&amax) amax=x;
if(____(2)____) amin=x;
scanf(&%f&,&x);
printf(&\namax=%f\namin=%f\n&,amax,amin);
(2) 下面程序通过函数average计算数组中各元素的平均值,请填空.
float average(int * pa,int n)
float avg=0.0;
for(i=0;i&n;i++) avg=avg+___(3)___;
avg=___(4)___;
int i,a[5]={2,4,6,8,10};
mean=average(a,5);
printf(&mean=%f\n&,mean);
(3) 以下程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串,请填空。
#include&ctype.h&
#include&stdio.h&
char str[81],*
for(i=0;i&80;i++)
str[i]=getchar();
if(str[i]=='\n')
str[i]=___(5)___;
while(*sptr) putchar(*sptr___(6)____);
阅读程序题(每题5分共20分)
(1) 下面程序的输出是_______。
#define MAX 5
int a[MAX],k;
{ fun1();fun3(); fun2(); fun3();
printf(&\n&);
for(k=0;k&MAX;k++)
int a[MAX],k;
for(k=0;k&5;k++)
for(k=0;k&MAX;k++)
printf(&%d&,*(a+k)):
(2)以下程序运行后,输出结果是________
int y=18,i=0,j,a[8];
a[i]=y%2;i++;
} while(y&=1);
for(j=i-1&0;j--)
printf(%d&,a[j]);
printf(&h\n&);
(3)以下程序的输出结果是________
int i,j,x=0;
for (i=0;i&2;i++)
for(j=0;j&3;j++)
printf(&=%d\n&,x);
(4) 以下程序的输出结果是_______
char *s=&&;
int v[4]={0,0,0,0},k,i;
for(k=0;s[k];k++)
switch(s[k])
case '1':i=0;
case '2':i=1;
case '3':i=2;
case '4':i=3;
for(k=0;k&4;k++)
printf(&%d &,v[k]);
程序题(10分)
1.从键盘输入一个字符串a,并在a串中的最大元素后边插入字符串b(b[ ]=”ab”). 试编程.
选择题(1-20每小题2分,共40分)
(1) 以下选项中属于C语言的数据类型是
A) 复数型 B) 逻辑型 C) 双精度型 D) 集合型
(2) 在C语言中,不正确的int类型的常数是
A) 32768 B) 0 C) 037 D) 0xAF
(3) 语句:printf(&%d&,(a=2)&&(b= -2);的输出结果是
A) 无输出 B) 结果不确定 C) -1 D) 1
(4) 下列描述中不正确的是
A) 字符型数组中可以存放字符串
B) 可以对字符型数组进行整体输入、输出
C) 可以对整型数组进行整体输入、输出
D) 不能在赋值语句中通过赋值运算符&=&对字符型数组进行整体赋值
(5) 设有如下定义:int x=l,y=-1;,则语句:printf(&%d\n&,(x--&++y));的输出结果是
A) 1 B) 0 C) -1 D) 2
(6) 当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是
A) c=b=a; B) (a=c) ‖(b=c) ;
C) (a=c) &&(b=c); C) a=c=b;
(7) 以下程序的输出结果是
A) 10 1 9 2 B) 9 8 7 6 C) 10 9 9 0 D) 10 10 9 1
int x=10,y=10,i;
for(i=0;x&8;y=++i)
printf(&%d,%d &,x--,y);
(8) 以下程序的输出结果是
A) 5 2 B) 5 1 C) 5 3 D) 9 7
int i,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];
for(i=0;i&4;i+=2)
printf(&%d &,p[i]);
(9) 以下程序的输出结果是
A)6 B) 6789 C) '6' D) 789
char a[10]={'1','2','3','4','5','6','7','8','9',0},*p;
printf(&%s\n&,p-3);
(10) 以下程序的运行结果是
A) 运行后报错 B) 6 6 C) 6 12 D) 5 5
#include &stdio.h&
int a[ ]={1,2,3,4,5,6,7,8,9,10,11,12,};
int *p=a+5, *q=NULL;
* q=*(p+5);
printf(&%d %d \n&,*p,*q);
(11) 以下说法中正确的是
A) #define和printf都是C语句 B) #define是C语句,而printf不是
C) printf是C语句,但#define不是 D) #define和printf都不是C语句
(12) 语句:printf(&%d \n&,12 &012);的输出结果是
A) 12 B) 8 C) 6 D) 012
(13) 能正确表示a和b同时为正或同时为负的逻辑表达式是
A) (a&=0‖b&=0)&&(a&0‖b&0)
B) (a&=0&&b&=0)&&(a&0&&b&0)
C) (a+b&0)&&(a+b&=0)
(14) 以下程序的输出结果是
A) 2 0 B) 3 1 C) 3 2 1 D) 2 1 0
while(n--)
printf(&%d &,--n);
(15) 若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1] 地址的表达式是
A) p+1 B) a+1 C) a++ D) ++p
(16) 以下程序的输出结果是
A) 17,021,0x11 B) 17,17,17 B) 17,0x11,021 D) 17,21,11
int k=17;
printf(&%d,%o,%x \n&,k,k,k);
(17) 以下程序的输出结果是
A) -1 1 B) 0 1 C) 1 0 D) 0 0
{ int a= -1,b=1,k;
if((++a&0)&& ! (b-- &=0))
printf(&%d %d\n&,a,b);
printf(&%d %d\n&,b,a);
(18) 若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是
A) *p=&a; scanf(&%ld&,p);
B) p=(long *)malloc(8); scanf(&%ld&,p);
C) scanf(&%ld&,p=&a);
D) scanf(&%ld&,&a);
(19) 若有以下定义和语句:
double r=99, *p=&r;
则以下正确的叙述是
A) 以下两处的*p含义相同,都说明给指针变量p赋值
B) 在&double r=99, *p=&r;&中,把r的地址赋值给了p所指的存储单元
C) 语句&*p=r;&把变量r的值赋给指针变量p
D) 语句&*p=r;&取变量r的值放回r中
(20) 以下程序的输出结果是
A) 编译不通过,无输出 B) acegC) acegi D) abcdefghi
for(i='A';i&'I';i++,i++)
printf(&%c&,i+32);
printf(& \n&);
填空题(每空4分,共28分)
(1) 以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空。
float x[1000], sum=0.0, ave, a;
int n=0, i;
printf(&Enter mark:\n&);scanf(&%f&,&a);
while(a&=0.0&& n&1000)
sum+ ___(1)___ ;
x[n]= _____(2)_____ ;
scanf(&%f&,&a);
ave= ____(3)____ ;
printf(&Output:\n&);
printf(&ave=%f\n&,ave);
for (I=0;I&n;I++)
if (_____(4)_____)
printf (&%f\n&,x[I]);
(2) 以下程序中,主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行上的最大值。请填空。
#define N 3
#define M 4
void LineMax(int x[N][M])
int i,j,p;
for(i=0; i&N;i++)
for(j=1; j&M;j++)
if(x[i][p]&x[i][j]) ____(5)____ ;
printf(&The max value in line %d is %d\n&, i, _____(6)_____ );
int x[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};
______(7)______;
阅读程序题(每题5分共20分)
下列程序的输出结果是__________。
#include &stdio.h&
#include&string.h&
char b[30],*chp;
strcpy(&b[0],&CH&);
strcpy(&b[1],&DEF&);
strcpy(&b[2],&ABC&);
printf(&%s \n&,b);
(2) 下列程序的输出结果是___________ 。
int t(int x,int y,int cp,int dp)
cp=x*x+y*y;
dp=x*x-y*y;
int a=4,b=3,c=5,d=6;
t(a,b,c,d);
printf(&%d %d \n&,c,d);
(3) 下列程序中字符串中各单词之间有一个空格,则程序的输出结果是______________ 。
#include &string.h&
#include&stdio.h&
char strl[]=&How do you do&, *p1=strl;
strcpy(strl+strlen(strl)/2,&es she&);
printf(&%s \n&,pl);
(4) 以下程序的运行结果是__________
#include &stdio.h&
int k=4, m=1,
p=func(k,m); printf(&%d,&,p);
p=func(k,m); printf(&%d \n&,p);
func(int a, int b)
static int m=0, i=2;
程序题(10分)
编写一程序,将字符串中的第m个字符开始的全部字符复制成另一个字符串.要求在主函数中输入字符串及m的值并输出复制结果,在被调用函数中完成复制.试编程.
一、选择题(共20题,每题2分,共40分)
1、设有说明语句:char a= '\72abc';则变量a ()
A) 包含6个字符B) 包含5个字符C) 包含4个字符D) 说明不合法
2、在C语言中,数字029是一个()
A)八进制数B)十六进制数C)十进制数D)非法数
3、有如下程序
{ int y=3,x=3,z=1;
printf(&%d %d\n&,(++x,y++),z+2);}
运行该程序的输出结果是()
A)3 4B)4 2C)4 3D)3 3
4、有如下程序段
int a=14,b=15,x;
char c='A';
x=(a&&b)&&(c&'B');
执行该程序段后,x的值为( )
A)tureB)falseC)0D)1
5、如下程序
{ int x=1,a=0,b=0;
{ case 0:b++;
case 1:a++;
case 2:a++;b++;
printf(&a=%d,b=%d\n&,a,b);
该程序的输出结果是()
A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=2
{ int i,j;
for(i=0,j=1; i&=j+1; i+=2, j--)printf(&%d \n&,i);
以上循环体的执行次数是( )
A)3 B)2 C)1D)0
7、设有数组定义:char array [ ]=&China&;则数组 array所占的空间为( )
A)4个字节B)5个字节C)6个字节D)7个字节
8、C语言的编译系统对宏命令是()
A)在程序运行时进行代换处理的
B)在程序连接时进行代换处理的
C)和源程序中其它C语句同时进行编译的
D)在对源程序中其它成份正式编译之前进行处理的
9、以下说法中正确的是()。
A)C语言程序总是从第一个定义的函数开始执行
B)在C语言程序中,要调用的函数必须在main( )中有定义
C)C语言程序的执行既可以采用解释方式,也可以采用编译方式
D)C语言程序中的main( )函数可以不放在程序的开始部分
10、下面程序的输出是( )
#define SUB(X,Y)(X)*Y
{int a=3,b=4;
printf(&%d\n&,SUB(a++,b++));
A)12B)15C)16D)20
11、设有如下定义:
char*aa[2]={“abcd”,”ABCD”};则以下说法中正确的是()
A)aa数组元素的值分别是“abcd”,”ABCD”
B)aa是指针变量,它指向含有两个数组元素的字符型一维数组
C)aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
D)aa数组的两个元素中各自存放了字符’a’,’A’的地址
12、若变量已正确说明为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&回车&
C) 10.0&回车& D) 10 22&回车&
22.0 33.0&回车& 33&回车&
13、当调用函数时,实参是一个数组名,则向函数传送的是()
A) 数组的长度B) 数组的首地址C) 数组每一个元素的地址D) 数组每个元素中的值
14、有以下函数
char *fun(char *p)
该函数的返回值是( )
A) 无确切的值 B) 形参p中存放的地址值
B) 一个临时存储单元的地址 D) 形参p自身的地址值
15、若有以下的定义:int t[3][2];能正确表示t数组元素地址的表达式是()
A) &t[3][2] B) t[3][2] C) t[1][0] D) t[2]+1
16、以下程序的输出结果是()
A)#*#*# B)##### C)***** D)*#*#*
for(i=1;i&6;i++)
{ if(i%2){printf(&#&);continue;}
printf(&*&);
printf(&\n&);
17、已知有声明语句char s1[10]= "abcde",s3[10];以下语句中能将s1中存储的字符串和s2中存储的字符串正确交换的是。
A.s3=s1,s1=s2,s2=s3;
B.s3[0]=s1[0],s1[0]=s2[0],s2[0]=3[0];
C.strcpy(s3[0],s1[0]),strcpy(s1[0],s2[0]),strcpy(s2[0],s3[0]);
D.strcpy(s3,s1),strcpy(s1,s2),strcpy(s2,s3);
18、若有声明语句int a[10],b[3][3];则以下对数组元素赋值的操作中,不会出现越界访问的是___。
A.a[-1]=1B.a[10]=0C.b[3][0]=0D.b[0][0]=0
19、以下是一个自定义函数的头部,其中正确的是。
A.int fun(int a[ ],b)B.int fun(int a[ ],int a)
C.int fun(int *a,int b)D.int fun(char a[ ][ ],int b)
20、下列4个函数中,()能实现交换变量值的功能。
A)void fun_a(int x,int y)B)void fun_b(int *x,int *y)
{int *p;{int *p;
*p=x;x=y;y=*p;}*x=*y;*y=*x;}
C)void fun_c(int *x,int *y)D)void fun_d(int x,int y)
{*x=*x+*y;{
*y=*x-*y;p=x;x=y;y=p;
*x=*x-*y;}}
二、填空题(每空2分,共26分)
1、已知:int x=3;则
printf(x%2?&**%d&:&##%d\n&,x);
printf(&00000\n&);
输出结果为:
2、若有以下定义和语句,则通过指针p对值为8的数组元素的引用表达式是
inta[10]={1,2,3,4,5,6,7,8,9},*p;
下列程序的输出结果是
#include &stdio.h&
{char a[11]=&&,*p;
4、求两数中的较大
{ float a,b,
scanf(“%f%f”,&a,&b);
printf(“the max is %f\n”,max);
5、下列程序用于将从键盘输入的整数逆序输出
{ int n1,n2;
scanf(&%d&,&n2);
{ n1=n2%10;
printf(&%d&,n1);}
6、下面的程序输出3到1000之间的所有素数,且每5个一行。
int b=0,c=0;
for(i=3;i&=1000;i++)
{ for(j=2;j&=i-1;j++)
if ( ){b=1;}
{ c++;printf("%4d",i);
if () printf(“\n”);
7、利用插入排序法将十个字符从小到大排序
#include &stdio.h&
void insert(char s[])
int i,j,t;
for (i=1;i&=9;i++)
{t=s[i];j=i-1;
while ((j&=0)&&())
{ s[j+1]=s[j];;}
char a[11];
for (i=0;i&10;i++)a[i]=getchar();
insert(a);
8、用递归法将一个整数n转换成字符串。如输入整数483,则输出字符串“483”。
void convert(n)
if ((k/10)!=0) convert();
putchar(n%10+'0');
printf(&\n输入整数:”);
scanf(&%d&,&num);
printf(&\n输出是:&);
if (num&0) {putchar('-');num=-}
三、判断题(每题2分,共20分)
()1、在对某一函数进行多次调用时,系统会对相应的自动变量重新分配存储单元。
()2、在C语言的复合语句中,只能包含可执行语句。
()3、自动变量属于局部变量。
()4、一个函数利用return只能返回一个函数值。
()5、在程序运行过程中,系统分配给实参和形参的内存单元是不同的。
()6、用scanf输入字符时,字符串中不能包含空格。
()7、Continue 和break都可用来实现循环体的中止。
()8、若将C源程序经过编译、连接后生成可执行文件,则可直接在DOS系统下输入可执行文件名执行。
()9、字符常量的长度肯定为1。
()10、已知:char c=48;int i=1,j=10;执行语句j=!(c&j)&&i++;则i和j的值分别是1和0。
四、编程题:(14分)
编写程序,求1!+2!+……n!,要求从主函数输入n的值,用函数实现阶乘的计算,并通过函数值返回(请注意合理的类型选取)。
一、选择题
1、c2、d3、D4、D5、A
6、C7、C8、D9、D10、A
11、C12.B13.B14.B15.D
16.A17.D18.D19.C20.C
二、填空题:
1、**300000
4.max=a&b?a:b
6、 i%j= =0;c%5==0;
7、t&s[j]
a[i]=’\0’;
8.n/10convert(num)
三、判断题
对,错,对,对,对,对,错,对,对,对
四、编程题
一、选择题(共20题,每题2分,共40分)
1、有以下定义:
int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}
int (*ptr)[3]=a,*p=a[0];
则下列能够正确表示数组元素a[1][2]的表达式是()。
A)*((*ptr+1)[2])B)*(*(p+5))
C)(*ptr+1)+2D)*(*(a+1)+2)
2、# include &stdio.h&
void main ( )
{int a[3][3]={1,2,3,4,5,6,7,8,9};
int s=0,i;
for (i=0;i&3;i++)
s+=(*(a+i))[i];
printf(&%d&,s);
A)9 B)12 C)14D)15
3、设有说明语句:char a= '\123abc';则变量a ()
A) 包含7个字符B) 包含6个字符C) 包含5个字符D) 包含4个字符
4、有以下程序段
while(k=1)k++;
while 循环执行的次数是()
A) 无限次B) 有语法错,不能执行C) 一次也不执行D) 执行1次
5、在C语言中,()。
A)函数定义可以嵌套,但函数调用不能嵌套
B)函数定义不可以嵌套,但函数调用可以嵌套
C)函数定义和调用均不能嵌套
D)函数定义和调用均可以嵌套
6、以下叙述正确的是(  )
A)do-while语句构成的循环不能用其它语句构成的循环代替。
B)do-while语句构成的循环只能用break语句退出。
C)用do-while语句构成的循环,在while后的表达式为非零时结束循环。
D)用do-while语句构成的循环,在while后的表达式为零时结束循环。
7、若有声明语句char ch=’a’,*pc=&ch;以下语句中,有语法错误的是。
A.(*pc)++B.ch+=-‘a’+’A’;C.toupper(ch)=ch;D.ch++;
8、以下关于函数叙述中,正确的是。
A.在函数体中可以直接引用另一个函数中声明为static类别的局部变量的值
B.在函数体中至少必须有一个return 语句
C.在函数体中可以定义另一个函数
D.在函数体中可以调用函数自身
9、以下数组声明语句中正确的是。
A.int a,a[n];B.int a[ ];
C. int a[2][3]={{1},{2},{3}};D.int a[ ][3]={{1},{2},{3}};
10、以下程序执行后的结果是()
A)9B)程序出错C)死机D)15
#include &stdio.h&
#defineAREA(x,y)x*y;
i=AREA(3+2,3)
printf(“%d”,i);}
11、以下程序的输出结果是()
{int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;
for(i=0;i&3;i++)
for(j=i;j&=i;j++)
t=t+b[j][j]];
printf(&%d\n&,t);
A)3B)4C)1D)9
12、以下不能正确进行字符串赋初值的语句是()
A)char str[5]=&good!&;B)char str[ ]= &good!&;
C)char *str=&good!&;D)char str[5]={ 'g','o','o','d'};
13、以下关于switch语句和break语句的描述中,只有()是正确的。
A)在switch语句中必须使用break语句
B)在switch语句中,可以根据需要使用或不使用break语句
C)break语句只能用于switch语句中
D)break语句是switch语句的一部分
14、判断变量ch中的字符是否为数字字符,最简单的正确表达式是()。
A)ch&=0&&ch&=9B)’0’&=ch&=’9’
C)ch&=’0’||ch&=’9’D)ch&=’0’&&ch&=’9’
15、若执行以下程序时从键盘上输入9,则输出结果是()
A)11B)10C)9D)8
scanf(&%d&,&n);
if(n++&10) printf(&%d\n&,n);
else printf(&%d\n&,n--);
16、若w=1,x=2,y=3,z=4;则条件表达式w&x?w:y&z?y:z的结果是()
A)4B)3C)2D)1
17、设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后y的值为()
A)不定值B)4C)3D)1
18、以下程序的输出结果是()
{int x=023;
printf(&%d\n&,--x);
A)18B)22C)23D)19
19、下列4个函数中,()能实现交换变量值的功能。
A)void fun_a(int x,int y)B)void fun_b(int *x,int *y)
{int *p;{int *p;
*p=x;x=y;y=*p;*x=*y;*y=*x;
C)void fun_c(int *x,int *y)D)void fun_d(int x,int y)
{*x=*x+*y;{
*y=*x-*y;p=x;x=y;y=p;
*x=*x-*y;}
20、以下所列的各函数首部中,正确的是()
A) void play(var :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)
二、填空题(每空2分,共26分)
1、判断n是否是素数,若是,则返加1,否则返回0
int prim(int n)
for (m=2;m&=n/2;m++)
2、下述程序段是要实现在数组中查找最大元素和最小元素的下标,
# include &stdio.h&
void find(int *a,int n,int *max,int *min)
*max=*min=0;
for(i=1;i&n;i++)
if(a[i]&a[*max])
if(a[i]&a[*min])
void main( )
{int a [ ]={5,8,7,6,2,7,3};
printf(&\nmax=%d,min=%d&,max,min);
3、下面的程序当输入为字符串”qwert?”时的输出结果是
while((c=getchar())!=’?’) putchar(++c);
4、假设有如下语句:
float b,c;
scanf(&%2d%3d%4f&,&a,&b,&c);
printf(&\na=%d,b=%f,c=%f\n&,a,b,c);
若从键盘输入:
 则输出应为: 
5、下面的函数用于实现将一个字符串按逆序存放。
Void convert(char s[])
for (i=0,j=strlen(s);i&;i++,j++)
printf(“%s\n”,s);
6、以下函数fun的功能是用选择排序法对数组的数据按从小到大的顺序排列。
void fun(int a[ ],int n)
{int i,j,k,temp;
for(i=0;i&n-1;i++)
for(j=i+1;;j++)
if(a[j]&a[k])k=j;
{temp=a[k];
a[k]=a[i];
a[i]=temp;
7、函数fun,其功能是求两个整数的最大公约数
fun(int x,int y)
{int a,b,t,r;
return (b);
以下程序中,主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行上的最大值。请填空。
#define N 3
#define M 4
void LineMax(int x[N][M])
{ int i,j,p;
for(i=0;i&N;i++)
for(j=1;j&M;j++)
if(x[i][p]&x[i][j]);  
printf(&The max value in line %d is %d\n&, i,x[i][p]);
{ int x[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};
三、判断题(每题2,共20分)
()1、C语言允许在复合语句内定义自动变量。
()2、全局变量可以和局部变量重名,且全局变量优先。
()3、若一个函数的返回类型为void,则表示其没有返回值。
()4、在程序运行过程中,系统分配给实参和形参的内存单元是相同的。
()5、对于Continue 和break这两条语句,只有break可用来实现循环体的中止。
()6、已知:char c='A';int i=1,j;执行语句j=!c&&i++;则i和j的值分别是0,1
()7、所有定义在主函数之前的函数无需进行声明。
()8、&既可以用作单目运算符也可以用作双目运算符
()9、宏定义和文件包含都是C语言中的编译预处理命令,对它们的处理是在编译前完成的。
()10、一个函数利用return不可能同时返回多个值。
四、编程题:(14分)
编程打印如下的杨辉三角形,具体要求如下:
(1)从主函数中输入欲打印的杨辉三角形行数;
(2)用子函数实现杨辉三角形的显示;
1 5101051
一、选择题
1、D2、D3.D4,A5.B
6.D7.C8.D9.C10.A
11.B12.A13.B14.D15.B
16.B17.C18.A19.A20.C
二、填空题 
1. n%m==0;return 1;
a,7,&max,&min
4.a=98,b=765.000000,c=
6.j&n;a[k]!=a[i]
7.(r=a%b)!=0b=r
8.x[i][p]=x[i][j];LineMax(x)
三、判断题
对,错,对,错,对,对,对,错,对,对
一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。
1.属于C语言基本数据类型的是(&&&& )
& A.指针型&&&&&&&&&&&&&& B.无符号整型
& C.数组型&&&&&&&&&&&&&& D.结构型
2.C语言的长整型数值在计算机中占用的字节个数是(&&&& )
& A.1&&&&&&&&& &&&&&B.2
& C.3&&&&&&&&&&&&&& D.4
3.C语言中,″\x3d″在内存中占用的字节数是(&&&& )
& A.1&&&&&&&&&&&&&& B.2
& C.4&&&&&&&&&&&&&& D.5
4.设int&则执行printf(″%x\n″,~x^x);的结果是(&&&& )
& A.0&&&&&&&&&&&&&& B.1
& C.ff&&&&&&&&&&&&& D.ffff
5.对于while语句,错误的说法是(&&&& )
& A.用条件控制循环体的执行次数
& B.循环体至少要执行一次
& C.循环体有可能一次也不执行
& D.循环体中可以包含若干条语句
6.设int a=9,b=20;则printf(″%d,%d\n″,a--,--b);的输出结果是(&&&& )
& A.9,19&&&&&&&&&&&&&& B.9,20
& C.10,19&&&&&&&&&&&&& D.10,20
7.执行下列语句
& int a=8,b=7,c=6;
& if(a&b)if(b&c){a=c;c=b;}
& printf(″%d,%d,%d\n″,a,b,c);
& 后输出的结果是(&&&& )
& A.6,7,7&&&&&&&&&&&&&& B.6,7,8
& C.8,7,6&&&&&&&&&&&&&& D.8,7,8
8.设static char x[ ]=″12345″,y[ ]={′1′,′2′,′3′,′4′,′5′,′\0′};那么(&&&& )
& A.x数组的长度等于y数组的长度
& B.x数组的长度大于y数组的长度
& C.x数组的长度少于y数组的长度
& D.x数组与y数组的存储区域相同
9.设int i,x[3][3]={1,2,3,4,5,6,7,8,9};
& 则下面语句
&& for(i=0;i&3;i++)
& printf(″%d″,x[i][2-i]);
& 的输出结果是(&&&& )
& A.147&&&&&&&&&&&&&& &&& B.159
& C.357&&&&&&&&&&&&&& &&& D.369
10.设int b[ ]={1,2,3,4},y,*p=b;
&& 则执行语句y=*p++;之后,变量y的值为(&&&& )
& A.1&&&&&&&&&&&&&& &&&&&&&&&&&&& B.2
& C.3&&&&&&&&&&&&&& &&&&&&&&&&&&& D.4
二、填空题(本大题共10小题,每小题2分,共20分)
11.设执行表达式(y=4)||(y=5)||(y=6)后,y的值是______。
12.设char ch=′A′;则printf(″%c″,(ch&=′A′ && ch&=′Z′)?ch+32:ch);的值是_____。
13.结构化程序设计的三种基本结构是:选择结构、循环结构和______。
14.下列程序
&&& int x=3;
&&& do{printf(″%d″,--x);}while(!x);
&&& 循环执行的次数是______。
15.在C语言中,一个二维数组可以看成若干个______数组。
16.设int a[3][4]={{1,3,5,7},{2,4,6,8}};则*(*a+1)的值为______。
17.若函数定义为
&& int data(&&&& )
&& {& float x=9.9;
&&&&& return(x);
& 则函数返回的值是______。
18.设struct student
&& {char name[12];
&&& float score[3];
&& {s1,*p=&s1;.
& &用指针变量p给s1的成员no赋值1234的方法是______。
19.判断文本文件是否结束时使用的符号常量EOF的值是______。
20.设有一个名为″myfile.c″的C程序,
&& 其主函数为mian(int argc,char *argv[ ])。如果在执行时,输入的命令行为
&& myfile aa bb ↙
&& 则形式参数argc的值是______。
三、程序分析题(本大题共5小题,每小题5分,共25分)
&&& 阅读下列程序,将输出结果写到各题右侧的空白处
21.fun(int x)
&&& int y=0;
&&& static int z=3;
&&& z++;++y;
&&& return(x+y+z);
&& main( )
&&& int I,x=2;
&&& for(i=0;i&2;i++)
&&& printf(″%5d″,fun(x++));
22.main( )
&&&& int s=0,i;
&&&& for(i=1;;i++)
&&&&&& if(s&50)
&&&&&& if(i%2==0) s+=i;
&&&& printf(″i=%d,s=%d\n″,i,s);
23.gcd(int m,int n)
&& { if(m==n)
&&&& else if(m&n) return gcd(m-n,n);
&&&& else return gcd(m,n-m);
&& main( )
&&&& printf(″Gcd=%d\n″,gcd(24,36));
24.# include&stdio.h&
&& main( )
&& {& int i=0;
&&&&& char c,s[]=″SABC″;
&&&&& while(c=s[i])
&&&& switch(c)
&&&& case ′A′:i++;
&&&& case ′B′:++i;
&&&& default:putchar(c);i++;
&&&&& putchar(′*′);
25.int a1=300,a2=400;
&& main( )
&& {int a3=100,a4=200;
& &&sub1(a3,a4);
&&& sub1(a1,a2);
&&& printf(″%d,%d,%d,%d\n″,a1,a2,a3,a4);
&& sub1(int x,int y)
&& { a1=x;
&&&& y=a1;
四、程序填充题(本大题共3小题,每小题6分,共18分)
&&& 给出下列程序,将横线处缺少的部分补上,使其能正确运行。
26.将十个整数输入数组,求出其平均值并输出。
&& main( )
&& {int i,a[10],sum=0,*p=_________________;&& /*第一空*/
&&& for(i=0;i&10;i++)
&&& { scanf(″%d″,p);sum+=________________;&& /*第二空*/
&&& printf(″%8.2f\n″,_____________________);&& /*第三空*/
27.输入一个无符号整数后求出它的各位数之和并输出。
&& 例如若输入123,则将各位之和6(即1+2+3)输出。
&& __________f(num)&& /*第一空*/
&& { unsigned int k=0;
&&&& { k+=__________;&& /*第二空*/
&&&&&&&&& num/=10;
&&&& } while(num);
&& __________;& /*第三空*/
&& main( )
&&& scanf(″%d″,&n);
&&& printf(″%u\n″,f(n));
28.为数组输入数据,逆序置换后输出。(逆序置换是指:数组的首元素和末元素置换,第二个元素和倒数第二个元素置换,………)
&& # define N& 8
&& main(&&&& )
&& {& int i,j,t,a[N];
&&&&& for(i=0;i&N,i++)scanf(″%d″,a+i);
&&&&& i=0;j=N-1;
&&&&& while(i&j)
&&&&& { t=*(a+i);__ __________;& /*第一空*/
&&&&&&&& __________=t;&& /*第二空*/
&&&&&&& i++;__________;&& /*第三空*/
&&&&& for(i=0;i&N;i++)printf(″%5d″,*(a+i));
五、程序设计题(第29小题7分,第30小题各10分,共17分)。
29.将100个整数输入数组后按每行10个数输出。
30.计算e=1+的值并输出(设n=20)。
一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。
1.有以下语句:int a=6;a+=a-=a*a;printf(“%d”,a);输出结果
A.–132B.–60C.-24D.0
2.字符a的ASCII码为97,在C程序中可用下列方法表示,除了
A. ‘a’B. ‘97’C.‘\141’D. ‘\x61’
3.设int a,*p;则语句p=&a;中的运算符“&”的含义是(&&&& )
& A.位与运算&&&&&&&&&&&&&& & B.逻辑与运算
& C.取指针内容&&&&&&&&&&&& & D.取变量地址
4.下面函数定义有错误的是(&&&& )
& A.f1(x1,x2)&&&&&&&&&&&&&&&& B.f1(x1,x2)
&&& int x1,x2;&&&&&&&&&&&&&&&& int x1;int x2;
&&&& {函数体}&&&&&&&&&&&&&&&&& {函数体}
& C.f1(int x1,x2)&&&&&&&&&&&& D.f1(int x1,int x2)
&&& {函数体}&&&&&&&&&&&&&&&&&&& {函数体}
5.下列定义正确的是(&&&& )
& A.anum t={a,b}x;&&&&&&&&&&&&&& B.enum t{1,2}x;
& C.anum {′+′,′-′}x;&&&&&&&& D.enum t{a,b}x;
6.设有定义:
union u{int a[4];float b[3]};
&&&&&&&&&&&&&&&&&&&& char c[16];}
&& 则printf(″%d\n″,sizeof(aa));的输出是(&&&& )
& A.32&&&&& &&&&&&&&&&&&B.16
& C.12&&&&&&&&&&&&&&&&& D.8
7.数据-35.78在文本文件中占用的字节个数是(&&&& )
& A.4&&&&&&&&&&&&&&& B.5
& C.6&&&&&&&&&&&&&&& D.8
8.在下列有关宏替换的叙述中,正确的说法是(&&&& )
& A.宏替换占用运行时间
& B.宏名有类型
& C.带参数的宏替换和函数等价
& D.宏替换只是字符替换
9.下列程序的运行结果是(&&&& )
&&&& # define& A& 5
& &&&# define& B& A+1
&&&& main( )
&&&&& a=B;
&&&&& printf(″%d\n″a--);
& A.6&&&&&&&&&&&&&& B.5
& C.4&&&&&&&&&&&&&& D.出错
10.为了向二进制文件尾部增加数据,打开文件的方式应采用(&&&& )
& A.″ab″&&&&&&&&&&&&&& &&&&& B.″rb+″
& C.″wb″&&&&&&&&&&&&&& &&&& D.″wb+″
二、填空题(本大题共10小题,每小题2分,共20分)
11.设执行表达式(y=4)||(y=5)||(y=6)后,y的值是______。
12.设char ch=′A′;则printf(″%c″,(ch&=′A′ && ch&=′Z′)?ch+32:ch);的值是_____。
13.结构化程序设计的三种基本结构是:选择结构、循环结构和______。
14.下列程序
&&& int x=3;
&&& do{printf(″%d″,--x);}while(!x);
&&& 循环执行的次数是______。
15.在C语言中,一个二维数组可以看成若干个______数组。
16.设int a[3][4]={{1,3,5,7},{2,4,6,8}};则*(*a+1)的值为______。
17.若函数定义为
&& int data(&&&& )
&& {& float x=9.9;
&&&&& return(x);
& 则函数返回的值是______。
18.设struct student
&& {char name[12];
&&& float score[3];
&& {s1,*p=&s1;.
& &用指针变量p给s1的成员no赋值1234的方法是______。
19.判断文本文件是否结束时使用的符号常量EOF的值是______。
20.设有一个名为″myfile.c″的C程序,
&& 其主函数为mian(int argc,char *argv[ ])。如果在执行时,输入的命令行为
&& myfile aa bb ↙
&& 则形式参数argc的值是______。
三、程序分析题(本大题共5小题,每小题6分,共30分)
阅读下列程序,将输出结果写到各题右侧的空白处
21 . 以下程序的输出结果为
{ int x=12;
float a=3.14159;
printf(&%5d##\n&,x);
printf(&%-5d##\n&,x);
printf(&%10.6f##\n&,a);
printf(&%-10.6f##\n&,a);
22. 以下程序输入一个字母,并将它转换为密码。转换规则:将 ‘a’变成‘z’, 将 ‘b’变成‘y’......, 将 ‘Z’变成‘A’, 将‘Y’变成‘B’......。
#include &stdio.h&
if(c&=‘A’&&c&=‘Z’)
else if(c&=‘a’&&c&=‘z’)
putchar(c);
23. 以下函数应用折半查找法从有序(由小到大)数组a中对m进行查找,若找到返回其下标值,否则返回-1。
int binary(int a[10],int m)
int low = 0, high = 9,
while(low &= high);
if(m ==a[mid]) return (mid);
else if(m & a[mid]) ;
return(-1);
24. 以下程序对一个3×3的矩阵进行行列互换。
int a[3][3]={1,2,3,4,5,6,7,8,9};
for( i=0 ; i&3; i++)
for( ; j&3; j++)
temp=a[i][j],,;
printf(&\n the rusult array is:\n&);
for(i=0;i&3;i++)
printf(&\n&);
for(j=0;j&3;j++)
printf(&%5d&,a[i][j]); }
25. 以下程序使用递归的方法求两个数的最大公约数。
int GYS(int m,int n)
{ if(n==0)
elsereturn );
void main()
{ int m,n;
printf(&Please enter Number m and n:(m、n&0))\n&);
scanf(&%d,%d&,&m,&n);
printf(&GYS(%d,%d)=%d\n&,m,n,);
四、程序填充题(本大题共3小题,每小题6分,共18分)
26.将十个整数输入数组,求出其平均值并输出。
&& main( )
int i,a[10],sum=0,*p=_________________;&& /*第一空*/
&&& for(i=0;i&10;i++)
scanf(″%d″,p);
sum+=________________;&& /*第二空*/
&&& printf(″%8.2f\n″,_____________________);&& /*第三空*/
27. 以下程序输入一行字符,并将其转换为密码。转换规则:将字母A变成字母E,即变成其后的第4个字母;W变成A,z变成d。所有字母按上述规律转换,非字母字符不变。
#include &stdio.h&
while( !=’\n’)//第1空
if()//第2空
else if(c&=‘W’&&c&=‘Z’|| c&=‘w’&&c&=‘z’)
putchar(c);
28. 以下函数copy将字符数组p1中的元音字母复制到字符数组p2中。。
void copy(char p1[],char p2[])
int i=0,j=0;
while((c=)//第1空
if(c=='a' || c=='A' || c=='e' || c=='E' || c=='i' || c=='I'
|| c=='o' || c=='O' || c=='u' || c=='U' )
五、&&程序设计题(第26小题10分,共12分)。
26.生成Fibonacci数列的前20项并输出,其中

我要回帖

更多关于 c malloc sizeof 的文章

 

随机推荐