[新]C语言期末复习,经典练习题+知识点总结+模拟考题 三位一体,完胜c语言!!!!考期必备神器 下载本文

(B) int a[5], *num[5] = {&a[0], &a[1], &a[2], &a[3], &a[4]};

(C) int a[] = {1, 3, 5, 7, 9}; int *num[5] = {a[0], a[1], a[2], a[3], a[4]};

(D) int a[3][4], (*num)[4]; num[1] = &a[1][3];

当前编程题:实验七---整数的N进制字符串表示

1. 【问题描述】编写函数itob(n,s,b),用于把整数n转换成以b为基的字符串并存储到s中. 编写程序,使用函数itob(n,s,b)将输入的整数n,转换成字符串s,将s输出.转换后的字符串从最高的非零位开始输出。如果n为负数,则输出的字符串的第一个字符为’-’。b为大于1小于37的任意自然数值。当b=2时,输出字符只可能是’0’和’1’;当b=16时,输出字符串中可能含有字符为’0’-’9’,’a’-’f’(字母以小写输出)。b还可以是其它数值。比如输入n=33,b=17,则输出33的17进制值为\。

【输入形式】控制台输入整数n和b,其中n可以为负数。n和b以空格分隔.

【输出形式】控制台输出转化后的字符串s. 【样例输入】5 2 【样例输出】101

【样例说明】5的二进制就是101

【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为:itob.c

#include #include

void itob(int n,char s[],int b); void itob(int n,char s[],int b) { int tmp; int i = 0; tmp=n; while (tmp) {

13 / 30

if((tmp%b)>=10) s[i]='a'+tmp%b-10; else s[i]='0'+tmp%b; tmp=tmp/b; i++; } s[i]='\\0'; }

int main() { int n, b, i; char s[100]; scanf(\ itob(n,s,b); for(i = strlen(s) - 1;i>=0;i--) printf(\ return 0; }

第八次 填空题 # 题目

1. 写出程序的运行结果 1,2,3,3,5,4 #include main() {

int a[] = {1,2,3,4,5,6}; int *p; p=a;

printf(\ printf(\ printf(\ printf(\ p+=3;

printf(\}

2. 以下程序的运行结果是 10 x #include struct n { int x; char c; };

void func(struct n b) {

b.x = 20; b.c= ’y’; }

main() {

struct n a = {10, ’x’}; func(a);

printf (\}

3. 以下程序的运行结果是6,9

#include void main() {

int i;

for (i=4;i<=10;i++) {

if (i%3==0) continue; printf(\ } }

选择题

# 题目

1. 若有以下程序段 struct dent {

int n; int *m; };

int a=1, b=2, c=3;

struct dent s[3]={{101,&a},{102,&b},{103,&c}}; strcut dent *p =s;

则以下表达式值为2的是 A A.(p++)->m B.*(p++)->m

14 / 30

C.(*p).m D.*(++p)->m

2. 下面程序是求数组中的最小的元素,请选择填空。 D

findmin(int *s, int t, int *k) {

int p;

for(p = 0;p

if(s[p]

main() {

int a[10],i,*k=&i; for(i=0;i<10;i++) {

scanf(\ } i=0;

findmin(a, 10,k);

printf(\}

A.k=p B.*k=p-s C.k=p-s D.*k=p

3. 有如下定义: struct { int x; char *y;

} tab[2] = {{1, \

语句 printf(\的输出结果是b

4. 已知学生记录的定义为: struct student { int no; char name[20]; char sex; struct { int year; int month; int day; }birth; }; struct student s; 假设变量s中的“生日”应是“1988年5

月10日”,对“生日”的正确赋值语句是D (A) year=1988; month=5; day=10; (B) brith.year=1988; birth.month=5; birth.day=10; (C) s.year=1988; s.month=5; s.day=10; (D) s.birth.year=1988; s.birth.month=5; s.birth.day=10; 5. 若有以下说明和语句,则下面表达式中值为1002的是 D struct student { int age; int num; };

struct student stu[3] = {{1001, 20}, {1002, 19}, {1003, 21}};

struct student *p; p = stu; (A) (p++)->num (B) (p++)->age (C) (*p).num (D) (*++p).age 当前编程题:实验八---统计整数 15 / 30

1. 【问题描述】

输入若干个整数,统计出现次数最多的那个整数。如果出现最多的整数有两个以上,打印最早输入的那个整数。 【输入形式】 从标准输入读取输入。第一行只有一个数字N(1≤N≤10000),代表整数的个数。以后的N行每行有一个整数。 【输出形式】 向标准输出打印出现次数最多的那个数字。 【输入样例】 6 11 0 -1

20 0 300 【输出样例】 0 【样例说明】 输入6个整数,其中出现次数最多的是0,共出现两次。 【评分标准】 本题不准使用数学库函数。运行时限1秒,正确得20分,每个测试点4分,提交程序名为count.c。 {{建电脑桌面}} C 语言总复习C六月,奋战CC语言,大家一起加油啦~~~~~~~~~~~!! 总体上必须清楚的:? 1)程序结构是三种: 顺序结构 , 循环结构(三个循环结构), 选择结构(if 和 switch)? 2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选

择)。?

3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址.? 4)bit是位 是指为0 或者1。 byte 是指字节, 一个字节 = 八个位.?

5)一定要记住 二进制 如何划成 十进制。? 概念常考到的:?

1、编译预处理不是C语言的一部分,不再运行时间。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。?

2、每个C语言程序中main函数是有且只有一个。?

3、在函数中不可以再定义函数。?

4、算法的是一定要有输出的,他可以没有输入。?

5、break可用于循环结构和switch语句。? 6、逗号运算符的级别最低。? 第一章?

1)合法的用户标识符考查:?

合法的要求是由字母,数字,下划线组成。有其它元素就错了。?

并且第一个必须为字母或则是下划线。第一个为数字就错了。?

关键字不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。? 2)实型数据的合法形式:?

2.333e-1 就是合法的,且数据是2.333×10-1。? 考试口诀:e前e后必有数,e后必为整数。.? 3)字符数据的合法形式::?

'1' 是字符占一个字节,\是字符串占两个字节(含有一个结束符号)。?

'0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。?

4) 整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节:? 考试时候一般会说,在16位编译系统,或者是32位系统。碰到这种情况,不要去管,一样做题。掌握整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节就可以了。?

5)转义字符的考查:?

16 / 30

在程序中 int a = 0x6d,是把一个十六进制的数给变量a 注意这里的0x必须存在。?

在程序中 int a = 06d, 是一个八进制的形式。?

在转义字符中,’\\x6d’ 才是合法的,0不能写,并且x是小写。?

‘\\141’ 是合法的, 0是不能写的。? ‘\\108’是非法的,因为不可以出现8。? 6)算术运算符号的优先级别:? 同级别的有的是从左到右,有的是从右到左。?

7)强制类型转换:?

一定是 (int)a 不是 int(a),注意类型上一定有括号的。? 注意(int)(a+b)和(int)a+b 的区别。 前是把a+b转型,后是把a转型再加b。? 8)表达式的考查:?

是表达式就一定有数值。?

赋值表达式:表达式数值是最左边的数值,a=b=5;该表达式为5,常量不可以赋值。? 自加、自减表达式:假设a=5,++a(是为6), a++(为5);? 运行的机理:++a 是先把变量的数值加上1,然后把得到的数值放到变量a中,然后再用这?

个++a表达式的数值为6,而a++是先用该表达式的数值为5,然后再把a的数值加上1为6,?

再放到变量a中。 进行了++a和a++后在下面的程序中再用到a的话都是变量a中的6了。?

考试口诀:++在前先加后用,++在后先用后加。?

逗号表达式:优先级别最低 ;表达式的数值逗号最右边的那个表达式的数值。? (2,3,4)的表达式的数值就是4。? 9)位运算的考查:?

会有一到二题考试题目。? 总的处理方法:几乎所有的位运算的题目都要按这个流程来处理(先把十进制变成二进制再变成十进制)。? 例1: char a = 6, b;?

b = a<<2; 这种题目的计算是先要把a的十进制6化成二进制,再做位运算。