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

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

C语言期末复习(平时练习答案)[特别适用于千千万北航学子]

考试重点:(编程题)排序,选择与冒泡排序,,各种进制转换。。。。]

第二次大作业—

前驱、后继字符

1. 【问题描述】从键盘输入一个字符,求出它的前驱和后继字符(按照ASCII码值排序),并按照从小到大的顺序输出这三个字符和对应的ASCII值。【输入形式】从键盘输入一个字符【输出形式】按两行输出:第一行按照从小到大的顺序输出这三个字符,并以一个空格隔开;第二行按照从小到大的顺序输出三个字符对应的ASCII 值,并以一个空格隔开。【输入样例】 b 【输出样例】 a b c 97 98 99 【样例说明】输入字符b,b的前驱字符是a,后继字符是c,第一行按照从小到大的顺序输出a b c;第二行输出对应的ASCII值97 98 99 【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为:。

【问题描述】编写一程序,从键盘输入输入一个三位正整数,然后反向输出对应的数,如果输入的数不是三位正整数,则输出-1。【输入形式】从键盘输入三位的正整数。【输出形式】输出交换后的正整数值。【输入样例】 356 【输出样例】 653 【样例说明】从键盘输入的正整数值为356,将该数的个位与百位互换,所得结果为653.如果输入的正整数为300,则输出为3。【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为:。

【问题描述】从键盘输入三个整数,分别存入x,y,z三个整型变量中,计算并输出三个数的和以及平均值。【输入形式】从键盘输入三个整数,整数之间以空格隔开。【输出形式】在屏幕上分两行显示结果:第一行为三个数的和,整数形式输出;第二行为三个数的平均值,浮点数形式输出,小数点后保留两位小数。【输入样例】 3 2 3 【输出样例】 8 【样例说明】 3、2、3的和为8,所以第一行输出8;第二行输出3、2、3的平均值(保留两位小数)。【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为:。

f\n",average); 【问题描述】给出一个不多于5位的正整数,要求:1.求出它是几位数。 2.分别打印出每一位数字。 3.按照逆序打印出每一位数字。【输入形式】控制台输入该正整数。【输出形式】控制台分行输出输出结果。【样例输入】1234 【样例输出】 4 1234 4321 【样例说明】1234位数为4,分别为1,2,3,4,逆序为4321 【评分标准】该题共有三个输出整数,完全正确得10分,每答错一个扣掉4分,直至得分为0。本题要求上传程序的源文件。所采用语言可以是C(.c)。主文件名设定为

出它是几位数。 2.分别打印出每一位数字。 3.按照逆序打印出每一位数字。 *【问题描述】编程实现简易的计算器:读入两个整数运算数(data1和data2)及一个运算符(op),计算表达式data1 op data2的值,其中op可以是+,-,*,/。【输入形式】控制台输入运算数和运算符: 1.首先输入以空格分隔的两个整数,分别是data1和data2; 2.输入一个字符作为运算符op,op可以是’+’,’-’,’*’,’/’。输入时,data1、data2、op之间各留有一个空格。具体格式见样例输入。【输出形式】

控制台输出运算结果。作除法运算时,若能够整除,则输出为整数,否则输出结果小数点后应保留两位有效数字。【样例输入】23 5 * 【样例输出】 115 【样例说明】输入中先后输入第一个运算数23,第二个运算数5,运算符’*’,要求对23和5进行乘法运算。计算结果为115。【评分标准】该题共20分,每个测试点4分。本题要求上传程序的源文件。所采用语言可以是C(.c).即所上传的文件名为

f",d);

}

return 0;

}

找最大最小整数

1. 【问题描述】编写一个程序,用户输入若干整数,试找出其中的最大数和最小数。

【输入形式】用户在第一行待输入数据个数,在第二行输入数据。

【输出形式】程序在下一行输出数据的最大值和最小值

【样例输入】

5

89 62 96 74 52

【样例输出】96 52

【样例说明】用户第一次输入的为数据个数,在下一行依次输入数据。输出为5个数中的最大值和最小值,输出时候两个数之间用空格分隔。

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

2. 【问题描述】

平面上有两个矩形A和B,其位置是任意的。编程求出其相交部分(如图中阴影部分)的面积。(0≤a,b≤1000)

【输入形式】

从标准输入读取两行以空格分隔的整数,格式如下:

Ax1 Ay1 Ax2 Ay2

Bx1 By1 Bx2 By2

其中(x1,y1)和(x2,y2)为矩形对角线上端点的坐标。各坐标值均为整数,取值在0至1000之间。

【输出形式】

向标准输出打印一个整数,是两矩形相交部分的面积(可能为0)。在输出末尾要有一个回车符。

【输入样例】

0 0 2 2

1 1 3 4

【输出样例】

1

【评分标准】

结果完全正确得20分,每个测试点4分,提交程序文件名为。

[红色为采用答案

#include <>

#include <>

struct point {

int x;

int y;

}A1,A2,B1,B2;

struct rect {

struct point p1;

struct point p2;

}R1,R2;

struct point makepoint(int x,int y);

struct rect makerect(struct point p1,struct point p2);

struct rect guifanrect(struct rect R);

#define max(A,B) ((A)>(B)(A):(B))

#define min(A,B) ((A)>(B)(B):(A))main()

{

int i,num1[4],num2[4],area;

for(i=0;i<4;i++)

scanf("%d",&num1[i]);

for(i=0;i<4;i++)

scanf("%d",&num2[i]);

R1 = makerect(A1 = makepoint(num1[0],num1[1]),

A2 = makepoint(num1[2],num1[3]));

R2 = makerect(B1 = makepoint(num2[0],num2[1]),

B2 = makepoint(num2[2],num2[3]));

R1 = guifanrect(R1);

R2 = guifanrect(R2);

if( <= || <= ||

>= || >= area = 0;

else

area = abs(max - min *

abs(max - min

printf("%d\n",area);

}

struct point makepoint(int x,int y)

{

struct point temp;

= x;

= y;

return temp;

}

struct rect makerect(struct point p1,struct point p2)

{

struct rect temp;

= p1;

= p2;

return temp;

}

struct rect guifanrect(struct rect r)

{

struct rect temp;

= min = min = max = max return temp;

}

3. 【问题描述】编写一个程序,当在

一个字符串中出现子串时就删除它。

【输入形式】用户在第一行输入一个字符串,用户在第二行输入一个子串。【输出形式】程序在下一行输出删除其中所有子串后的字符串。如果字符串不包含子串则输出原字符串本身。

【样例输入】

I am a boy!

a

【样例输出】

I m boy!

【样例说明】用户首先输入字符串I am a boy!,然后输出子串a,程序会寻找字符串中的子串删除它,最后将删除后的结果输出:I#m##boy! #表示空格。

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

#include <>

#include <>

char source_str[1024];

char del_str[1024];

char dest_str[1024];

int main( void )

{

char *pdest;

int result;

fgets(source_str, 1024, stdin);

fgets(del_str, 1024, stdin);

source_str[strlen(source_str)-1] = '\0';

del_str[strlen(del_str)-1] = '\0';

pdest = strstr(source_str, del_str);

result = 0;

while(pdest != NULL) {

strncat(dest_str,

&source_str[result], (int)(pdest - &source_str[result]));

result += (int)(pdest - &source_str[result]) + strlen(del_str);

pdest = strstr(&source_str[result], del_str);

}

if(result < strlen(source_str)) {

strncat(dest_str,

&source_str[result], strlen(source_str) - result);

}

printf("%s\n", dest_str);

return 0;

}

4. 【问题描述】

编写一个函数char * str_bin(char* str1, char* str2), str1、str2是两个有序字符串(其中字符按ASCII码从小到大排序),将str2合并到字符串str1中,要求合并后的字符串仍是有序的,允许字符重复。在main函数中测试该函数:从键盘输入两个有序字符串,然后调用该函数,最后输出合并后的结果。【输入形式】

分行从键盘输入两个有序字符串(不超过100个字符)

【输出形式】

输出合并后的有序字符串

【输入样例】

aceg

bdfh

【输出样例】

abcdefgh

【样例说明】

输入两个有序字符串aceg和bdfh,输出合并后的有序字符串abcdefgh

【评分标准】

结果完全正确得20分,每个测试点4分,提交程序文件名为。

#include<>

char * str_bin(char* str1, char* str2)

{

static char str[100];

int i = 0;

while (*str1 && *str2)

{

if (*str1 < *str2)

str[i++] = *str1++;

else

str[i++] = *str2++;

}

if (*str1)

while (str[i++] = *str1++);

else

while (str[i++] = *str2++);

return str;

}

int main () {

char a[100];

char b[100];

scanf("%s\n%s",&a,&b);

printf ("%s\n",str_bin(a,b));

return 0;

}

作业四

填空题

# 题目

1. 已知: int a=2, b=7;

计算下列表达式的值: 5

a=4,b=1,a>b++a:++b;

选择题

# 题目

1. 已知:char a=’a’;float b=;double c=41;int d;则执行语句d=a+b+c;后变量d的数据类型为 A

(A) int (B) char (C) float (D) double

2. 字符串“\ta\017bc”的长度(不包括结束符)是 C

(A) 9

(B) 5

(C) 6

(D) 7

3. 设整型变量x和y的值均为7,则表达式“x/(y-4)”的值是C

A. 3

B. -3

C. 2

D. 1

4. 题目内容:

有输入语句:int a,b,c; scanf("a=%d,b=%d,c=%d", &a, &b, &c); 为使变量a的值为1,b的值为3,c的值为2,从键盘输入数据的正确形式应当是(注:#表示空格)D

(A) 132<回车>

(B) 1,3,2<回车>

(C) a=1#b=3#c=2<回车>

(D) a=1,b=3,c=2<回车>

编程题

作业四---反弹

1. 【问题描述】

已知一球从高空落下时,每次落地后反弹至原高度的四分之一再落下。编写一程序,从键盘输入整数n和m,求该球从n米的高空落下后,第m次落地时共经过的路程以及第m次落地后反弹的高度,并输出结果。

【输入形式】

从键盘输入整数n和m,以空格隔开。

【输出形式】

输出两行:

第一行输出总路程,保留小数点后两位;第二行输出第m次落地后反弹的高度,保留小数点后两位。

【输入样例】

40 3

【输出样例】

【评分标准】

结果完全正确得20分,每个测试点4分,提交程序文件。

---日期天数转换

2. 【问题描述】编写一个程序,用户输入日期,计算该日期是这一年的第几天。【输入形式】用户在第一行输入一个日期(年月日,中间以空格分割)

【输出形式】程序在下一行输出一个整数【样例输入】2006 2 21

【样例输出】52

【样例说明】用户以年月日的格式输入,中间以空格分割,程序计算出该天是输入年份的第几天并输出该天数。另外还需要判断这一年是否为闰年。

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

#include<>

struct tian

{

int year;

int month;

int day;};

int days(int year,int month,int day) {

int

s=0,i,a[13]={0,31,28,31,30,31,30,31,3 1,30,31,30,31};

if(year%4==0&&year%100!=0||year%400==0) a[2]=29;

for(i=1;i

return s;

}

void main()

{

int k=0;

struct tian a;

scanf("%d%d%d",&,&,&;

k=days,,;

printf("%d\n",k);

}

第五次走也

填空题

# 题目

1. 已知:int k= 4,a=3,b=2,c=1;则表达式“k

2. 已知:char x=’A’, y=’B’; 执行“(x=’B’)||(y=’C’)”的运算后,变量x,y的值分别为(答案用逗号隔开)

'B','B'

3. 已知:int a=5,b=6,w=1,x=2,y=3,z=4;执行语句“(a=w>x)&&(b=y>z);”后b 的值为6

选择题

# 题目

1. 执行以下程序段后,变量a,b,c的值分别是 B

int x = 10, y = 9;

int a, b, c;

a = (--x == y++) --x: ++y;

b = x++;

c = y;

(A) a = 9, b = 9, c = 9

(B) a = 8, b= 8, c = 10

(C) a = 9, b = 10, c = 9

(D) a = 11, b = 11, c = 10

编程题

作业五---删数问题

1. 【问题描述】输入一个高精度的大正整数S(S最长可达240位),去掉其中任意N 位数字后剩下的数字按原次序组成一个新的正整数S’。编程对给定的N和S,寻找一种方案使得剩下的数字组成的新数S’最小。【输入形式】输入有两行:

1.第一行是大整数S。其中S最长可达240位。

2.第二行是整数N。S、N均以非0数字开头。【输出形式】输出有一行,是在S中删除N 位后所得的最小数字S’。

【样例输入1】

178543

4

【样例输出1】13

【样例输入2】

1002

1

【样例输出2】002

【样例说明】样例1中输入整数S=178543,N=4,要求在178543中删除4位,使剩下的数字最小。正确答案为S’ = 13。样例2中输入整数S=1002,N=1,删完一位后S’= 002,而不是2,即2之前的0也必须输出。【运行时限】程序一次运行的最长时间限制在15秒内,超出则认为程序错误。

【算法提示】将整数看作字符串形式读入;删数时,从前往后寻找第一个比后一个数字大的数字,然后删除之,按照这种方法删除N个数字即得最小数字。

【评分标准】该题要求输出一个大整数的各位数字。结果完全正确得20分,每个测试点4分。上传C语言文件名为。

#include <>

#include <>

/* scan from 0 - 9, test the input, rescan if get the result. */

int main()

{

char integer[250], result[250];

int start = 0, strlength, n, i = 0, j, temp, k = 0;

fgets(integer, 249, stdin);

strlength = strlen(integer) - 1;

integer[strlength] = '\0';

scanf("%d", &n);

for (i = 0; i <= 9; i++) {

temp = i;

for (j = start; j <= n && n < strlength; j++)

if (integer[j] == temp + '0') {

result[k++] = temp + '0';

n++;

start = j + 1;

i = -1;

break;

}

}

for (i = 0; i < k; i++)

printf("%c", result[i]);

return 0;

}

作业五---求公式近似值

2. 【问题描述】

已知ex的近似值可由下面公式计算得出:

ex=1 + x/1! + x2/2! + x3/3! + ...... + xn/n!

给定x和n,利用上述公式求得ex的近似值。【输入形式】

从控制台输入小数x,和整数n(n>=1),用空格隔开。

【输出形式】

向控制台输出求得的ex 的近似值(小数点后保留6位有效数据)。

【样例输入】

7 27

【样例输出】

【样例说明】

输入的x为7,n的值为27,即:求e7的近似值,利用上述公式求得的近似值为:。

【评分标准】

该题要求输出ex的近似值,共有5个测试点。上传C语言文件名为。#include<>

int main()

{

double x,s,y;

int n,i;

double t;

scanf("%lf%d",&x,&n);

t=1;

s=1;

y=1;

for(i=1;i<=n;i++)

{

t*=i;

y*=x;

s+=y/t;

}

printf("%lf\n",s);

return 0;

}

作业六:

选择题

# 题目

1. 若有变量定义int a; double b; 要输入数据存放在a和b中,则下面正确的输入数据的语句为:C

A. scanf("%d%f",a,b);

B. scanf("%d%f",&a,&b);

C. scanf("%d%lf",&a,&b);

D. scanf("%d%lf",a,b);

2. 在C语言程序中,以下正确的描述是

(A) 函数的定义可以嵌套,但函数的调用不可以嵌套B

(B) 函数的定义不可以嵌套,但函数的调用可以嵌套

(C) 函数的定义和函数的调用均不可以嵌套

(D) 函数的定义和函数的调用均可以嵌套

3. 以下正确的函数声明形式是 A

(A) double fun(int x, int y)

(B) double fun(int x; int y)

(C) double fun(int x, int y);

(D) double fun(int x, y);

实验六---字符串中字符排序

1. 【问题描述】编写一个程序,从键盘接收一个字符串,然后按照字符顺序从小到大进行排序,并删除重复的字符。

【输入形式】用户在第一行输入一个字符串。

【输出形式】程序按照字符(ASCII)顺序从小到大排序字符串,并删除重复的字符进行输出。

【样例输入】badacgegfacb

【样例输出】abcdefg

【样例说明】用户输入字符串badacgegfacb,程序对其进行按从小到大(ASCII)顺序排序,并删除重复的字符,最后输出为abcdefg

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

#include <>

int main()

{

char str[500]={0},hash[256]={0};

int i;

scanf("%s",str);

for(i=0;str[i]!='\0';i++)

hash[str[i]]=1;

for(i=0;i!=256;i++)

if(hash[i]==1)

printf("%c",i);

printf("\n");

scanf("%d");

}

作业七:选择题

# 题目

1. 若有说明: char *language[] = {"FORTRAN", "BASIC", "PASCAL", "JAVA", "C"};则以下不正确的叙述是 D

(A) language+2 表示字符串"PASCAL"的首地址

(B) *language[2]的值是字母P

(C) language是一个字符型指针数组,它包含5个元素,每个元素都是一个指向字符串变量的指针

(D) language包含5个相同长度的数组

2. 设有说明 int (* ptr) [M]; 其中ptr 是 C

(A) M个指向整型变量的指针

(B) 指向M个整型变量的函数指针

(C) 一个指向具有M个整型元素的一维数组的指针

(D) 具有M个指针元素的一维指针数组,每个元素都只能指向整型量

3. 下面能正确进行字符串赋值,并且能确保字符串以’\0’结尾的操作是 C

(A) char s[5] = {"ABCDE"};

(B) char s[5] = {’A’, ’B’, ’C’, ’D’, ’E’};

(C) char *s; s = "ABCDE";

(D) char *s; scanf("%s", s);

4. 若有说明: char *language[] = {"FORTRAN", "BASIC", "PASCAL", "JAVA", "C"};则表达式*language[1] > *language[3] 比较的是 C

(A) 字符F和字符P

(B) 字符串BASIC和字符串JAVA

(C) 字符B和字符J

(D) 字符串FORTRAN和字符串PASCAL

5. 若有以下定义,则数值不为3的表达式是

int x[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8,

9}, *p1;C

(A) x[3]

(B) p1 = x + 3, *p1++

(C) p1 = x + 2, *(p1++)

(D) p1 = x + 2, *++p1

6. 以下正确的说明语句是A

(A) int *b[] = {1, 3, 5, 7, 9};

(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进制值为"1g"。【输入形式】控制台输入整数n和b,其中n可以为负数。n和b以空格分隔.

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

【样例输出】101

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

【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为:#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)

{

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("%d%d",&n,&b);

itob(n,s,b);

for(i = strlen(s) - 1;i>=0;i--)

printf("%c",s[i]);

return 0;

}

第八次

填空题

# 题目

1. 写出程序的运行结果 1,2,3,3,5,4 #include <>

main()

{

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

int *p;

p=a;

printf("%d,",*p);

printf("%d,",*(++p));

printf("%d,",*++p);

printf("%d,",*(p--));

p+=3;

printf("%d,%d",*p, *(a+3));

}

2. 以下程序的运行结果是 10 x #include<>

struct n {

int x;

char c;

};

void func(struct n b)

{

= 20;

= ’y’;

}

main()

{

struct n a = {10, ’x’};

func(a);

printf ("%d,%c", ,;

}

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

#include<>

void main()

{

int i;

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

{

if (i%3==0)

continue;

printf("%d",i);

}

}

选择题

# 题目

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

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("%d",&a[i]);

}

i=0;

findmin(a, 10,k);

printf("%d, %d", *k,a[*k]);

}

=p

B.*k=p-s

=p-s

D.*k=p

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

} tab[2] = {{1, "ab"}, {2, "cd"}}, *p = tab;

语句 printf("%c", *(++p)->y ); 的输出结果是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) =1988; =5; =10; (C) =1988; =5; =10; (D) 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

当前编程题:实验八---统计整数

1. 【问题描述】

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

【样例说明】 输入6个整数,其中出现次数最多的是0,共出现两次。 【评分标准】 本题不准使用数学库函数。运行时限1秒,正确得20分,每个测试点4分,提交程序名为。 {{建电脑桌面}}

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)实型数据的合法形式:?

就是合法的,且数据是×10-1。?

考试口诀:e前e后必有数,e后必为整数。.?3)字符数据的合法形式::?

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

'0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。?4)整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节:?

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

5)转义字符的考查:?

在程序中 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化成二进制,再做位运算。?

例2:一定要记住,?

例3:在没有舍去数据的时候,<<左移一位表示乘以2;>>右移一位表示除以2。?10)018的数值是非法的,八进制是没有8的,逢8进1。?

11)%符号两边要求是整数。不是整数就错了。?

12) 三种取整丢小数的情况:?

1、int a =;?

2、(int)a;?

3、?

?

第二章?

1)printf函数的格式考查:?

%d对应整型;%c对应字符;%f对应单精度等等。宽度的,左对齐等修饰。?

%ld对应 long int;%lf 对应double。?2)scanf函数的格式考察:?

注意该函数的第二个部分是&a 这样的地址,不是a;?

Scanf(“%d%d%*d%d”,&a,&b,&c); 跳过输入的第三个数据。?

3)putchar ,getchar 函数的考查:?

char a = getchar() 是没有参数的,从键盘得到你输入的一个字符给变量a。-putchar(‘y’)把字符y输出到屏幕中。?4)如何实现两个变量x ,y中数值的互换(要求背下来)?

不可以把 x=y ,y=x; 要用中间变量 t=x;x=y;y=t。?

5)如何实现保留三位小数,第四位四舍五入的程序,(要求背下来)?

这个有推广的意义,注意 x = (int)x 这样是把小数部分去掉。?

?

第三章?

特别要注意:c语言中是用非0表示逻辑真的,用0表示逻辑假的。?

1)关系表达式:?

表达式的数值只能为1(表示为真),或0(表示假)?

当关系的表达是为真的时候得到1。如 9>8这个是真的,所以表达式的数值就是1;?2)逻辑表达式:?

只能为1(表示为真),或0(表示假)?

a) 共有&& || !三种逻辑运算符号。?

b) !>&&>|| 优先的级别。?

c) 注意短路现象。考试比较喜欢考到。?

d) 要表示 x 是比0大,比10小的方法。0

else 是与最接近的if且没有else的相组合的。?

4)条件表达式:?

表达式1 表达式2 :表达式3?

注意是当非0时候是表达式2的数值,当为0是就是表达式2的数值。?

考试口诀:真前假后。?

5)switch语句:?

a)一定要注意有break 和没有break的差别,书上(34页)的两个例子,没有break 时候,只要有一个case匹配了,剩下的都要执行,有break则是直接跳出了swiche 语句。?

b)switch只可以和break一起用,不可以和continue用。?

?

第四章?

1)三种循环结构:?

a)for(); while(); do- while()三种。?

b)for循环当中必须是两个分号,千万不要忘记。?

c)写程序的时候一定要注意,循环一定要有结束的条件,否则成了死循环。-

d) do-while()循环的最后一个while();的分号一定不能够丢。(当心上机改错)?

2) break 和 continue的差别?

记忆方法:?

break:是打破的意思,(破了整个循环)所以看见break就退出真个一层循环。?continue:是继续的意思,(继续循环运算),但是要结束本次循环,就是循环体内剩下的语句不再执行,跳到循环开始,然后判断循环条件,进行新一轮的循环。?

3)嵌套循环?

就是有循环里面还有循环,这种比较复杂,要一层一层一步一步耐心的计算,一般记住两层是处理二维数组的。?

4) while((c=getchar())!=’\n’)和 while (c=getchar() !=’\n’)的差别?

先看a = 3 != 2 和(a=3)!=2 的区别:?(!=号的级别高于=号所以第一个先计算3!=2)第一个a的数值是得到的1;第二个a的数值是3。?

考试注意点: 括号在这里的重要性。?

?

第五章?

函数:是具有一定功能的一个程序块;?

1) 函数的参数,返回数值(示意图):?main()?

{?

int a = 5,b=6,c;?

c = add(a,b);?

printf(“%d”,c);?

}?

?

调用函数?

a,b是实参?

整个函数得到一个数值就是?

Add函数的返回数值。?

int add ( int x, int y)?{?

int z;?

z=x+y;?

return z;?

}?

被调用函数?

x,y是形式参数?

函数返回数值是整型?

?

z就是这个add函数计算后得到的结果,就是函数返回给主程序的返回数值。-

程序是在从上往下顺序执行,当碰到了函数add后,把a,b的数值穿给调用函数,程序暂时中断等待返回数值。当得到了返回数值后,再顺序的往下执行?

2)一定要注意参数之间的传递?

实参和形参之间传数值,和传地址的差别。(考试的重点)?

传数值的话,形参的变化不会改变实参的变化。?

传地址的话,形参的变化就会有可能改变实参的变化。?

3)函数声明的考查:?

一定要有:函数名,函数的返回类型,函数的参数类型。?

不一定要有:形参的名称。?

?

第六章?

指针变量的本质是用来放地址,而一般的变量是放数值的。?

int *p 中 *p和p的差别:?

*p可以当做变量来用;*的作用是取后面地址p里面的数值?

p是当作地址来使用。?

*p++ 和(*p)++的之间的差别:改错题目中很重要?

*p++是地址会变化。?

(*p)++ 是数值会要变化。?

三名主义:(考试的重点)?

数组名:表示第一个元素的地址。数组名不可以自加,他是地址常量名。(考了很多次)?

函数名:表示该函数的入口地址。?

字符串常量名:表示第一个字符的地址。?

?

第七章?

1一维数组的重要概念:?

对a[10]这个数组的讨论。?

1、a表示数组名,是第一个元素的地址,也就是元素a[10]的地址。?

2、a是地址常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。?

3、a是一维数组名,所以它是列指针,也就是说a+1是跳一列。?

对a[3][3]的讨论。?

1、a表示数组名,是第一个元素的地址,也就是元素a[10]的地址。?

2、a是地址常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。?

3、a是二维数组名,所以它是行指针,也就是说a+1是跳一行。?

4、a[0]、a[1]、a[2]也都是地址常量,不可以对它进行赋值操作,同时它们都是列指针,a[0]+1,a[1]+1,a[2]+1都是跳一列。?

5、注意a和a[0] 、a[1]、a[2]是不同的,它们的基类型是不同的。前者是一行元素,后三者是一列元素。?

二维数组做题目的技巧:?

如果有a[3][3]={1,2,3,4,5,6,7,8,9}这样的题目。?

步骤一:把他们写成:第一列第二列第三列?

a[0]à 1 2 3 ->第一行?

a[1]à 4 5 6 —>第二行?

a[2]à 7 8 9 ->第三行?

步骤二:这样作题目间很简单:?*(a[0]+1)我们就知道是第一行的第一个元素往后面跳一列,那么这里就是a[0][1]元素,所以是1。?

*(a[1]+2)我们就知道是第二行的第一个元素往后面跳二列。那么这里就是a[1][2]元素,所以是6。?

一定记住:只要是二维数组的题目,一定是写成如上的格式,再去做题目,这样会比较简单。?

数组的初始化,一维和二维的,一维可以不写,二维第二个一定要写?int a[]={1,2} 合法。 int a[][4]={2,3,4}合法。但int a[4][]={2,3,4}非法。?二维数组中的行指针?

int a[1][2];?

其中a现在就是一个行指针,a+1跳一行数组元素。搭配(*)p[2]指针?

a[0],a[1]现在就是一个列指针。a[0]+1 跳一个数组元素。搭配*p[2]指针数组使用?

还有记住脱衣服法则:?

a[2] 变成 *(a+2) a[2][3]变成 *(a+2)[3]再可以变成 *(*(a+2)+3)-

这个思想很重要!?

学习

模拟试题::::

一、选择题

1、字符串"\\\'efg\'\\"的长度是:( ).

A、3

B、11

C、7

D、5

2、设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的

数据类型为()。

A、double

B、不确定

C、int

D、float

3、下列语句的结果是()。

main()

{ int j;

j=3;

printf("%d,",++j);

printf("%d",j++);

}

A、3,3

B、4,4

C、3,4

D、4,3

4、逻辑表达式!(2-1)&&x||0的值是( )

A、1

B、0

C、3

D、2

5、int a=1,b=2,c=3; if(a>b)a=b; if(a>c)a=c; 则a的值为()。

A、3

B、2

C、1

D、不一定

6、执行语句 for(i=1;i++<4;); 后变量 i 的值是()。

A、3

B、5

C、4

D、不定

7、以下正确的描述是( ).

A、只能用continue语句来终止本次循环

B、switch语句中不能出现continue语句

C、在循环中break语句不能独立出现

D、goto语句只能用于退出多层循环

8、下面合法的语句定义是( ).

A、char a[ ]={'0','1','2','3','4','5'};

B、int a[ ]="string";

C、int a[5]={0,1,2,3,4,5};

D、char a="string";

9、char a[10];不能将字符串"abc"存储在数组中的是()。

A、int i;for(i=0;i<3;i++)a[i]=i+97;a[i]=0;

B、a="abc";

C、strcpy(a,"abc");

D、a[0]=0;strcat(a,"abc");

10、在C语言中,一维数组的定义方式为:类型说明符数组名()。

A、[整型常量]或[整型表达式]

B、[正整型常量表达式]

C、[整型表达式]

D、[常量表达式]

11、在定义全局变量和局部静态变量的同时赋值,变量的初始化在()时确定的.

A、运行

B、编辑

C、编译

D、调试

12、关于建立函数的目的,以下正确的说法是()。A、提高程序的可读性

B、减少程序文件所占内存

C、减少程序的篇幅

D、提高程序的执行效率

13、以下函数调用语句中实参的个数是()。func((e1,e2),(e3,e4,e5));

A、3

B、5

C、语法错误

D、2

14、设有宏定义#define SUB(x,y) (x)*y,且a=3,b=4,则 SUB(a++,b++) 的值为( ).

A、13

B、16

C、20

D、12

15、变量p为指针变量,若p=&a,下列写法不正确的是()。

A、*(p++)==a++

B、&*p==&a

C、(*p)++==a++

D、*&a==a

16、下列程序正确的运行结果为( ).

#include<>

main()

{

union u

{char *name;

int age;

int income;

} s;

="WANGLING";

=28;

=1000;

printf("%d\n", ;

}

A、8

B、28

C、1000

D、不确定

17、定义my_file 为文件型指针变量,使用fopen只读方式打开一个已存在的二进制文件,以下正

确的调用形式为( ).

A、my_file=fopen("", "r");

B、my_file=fopen("", "rb+");

C、my_file=fopen("", "rb");

D、my_file=fopen("", "r+");

答案:CABBC BAABB CADDA CC

二、判断

1、若i =3,则printf("%d",-i++);输出的值为 -4。

2、格式字符%x用来以八进制形式输出整数.

3、设u=1,v=2,w=3,则逻辑表达式u||v-w&&v+w的值为0.

4、已知a=4,b=2,c=3,d=5,表达式

a>ba:c

5、break语句能够终止当前进行的多层循环.

6、break语句不能终止正在进行的多层循环.

7、若有定义和语句:

int

a[3][3]={{3,5},{8,9},{12,35}},i,sum=0 ;

for(i=0;i<3;i++) sum+=a[i][2-i];则sum=21.

8、二维数组在内存中存贮时,是按行的顺序进行存储的。

9、C语言中引用数组元素的方括号可以用花括号代替.

10、每次调用函数时,都要对静态局部变量重新进行初始化.

11、在程序中的第二个函数之后定义了某全局变量,则该程序的所有函数均可使用它. 12、在C程序中 , 函数既可以嵌套定义 , 也可以嵌套调用

13、在定义宏时,在宏名与带参数的括弧之间不应加空格.

14、数组名与指针变量是相互等价的.

15、两个类型相同的结构体变量,可以互相赋值.

16、C语言中,在打开文件时,必须说明文件的使用方式,"r+"用于打开一个不存在的文件.答案:错错错错错对对对错错错错对错对错

三、填空

1、设x和y均为int型变量,且x=1,y=2,则表达式+x/y的值为.

2、在C语言中,long类型数据占___4__个字节, short类型数据占_2____个字节.

3、int x=2,y=3,z=4; 则表达式x+y>z&&y==z的值为 0_____.

4、int x=2,y=3,z=4; 则表达式x+y&&(x=y)的值为____1_.

5、C语言中,二维数组在内存中的存放方式为按___行__优先存放.

6、函数调用时的实参和形参之间的数据是单向的_值____传递.

7、结构体是不同数据类型的数据集合,作为数据类型, 必须先说明结构体___类型__,再说明结构体变量.

8、调用 fopen 函数打开一文本文件,在"使用方式"这一项中, 为输入而打开需填入_r____.

答案:(1)1 1. (2) 4 2 (3)0 (4) 1 (5)行(6)值(7)类型(8)r+ r

四、程序设计

1、功能:求出二维数组外围元素之和,作为函数值返回。二

维数组的值在主函数中赋予。

-------------------------------------#define M 4

#define N 5

#include ""

int fun(int a[M][N])

{

/*********Begin**********/

/********** End **********/

}

main()

{

int

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

void TestFunc();

int y;

y=fun(a);

printf("s=%d\n",y);

TestFunc();

}

void TestFunc()

{

FILE *IN,*OUT;

int iIN[M][N],iOUT;

int i,j,k;

IN=fopen("","r");

if(IN==NULL)

{printf("Please Verify The Currernt Dir..It May Be Changed");

}

OUT=fopen("","w");

if(OUT==NULL)

{printf("Please Verify The Current Dir.. It May Be Changed");

}

for(k=0;k<10;k++)

{ for(i=0;i

for(j=0;j

fscanf(IN,"%d",&iIN[i][j]);

iOUT=fun(iIN);

fprintf(OUT,"%d\n",iOUT);

}

fclose(IN);

fclose(OUT);

}

【参考代码】

int s=0;

int i,j;

for(i=0;i

for(j=1;j

s=s+a[0][j]+a[M-1][j];

return s;

===============

2、功能:找出一个大于给定整数且紧随这个整数的素数,并

作为函数值返回。

------------------------------------------------*/

#include ""

#include""

int fun(int n)

{

/*********Begin**********/

/********** End **********/

}

void TestFunc()

{

FILE *IN,*OUT;

int s ;

int t;

int o;

IN=fopen("","r");

if(IN==NULL)

{

printf("Read File Error");

}

OUT=fopen("","w");

if(OUT==NULL)

{

printf("Write File Error");

}

for(s=1;s<=5;s++)

{

fscanf(IN,"%d",&t);

o=fun(t);

fprintf(OUT,"%d\n",o);

大学c语言必背基础知识_c语言基础知识大全

大学c语言必背基础知识_c语言基础知识大全 对于刚学计算机编程的同学来说,没一个编程知识都觉得很重要,其实不是的。下面小编为大家整理了相关大学c语言必背基础知识,希望大家喜欢。 大学c语言必背基础知识举例说明: printf(“-”,123 ); 第二部分有三位,大于指定的两位,原样输出123 printf(“]”,123 ); 第二部分有三位,小于指定的五位,左边补两个空格123 printf(“f”,1.25 ); 小数要求补足6位的,没有六位的补0,。结果为1.250000 printf(“%5.3f”,125 ); 小数三位,整个五位,结果为1.250(小数点算一位) printf(“%3.1f”,1.25 );小数一位,整个三位,结果为1.3(要进行四舍五入) 第三节数据输入1、scanf(“a=%d,b=%d”,">2、scanf(“%d,%d”,x,y);这种写法绝对错误,scanf的第二个部分一定要是地址!scanf(“%d,%d”,注意写成这样才可以! 3、特别注意指针在scanf的考察例如:int x=2;int *p=scanf(“%d”,x); 错误scanf(“%d”,p);正确scanf(“%d”,错误scanf(“%d”,*p)错误 4、指定输入的长度(考试重点)终端输入:1234567scanf(“-M%d”,x为12,y为3456,z为7终端输入:1 234567 由于1和2中间有空格,所以只有1位给xscanf(“-M%d”,x 为1,y为2345,z为67 5、字符和整型是近亲:int x=97;printf(“%d”,x); 结果为97printf(“%c”,x); 结果为a 6、输入时候字符和整数的区别(考试超级重点) scanf(“%d”,这个时候输入1,特别注意表示的是整数1 scanf(“%c”,这个时候输入1,特别注意表示的是字符‘1’ASCII为整数48。 补充说明: 1)scanf函数的格式考察: 注意该函数的第二个部分是scanf(“%d%d%*d%d”,跳过输入的第三个数据。 2)putchar ,getchar 函数的考查:

c语言公共基础知识

二级公共基础知识总结 第一章数据结构与算法 1.1 算法算法:是指解题方案的准确而完整的描述。算法不等于程序,也不等计算机方法,程序的编制不可能优于算法的设计。算法的基本特征:是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。特征包括: (1)可行性; (2)确定性,算法中每一步骤都必须有明确定义,不充许有模棱两可的解释,不允许有多义性; (3)有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止,包括合理的执行时间的含义; (4)拥有足够的情报。算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。指令系统:一个计算机系统能执行的所有指令的集合。基本运算包括:算术运算、逻辑运算、关系运算、数据传输。算法的控制结构:顺序结构、选择结构、循环结构。算法基本设计方法:列举法、归纳法、递推、递归、减斗递推技术、回溯法。算法复杂度:算法时间复杂度和算法空间复杂度。算法时间复杂度是指执行算法所需要的计算工作量。算法空间复杂度是指执行这个算法所需要的内存空间。 1.2 数据结构的基本基本概念数据结构研究的三个方面: (1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;

(2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构; (3)对各种数据结构进行的运算。数据结构是指相互有关联的数据元素的集合。数据的逻辑结构包含:(1)表示数据元素的信息;(2)表示各数据元素之间的前后件关系。数据的存储结构有顺序、链接、索引等。线性结构条件:(1)有且只有一个根结点;(2)每一个结点最多有一个前件,也最多有一个后件。非线性结构:不满足线性结构条件的数据结构。 1.3 线性表及其顺序存储结构线性表是由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。在复杂线性表中,由若干项数据元素组成的数据元素称为记录,而由多个记录构成的线性表又称为文件。非空线性表的结构特征:(1)且只有一个根结点a1,它无前件; (2)有且只有一个终端结点an,它无后件; (3)除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。结点个数n称为线性表的长度,当n=0时,称为空表。线性表的顺序存储结构具有以下两个基本特点:(1)线性表中所有元素的所占的存储空间是连续的;(2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。ai的存储地址为:ADR(ai)=ADR(a1)+(i-1)k,,ADR(a1)为第一个元素的地址,k代表每个元素占的字节数。顺序表的运算:插入、删除。 (4)1.4 栈和队列栈是限定在一端进行插入与删除的线性表,允许

计算机二级C语言高效考点

计算机二级C语言高效考点 2017年计算机二级C语言高效考点锦集 C语言基本知识 【考点1】C程序 C语言程序结构有三种:顺序结构,循环结构(三个循环结构),选 择结构(if和switch) 【考点2】main函数 每个C语言程序中main函数是有且只有一个。读程序都要从 main()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做 选择)。 【考点3】存储形式 计算机的数据在电脑中是以二进制的形式保存。最低的存储单元是bit(位),位是由为0或者1构成。byte是指字节,一个字节=八 个位。数据存放的位置就是它的地址。 【考点4】注释 是对程序的说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行, 注释不可以嵌套。 【考点5】书写格式 每条语句的后面必须有一个分号,分号是语句的一部分。一行内可写多条语句,一个语句可写在多行上。 【考点6】标识符 合法的用户标识符考查: 合法的要求是由字母,数字,下划线组成。有其它元素就错了。

并且第一个必须为字母或则是下划线。第一个为数字就错了。 C语言标识符分如下3类 (1)关键字。它们在程序中有固定的含义,不能另作他用。如int、for、switch等。 (2)预定义标识符。预先定义并具有特定含义的标识符。如define、include等。 (3)用户标识符。用户根据需要定义的标识符,符合命名规则且不与关键字相同。 关键字不可以作为用户标识符号。maindefinescanfprintf都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。 【考点7】实型数据 实型数据的合法形式:小数形式和指数形式。掌握判定指数形式合法性。 2.333e-1就是合法的,且数据是2.333×10-1。 考试口诀:e前e后必有数,e后必为整数。 【考点8】字符 字符数据的合法形式:: '1'是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。 '0'的ASCII数值表示为48,'a'的ASCII数值是97,'A'的ASCII数值是65。 字符型和整数是近亲: chara=65; printf(“%c”,a);得到的输出结果:a

大学c语言考试基础知识复习

C 语言最重要的知识点复习资料总体上必须清楚的: 1)程序结构是三种: 顺序结构、选择结构(分支结构)、循环结构。 2)读程序都要从()入口, 然后从最上面顺序往下读(碰到循环做循环, 碰到选择做选择),有且只有一个函数。 3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址. 4)是位是指为0 或者1 。是指字节, 一个字节= 八个位. 概念常考到的: 1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。C语言编译的程序称为源程序,它以数值存放在文本文件中。 2、 3.1415926; 这个写法是错误的,一定不能出现分号。 3、每个C语言程序中函数是有且只有一个。 4、在函数中不可以再定义函数。 5、算法:可以没有输入,但是一定要有输出。 6、可用于循环结构和语句。 7、逗号运算符的级别最低,赋值的级别倒数第二。 第一章 C 语言的基础知识 第一节、对C语言的基础认识 1、C语言编写的程序称为源程序,又称为编译单位。 2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。 3、一个C语言程序有且只有一个函数,是程序运行的起点。第二节、熟悉 1、是软件,用来运行写的C语言程序。 2、每个C 语言程序写完后,都是先编译,后链接,最后运行。()这个过程中注意和文件时无法运行的,只有文件才可以运行。(常考!) 第三节、标识符 1、标识符(必考内容):合法的要求是由字母,数字,下划线组成。有其它元 素就错了。并且第一个必须为字母或则是下划线。第一个为数字就错了 2、标识符分为关键字、预定义标识符、用户标识符。 关键字:不可以作为用户标识符号。都不是关键字。迷惑你的地方是 可以做为用户标识符。因为中的第一个字母大写了,所以不是关键字。 预定义标识符:背诵。记住预定义标识符可以做为用户标识符。 用户标识符:基本上每年都考,详细请见书上习题。 第四节:进制的转换 十进制转换成二进制、八进制、十六进制。二进制、八进制、十六进制转换 成十进制。 第五节:整数与实数 1)C 语言只有八、十、十六进制,没有二进制。但是运行时候,所有的进制都要转换成二进制来进行处理。(考过两次) a 、C语言中的八进制规定要以0开头。018的数值是非法的,八进制是没有 8 的,逢8 进1。 b 、C语言中的十六进制规定要以Ox开头。 2)小数的合法写法:C语言小数点两边有一个是零的话,可以不用写。

c语言基础知识及考点整理

第一周 int定义整型变量所有字母都要先定义再使用。 算法:描述完成任务的步骤序列。 算法的三个基本结构:顺序、分支、循环。 算法的表示:自然语言、程序流图、N-S图 程序流图中判定框用菱形,开始结束用圆角矩形,赋值用矩形。 main:主函数,后面一定是英文输入法下的() int:定义“整形变量” printf:输出语句 scanf:输入语句 %:占位符一个占位符就是占据一个字符的位置,格式化输出时显示为个空格. 具体用法如下: %a,%A 读入一个浮点值(仅C99有效) %c 读入一个字符 %d 读入十进制整数 %i 读入十进制,八进制,十六进制整数 %o 读入八进制整数%x,%X 读入十六进制整数 %s 读入一个字符串,遇空格、制表符或换行符结束。 %f,%F,%e,%E,%g,%G 用来输入实数,可以用小数形式或指数形式输入。 %p 读入一个指针 %u 读入一个无符号十进制整数 %n 至此已读入值的等价字符数 %[] 扫描字符集合

%% 读%符号(c此内容来自baidu) &:“取地址”运算符:这个运算发可以这样理解,比如说&a的含义就是a在内存中的地址。因为&运算符能够取出一个变量在内存中的地址,所以叫做取地址运算符。 输入语句scanf("%d %d",&a,&b); 输出语句printf("%d", c); 输出内容由“”引出 注意一个;就是一个语句,每句话后都要有分号,不能丢。括号是英文的, 一个程序主要由顺序分支循环3种结构构成 { }不能忘,限制变量作用范围 进入CodeBlocks之后新建一个项目,在project选项中选择控制台应用程序Console application进行编写。 输入语句scanf和输出语句printf中的“f”指的是format格式。 程序编写完成后点击Build——Build and run 或F9进行运行,并可点击View——log看到编程日志,检查错误。 分号;不能少 .如果觉得编写过程中字符显示太小可以按住ctrl并将鼠标滚轮向下滚来放大~ 第二周 计算一元二次方程的根的题目中,遵守四则运算法则,求根公式.../2a中的2a要用()括起来 华氏温标(Fahrenheit temperature scale)符号℉,1724年,德国人华伦海特制定了华氏温标,他把一定浓度的盐水凝固时的温度定为0℉,把纯水凝固时的温度定为32 ℉,把标准大气压下水沸腾的温度定为212℉,中间分为180等份,每一等份代表1度,这就是华氏温标,用符号F表示,这就是华氏温度 摄氏温度(℃)和华氏温度(℉)之间的换算关系为: 华氏度(℉)=32+摄氏度(℃)×,摄氏度(℃)=(华氏度(℉)-32)÷。

谭浩强C语言知识点总结

谭浩强C语言知识点总 结 文件编码(GHTU-UITID-GGBKT-POIU-WUUI-8968)

C语言最重要的知识点总体上必须清楚的: 1)程序结构是三种: 顺序结构、选择结构(分支结构)、循环结构。 2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。 3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址. 4)bit是位是指为0 或者1。 byte 是指字节, 一个字节 = 八个位.概念常考到的: 1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。 2、define PI ; 这个写法是错误的,一定不能出现分号。 3、每个C语言程序中main函数是有且只有一个。 4、在函数中不可以再定义函数。 5、算法:可以没有输入,但是一定要有输出。 6、break可用于循环结构和switch语句。 7、逗号运算符的级别最低,赋值的级别倒数第二。 第一章 C语言的基础知识 第一节、对C语言的基础认识 1、C语言编写的程序称为源程序,又称为编译单位。 2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。 3、一个C语言程序有且只有一个main函数,是程序运行的起点。

第二节、熟悉vc++ 1、VC是软件,用来运行写的C语言程序。 2、每个C语言程序写完后,都是先编译,后链接,最后运行。(.c---?.obj---?.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才可以运行。(常考!) 第三节、标识符 1、标识符(必考内容): 合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了 2、标识符分为关键字、预定义标识符、用户标识符。 关键字:不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。 预定义标识符:背诵define scanf printf include。记住预定义标识符可以做为用户标识符。 用户标识符:基本上每年都考,详细请见书上习题。 第四节:进制的转换 十进制转换成二进制、八进制、十六进制。 二进制、八进制、十六进制转换成十进制。 第五节:整数与实数 1)C语言只有八、十、十六进制,没有二进制。但是运行时候,所有的进制都要转换成二进制来进行处理。(考过两次)

贵州大学2012-2013C语言考试A卷 附 重要考点复习资料

贵州大学2012-20103学年第一学期考试试卷 A C语言程序设计 满分100分,考试时间为120分钟。 一、单项选择题(选出一个正确答案,每小题2分,共20分) 1.完成C源文件编辑后、到生成执行文件,C语言处理系统必须执行的步骤依次为( ) A.连接、编译 B. 连接、运行 C. 编译、运行 D. 编译、连接 2.下列说法正确的是() A.一个c语言程序并非总是从主函数位置开始执行的 B.一个c语言程序有且只有一个主函数 C.函数可以嵌套定义,不可以嵌套调用 D.程序函数的位置不可以任意 3.下面是合法C语言标识符的是() A. 2A_K; B. _M+N; C. –M3; D. AC_2; 4.下列格式符中,可以用于控制字符输出的是( ) A. %d B. %f C. %o D. %c 5.设x、y、z和k都是int型变量,则执行表达式x=(y=4,z=16,k=30)后,x的值是( ) A. 4; B. 16; C. 30; D. 50; 6.执行语句“for(i=1,s=0;i<=5;i++) s+=i;”后,变量s、i的当前值是( ) A. 10,5 B. 15,6 C. 15,5 D. 10,6 7.若有定义 int x,*p;,则以下正确的赋值表达式是( ) A. p=x; B. p=&x; C. *p=&x; D. *p=*x; 8.以下对结构体类型变量的定义中,不正确的是( ) A. typedef struct aa B. #define AA struct aa { int n; AA { int n; float m; float m; }AA; } stud; AA stud; C. struct D. struct { int n; { int n; float m; float m; }aa; }stud; struct aa stud; 9.有如下函数调用语句: func(rec1,rec2+rec3,(rec4+rec5)); 函数调用语句中,含有的实参个数是( ) A. 3 B. 4 C. 5 D. 以上均不是 10.对于以下宏定义: #define SQ(x) x*x #define QQ(x,y) SQ(x)- SQ(y) 宏调用QQ(2*3,2+3)执行后值为( ) A.25 B.11 C.43 D.以上均不是

C语言基础知识整理

C 语言基础知识 1. 每个C 程序有且只有一个主函数main() ,且程序必须从main() 函数开始执行,并在main() 函数中结束。 2. 在C语言中,用e来表示科学计数法时,规定在e的前面必须有数字,后面必须为整数。 3. 用单引号括起来的一个字符常量只能存放一个字符;C 语言中没有字符串变量,只能用字符数组来存储字符串。 4. 外部变量在编译时由系统分配永久的内存空间,所以外部变量的类型不是自动存储类别。 5. 在一个函数内的复合语句中定义的变量,只能在这个复合语句范围内有效。 6. 用sizeof(int) 计算int 类型数据的字节数。 7. C语言运行时,首先系统检查语法的正误,再运行程序的语法;C语言中,可以在一个函数中嵌套一个函数,但是不能在一个函数中定义一个函数;只有在函数外部定义的函数才是外部函数;C语言的子程序有过程和函数两种。 8. 预处理命令行的位置没有规定,只是习惯放在前面;在源文件中的可以有多条预处理命令,但一行只能写一条;宏名的大写只是习惯性的表示;宏替换不仅不占用运行时间还不分配内存空 间。 9. feo f函数的作用是检查文件是否结束,当结束时返回的值为非零,否则为零。 10. 当定义了数组后,在给其赋值时,不能直接把字符串赋给数组名。 11. 在赋值表达式中,赋值运算符"=”右侧不能为表达式;在求余运算符中的两侧都必须为整型;在强制类型转换时,类型名应用括号括起来。 12. 静态局部变量,只有当程序结束后,其值才释放。 13. 当调用函数时,实参是一个数组名,则向函数传送的是数组每一个元素的地址。 14. 算法的特点为有零个或多个输入,有一个或多个输出,当相同的输入时,其结果相同;算法 正确的程序最终一定会结束。15. 在 C 语言中,预处理命令行都以“#”开头;当需要时才用 #include; 预处理的作用就是实现宏定义和条件编译。16. 当数组元素的下标超出了定义 的下标范围时,系统不给出“下标越界”的字样,而是得出错误的答案,因此在编程时务必检查下标是否越界。 17. 共用体变量不能作为函数的参数,也不能使函数带回共用体变量。 18. 指向函数的指针变量的定义形式为:数据类型(* 指针变量)();,因此其为指向函数的 指针变量。 19. 用C 语言编写的代码程序是源程序,只有通过编译、连接才能进行。 20. 在说明为static 时,其生存期得到延长,而其作用域并没有改变,在定义后系统会自动帮它赋值为0,static 为关键字不能被用作它用。 21. 频繁地使用空语句会降低程序的可读性和运算速度。22. 运算符%两边都应是整数,赋值语 句左边应该是变量,而非表达式,强制转换语句强制类型应加括号。 23. 在逻辑运算符中,其两侧的运算符对象为任意合法的表达式即可。 24. 函数fread (&larray,2,16,fp)的功能是,从fp所指的数据文件中读取16次2字节的数据 存储到数组larray中。25.整个流式文件也可以随机存取数据,C语言文件中有好多函数可以达 到写入数据时,未经输入数据,达到不覆盖的目的,在进行写操作时,系统会自动关闭文件。 26. 使用putchar、getchat、puts、gets、printf、seanf函数时,必须在程序的开头岀现包含头文件 #inelude "stdio.h ”的命令行,而使用字符串处理函数时,必须在程序的开头岀现包含头文件 #include”string.h ”命令行,而使用数学函数时,必须在程序的开头岀现包含头文件#include”math.h” 的命令行。 27. 一个斜杠与小于等于127 任意数字按一个字符计算,一个斜杠与任意一个字符按一个字符计 28. 一个C 程序可以有一个或多个程序文件,也可以有一个或多个函数,所以一个C 语言程序可以实现

C语言知识点总结 完美版

PS这个文档是我从百度文库找的,其中存在一些错误在我能力范围之内的已被纠正过来了,并且有些内容我做了适当的修改。来不及复习的同学如果觉得书太多懒得看,可以看看这个,已经复习的同学也可以查漏补缺哈。复习的话建议书本加网上作业。预祝大家考试过过过! C语言最重要的知识点 总体上必须清楚的: 1)程序结构是三种:顺序结构、选择结构(分支结构)、循环结构。 2)读程序都要从main()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。 3)计算机的数据在电脑中保存是以二进制的形式.数据存放的位置就是它的地址. 4)bit是位是指为0或者1。byte是指字节,一个字节=八个位. 概念常考到的: 1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。 2、define PI3.1415926;这个写法是错误的,一定不能出现分号。 3、每个C语言程序中main函数是有且只有一个。 4、在函数中不可以再定义函数。(但能嵌套调用) 5、算法:可以没有输入,但是一定要有输出。 6、break可用于循环结构和switch语句。(continue不能用于switch语句) 7、逗号运算符的级别最低,赋值的级别倒数第二。 第一章C语言的基础知识 第一节、对C语言的基础认识 1、C语言编写的程序称为源程序,又称为编译单位。 2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。 3、一个C语言程序有且只有一个main函数,是程序运行的起点。 第二节、熟悉vc++ 1、VC是软件,用来运行写的C语言程序。 2、每个C语言程序写完后,都是先编译,后链接,最后运行。(.c---→.obj---→.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才可以运行。(常考!)第三节、标识符 1、标识符(必考内容): 合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了 2、标识符分为关键字、预定义标识符、用户标识符。

大学c语言学习心得感悟

大学c语言学习心得感悟 通过这次大学c语言计算机实习学习,我们了解了一些关于c 语言的知识,理解巩固了我们c语言的理论知识,着对我们将来到社会工作将会有莫大的帮助。下面是WTTWTT为大家收集整理的大学c语言学习心得感悟,欢迎大家阅读。 大学c语言学习心得感悟篇1 林林总总的计算机语言,林林总总的计算机技术,林林总总的计算机书籍让我们初入计算机的菜鸟一次就吓的没有勇气。迷茫和徘徊让我们丧失了时间和信心。没有诀窍吗?有的,看你怎么把握了,接下来我就以C语言为例子,讲一下有关学习的方法和技巧,同时也分享一下我学C的感想。 许多人第一次接触C语言都会觉得C语言难懂和不容易使用,其实就我个人的看法,C语言其实是很基础的汇编语言,除了一些必须要记忆的关键字、语法和库函数,其余的都是需要靠自己的逻辑思维通过这些关键字、语法和库函数来组织或构成一个完整的函数,所以C语言大多数的学习时间都是在锻炼我们的抽象逻辑思维能力。只有当你具有了抽象逻辑思维能力和弄清楚了关键字、语法和库函数的相关知识后,编写C语言就不是难事了。 通过C语言初步的学习后都很容易弄懂关键字、语法和库函数的相关知识,但是由于大部分人因为以前没有接触过电脑或电

脑语言的相关知识所以缺乏抽象逻辑思维能力,不知道如何将所学到C语言的知识如何组织和构成一个完整的函数,那么如何来有效的锻炼自己的抽象逻辑思维能力呢? 在这里是我个人的一套自学心得,通过学习后所掌握的知识使用上课老师所提到的案例或找一段简单的完整的案例,然后将案例读懂,也就是把它转换成我们日常所能接受的自然语言(在这里不妨把你所能理解的自然语言写下来)。例如下面这段代码是手工输入两个整数数字并计算两个数字之间从最小的数字开始到最大的数结束其中所有奇数相加的和: void main { 首先INT是表示整数形数据的定义,那么接下来有两个未知的整数和一个已知的整数0;这里出现的3个整数数字用C语言里的变量来替代它们,这时第一个数字就用取名为NUM1的变量,第二个数字就用取名为NUM2的变量,第三个数字就用取名为X的变量并且用赋值符号来为它赋予0这个值。 int num1,num2,x=0; 由于知道了有两个未知的整数,所以要通过键盘输入使这两个未知的整数变成已知的整数并且储存在前面所提到的变量中。 scanf("%d%d ",&;num1,&;num2) ; 得到数字后下面就开始进行一系列的运算和判断,如果NUM1小于NUM2的话最小的数字就是NUM1最大的数字就是NUM2,如果

C语言循环知识点总结

循环 特点:在满足特定条件的情况下,反复执行某程序段。 While循环 While循环的格式是这样的:while(条件表达式){语句代码},意思是满足括号内的条件时,执行花括号内的语句代码。或者更专业一点来说,当括号内的条件表达式返回值为真时,执行花括号内的代码,一直到条件表达式的返回值为假时,跳出循环。 While循环很容易出现死循环这种状况,就是因为忘记写了“增量”这个东西。 上面的代码就是少了count++,这个增量,所以,条件表达式一直满足,就一直执行,就造成了死循环。 此时,应该这样改进:

一些例子:

Do-while循环 与while不同的只有一个地方,就是先执行一遍代码,再进行判断。也就是说,不管你while的条件表达式成不成立,返回值为不为假,我都执行一遍循环体的代码。 随机数arc4random() 产生随机数的方法,arc4random()可以产生int范围内的任意一个随机数,包括有正数和负数,为什么会出现负数呢?因为,在存储的时候,生成的数的最高位的数字为1,此时,会认为这个1是符号位的负,因此会出现负数。这时,我们应该把这些情况避免掉,在输出之前,用unsigned 来定义一个变量来接收产出的随机数;在输出的过程中,占位符不再用%d,而是用%u来代替。 另一个值得注意的是,随机数产生的时候,数字会很大,而我们在代码过程中,

不需要这么大的数,此时,想要把这个数减小,可以用取余的办法来限制。 在产生一个随机数的时候,可以让它在固定的区间内产生,那么就会用到这个公式: 若是规定在负空间生成随机数,那么就将公式改成: 一些例子:

C语言知识点总结【完美版】

C语言最重要的知识点 总体上必须清楚的: 1)程序结构是三种: 顺序结构、选择结构(分支结构)、循环结构。 2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。 3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址. 4)bit是位是指为0 或者1。 byte 是指字节, 一个字节 = 八个位. 概念常考到的: 1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。 C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。误的,一定不能出现分号。 3、每个C语言程序中main函数是有且只有一个。 4、在函数中不可以再定义函数。 5、算法:可以没有输入,但是一定要有输出。 6、break可用于循环结构和switch语句。 7、逗号运算符的级别最低,赋值的级别倒数第二。 第一章 C语言的基础知识 第一节、对C语言的基础认识 1、C语言编写的程序称为源程序,又称为编译单位。 2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。 3、一个C语言程序有且只有一个main函数,是程序运行的起点。

第二节、 2、每个C语言程序写完后,都是先编译,后链接,最后运行。(.c---→.obj---→.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才可以运行。(常考!)(程序编辑-程序编译-程序连接-程序运行) 第三节、标识符 1、标识符(必考内容): 合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了 2、标识符分为关键字(保留字)、预定义标识符、用户定义标识符。关键字:不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。(关键字都是小写) 预定义标识符:背诵define scanf printf include。记住预定义标识符可以做为用户标识符。 用户标识符:基本上每年都考,详细请见书上习题。 第四节:进制的转换 十进制转换成二进制、八进制、十六进制。 二进制、八进制、十六进制转换成十进制。 第五节:整数与实数 1)C语言只有八、十、十六进制,没有二进制。但是运行时候,所

上海理工大学 c语言复习卷以及答案

参考解答 一、单选题 1. 以下C程序中预处理命令写法正确的是: D 。[知识点:编译预处理命令] A. #include “studio.h” B. #include [stdio.h] C. #include {stdio.h} D. #include “stdio.h” 2.执行下列语句序列后,不可能出现的运行结果是___ C ____。[知识点:开关语句] int n; scanf( "%d", &n); switch ( n ) { case 1: case 2: putchar('X'); case 3: case 4: putchar('Y'); break; default: putchar('Z'); A. 显示:z B. 显示:xy C. 显示:x D. 显示:y 3.设a,b为整型变量, 且二者均不为0, 以下关系表达式中恒成立的是___ C ___。[知识点:运算与数据类型] A. a/b*b/a==1 B. a/b*b==a C. a*b/a==b D. a*b/ a*b ==1 4.设有定义:int x=10,y=20,z=30; 则执行下列语句后的结果是___B____。[知识点:if语句] if ( x>y ) z=x; x=y; y=z; printf("%d,%d,%d",x, y, z ); A. 20,30,20 B. 20,30,30 C. 20,30,10 D. 10,20,30 5.下列程序的输出结果是__ B ____。[知识点:整型常量的表示和自增运算] main() { int a = 011; printf( "%d\n", ++a ); } A. 9

C语言基础知识归纳

C语言基础知识 1.每个C程序有且只有一个主函数main(),且程序必须从main() 函数开始执行,并在main()函数中结束。 2.在C语言中,用e来表示科学计数法时,规定在e的前面必 须有数字,后面必须为整数。 3.用单引号括起来的一个字符常量只能存放一个字符;C语言中 没有字符串变量,只能用字符数组来存储字符串。 4.外部变量在编译时由系统分配永久的内存空间,所以外部变 量的类型不是自动存储类别。 5.在一个函数内的复合语句中定义的变量,只能在这个复合语 句范围内有效。 6.用sizeof(int)计算int类型数据的字节数。 7.C语言运行时,首先系统检查语法的正误,再运行程序的语法; C语言中,可以在一个函数中嵌套一个函数,但是不能在一个函数中定义一个函数;只有在函数外部定义的函数才是外部函数;C语言的子程序有过程和函数两种。 8.预处理命令行的位置没有规定,只是习惯放在前面;在源文 件中的可以有多条预处理命令,但一行只能写一条;宏名的大写只是习惯性的表示;宏替换不仅不占用运行时间还不分配内存空间。 9.feof函数的作用是检查文件是否结束,当结束时返回的 值为非零,否则为零。

10.当定义了数组后,在给其赋值时,不能直接把字符串赋给数 组名。 11.在赋值表达式中,赋值运算符“=”右侧不能为表达式;在 求余运算符中的两侧都必须为整型;在强制类型转换时,类型名应用括号括起来。 12.静态局部变量,只有当程序结束后,其值才释放。 13.当调用函数时,实参是一个数组名,则向函数传送的是数组 每一个元素的地址。 14.算法的特点为有零个或多个输入,有一个或多个输出,当相 同的输入时,其结果相同;算法正确的程序最终一定会结束。 15.在C语言中,预处理命令行都以“#”开头;当需要时才用 #include;预处理的作用就是实现宏定义和条件编译。 16.当数组元素的下标超出了定义的下标范围时,系统不给出“下 标越界”的字样,而是得出错误的答案,因此在编程时务必检查下标是否越界。 17.共用体变量不能作为函数的参数,也不能使函数带回共用体 变量。 18.指向函数的指针变量的定义形式为:数据类型(*指针变量) ();,因此其为指向函数的指针变量。 19.用C语言编写的代码程序是源程序,只有通过编译、连接才 能进行。 20.在说明为static时,其生存期得到延长,而其作用域并没有改

苏科大 C语言知识整理

五、思考与实践 一.在()里填写正确答案。 1. 一个C语言编写的程序总是从(main函数)开始执行。 2. 在C语言程序中,用关键字(int )定义基本整型变量,用关键字(float)定义单精度实型变量,用关键字(double)定义双精度实型变量。 3. 通常一个字节包含(8)个二进制位。在一个字节中存放的最大(十进制)整数是(127),最小(十进制)整数是(-128)。 4. 在C语言中,注释部分两侧的分界符号分别为(/*)和(*/)。 5. 用字符串的形式表示China(“China”) 6. 字符串“ab\034\\\x79”的长度为(5)。 7. 若s是int型变量,且s=6,则s%2+(s+1)%2表达式的值为(1) 8. 若a,b,c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a,b,c的值分别为(6)(4)(2)。 9. 若有定义int x=3, y=2; float a=2.5, b=3.5;则表达式 (x+y)%2+(int)a/(int)b的值为(1)。 10. 若x和n均是int型变量,且x的初值为12,n的初值为5,则执行表达式x%=(n%=2)后的值为(0)。 11. 假设所有变量的类型均为整型,则表达式 (a=2,b=5,a++,b++,a+b)的值为(9)。 12. 以下所有变量的类型均为整型,则sum=pad=5; pad=sum++, pad++, ++pad; 后,pad的值为(7)。 13. 已知int a,b=1; 执行语句a=-b++;后a的值为(-1)。 14. 已知int m=5, y=2; 则执行y+=y-=m*=y后y 的值为(16)。 15. 表达式8.0*(1/2)的值为(0.0)。 二.下列程序完成交换两个变量的功能,请填空。 #include void main() {int x,y; x=10;y=15; printf("before swap:x=%d,y=%d\n",x,y); x+=y ;y=x-y ; x=x-y ; printf("after swap:x=%d,y=%d\n",x,y); } 注意:在填写程序中不可修改其它行的程序,包括增加变量定义等。 四、思考与实践 1 在C语言中,关系运算符有() 2 在C语言中,当表达式值为()时表示“假”,当表达式值为()时表示“真”。 3 逻辑运算符优先级从高到低:() 4 计算下面表达式的值。设a=1,b=2,c=3。(设每小题开始时a,b,c均为此值) (1)a = a!=b?b:c (2)a>b?b+1:c+1 (3)(a=4) ? a--:b-- 5 写出满足下面条件的关系或逻辑表达式。 (1)a在区间(3,10)内。 (2)x是3的倍数。 (3)x和y的和大于100且x大于45。 (4)a等于c或b不等于0 (5)a是小写字母 6 计算下面逻辑表达式的值。设a=0,b=1,c=2,d=4。(设每小题开始时a,b,c,d均为此值) (1)a>=b (2)c-b==a (3)c!=d-b (4)b>a && c>b (5)a && d-c (6)!a && b>c (7)(b>a) || cd (10)(a||b) && cd 五、思考与实践 填空题:(每空2分) 1. C语言中的语句可分为5类,即(控制语句)、(函数调

计算机二级考试C语言知识点总结

计算机二级考试C语言知识点总结 (完全针对考试大纲) 概述 总体上必须清楚的: 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' 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。 '0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。 4)整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节: 考试时候一般会说,在16位编译系统,或者是32位系统。碰到这种情况,不要去管,一样做题。掌握整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节就可以了。 5)转义字符的考查: 在程序中int a = 0x6d,是把一个十六进制的数给变量a 注意这里的0x必须存在。 在程序中int a = 06d, 是一个八进制的形式。 在转义字符中,’\x6d’才是合法的,0不能写,并且x是小写。 ‘\141’是合法的。 ‘\108’是非法的,因为不可以出现8。 转义字符意义ASCII码值(十进制) \a 响铃(BEL) 007 \b 退格(BS) 008 \f 换页(FF) 012 \n 换行(LF) 010 \r 回车(CR) 013 \t 水平制表(HT) 009 \v 垂直制表(VT) 011 \\ 反斜杠092 \? 问号字符063 \' 单引号字符039 \" 双引号字符034

计算机二级C语言基础知识整理

1.1 算法 算法:是一组有穷指令集,是解题方案的准确而完整的描述。通俗地说,算法就是计算机解题的过程。算法不等于程序,也不等于计算方法,程序的编制不可能优于算法的设计。 算法是一组严谨地定义运算顺序的规则,每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。所以其四个基本特征包括: (1)确定性,算法中每一步骤都必须有明确定义,不允许有模棱两可的解释,不允许有多义性; (2)有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止;(3)可行性,算法原则上能够精确地执行; (4)拥有足够的情报。 算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。 指令系统:一个计算机系统能执行的所有指令的集合。 基本运算和操作包括:算术运算、逻辑运算、关系运算、数据传输。 算法的三种基本控制结构:顺序结构、选择结构、循环结构。 算法基本设计方法:列举法、归纳法、递推、递归、减半递推技术、回溯法。算法效率的度量—算法复杂度:算法时间复杂度和算法空间复杂度。 算法时间复杂度:指执行算法所需要的计算工作量。即算法执行过程中所需要的基本运算次数。通常,一个算法所用的时间包括编译时间和运行时间。 算法空间复杂度:指执行这个算法所需要的内存空间。包括算法程序所占的空间,输入的初始数据所占的空间,算法执行过程中所需的额外空间。 1.2 数据结构的基本概念 数据结构:指相互有关联的数据元素的集合。 数据结构研究的三个方面: (1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;(2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构; (3)对各种数据结构进行的运算。 数据的逻辑结构应包含: (1)表示数据元素的信息; (2)表示各数据元素之间的前后件关系(指逻辑关系,与存储位置无关)。 数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构,也称数据物理结构。 数据的存储结构有顺序、链接、索引等。 线性结构的条件,(一个非空数据结构): (1)有且只有一个根结点;(2)每一个结点最多有一个前件,也最多有一个后件。 非线性结构:不满足线性结构条件的数据结构。 1.3 线性表及其顺序存储结构 线性表是由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。

学习c语言的必备基础知识.doc

学习C语言的必备基础知识 第一章计算机和数据的存储 第一节了解计算机 很奇怪的一件事,现在的。语言教材,一上来就是变量,表达式,一点也不提计算机原理方面的事,把c语言当作语言,数学来学,只是生硬的列出一些语法规则,学生们难以理解,只好死记硬背,没有把握住本质的东西,也就无法随心所欲,其实c语言是一门非常好学的语言,核心的语法规则是非常少的,而旦都是和计算机息息相关,所以必须要学习好计算机的一些基础,掌握好计算机的基础知识对学习C语言至关重要,对将来其它语言的编程都极其有益,C语言还有一个优点,就是写法非常简洁明了,和c++, java, C#, javascript等语言有着非常相似的书写方式,所以学好C语言,可以轻松的过渡到大量其它编程语言。讲完C以后,将陆续推出java ,C#, C++, javascript, ruby, python等,不过都是在此教程的基础之上进行,所以C语言乃基础之基础,想要学编程,强烈建议从C语言开始。下面开始了解计算机。 按照冯诺依曼的理论,计算机含有5个部分,运算器、控制器、存储器、输入和输出设备。现在我们通常把运算器、控制器和在一起,称为CPU(中央处理器),存储器就是我们说的内存和硬盘,输入设备就是鼠标,键盘等,输出设备主要是显示器、打印机、绘图仪等。 其中CPU和内存最关键,CPU是执行指令的部件,内存是一些连续的存储单元,用来存储指令和数据,每个单元可以存8位二进制数,也称为1个字节,计算机里存储器都是以字节为单位的,在描述网络速度的时候通常以位为单位,大家注意区别。CPU要执行的指令就存在内存里,CPU按照指定顺序连续地执行内存中的指令,这就是冯诺依曼体系的基本工作原理。 什么是指令,就是一些二进制的数,比如10010001是一条加法指令, 10011011是一条存储指令,CPU遇见不同的指令就会完成不同的操作,CPU能够执行的指令是生产厂家生产时就设计好的,比如8086 基本指令有70条,那么CPU就只认识这70条指令,CPU在不断升级, 除了运行速度加快还会增加一些新的指令,CPU的指令分三大类:传

相关文档
最新文档