c语言复习重点docxWord格式.docx

上传人:b****6 文档编号:16227121 上传时间:2022-11-21 格式:DOCX 页数:16 大小:74.57KB
下载 相关 举报
c语言复习重点docxWord格式.docx_第1页
第1页 / 共16页
c语言复习重点docxWord格式.docx_第2页
第2页 / 共16页
c语言复习重点docxWord格式.docx_第3页
第3页 / 共16页
c语言复习重点docxWord格式.docx_第4页
第4页 / 共16页
c语言复习重点docxWord格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

c语言复习重点docxWord格式.docx

《c语言复习重点docxWord格式.docx》由会员分享,可在线阅读,更多相关《c语言复习重点docxWord格式.docx(16页珍藏版)》请在冰豆网上搜索。

c语言复习重点docxWord格式.docx

例设a、b和c都是int型变量,且a=3,b=4,c=5;

则以下表达式中,值为0的表达式是_

A)a&

bB)a<

=bC)a||b+c&

b・cD)!

((a<

b)&

!

c||l)

•指针的相关运算(第十章的一些简单定义和运算)

例已知inta[3][4],*p=a;

p+=6;

那么*p和D的值相同。

A)*(a+6)B)*(&

a[0]+6)

C)*(a[l]+3)D)*(&

a[0][0]+6)

注:

*p=a;

定义时赋初值,相当于把a[0][0]的地址赋值给p。

例已知charb[5],*p二b;

贝0正确的赋值语句是C

A)b二怙bed"

;

B)*b=Habcdn;

C)p=Habcdu;

D)*p二怙bed"

止确的输入语句scanf正确的输入方法(82页)

有关宏定义的运算、宏定义的正确使用(204页)

例若有宏定义ttdefineM0D(x,y)x%y,贝U执行以下语句后的输出为Bintz,a二15,b=100;

z=M0D(b,a);

printf(M%d\nn,z++);

A)11B)10C)6D)宏定义不合法

例若有以下宏定义

^defineN2

tfdefineY(n)((N+l)*n)

则执行语句z二2*©

+Y(5));

后的结果为_

A)语句有错误B)z=34C)z=70D)z值不确定

取整运算

例己知intx=10,y=3,z;

则下列语句的输出结果是一Dprintf("

%d\nn,z=(x%y,x/y));

A)1B)0C)4D)3

多重循环语句的运算(复习第六章)

例以下程序段的输出结果是_

A)9B)1OilD)10

intk,j,s;

for(k=2;

k<

6;

k++,k++)

{

s=l;

for(j=k;

j<

j++)

s+二j;

}

printf("

%d\n"

s);

第二轮循环24,s二1,所以结果为10。

循环语句中break和continue的使用(122页)

例若变量已正确定义,以下语句的输出结果是_

A)%#B)*%$C)%D)%$*

x=0;

y=2;

z=3;

switch(x)

{case0:

switch(y)

{case1:

printf(n*n);

break;

case2:

printf("

%"

);

case1:

switch(z)

printf(”$”);

printf(M*n);

default:

printf(常'

);

•循环语句的循环次数的判断

例执行下述程序的输出结果是—

#include<

stdio.h>

main()

{staticinti,j;

for(j=9;

i<

j;

i++)

{for(i=9;

if(!

Q%i))

if(i>

=j-l)

printf(”%d\n”,j);

A)11B)10C)9D)1011

这个程序只循环一次。

•判断字符串长度的运算(149页)

例已知:

charstr[]=,,ab\n\018\\\,H,;

则执行语句:

printf('

^dXn"

strlen(str));

的结果是B

A)3B)7C)6D)12

字符分别为a、b、\01、8、\、\、\”

•位运算(不考位段)

例执行下面程序段后,c的二进制值为_

inta=3,b=6;

charc;

c=(aAb)«

2;

A)0001110()B)00000111C)00()000()1D)00010100例以下程序的输出结果是_

A)100B)1600120D)64

main()

charx=040;

%d\rT,x=x«

l);

•数组元素地址的表示(230页和243页)

例设有inta[]={2,4,6,&

10},*p=a;

则值为8的表达式是I)

A)*p+3B)*p+4C)*(p+4)D)*(a+3)

例若有inta[4][3]二{{1,2,3},{4,5,6},{7,8,9},{10,11,12}},(邙)[3];

p=a;

则*(*(p+1)+2)的值是_g_

A)5B)6C)7D)有语法错误

•结构体数据所占内存的长度(281页)

•逻辑运算(92页)

•正确的函数定义形式(157页)

•字符串的比较(148页)

•多级指针的使用(271)

•文本文件的读写操作

例以“只读”方式打开文本文件a:

\aa.dat,T列语句中哪一个是正确的_

A)fp=fopen("

a:

\\aa.dat'

\"

abM);

B)fp=fopen(,'

\aa.dat"

"

a,'

C)fp二fopen("

\aa.dat”,"

wb”);

D)fp二fopen("

\\aa.dat〃,"

r"

例若要执行p=fopen(>

ar\V);

则d必须事先进行定义D

A)intp;

B)int*p;

C)FILEp;

D)FILE*p;

例标准库函数fgets(s,n,f)的功能是B

A)从文件f中读取长度为n的字符串存入指针s所指的内存

B)从文件f中读取长度不超过n-1的字符串存入指针s所指的内存

0从文件f中读取n个字符串存入指针s所指的内存

D)从文件f中读取长度为n-1的字符串存入指针s所指的内存

例写字符到磁盘文件的fputc(ch,fp)ffi数(ch表示字符,fp表示文件指针),其函数原型(头)正确的是一C

A)FILE*fputc(char)B)intfputc(FILE*)

C)intfputc(char,FILE*)D)intfputc(FILE*,char)

例函数调用语句:

fseek(fp,-20L,2)的含义是

A)将文件位置指针移动到距离文件头20个字节处

B)将文件位置指针从当前位置向后移动20个字节

C)将文件位置指针从文件末尾处向后退20个字节

D)将文件位置指针移到离当前位置20个字节处

•数组元素的正确引用、数组的正确定义(第七章)

例在以下数组定义中,正确的是一A

A)inta[3+3];

B)inta[3,3J;

C)inta[];

D)inta[3][];

•非法的字符常量(48页)

•函数的隐含类型(157页)

•判断函数调用语句屮参数的个数(第八章)

例函数原型是voidfun(int*a,int*b),且intx[10],y;

则下列调用小正确的是一D

A)fun(*x,&

y);

B)fun(&

x,*y);

C)fun(x,y);

D)fun(x,&

•一个变量的多赋值语句的运算

例己知intx二6;

则执行x+二x-二x*x;

语句后,x的值为B

A)36B)-60060D)-24

•字符串正确的定义方法(52页142页)

例下面关于字符串的说明中,错误的是AD

A)charstr[7]「FORTRAN"

B)charstrL]=nFORTRAN,,;

C)char*str二"

FORTRAN"

D)charst讥]={'

F,O,R,T,R,A,N}

注:

charstr[8]「FORTRAN”;

charstr[7]={'

F,'

O'

R'

T,'

R'

'

A'

N}

•字符串与指针的相关运算(251页)

例以下函数的功能是_

voidfun(char*p2,char*pl)

{while((*p2=*p1)!

-\0'

){pl++;

p2++;

}}

A)将pl所指字符串复制到p2所指内存空间

B)将pl所指字符串的地址赋给指针p2

C)对pl和p2两个指针所指字符串进行比较

D)检查pl和p2两个指针所指字符串屮是否有'

\0'

例下列程序的输出结果是_

A)cB)dC)eD)f

char*p=,,abcdefghijk1mnopqn;

mainO

wh订e(*p++!

=,e'

%c\n"

*p);

注意printf语句不是while的内嵌语句.

注意:

如果while语句后没有;

输岀结果就发生变化

•字符串操作的相关运算如连接、复制等(146-150)

例函数调用strcat(strcpy(strl,str2),str3)的功能是

A)将串strl复制到串str2中,然后再连接到str3之后

B)将串strl连接到串str2之后,再复制到str3之中

C)将串str2复制到strl中,然后再将串str3连接到串strl之后

D)将串str2复制到strl中,再将串strl连接到串str3之后

例设有charstringl[20]二"

ABCDE"

string2[10]=/,xyzz,;

则执行printf(,z%dz,,strlen(strcat(stringl,string2)));

后的输出结果是D

A)9B)8C)5D)3

•C语言可以处理的文件类型(书331页)

•文件指针指向末尾的函数(347feof()函数)

二、程序填空题(20分)

1、

(1)求某数的绝对值

方法一:

方法二:

#include〈stdio.h>

#include<

voidmainO

voidmain()

{inta;

scanf("

%d"

&

a);

scanf(“%d”,&

if(a>

=0)

a=abs(a);

a二%d\n"

a);

printf(Ma=%d\n,,,a);

else

printf(,za=%d\n"

-a);

(2)数据的反序输出方法一:

voidmain()

inta[5]={l,2,3,4,5};

inti;

for(i=4;

i>

0;

i--)printf(〃%5d〃,a[i]);

将数组中的n个数据按逆序存放。

voidreverse(intaHJntn)

{int

i=0;

j=;

while(i<

j)

{t=a(il;

a[i]=a[j];

afj]=t;

i++;

—;

}

方法三:

#include<

#defineN5voidmain(){inta[N],i,temp;

printf("

enterarraya:

\n"

for(i=0;

N;

i++)scanf("

&

a[ij);

anaya:

\iT'

for(i=0;

i++)printf(H%4d,,,a[i]);

N/2;

i++){temp=a[i];

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

a[N-i-l]=temp;

}printf("

\nNovv,arraya:

i++)printf("

%4d"

a[ij);

printf(,,\nn);

(3)求一系列数之和

例以下程序用递归法求解$=1+丄+丄+丄+…(兀>

1),当最后一项的值小于

XL兀

0.00001时,累加结束。

{doubles,x;

doublesum(double,double,double*);

scanf("

%lf'

x);

s=1.0;

if(x>

1.0)

{printf('

s=%10.51f\n'

,sum(1.0,x,&

s);

elseprintf(ndataerror!

\nn);

doublesum(doublet,doublep,double*a)

{t=t/p;

if(t>

=O.OOOOl)

sum(t,p,a);

*a+=;

return(*a);

(4)统计一系列数中的具有共同特征的数之和。

例程序读入20个整数,统计非负数个数,并计算非负数之和。

请填空完成。

★include<

inti,a[20],s,count;

s二count=0;

for(i=0;

20;

a[i]);

{if(a[i]<

0)

continue;

s+=a[i];

count++;

s=%d\tcount=%d\n"

s,count);

2.将某数值转换成二进制数,所得二进制数的每一位数存放在一维数组中返冋

{intm,i,r,a[16];

m);

16;

{if((r=m%2)==0)a[15-i]=0;

elsea[15-i]=l;

m=m/2;

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

3.求字符串的长度,如一个字符串连接到另一个字符串的后面,新串的长度。

例以下是将两个字符串连接起來的程序,请填空。

{charsi[80],s2[40];

inti=0,j=0;

\nlnputstringl:

r,);

scanf('

%s〃,si);

\nlnputstring2:

〃);

scanf(、'

%s〃,s2);

while(sl[i]!

-\0,)

i++;

while(s2[j]!

=,\OZ)

sHi++]二s2[i++l;

或sl「il二s2[i];

i++;

sl[i]i\O,;

Thenewstringis%s\,si);

printf('

Thenewstringlongis%d\nzz,strlen(si));

voidmain(){charsl[80],s2[40];

inti=0,j=();

printf("

"

scanf(”%s”,sl);

printf(n\nlnputstring2:

H);

scanf(”%s”,s2);

sl[8O]=strcat(sl,s2);

printf(uThenewstringis%s\n"

sl);

Thenewstringlongis%d\n"

strlen(sl));

4•将数组元素按行求和后在存储到数组中。

例将数组元素按行求和后存放到另一个数组中。

{inti,j,a[3][4],b[3]={0J;

printfC'

inputa:

\nM);

3;

for(j=0;

4;

scanf(”%d”,&

a[i][j]);

iv3;

b[i]=b[i]+a[i]|j];

\nouputa:

(for(j=0;

printfC*%5d-,a[i][j]);

printf(M\nH);

printf(H\nouputb:

\nH);

printf(”%5d”,b[i]);

三、修改下列程序的错误(共15分)

1.通过某种方式实现两个变量值的交换。

例给定程序中功能是:

从键盘上输入2个整数,按从小到大的顺序输出这2个数。

/******found*******/

正确的程序

fun(intx,inty)

/******found*******/

{inttemp;

fun(int*x,int*y)

temp=*x;

*x=*y;

*y=temp;

temp-^x^x-^y;

*y-temp;

{inta,b;

/*******found******/

scanf(”%d,%d"

a,&

b);

/************/

if(a<

b)

scanf(”%d,%d”,&

/********found*****/

fun(a,b)

/********found*****/

printf('

\n%d,%d\n'

,a,b);

fun(&

\n%d,%d\n"

a,b);

2.输入矩阵元素的值,求主对角线元素Z和。

{inta⑶⑶,sum=0;

inti,j;

enterdata:

i++)for(j=0;

j++)scanf(H%dH,&

a[i]Lj]);

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

printf(Hsum=%d\nH,sum);

3.用选择法对数组元素按从小到大的顺序进行排序。

stdio.h>

#defineN20

voidfun(inta[],intn)

{intij,min5tempta[ll];

printf(nenterdata:

inti,j,k,t;

for(i=l;

=10;

n~l;

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

%d”,&

k=i;

/*输入10个数*/

for(j=i+l;

n;

if(alil<

a|k])

printf(HTheorginalnumbers:

\n,r);

k二j;

t=a[k];

a[k]=a[i];

a[i]=t;

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

fbr(i=l;

=9;

/*10个数需要9趟比较*/

{min=i;

inta[N]={9,6,8,3,-1},i,m=5;

if(a[min]>

a[j])min=j;

i<

m;

i++)printf("

%dH,a[i]);

{temp=a[ij;

fun(im);

a[i]=a[min];

afminl=temp;

i++)printf(n%dH,a[i])jprintf(u\nM);

printf(M\nthesortednumbers:

for(i=l;

printf(H%5dM,a[i]);

4.计算系列数Z和(有规律的数列)。

例如求1-3+5-7+……-99+101的值。

 

{intij=l,sum=0;

=101;

i+=2)

inti,sl=0,s2=0;

i+=4)

sum+=i*j;

sl+=i;

j*=(・l);

for(i=-3;

i>

=-99;

i-=4)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1