C语言部分.docx

上传人:b****8 文档编号:9217757 上传时间:2023-05-17 格式:DOCX 页数:20 大小:20.98KB
下载 相关 举报
C语言部分.docx_第1页
第1页 / 共20页
C语言部分.docx_第2页
第2页 / 共20页
C语言部分.docx_第3页
第3页 / 共20页
C语言部分.docx_第4页
第4页 / 共20页
C语言部分.docx_第5页
第5页 / 共20页
C语言部分.docx_第6页
第6页 / 共20页
C语言部分.docx_第7页
第7页 / 共20页
C语言部分.docx_第8页
第8页 / 共20页
C语言部分.docx_第9页
第9页 / 共20页
C语言部分.docx_第10页
第10页 / 共20页
C语言部分.docx_第11页
第11页 / 共20页
C语言部分.docx_第12页
第12页 / 共20页
C语言部分.docx_第13页
第13页 / 共20页
C语言部分.docx_第14页
第14页 / 共20页
C语言部分.docx_第15页
第15页 / 共20页
C语言部分.docx_第16页
第16页 / 共20页
C语言部分.docx_第17页
第17页 / 共20页
C语言部分.docx_第18页
第18页 / 共20页
C语言部分.docx_第19页
第19页 / 共20页
C语言部分.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C语言部分.docx

《C语言部分.docx》由会员分享,可在线阅读,更多相关《C语言部分.docx(20页珍藏版)》请在冰点文库上搜索。

C语言部分.docx

C语言部分

C语言部分:

1.写一个宏,求两个整数的最大值.

#include

#defineMAXa>b?

a:

b;

Voidmain{

Inta,b;

Printf(“请输入两个数:

”);

Scanf(“%d%d”,&a,&b);

Printf(“max=%d”,MAX);

}

2.内存如何划分(地址从高到低),每个分区的特点是什么?

内存分为五大区,分别是:

栈区、堆区、静态区、常量区、代码区

1.栈区:

内存为8M,地址从高到低排列,函数调用时,在栈区开辟内存,函数调用结束时就会立马被系统回收

2.堆区:

开辟内存用函数malloccalloc给开辟的内存清零realloc重新分配内存

生命周期为从程序开始一直到程序结束

3.静态区:

静态区关键字为static,在主函数外定义的变量是全局变量,可被改写,作用域在整个程序,他的生命周期重程序开始一直到程序结束

4.常量区:

存储常量数字,字符或字符串,是立即数,立即使用立即释放,存储在CPU中,在使用是通常从常量区拷贝到栈区开辟的变量空间中

5.代码区:

存储代码,生命周期从程序开始到程序结束

3.变量定义三要素__变量类型___、__变量名____和__变量值____

4.编写程序,实现两个整数的交换

#include

Voidmain{

Inta,b;

Inttemp=a;

A=b;

B=temp;

}

5.逻辑运算符包括__&&____、__||____和__!

____

6.分支结构的分类和格式;

If(条件){表达式}

Else{表达式}

Switch:

Case1:

表达式1;

Case2:

表达式2;

...,

Default:

表达式

7.编写程序,输入一个年份,判断该年份是否是闰年

#import

Voidmain{

Printf(“请输入年份:

”);

Scanf(“%d”,&a);

If(a%4==0||a&100==0){

Printf(“该年是闰年”)

}

Else

printf(“该年不是闰年“);

}

8.for循环包含__循环变量初值____、__循环条件____、__循环步长____和__循环体____四部分

9.break和continue的作用

Break是结束本次循环

Contiue是跳出本次循环,直接进入下次循环

10.sizeof和strlen的区别

Sizeof是指变量所占空间字节长度

Strlen是指字符串的长度

11.用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)

#import

#definesecond365*24*60*60;

12.static的作用

Static静态变量的关键词,定义静态变量,作用域是整个程序

13.堆和栈的区别

(1)栈区是由编译器自动管理,一旦函数调用结束内存有系统自动的回收,无需手动释放,其进栈方式是先进后出,进栈出栈有指令进行,效率较高,当内存空间超过8M时,会出现溢出。

其分配方式有静态分配(由编译器完成)和(alloc函数完成)动态分配

(2)堆是高地址扩展的数据结构,不是连续的内存空间,遍历方向是由低地址向高地址,其释放是由程序员控制,容易产生内存泄漏;其内存大小受限于计算机系统的中有效虚拟内存,数据的存入提取均由函数库完成。

堆得分配方式是动态分配(alloc函数完成)有程序员手动释放。

14.堆区常见的内存问题

堆是一种经过排序的树形数据结构,每个结点都有一个值。

通常所说的堆的数据结构,是指二叉堆。

堆的特点是根结点的值最小,且根结点的两个子树也是一个堆。

由于堆的这个特性,常用来实现优先队列,堆的存取是随意,这就如同在图书馆的书架上取书,虽然书的摆放是有顺序的,但是想取任意一本时不必像栈一样,先取出前面所有的书,书架这种机制不同于箱子,可以直接取出想要的书。

 

15.􏲧􏵽􏵾􏵿指出下述变量a的含义:

inta[10]:

数组名

int*a:

变量名

int(*a)(int):

函数变量

16.变量名的命名规范是什么?

1).以字母下划线开头

2).非系统关键字

3).包含字母、数字、下划线

17.指针和地址是什么关系?

指针就是地址

18.局部变量能否和全局变量重名?

19.请写出下列代码的输出内容  

#include   

intmain(void)  

{   

inta,b,c,d;

  a=10; 

  b=a++; 

  c=++a;  

  d=10*a++; 

  printf("b,c,d:

%d,%d,%d",b,c,d); 

  return0; 

}

b,c,d:

10,12,120

20.编程题,有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?

都是多少?

For(inti=1;i<5;i++)

{

Intcount=0;

For(j=1;j<5;j++)

{

If(i!

=j)

{

For(k=1;k<5;k++)

{

If(j!

=k)

{

Count++;

Print(“%d”,100*i+10*j+k);

}

}

}

}

}

21.编程题,输出99乘法口诀表

 

for(inti=1;i<10;i++){

for(intj=1;j

printf("%d*%d=%d",i,j,i*j);

}

printf("\n");

}

 

22.编程题,输入两个整数m和n,求最大公约数和最小公倍数

Intmin=m

m:

n;

While(max!

=0){

Max=m%n;

M=n;

N=max;

}

Printf(“最大公约数是:

%d”,max);

Printf(“最小公倍数是:

%d”,max*min);

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

Main{

Printf(“请输入一行字符:

”);

Scanf(“%s”,s);

IntlettersCount=0;

IntnumCount=0;

IntspaceCount=0;

Intcount=0;

For(inti=0;i

{

If(s[i]>‘0’&&s[i]<‘9’){

numCount+=1;}

elseif(s[i]>64&&s[i]<91||s[i]>96&&s[i]<123){

lettersCount+=1;}

elseif(s[i]=0){

spaceCount+=1;}

elseif{

count+=1;}

}

}

24.下面程序的输出是?

#include

voidmain()

{

intk=11;

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

}

输出的结果是:

k=11,k=013,k=xB

25.下面程序的输出是?

#include

voidmain()

{

intx=10,y=3;

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

}

3

26.下面程序的输出是?

#include

voidmain()

{

charch1,ch2;

ch1='A'+'5'-'3';

ch2='A'+'6'-'3';

printf("%d,%c\n",ch1,ch2);

}

‘67’,D

27.下面程序的输出是?

#include

voidmain()

{

intx=10,y=10;

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

}

109

28.下面程序的输出是?

设有如下定义:

intx=10,y=3,z;

则语句

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

3

29.下面程序的输出是?

intk,n,m;

n=10;m=1;k=1;

while(k<=n){m*=2;k+=4;}

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

8

30.下面程序的输出是?

#include

voidmain()

{

inta[]={5,4,3,2,1},i,j;

longs=0;

for(i=0;i<5;i++){s=s*10+a[i];}

printf("s=%ld\n",s);

}

54321

34.下面程序的输出是?

#include

voidmain()

{

inti,a[10];

for(i=9;i>=0;i--){a[i]=10-i;}

printf("%d%d%d",a[2],a[5],a[8]);

}

852

31.下面程序的输出是?

#include

intm=13;

intfun2(intx,inty)

{

intm=3;

return(x*y-m);

}

voidmain()

{

inta=7,b=5;

printf("%d\n",fun2(a,b)/m);

}

34

32.以下程序的输出结果是?

#include

inta,b;

voidfun()

{

a=100;b=200;

}

voidmain()

{

inta=5,b=7;

fun();

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

}

57

33.以下程序的输出结果是?

#include

intfun(intx,inty,intz)

{

z=x*x+y*y;

return0;

}

voidmain()

{

inta=31;

fun(5,2,a);

printf("%d",a);

}

31

34.以下程序的输出结果是?

intfun3(intx)

{

staticinta=3;

a+=x;

return(a);

}

voidmain()

{

intk=2,m=1,n;

n=fun3(k);

n=fun3(m);

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

}

6

35.____c___代表函数的首地址?

A、返回值类型B、参数C、函数名D、函数体

36.下列函数指针p调用一个求两个数最大值的函数正确的是____b___?

A、p()B、p(3,5)C、*p(3,5)D、(*p)(3,5)

37.下列函数指针定义正确的是___d_____?

A、int*p(int,int)B、int**p(int,int)C、*intp(int,int)D、int(*p)(int,int)

38.声明为voidprintArray(int*p,intcount)的函数的函数指针类型为__voidprintArray(int*int)___________?

39.编程题,猴子吃桃子问题。

猴子第一天摘下若干个桃,当即只一半,又多吃一个。

第二天早上又将剩下

的一半吃掉一半,双多吃一个。

以后每天早上都吃了前天剩下的一半零一个,到第10天早上只剩下最后一个桃。

问第一天摘了几个桃

函数的递归

Func(intn){

N=n/2–1;

Returnn;}

Voidmain{

Ints=0;

Intn;

S=func

(1);

}

40.编程题,写一个函数,交换两个变量的值

changeTwoNum(inta,intb){

inttemp=a;

a=b;

b=temp;}

41.以下程序的输出结果是?

main()

{

inta[10]={0};

for(inti=9;i>=0;i--){

a[i]=10-i;

}

printf(“%d%d%d",a[2],a[5],a[8]);

}

852

42.以下程序运行后,输出结果是?

main()

{

intn[5]={0,0,0},k=2;

for(inti=0;i

n[i]=n[i]+1;

}

printf("%d\n",n[k]);

}

0

43.以下程序运行后,输出结果是?

main()

{

inty=18,i=0,a[8]={0};

do{

a[i]=y%2;

i++;

y=y/2;

}while(y>=1);

for(intj=i-1;j>=0;j--)

{

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

}

printf("\n");

}

10010

44.以下程序运行后,输出结果是?

main()

{

inta[10]={0},a1[]={1,3,6,9,10},a2[]={2,4,7,8,15},i=0,j=0;

for(intk=0;k<4;k++){

if(a1[i]

a[k]=a1[i++];

}else{

a[k]=a2[j++];

}

}

for(intk=0;k<4;k++){

printf("%d",a[k]);

}

}

1234

45.编程找出下列整型数组中的最大值和最小值及其所在位置的下标inta[]={5,-9,32,77,64,-24,14,0,21,45};

IntFindMaxNum(int*a,intcount)

{

Intmax=0;

For(inti=0;i

{

If(a[i]

{

Max=i;

}

}

Returnmax;

}

IntfindMinNum(int*a,intcount)

{

Intmin=0;

For(intj=0;j

{

If(a[i]>min)

{

Min=i;

}

}

Returnmin;

}

46.编写一个程序:

intarray1[5]={8,6,4,2,0};

intarray2[5]={9,7,5,3,1};

先将两个数组升序排列,然后将这两个数组合并成一个升序数组

 

sortArrayByAsc(int*array1,int5)

{

For(inti=0;i<5-1;i++)

{

For(intj=0;j<5-1-i;j++)

{

If(array1[j]>array1[j+1])

{

Inttemp=array1[j];

Array1[j]=array1[j+1];

Array1[j+1]=temp;

}

}

}

}

sortArrayByDes(int*array2,int5)

{

For(inti=0;i<5-1;i++)

{

For(intj=0;j<5-1-i;j++)

{

If(array2[j]>array2[j+1])

{

Inttemp=array2[j];

Array2[j]=array2[j+1];

Array2[j+1]=temp;

}

}

}

}

sortArray(int*array1,int10)

{

For(inti=0;i<5-1;i++)

{

For(intj=5-1;j<10-1-i;j++)

{

If(array1[j]>array1[j+1])

{

Inttemp=array1[j];

Array1[j]=array1[j+1];

Array1[j+1]=temp;

}

}

}

}

OC部分:

1、定义一个人类Person,实例变量name,age,gender,要求写出自定义初始化方法,便利构造器

Person{

NSStringname;

Intage;

NSStringgender;

}

-initWithNameNSString:

name

andAgeint:

age

andGenderNSString:

gender{

NSStringname=name;

Intage=age;

NSStringgender=gender;

}

-

2、写出@property(nonatomic,assgin)NSIntegercount;生成setter和getter方法

3、写出@property(nonatomic,retain)NSString*brand;生成setter和getter方法

4、写出@property(nonatomic,copy)NSString*type;生成setter和getter方法

5、说一下#import,#include,@class的区别

include是c语言中导入头文件的关键字,在OC中同样可以使用,但是会出现重复导入重复导入重复编译的问题.

import是OC中导入头文件的关键字,只能在OC中使用,解决了重复编译的问题.

6、描述一下self和super

Super:

指从父类属性中继承

Self:

指从自身自定义中调用

7、面向对象和面向过程有什么区别?

面向对象,注重的是对实例变量属性的操作

面向过程,注重的是算法,过程的具体实现

8、什么是类?

什么是对象?

类和对象有什么关系?

举例说明

类是:

具有相同特征和⾏为的事物的抽象。

对象:

对象是类的实例,万事万物皆对象。

当我们看到某个概念的时候如果每个⼈的⼤脑中想到的都是同⼀个事物的时候,此时就是对象;反之则是类。

9、OC中的类包含几部分?

名称属性方法

10、创建对象需要几步?

创建类,实现定义,调用

11、实例变量的可见度有哪几种?

默认的是什么?

@private,@public

默认的是@private

12、子类继承得到了哪些内容?

OC中的根类是什么?

子类继承了父类中的一切属性,其跟类是NSObject

13、OC的方法分为_类方法_和_实例方法_

14、id、nil代表什么?

Nil表示空对象

Id表示泛对象

OC预习作业

1、描述一下内存管理的原则

2、内存管理的操作有哪些,有什么作用

3、ARC和MRC分别是什么?

有什么不同?

4、手写单例的实现

5、自动释放池是什么?

如何工作?

6、截取字符串”20|”中,”|”字符前面和后面的数据,分别输出

7、如何将一个字符串的某个敏感词变成**

8、NSRange是什么数据类型,成员变量有哪些,都有什么作用?

NSRange和NSString怎么相互转换。

9、数组有什么特点?

字典有什么特点?

10、执行autorelease的对象是在什么时候被release的。

v

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2