总结:复合数据对象

数组

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.hstring.hmath.h包含文件的引用。

指针
1
指针定义:指针与指针变量(存放地址的变量)。
2
指针与指针运算符(*),取地址运算符(&)。
3
指向一维数组指针的应用(指针法、下标法);注意给指针赋初值。

结构体和链表
1
、结构体类型的定义,结构体变量的定义、引用及初始化,结构体变量中成员变量的引用。
2
、结构体数组的定义、初始化。
3
、链表,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针
文件
1
文件含义:存储在外部存储介质上的数据的集合。
2
文件的打开与关闭,及其文件使用格式。

 

小测验

单选题
1
C语言中下列叙述正确的是____D__
  A
:不能使用do-while语句构成的循环
  B
do-while语句构成的循环,必须用break语句才能退出
  C
do-while语句构成的循环,当while语句中的表达式值为非零时结束循环
  D
do-while语句构成的循环,当while语句中的表达式值为零时结束循环
知识点:知识点/循环结构程序设计/WHILEDO WHILE循环结构

2
、下列描述中不正确的是___B___ 
  A
:字符型数组中可以存放字符串

  B
:可以对字符型数组进行整体输入、输出
  C
:可以对整型数组进行整体输入、输出
  D
:不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值
知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用

3
、以下程序的输出结果是___A___
main()
{  int   x
10,y10,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循环结构


4
、以下程序的输出结果是__B____  
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函数的命令行参数


5
、能正确表示ab同时为正或同时为负的逻辑表达式是__D____
  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
知识点:知识点/基本语句/表达式语句,空语句,复合语句


6
、以下程序的输出结果是__C____
main()
{  int  n=4;
   while(n--)printf("%d   ",--n);
}
  A
2  0
  B
3  1
  C
3  2  1
  D
2  1  0
知识点:知识点/循环结构程序设计/WHILEDO WHILE循环结构


7
、以下程序的输出结果是__C____
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的数据类型及其定义方法


8
、若有说明:long  *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是___C___
  A
*p=&a;scanf("%ld",p);
  B
p=(long *)malloc(8);scanf("%ld,p);
  C
scanf("%ld",p=&a);
  D
scanf("%ld",&a);
知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用


9
、以下选项中,能定义s为合法的结构体变量的是__C____
  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) ;
    }
上面程序的输出结果是__B____
  A
7
  B
8
  C
9
  D
10
知识点:知识点/选择结构程序设计/SWITCH语句实现多分支选择结构


11
、请选出合法的 C 语言赋值语句 __B____
  A
a=b=58
  B
i++;
  C
a=58,b=58
  D
k=int(a+b);

12
、若 x y 都是 int 型变量, x=100 y=200 ,且有下面的程序片段
      printf("%d",(x,y) );
上面程序片段的输出结果是 __B____
  A
200
  B
100
  C
100   200
  D
:输入格式符不够,输出不确定的值

13
、若 x 是整型变量, pb 是基类型为整型的指针变量,则正确的赋值表达式是 __A____
  A
pb=&x;
  B
pb=x;
  C
*pb=&x;
  D
*pb=*x

14
、设 a b c 都是 int 型变量,且 a=3 b=4 c=5 ,则下面的表达式中,值为 0 的表达式是 ___D___
  A
'a'&&'b'
  B
a<=b 
  C
a||+c&&b-c 
  D
!((a<b)&&!c||1)

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.0____
--------------------------------------------------------------------
程序设计

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

#include<stdio.h>  
double fact(int n)  
{  
    if(n==1) return 1;  
        return n*fact(n-1);  
}  
void main()  
{  
    int i;  
    printf("请输入i的值  ");  
	scanf("%d",&i); 
    printf("n!=%.lf\n",fact(i));  
} 



2.判断数m是否为素数(只能被1和它本身整除的整数)?若是,则输出yes;否则输出no

#include<stdio.h>  
#include<math.h>
void main()
{
	int a,i;
	printf("请输入一个整数");
	scanf_s("%d",&a);
	for(i=2;i<a;i++)
	{
		if(a%i==0)
			break;
	}
	if(i==a)
		printf("YES\n");
	else
		printf("NO\n");


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

3.求出第nFibonacci数,并统计前n项之和。Fibonacci序列:11235813213455……。该序列的第一个数和第二个数都是1,从第三个数开始,每个数都是前两个数之和

#include<stdio.h>  
int fibo(int n)
{
	int f1=1,f2=2,fn;
	if(n<=2)
		return 1;
	else
		for(int i=3;i<=n;i++)
		{
			fn=fibo(n-1)+fibo(n-2);
		}
		return fn;

}
void main()
{
	int n;
	int sum=0;
	printf("请输入一个整数");
	scanf_s("%d",&n);
	for(int i=1;i<=n;i++)
	sum=sum+fibo(i);
	printf("第n项的值为:%d\n前n项之和:%d\n",fibo(n),sum);
}


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

4.输入某班级20个学生某课程的考试成绩,要求统计并输出班级总分及大于等于60分的人数。

#include<stdio.h>
#define N 20
void main()
{
	int count=0;
	int a[N];
	int sum=0;
	printf("请输入二十个学生的考试成绩");
	for(int i=0;i<N;i++)
	scanf_s("%d",&a[i]);
	for(int i=0;i<N;i++)
	{
		
		if(a[i]>=60)
			count++;
		
		sum=sum+a[i]; 
		}
printf("%d\n%d",count,sum);	
}


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

5.试编程判断输入的正整数是否既是5又是7的正倍数。若是,则输出yes;否则输出no

#include<stdio.h>
void main()
{
	int n;
	printf("请输入一个正整数:");
	scanf_s("%d",&n);
	if((n%7==0)&&(n%5==0))
		printf("YES\n");
	else
		printf("NO\n");
}


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

6.15个数进行排序,按从小到大的顺序输出

#include<stdio.h>
#define N 15
void main()
{
	int a[N];
	int i,j,t;
	printf("请输入十五个数:");
	for(int i=0;i<N;i++)
	scanf_s("%d",&a[i]);
	for (i=0;i<N-1;i++)
	for(j=0;j<N-1-i;j++)
	if(a[j]>a[j+1])
	{
		t=a[j];a[j]=a[j+1];a[j+1]=t;}
	for(i=0;i<N;i++)

	printf("%d",a[i]);
	
}


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

7.写一个程序,它能够计算并输出杨辉三角形(帕斯卡三角形)前面的 n

#include<stdio.h>
void main()
{
    int a[10][10],i,j;
    for(i=0;i<10;i++)
{
       for(j=10;j>=i;j--)
          printf("%2c",' ');
            for(j=0;j<=i;j++)
{
               if(i==j||j==0)
                 a[i][j]=1;
               else
             a[i][j]=a[i-1][j]+a[i-1][j-1];
             printf("%3d ",a[i][j]);
             if(i==j)
            printf("\n");
}
}
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值