c刷题

1.转义字符:

C中定义了一些字母前加 "\" 来表示常见的那些不能显示的ASCII字符,如\0 空字符,\r 回车, \n换行等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。

 

2. 输入输出缓冲区  

 清空输入缓冲区 scanf("%* [^\n]");   scanf("%c[^\n]");

        scanf(" %* c");   scanf(" %*c")

 

3.size of 的应用 ;结果是4、8、8;计算变量占用的字节数。在32位机上,Int占4个字节,double占8个字节。

 

  1 #include<stdio.h>

  2                                                                            

  3 int main(){

  4 int m=5;

  5 double e=2.5;

  6 printf("%d\n%d\n%d\n",sizeof(m),sizeof(e) ,sizeof(m+e));

  7 

  8 }

 

4. 标识符 :

首字母、下划线_、数字(不能放开头)

 

5.指针

1 #include<stdio.h>

  2 

  3 void fun(int *n){

  4 while((* n)--);

  5 printf("%d",++(*n));

  6 }

  7 

  8 

  9 int main(){

 10 int a =10;

 11 fun(&a);

 12 return 0;

 13 }

 

5.(单选题)若有以下程序

#include <stdio. h>
main( ) {
int a = 0,b = 0,c = 0,d;
c = (a + = b,,b + = a); / * 第4行 * /
d = c; / * 第5行 * /
; / * 第6行 * /
;printf("%d,%d,%d\n",a,b,c);/ * 第7行 * / }
编译时出现错误,你认为出错的是
    •  A.第4行
    •  B.第5行
    •  C.第6行
    •  D.第7行
 

正确答案:A
解析:
逗号表达式中间不能为空,必须要有表达式。 

分号; 中间可以为空,不会有警告或者报错。

 

6.C语言的基本单位是 函数。

 

7.设计一个交换变量值的函数:

  func(int * x,int * y)  {  //正确定义指针形参

    int p;   //正确定义自己的局部变量

    p=*x;   //通过指针形参简引用环境变量,并完成交换。

    *x=*y;

    *y=p;

    }    

  fund(int *x,int *y){ //不需要增加局部变量

    *x=*x+*y;

    *y=*x-*y;

    *x=*x-*y

  }

 

8.若定义 int a=3; int *p=&a;

  那么 *p代表引用a变量的值;p代表a的地址值。

9.指针与数组

  9.1  假定a为一个整形数组名,则元素a[4]的地址可表示为 &a[4],也可以是数组首地址加上元素的偏移量:a+4

  9.2  int * pa[5]   //指针数组 。pa是有5个元素的指针数组,每个元素是指向int型的指针。

  

  9.3

  int a[]={1,2,3,4,5,6,7,8,9,10};

  *p=a;   // 指针变量p指向数组a[0]

  p+=2;    //p=p+2 指针p指向变量a[2]

  则*(p++)的值为:// 先算表达式的值为 取a[2]的值为3,并让p指向a[3]

  

  9.4 二级指针取同一个值(b)的代码

   int *pp,*p,a=10,b=20;  

    pp=&p;

    p=&a;

    p=&b;

    printf("%d%d\n",*p,*pp);    

  

10. | 或运算  二进制位运算,有1为1。

 

11.用指针区分开一个字符串内的数字和字母

  char  arr[20]="1234zhangfei";

  int split(char *s1,char **s2){  //一个用于传入,一个用于传出

    int res=0;

    for(; ;){

        if((*s1>='0')&&(*s1<='9')){    //字符在0-9之间就转换为数字

        int j= *s1- '0';

        res=res*10+j;     //把取得的数字拼接到一个数字之中

        s1++;    //继续取数字

        else{

          break;

        }

      }

     *s2=s1;

     return res;

    }

     

 12. 零碎的笔记汇总

数组变量是一个常指针,是数组的首地址。数组只能在声明时赋值,而指针可以多次赋值。

size of 指针为4

数组不能做函数的返回值,指针可以

数组做参数,要指定数组长度。指针做参数,要指定指针的大小。

const修饰的变量,不允许修改。

 

 13.enum的使用

#include<stdio.h>

2

3

4 int main(){

5    enum term{my,i,yours=4,his,her=his+10        };

6    printf("%d,%d,%d,%d,%d\n",my,i,yours,his,her);

7    return 0;

8 }

 结果为0,1,4,5,15

14.

(单选题)对于指针,下( )是正确的。
    • A.声明为void类型的指针可以指向任何类型的对象,并且通过该指针可以直接访问它所指向的对象。
    • B.如果两个指针的类型不是同一个类型,它们就不能相互赋值。(void类型的指针可以与其它类型的指针相互赋值)
    • C.一个int 类型的指针既可以指向int类型的对象,又可以指向int类型的函数。
    • D.数组名就是指针。
 

正确答案:D
解析:
不能用void指针直接访问对象,因此A错误。不同类型之间的指针可以互相赋值,因此B错误。指向函数的需要是函数指针,因此C错误。数组名就是指针,只不过是常指针,因此D正确。

 

上一篇:vi命令下常用命令


下一篇:GDI+中发生一般性错误的解决办法(转帖)