您的位置:首页 > 编程语言 > C语言/C++

总结:复合数据对象

2013-06-20 23:16 309 查看
数组
1、数组含义:存放类型相同数据。数组元素在内存中存放的特点(占用一段连续的存储单元)。

2、 一维数组的定义、引用、初始化。

3、 二维数组的定义、引用、初始化。

4、 数组的相关运算:数组输入、输出、求最值,排序。

5、 字符数组的定义、引用、初始化。C语言中处理字符串的库函数(strcmp(),strpy(),strcat(),strlen(),strlwr())的含义及使用。
函数

1、 C语言源程序由许多函数组成,有且仅有一个main()函数,从main()函数开始执行,最后回到main()函数。

2、 函数分类:

从用户角度分:库函数,用户自定义函数。

从函数形式分:无参函数,有参函数。

3、 函数的定义、调用及声明。

4、 函数的嵌套调用与递归调用。

5、 函数调用中参数的传递方式及应用:

(1) 值传递方式。

(2) 地址传递。

6、 数组元素作为函数实参与变量作为实参一样,实现值传递;数组名作为实参,传递的是数组的地址,实现地址传递,形参和实参指向同一连续存储单元。

7、 变量的存储类型,静态变量与动态变量的区别。(局部静态变量在程序运行整个过程中都占用内存单元。)

8、 局部变量和全局变量的使用及有效范围。
预处理命令

1、 宏定义的方式(不带参数的宏定义,带参数的宏定义及其区别)。

2、 宏定义的特点:只做简单置换,不作正确性检查;不是C语句,行末没有分号。

3、 熟练掌握stdio.h、string.h、math.h包含文件的引用。

指针

1、 指针定义:指针与指针变量(存放地址的变量)。

2、 指针与指针运算符(*),取地址运算符(&)。

3、 指向一维数组指针的应用(指针法、下标法);注意给指针赋初值。

结构体和链表

1、结构体类型的定义,结构体变量的定义、引用及初始化,结构体变量中成员变量的引用。

2、结构体数组的定义、初始化。

3、链表,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针
文件

1、 文件含义:存储在外部存储介质上的数据的集合。

2、 文件的打开与关闭,及其文件使用格式。
单选题

1、C语言中下列叙述正确的是______。

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

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

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

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

知识点:知识点/循环结构程序设计/WHILE和DO WHILE循环结构

D

2、下列描述中不正确的是______。 

  A:字符型数组中可以存放字符串

  B:可以对字符型数组进行整体输入、输出

  C:可以对整型数组进行整体输入、输出

  D:不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值

知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用

C

3、以下程序的输出结果是______。

main()

{  int   x=10,y=10,i;

   for(i=0;x>8 ;y=++i)

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

}

  A:10  1  9  2

  B:9  8  7  6

  C:10  9  9  0

  D:10  10  9  1

知识点:知识点/循环结构程序设计/FOR循环结构

D

4、以下程序的输出结果是______。  

main()

{   char  a[10]={'1','2','3','4','5','6','7','8','9',0},*p;

int i ;

i=8;

p=a+i;

printf("%s\n",p-3);

}

  A:6

  B:6789

  C:'6'

  D:789

知识点:知识点/指针/指针数组,指向指针的指针,MAIN函数的命令行参数

B

5、能正确表示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)

  D:a*b>0

知识点:知识点/基本语句/表达式语句,空语句,复合语句

D

6、以下程序的输出结果是______。

main()

{  int  n=4;

   while(n--)printf("%d   ",--n);

}

  A:2  0

  B:3  1

  C:3  2  1

  D:2  1  0

知识点:知识点/循环结构程序设计/WHILE和DO WHILE循环结构

A

7、以下程序的输出结果是______。

main()  

{  int  k=17;

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

}

  A:17,021,0x11

  B:17,17,17

  C:17,0x11,021

  D:17,21,11

知识点:知识点/数据类型及其运算/C的数据类型及其定义方法

D

8、若有说明: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);

知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用

A

9、以下选项中,能定义s为合法的结构体变量的是______。B

  A:typedef  struct  abc 

{  double a;

   char b[10];

} s;

  B:struct  

{  double a;

   char  b[10];

}s;

  C:struct  ABC 

{  double a;

   char b[10];



ABC s; 

  D:typedef  ABC

{  double a;

   char b[10]; 



ABC s;

10、请读程序:

    #include <stdio.h>

    main()

    {

       int a, b ;

       for(a = 1 , b = 1 ; a <= 100 ; a++) {

          if(b >= 20)  break ;

          if (b%3 == 1) { b += 3 ; continue ; }

          b -= 5 ;

       }

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

    }

上面程序的输出结果是______。

  A:7

  B:8

  C:9

  D:10

知识点:知识点/选择结构程序设计/用SWITCH语句实现多分支选择结构

B

11、请选出合法的C语言赋值语句______。

  A:a=b=58

  B:i++;

  C:a=58,b=58

  D:k=int(a+b);

B

12、若x和y都是int型变量,x=100、y=200,且有下面的程序片段

      printf("%d",(x,y) );

上面程序片段的输出结果是______。

  A:200

  B:100

  C:100   200

  D:输入格式符不够,输出不确定的值

A

13、若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是______。

  A:pb=&x;

  B:pb=x;

  C:*pb=&x;

  D:*pb=*x

A

14、设a、b和c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的表达式是______。

  A:'a'&&'b'

  B:a<=b 

  C:a||+c&&b-c 

  D:!((a<b)&&!c||1)

D

15、有程序如下:

typedef struct link { double score;  struct link  *next; };

void main ( ) {  

link *ps, qs, rs;

ps = ( struct link *) malloc (sizeof (struct link) );

ps->score = 81.5; qs.score = 55.5; rs.score = 68.0;

ps->next = &qs ; qs.next =&rs;

printf ( " %d \n ", ps->score + ps->next->score);

}

上面程序的输出结果是___137___。

--------------------------------------------------------------------

程序设计

1.定义函数double fact( int n) 计算n!的值。 

#include <stdio.h>
double fact(int n)
{  double x;
if(n==0||n==1)  x=1;
else x=n*fact(n-1);
return(x);}
void main()
{  int n;
scanf_s("%d",&n);
printf("%lf",fact(n));
}


2.判断数m是否为素数(只能被1和它本身整除的整数)?若是,则输出yes;否则输出no
#include <stdio.h>
void main()
{  int n,i;
scanf_s("%d",&n);
for(i=2;i<n;i++)
if(n%i==0)  break;
if(i==n)   printf("yes");
else       printf("no");
}
--------------------------------------------------------------------

3.求出第n项Fibonacci数,并统计前n项之和。Fibonacci序列:1,1,2,3,5,8,13,21,34,55,……。该序列的第一个数和第二个数都是1,从第三个数开始,每个数都是前两个数之和
#include<stdio.h>
int f(int n)
{
int x=0;
if(n==1||n==2) x=1;
else x=f(n-1)+f(n-2);
return x;
}
int s(int n)
{   int sum=0;
for(int i=1;i<=n;i++)
sum=sum+f(i);
return sum;
}
void main()
{    int a;
printf("输入正整数n\n");
scanf_s("%d",&a);
printf("第n个值 %d,总和 %d",f(a),s(a));
}


--------------------------------------------------------------------

4.输入某班级20个学生某课程的考试成绩,要求统计并输出班级总分及大于等于60分的人数。
#include<stdio.h>
#define N 5
void main()
{   int sum=0,n=0,i;
int arr
;
for(i=0;i<N;i++)
scanf_s("%d",&arr[i]);
for(i=0;i<N;i++)
sum=sum+arr[i];
for(i=0;i<N;i++)
if(arr[i]>=60)  n++;
printf("总分%d,及格人数%d",sum,n);
}
--------------------------------------------------------------------

5.试编程判断输入的正整数是否既是5又是7的正倍数。若是,则输出yes;否则输出no。
#include<stdio.h>
void main ()
{
int n;
scanf_s("%d",&n);
if(n%7==0&&n%5==0)
printf("yes");
else
printf("no");
}


--------------------------------------------------------------------

6.对15个数进行排序,按从小到大的顺序输出

#include<stdio.h>
#define N 15
void sort(int *arr,int n)
{  int i,j,t;
for(i=0;i<N-1;i++){
for(j=0;j<N-i-1;j++)
{   if(*(arr+j+1)<*(arr+j))
{    t=*(arr+j+1);
*(arr+j+1)=*(arr+j);
*(arr+j)=t;
}
}
}
for(i=0;i<N;i++)
printf("%d ",arr[i]);
}

void main()
{  int arr
;
for(int i=0;i<N;i++)
scanf_s("%d",&arr[i]);
sort(arr,N);
}
--------------------------------------------------------------------

7.写一个程序,它能够计算并输出杨辉三角形(帕斯卡三角形)前面的 n 行
#include<stdio.h>
#define N 5
void main()
{   int a

;
int i,j;
for(i=0;i<N;i++)
a[i][0]=a[i][i]=1;
for(i=2;i<N;i++)
for(j=1;j<i;j++){
a[i][j]=a[i-1][j-1]+a[i-1][j];}
for(i=0;i<N;i++){
for(j=0;j<=i;j++){
printf("%d ",a[i][j]);}
printf("\n");}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息