C语言(空)

数组

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语言中下列叙述正确的是__D____。
A:不能使用do-while语句构成的循环
B:do-while语句构成的循环,必须用break语句才能退出
C:do-while语句构成的循环,当while语句中的表达式值为非零时结束循环
D:do-while语句构成的循环,当while语句中的表达式值为零时结束循环
知识点:知识点/循环结构程序设计/WHILE和DO WHILE循环结构

2、下列描述中不正确的是___C___。
A:字符型数组中可以存放字符串
B:可以对字符型数组进行整体输入、输出
C:可以对整型数组进行整体输入、输出
D:不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值
知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用

3、以下程序的输出结果是__D____。
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循环结构


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

6、以下程序的输出结果是_A_____。
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循环结构

7、以下程序的输出结果是___D___。
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语句正确给输入项读入数据的程序段是__A____。
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为合法的结构体变量的是____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) ;
}
上面程序的输出结果是___B___。
A:7
B:8
C:9
D:10
知识点:知识点/选择结构程序设计/用SWITCH语句实现多分支选择结构


11、请选出合法的C语言赋值语句__C__。
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) );
上面程序片段的输出结果是____A__。
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___。
--------------------------------------------------------------------
程序设计
1.定义函数double fact( int n) 计算n!的值。

我编写的程序

#include<stdio.h>
int fact(int n)
{
	if(n==1||n==0)
		return 1;
	else
		return n*fact(n-1);
}

int main()
{
	int n;
	printf("这是一个求N的阶乘的函数,请输入N:",n);
	scanf("%d",&n);
	printf("结果为:%d\n",fact(n));	
	return 0;}
	

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

我的程序:

#include<stdio.h>
int  fun ( int n ){  
	int k = 2;
	while ( k <= n && (n%k))  
		k++;
		if (k>n/2) 
			return 1; 
		else     
			return  0;
}
 int main( ){ 
	 int  n; 
 printf( "Please enter n: ",n );   
scanf(  "%d", &n ); 
if (  fun (  n ) )  
	printf( "YES!\n" ); 
else  
	printf( "NO!\n" );
}

结果:


--------------------------------------------------------------------
3.求出第n项Fibonacci数,并统计前n项之和。Fibonacci序列:1,1,2,3,5,8,13,21,34,55,……。该序列的第一个数和第二个数都是1,从第三个数开始,每个数都是前两个数之和

我的程序:

#include <stdio.h>  
 int Fib(int n);  
void main()  
{  
 int n;  
 int re;  
 int i;  
 int a;  
 scanf("%d",&a);  
 for(i=1;i<=a;i++)  
 {  
   re=Fib(i);  
   printf("第%d 项是%d\n",i,re);  
   
}  
 }  
   
int Fib(int n)  
{  
       if (n <= 2)   
  {  
          return 1;  
        }   
   else  
 {  
        return   Fib(n - 1) +Fib(n - 2);  
     }  
 }   

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

我到程序:

#include<stdio.h>
#define n 20
void main ()  
{   
    int a[n],sum=0,j=0; 
	printf("请输入学生人数:");
	scanf("%d",&a[n]);
printf("请输入学生成绩:\n");
for(int i=0;i<n;i++)  
   {  
        scanf("%d",&a[i]);  
    }  
   for(int i=0;i<20;i++)  
   
   {  
       sum+=a[i];  
       if(a[i]>=60)  
      {  
          j++;  
       }  
   } 
   printf("总分是:%d\n",sum);  
   printf("及格人数为:%d\n",j);  
}  


 


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

我的程序:

#include<stdio.h>
int m(int n)
{
	if((n%7==0)&(n%5==0))
		return 1;
	else
		return 0;
}
int main()
{
	int n;
	printf("这是一个判断N是否既能被7整除又能被5整除的函数,请输入N:\n",n);
	scanf("%d",&n);
	if(m(n))
		printf("YES!\n");
	else
		printf("NO!\n");
}

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

我的程序

#include<stdio.h>
int main()
{ 
	int a[15],i,j,t;
printf("Input 15 numbers:\n");
for(i=0;i<15;i++){
	scanf("%d",&a[i]);}
printf("before sorting:\n");
for(i=0;i<15;i++)
	printf("%d ",a[i]);
for(j=0;j<14;j++)
	for(i=0;i<14-j;i++)
		if(a[i]>a[i+1])
		{t=a[i];
a[i]=a[i+1];
a[i+1]=t;}
printf("\nafter sorting:\n");
for(i=0;i<15;i++)
	printf("%d ",a[i]);
} 

结果



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


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值