C语言复习(更新)

再复习知识点总结:

  1. /xx 转义字符,可以输出xx的ASCLL码
  2. 操作符的优先级
  3. 文件打开的相关知识
  4. 字符串的输入输出
  5. 字符串指针的定义和调用
  6. 宏定义
  7. 函数的命名和调用
  8. 各种进制的表示
  9. 队列的相关计算
  10. 二叉树各种结点个数的计算

1. 若有定义:double a=22;int i=0,k=18;,则不符合C语言规定的赋值语句是
  A)a=a++,i++;
  B)i=(a+k)<=(i+k);
  C)i=a%11;
  D)i=!a;
// C
//求余数%操作数只能是整数,double出错
//太久没用,逗号操作符忘了!
//顺便复习一下操作符的优先级:单目,双目,三目,赋值,逗号(双目和赋值是左结合)
//[ ] ; ( );. ;->;的优先级最高

2. 文件由___组成,可以构成__文件
// 数据序列;二进制或文本
//C语言把文件看作一个字符的序列,由字符的数据顺序组成。根据数据组织形式,可分为ASCII文件(文本文件)和二进制文件

3.设有定义 char*c;以下选项中能够使字符型指针c正确指向一个字符串的是
A ) char str[]=“string”;c=str;
B ) scanf("%s",c);
C ) c=getchar() ;
D ) *c=“string”;
// A
//首先CD可以排除的,getchar()只能读入一个字符,D应该是c = “string”这样才能把字符串的首地址赋给指针C
//B答案有争议,我在网上查到三种答案(…)
//第一种:编译时虽然给C分配了内存空间,但是值不确定,可能这个地址在一些比较敏感的地方,有安全问题(一开始没看懂,后来想了一下可能是没有malloc的意思,要自己分配一个空间,这个还算靠谱)
//第二种:说指针c没有定义(有点扯淡。。)
//第三种:说c改成&c(可能他的意思是一开始定义一个有赋值的指针,然后再改,类似于第一种?)

4.有以下程序,求输出结果:
~~
#include<stdio.h>
#define f(x) xxx
main(){
int a = 3,s,t;
s = f(a+1);t = f((a+1))
printf("%d,%d",s,t);
}
~~

//10;64
//忘了宏定义的特殊性!它不是智能的,只是纯粹的代换
//所以s = a+1 *a+1 *a +1 它没有括号!!!
//记住就好

5. 已知一个函数void fun(int n, char *s){.......}请选择正确的函数指针
A.void (*pf)();pf = fun;
Bvoid *pf();pf = fun
Cvoid *pf();*pf = fun;
D:void(*pf)(int , char); pf = &fun;
//A
//好像没怎么用过,开始有点懵逼
//BC能排除的,这样写就变成函数名为*pf的函数(?好像不能这样命名,那就是单纯的错了)
//一个知识点:给函数指针赋值,不需要加原函数的参数
//忘了:函数名可以当地址用(虽然他不是,其实是一个指针,等于就是两个指针互相赋值了,&函数名没有含义)

6. 循环队列空间为Q(0:59),经过一系列的入队和出队后,front = 25,rear = 24,求当前一共有多少个数据
//59
// front跑到rear后面很好理解,关键在于front是指在第一个数据前面的,比如循环队列没有数据时,front = rear =0;加入一个之后,front = 0;rear= 1;所以说本题问题在于要多减去一个,不是满队列

7. 下面程序的输出是______。
main()
{ int k=11;
printf(“k=%d,k=%o,k=%x\n”,k,k,k);
}

//k=11,k=13,k=b
//虽然八进制和十六进制是要用前导符表示的,但是printf输出是不输出前导符的
//因此答案不是:k=11,k=013,k=0xb
*8. 有如下程序
main()
{
char s[] = “ABCD”, p;
for(p = s+1; p < s+4 ; p++) printf("%s\n",p);
}
该程序的输出结果是______。

//
BCD
CD
D
//这题对了,但是提醒一下自己%s时输出整个字符串,%c是输出一个字符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值