C语言 个人+总结 (上)

时间:2024.4.27

写在最前面,一下内容 全凭理解总结。若有错误 请谅解,若有问题 可以找我 一、数据类型

C语言个人总结上

二、输入输出

1、 输出:printf函数 printf(格式控制,输出表列) 示例:printf(“ a=%d b=%c”,a,b)

该函数有两个参数 (简单说明了基本格式,详细请看 C程序设计 69---74页) 1、格式控制(定义输出的格式 如:%d %c) ○

2、输出表列(定义输出的数据:可以是变量,常量,或者表达式。 如: a , b) ○

这里的 a ,b 变量 是按照 当前定义的 输出格式 的 顺序 以及 格式 输出的。 如:a 对应 %d,b对应 %c 。 a 的值先于b的值输出。

示例:printf(“ a=%d b=%c”,a,b) 假设a=5 b=66。输出结果为 : a=5 b=B

2、 输入: scanf 函数 scanf(格式控制,地址列表) (详细请看:75--78 )

1) 格式控制(定义输入数据的格式 如: %d %c)

2) 地址列表(定义输入数据 存入的地址: 如:&a 或 指针 或 数组名 ) 示例:

#include <stdio.h> main() { int a,b; int *p=&a;

scanf("%d%d",p,&b);

printf("a=%d,b=%d\n",a,b); }

输入: 5 10 结果:

a变量的输入通过 指针 b 变量的输入通过 求址 (&)

3、字符数据的输入输出:

字符的输出:putchar ( ) 函数 括号内 可带入变量,可填入字符常量,ASCII 值。 如: int i=97; putchar(97); putchar(‘a’); putchar(i);

结果都是输出 字符: a 。

字符的输入:getchar() 函数 从键盘捕获一个输入

如:

char a;

a=getchar();

printf(“%c”,a);

输入: E 结果

三、顺序结构

我的理解是 从上往下执行 无选择结构 无循环结构 即是 顺序结构。 没什么好说的。

四、选择结构

实现选择结构的语句:if 、switch。

同时 配合 关系运算符 关系表达式 逻辑运算符 逻辑表达式 实现 选择结构。 (详见. 91-95 页)

关系运算符: > , >= , < , <=, ==(等于) , !=(不等于)。

关系表达式:用关系运算符将两个数值或数值表达式链接起来的式子。 如:a>b+c ; 逻辑运算符:&&(与),||(或) ,!(非)

逻辑表达式:用逻辑运算符将数值,或变量,或表达式连接在一起的式子。

如:a &&c<d 逻辑表达式 执行以后 会返回一个值。0 或 1, 遵循非“0”既真的原则。

运算符的优先次序: 从下到上 !(非)的优先级 最高。

C语言个人总结上

C语言个人总结上

C语言个人总结上

1、if 语句:

格式:(建议按照下面的格式书写 逻辑为 真或假 时的 语句可以很清晰的看出) 缩减型格式: if () { } else {}

if (逻辑表达式)

{

当逻辑表达式 返回 真时执行的语句// { } 内 为语句块里面可以书写各种合法语句, 假如再往里面写 if语句 于是if嵌套出现了

}

else {

当逻辑表达式 返回 假 时执行的语句

}

例如:

#include <stdio.h>

main()

{ int a;int *p=&a;

scanf("%d",p); if (a>0&&a<=100) { printf("Right\n"); } else

{

printf("The Number Is Out

Of Range\n!"); 输入: 110 结果

C语言个人总结上

} 程序包含了: 变量定义,指针,输入,输出,if选择。 输入:80 结果}

if 的嵌套 自行查看。 2、switch: 格式: switch(表达式) {

case 常量1: 语句1;break; case 常量2: 语句2;break; ……………..

case 常量n: 语句n;break; default : 语句 n+1; }

1、 switch后面括号内的”表达式”,其值的类型 应为整数型( 包括字符型)。 2、 { } 内 为 switch的= 语句块 当()内表达式的值 = 语句体中的某一个 变量的

值时,语句体从 当前 相等的常量 处开始执行 直到 执行到 break 或 语句块结束。

3、 default 当 (表达式)内的值 都不符合case 后的常量 则执行 default 后的语句 4、 以上说明了 当 表达式内的值 符合某个 case后的常量 则 该case 既 语句块开始执行的位置 若 无符合的项 则从 default 开始执行 语句 示例:

#include <stdio.h> main() {

char a; switch(a) {

'A':printf("

输入 E

scanf("%c",&a);

}

结果: 输入 A

}

printf("\n");

case

90~100");break;

case 'B':printf("分数在80~90");break; case 'C':printf("分数在70~80");break; case 'D':printf("分数在60-70");break; case 'E':printf("<60,你挂了?");break;

default :printf("不知道你说了什么");

输入 A B C D E 以外的字母

C语言个人总结上

C语言个人总结上

C语言个人总结上

若语句中没有 break 语句会一直执行下去 直到遇上break 或 所有语句执行完成 以上即为 if 和 switch的小结

五、循环结构

实现循环的语句: while,do…while,for

1、while 循环 :

while (条件表达式)

{

循环体 //由语句构成

}

当 (表达式)内的条件 成立 时 执行 循环体。 当 条件 不满足时 结束循环。 示例:

#include <stdio.h>

main()

{

int i=0,sum=0;

while(i<=10)

{

}

printf("sum=%d\n",sum);

}

结果:

sum += i; i++;

2、do...while循环 :

do

{

循环体 //由语句构成

}

while( 条件表达式 );

do while 循环 与 while循环 大体上没什么区别

C语言个人总结上

C语言个人总结上

区别: while 循环当条件满足时才开始执行循环体。

do while 循环 最少 会执行一次循环体,即使条件不满足。

示例:

#include <stdio.h>

main()

{

int i=2,sum=0;

do

{

printf("我被执行了一次哦!\n");

}while(i<0);

}

结果:虽然 i=2,并且 while 的条件是 i<0;

.不满足循环的条件 但是 循环体内的语句还是被执行了。

3、for 循环:

for ( 循环变量赋初始值 ; 循环条件; 循环变量增长)

{

循环体 // 由语句构成

}

循环变量赋初始值: 循环体内的 循环变量的初始值。

循环条件: 判断是否循环的条件 满足执行循环 不满足跳出循环。

循环变量增长:完成一次循环后执行的语句, 语句一般用作使 循环变量增加 1。 示例:

#include <stdio.h>

main()

{

int i; for(i=0;i<=15;i++) { if(i!=0&&i%4==0) //if控制换行 当i能整除4时 执行下面的语句 { } printf("\n"); //输出 \n 换行

//当i 能整除4时 for循环 已经执行了4次循环也就是 输出了4个数字

//这个时候换行,实现了每输出4个数字换行。i 与循环次数、输出次数。是有一定联系的。

C语言个人总结上

} } printf("%d ",i); //for 循环的输出语句。 printf("\n"); // 循环结束后换行 让 press any key to continue 换行

可以将上述 程序 COPY 到Visual C++ 中运行。

运行结果:

程序 有 if 判断, 有for 循环。 不理解if控制换行的,可以删掉 if 语句块,理解下for循环。

以上为循环的简单介绍 (具体详见 115-120页);

4、循环的嵌套

在循环的循环体中 加入另一个循环 就构成了循环嵌套 示例:

#include <stdio.h>

main()

{

}

结果: int i,j; for(i=1;i<3;i++) //第一层循环 { } printf("第%d章\n",i); { } printf(" 第%d节for(j=1;j<4;j++) //第二层循环

C语言个人总结上

C语言个人总结上

\n",j);

5、认清循环体

C语言中 语句的结束 是以分号 ; 为标志的。 看看下面的两个循环。 #include <stdio.h> main() { } 结果: int i,j;

for(i=0;i<3;i++) { }

printf("第%d次循环

#include <stdio.h> main() { } 结果:

int i,j;

for(i=0;i<3;i++); { }

printf("第%d次循环

\n",i); \n",i);

看似相同的语句,执行结果不同。区别在于:

两个for 循环 最后的括号后有无分号 ; 剩下的语句都是一样的 for(i=0;i<3; i++) { } 格式的 循环体在 花括号内 { } for(i=0;i<3; i++) ; 格式的 循环体在 为空[说明循环体为空] 所以 只输出了一次。

至于为什么显示3次呢? 循环体为空 但 循环结束后执行的语句还是会执行 i 仍然会增加到3 。

红线部分 红线部分

六、一维数组

数组是 一组有序数据的集合 ,数组的每一个元素都属于同一个 数据类型。

定义数组: 类型符 数组名[ 常量表达式 ] ;

如: int a[20]; 定义个一个int(整型)的数组 数组所含元素 是 20个。

注意: 数组不能动态定义,如 int i=2,a [i] ; 这样是不可以的。即 [ ] 中不能放入变量 应该是常量。

数组的引用: 如: 数组 int a [10] 中 10 为数组的长度 含有元素 a[0],a[1]

C语言个人总结上

C语言个人总结上

C语言个人总结上

a[2],........a[9]。 引用数组是 没有a[10] 的。[ ] 内的数字 称为数组的下标。 它是从 0 开始的。

数组的初始化:初始化,即在定义式数组是给数组元素赋值。照抄书上的 4 种初始化方法。

(1)定义数组时对 全部 或 个别 数组元素赋值。

如 : int a[5]= {0,1,2,3,4 } ; 在等号的右边 将数组各元素 按顺序 放在 花括号 { } 内 用 逗号 , 分割。 可以全部赋值 也可以对一部分赋值 如: int a[5]={0,1,2} 这样赋值 剩下的数组元素 系统会默认 赋值 0。

(2)定义数组时 不指定长度

int a[]={0,1,2,3,4,5,6,7} 数组长度 为 8。

一维数组举例:

#include <stdio.h>

main()

{

}

七、二维数组

定义二维数组: 数据类型符 数组名[ 常量表达式 ]

例如:int a[3][4]; 它有 3行 4 列 共 12个元素。

.可以将它理解为 一维数组中 每个元素都是一个数组。 将它看着一个一维数组: 含有 a[0] , a[1] , a[2] 三个元素。 每个元素的值 都是一个包含4个元素的数组。 a[0]---- a[0][0] a[0][1] a[0][2] a[0][3]

a[1]---- a[1][0] a[1][1] a[1][2] a[1][3]

a[2]---- a[2][0] a[2][1] a[2][2] a[0][3]

二维数组的赋初值: (书上 151页)

(1) 分行赋初值 :

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

一个大括号将所有元素包含, 里面的括号{} 第一个{} 对于 第一行的元素 即 a[0][0]~~~a[0][3]。剩下的依次类推。

C语言个人总结上

int a[5],i; for(i=0;i<5;i++) { } for(i=0;i<5;i++) { } printf("%d\n",a[i]); scanf("%d",&a[i]); 结果: 第一个 for循环 控制输入 scanf(“%d”,&a[i]); &a[i] 求得a[i] 的地址。 循环依次改变 i的值 scanf 也就依次取得a[i]数组的值。 输出循环同理。

(2) 将所有元素写在一个大括号内

如:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12} 效果和第一个相同 但不好阅读 第一种界限更清晰

(3) 对部分元素赋初值

如:int a[3][4]={ {1 } , {2,3} , {4,5,6,7} } ; 剩下 未赋初值的元素 系统自动赋值 0。

(4) 不指定长度 赋初值

如: int a[][4]={ 1,2,3,4,5,6,7,8,9,10,11,12} 但是 第二维 的数组长度不能省略 系统会自动判断 第一维数组的长度。

二维数组的示例:

#include <stdio.h>

int main()

{

int i , k, a[ ][2]={9,6,4,2,1,5};

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

{

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

{

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

}

printf("\n");

}

}

输出结果: int a[ ][2]={9,6,4,2,1,5}; 定义二维数组 属于不指定长度 定义 由定义的方法 可知 二维数组含有 3行 2列。 所以用两个for循环 输出 第一个循环 负责 行向下移动 输出 第二个循环 负责 列向右循环输出

C语言个人总结上


第二篇:大一上学期C语言期末复习总结和模拟试题带答案


易错点

C语言中易犯的错误

对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误.看着有错的程序,不知该如何改起,一些C编程时常犯的错误,写给各位学员以供参考.

****************************************************************************************

1.书写标识符时,忽略了大小写字母的区别.

main() {

int a=5;

printf("%d",A); }

编译程序把a和A认为是两个不同的变量名,而显示出错信息.

C认为大写字母和小写字母是两个不同的字符.习惯上,符号常量

名用大写,变量名用小写表示,以增加可读性.

****************************************************************************************

2.忽略了变量的类型,进行了不合法的运算.

main() {

float a,b;

printf("%d",a%b); }

%是求余运算,得到a/b的整余数.整型变量a和b可以进行求余

运算,而实型变量则不允许进行"求余"运算.

****************************************************************************************

3.将字符常量与字符串常量混淆.

char c; c="a";

在这里就混淆了字符常量与字符串常量,字符常量是由一对单

引号括起来的单个字符,字符串常量是一对双引号括起来的字符序

列.C规定以"\"作字符串结束标志,它是由系统自动加上的,所

以字符串"a"实际上包含两个字符:'a'和'\',而把它赋给一

个字符变量是不行的.

**************************************************************************************** 4.忽略了"="与"=="的区别.

在许多高级语言中,用"="符号作为关系运算符"等于".

如在BASIC程序中可以写

if (a=3) then ?

但C语言中,"="是赋值运算符,"=="是关系运算符.如:

if (a==3) a=b;

前者是进行比较,a是否和3相等,后

者表示如果a和3相等,把

b值赋给a.由于习惯问题,初学者往往会犯这样的错误.

**************************************************************************************** 5.忘记加分号.

分号是C语句中不可缺少的一部分,语句末尾必须有分号.

a=1 b=2

编译时,编译程序在"a=1"后面没发现分号,就把下一行"b

=2"也作为上一行语句的一部分,这就会出现语法错误.改错时,

有时在被指出有错的一行中未发现错误,就需要看一下上一行是否

漏掉了分号. {

z=x+y; t=z/100;

printf("%f",t); }

对于复合语句来说,最后一个语句中最后的分号不能忽略不写

**************************************************************************************** 6.多加分号.

对于一个复合语句,如: {

z=x+y; t=z/100;

printf("%f",t); };

复合语句的花括号后不应再加分号,否则将会画蛇添足.

又如:

if (a%3==0); I++;

本是如果3整除a,则I加1.但由于if (a%3==0)后多加了分号

,则if语句到此结束,程序将执行I++语句,不论3是否整除a,I都

将自动加1.

再如:

for (I=0;I<5;I++); {scanf("%d",&x); printf("%d",x);}

本意是先后输入5个数,每输入一个数后再将它输出.由于for

()后多加了一个分号,使循环体变为空语句,此时只能输入一个数

并输出它.

****************************************************************************************

7.输入变量时忘记加地址运算符"&".

int a,b;

scanf("%d%d",a,b);

这是不合法的.Scanf函数的作用是:

按照a,b在内存的地址将a,

b的值存进去."&a"指a在内存中的地址.

**************************************************************************************** 8.输入数据的方式与要求不符.

①scanf("%d%d",&a,&b);

输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法:

3,4

输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车

键,跳格键tab.

②scanf("%d,%d",&a,&b);

C规定:如果在"格式控制"字符串中除了格式说明以外还有其它

字符,则在输入数据时应输入与这些字符相同的字符.下面输入是

合法的:

3,4

此时不用逗号而用空格或其它字符是不对的.

3 4 3:4

又如:

scanf("a=%d,b=%d",&a,&b); 输入应如以下形式: a=3,b=4

****************************************************************************************

9.输入字符的格式与要求不一致.

在用"%c"格式输入字符时,"空格字符

"和"转义字符"都作为 有效字符输入.

scanf("%c%c%c",&c1,&c2,&c3);

如输入a b c

字符"a"送给c1,字符" "送给c2,字符"b"送给c3,因为%c

只要求读入一个字符,后面不需要用空格作为两个字符的间隔.

****************************************************************************************

10.输入输出的数据类型与所用格式说明符不一致.

例如,a已定义为整型,b定义为实型

a=3;b=4.5;

printf("%f%d\n",a,b);

编译时不给出出错信息,但运行结果将与原意不符.这种错误尤其

需要注意.

****************************************************************************************

11.输入数据时,企图规定精度.

scanf("%7.2f",&a);

这样做是不合法的,输入数据时不能

规定精度. **************************************************************************************** 12.switch语句中漏写break语句. 例如:根据考试成绩的等级打印出百分制数段. switch(grade) { case 'A':printf("85~100\n"); case 'B':printf("70~84\n"); case 'C':printf("60~69\n"); case 'D':printf("<60\n"); default:printf("error\n"); 由于漏写了break语句,case只起标号的作用,而不起判断作用. 因此,当grade值为A时,printf函数在执行完第一个语句后接着执 行第二,三,四,五个printf函数语句.正确写法应在每个分支后 再加上"break;".例如 case 'C':printf("60~69\n");break; **************************************************************************************** 13.忽视了while和do-while语句在细节上的区别. (1)main() {int a=0,I; scanf("%d",&I); while(I<=10) {a=a+I; I++; } printf("%d",a); } (2)main() {int a=0,I; scanf("%d",&I); do {a=a+I; I++; }while(I<=10); printf("%d",a); } 可以看到,当输入I的值小于或等于10时,二者得到的结果相同. 而当I>10时,二者结果就不同了.因为while循环是先判断后执行 ,而do-while循环是先执行后判断.对于大于10的数while循环一 次也不执行循环体,而do-while语句则要执行一次循环体. ****************************************************************

************************ 14.定义数组时误用变量. int n; scanf("%d",&n); int a[n]; 数组名后用方括号括起来的是常量表达式,可以包括常量和符号常 量.即C不允许对数组的大小作动态定义. **************************************************************************************** 15.在定义数组时,将定义的"元素个数"误认为是可使的最大下 标值. main() {static int a[10]={1,2,3,4,5,6,7,8,9,10}; printf("%d",a[10]); } C语言规定:定义时用a[10],表示a数组有10个元素.其下标值由0 开始,所以数组元素a[10]是不存在的. **************************************************************************************** 16.初始化数组时,未使用静态存储. int a[3]={0,1,2}; 这样初始化数组是不对的.C语言规定只有静态存储(static)数组 和外部存储 (exterm)数组才能初始化.应改为: static int a[3]={0,1,2}; **************************************************************************************** 17.在不应加地址运算符&的位置加了地址运算符. scanf("%s",&str); C语言编译系统对数组名的处理是:数组名代表该数组的起始地址 ,且scanf函数中的输入项是字符数组名,不必要再加地址符&.应 改为:scanf("%s",str); **************************************************************************************** 18.同时定义了形参和函数中的局部变量. int max(x,y) int x,y,z; {z=x>y?x:y; return(z); } 形参应该在函数体外定义,而局部变量应该在函数体内定义.应改 为: int max(x,y)

int x,y;

{int z;

z=x>y?x:y;

return(z); }

试题一

一、单项选择题(共30分,每题1分)C1. 下列不正确的转义字符是A.\\ B.\‘ C.074 D.\02. 不是C语言提供的合法关键字是

A.switch B.cher C.case D.default

3.正确的标识符是( )A.?a B.a=2 C.a.3 D.a_3 4.下列字符中属于键盘符号的是A.\ B.\n C.\t D.\b .下列数据中属于“字符串常量”的A.ABC B.“ABC” C.‘ABC’ D.‘A’6.char型常量在内存中存放的是A.ASCII码 B.BCD码 C.内码值 D.十进制代码值

7.设a为5,执行下列语句后,b的值不为2的是( ) A.b=a/2 B.b=6-(——a) C.b=a%2 D.b=a>3?2:2 8.在以下一组运算符中,优先级最高的运算符是( )

A.<= B.= C.% D.&&

9.设整型变量i的值为3,则计算表达式i——i后表达式的值是() A.0 B.1 C. 2 D.表达式出错

10.设整型变量a,b,c均为2,表达式a+++b+++c++的结果是( ) A.6 B.9 C.8 D.表达式出错

11.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是( )

A.1 B.2 C.2.0 D.2.5 12.设a=1,b=2,c=3,d=4,则表达式:a<b?a:c<d?a:d的结果是( ) A.4 B.3 C.2 D.1 13.设a为整型变量,不能正确表达数学关系:10<a<15的C语言表达式是()

A.10<a<15 B.a= =11 || a= =12 || a= =13 || a= =14

C.a>10&&a<15 D.!(a<=10)&&!(a>=15)

14.若有以下定义:char a、 int b 、 float c 、 double d,则表达式a*b+d-c值的类型为()

A.float B.int C.char D.double

15.表达式“10!=9”的值是( ) A.true B.非零值 C.0 D.1

16.循环语句 for (x=0,y=0; (y!=123)|| (x<4);x++);的循环执行( )

A.无限次 B.不确定次 C.4次 D.3次

17.在C语言中,下列说法中正确的是( )

A. 不能使用“do while”的循环 B.“do while”的循环必须使用break语句退出循环

C.“do while”的循环中,当条件为非0时将结束循环

D.“do while”的循环中,当条件为0时将结束循环。

18.设a,b为字符型变量,执行scanf(“a=%c,b=%c”,&a,&b)后使a为‘A’,b为‘B’,从键盘上的正确输入是( )

A.‘A’ ‘B’ B.‘A’,‘B’ C.A=A,B=B D.a=A,b=B 19.设i,j,k均为int型变量,执行完下面的for循环后,k的值为( )

for (i=0,j=10;i<=j;i++,j——)k=i+j;

A.10 B.9 C.8 D.7 20.设有定义:char

s[12]={“string”};则printf (“%d\n”,strlen(s));的输出是( )

A.6 B.7 C.11 D.12 21.合法的数组定义是()

A.int a[]={“string”}; B.int a[5]={0,1,2,3,4,5}; C.char a={“string”}; D.char a[]={0,1,2,3,4,5}

22.函数调用strcat(strcpy

(str1,str2),str3)的功能是() A. 将字符串str2复制到字符串str1中后再将字符串str3连接到字符串str1之后

B. 将字符串str1复制到字符串str2中后再连接到字符串str3之后 C. 将字符串str1复制到字符串str2中后再复制到字符串str3之后 D. 将字符串str2连接到字符串str1中后再将字符串str1复制到字符串str3中

23.设有如下定义,则正确的叙述为( )

char x[]={“abcdefg”}; char y[]={‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’}; A.数组x和数组y等价

B.数组x和数组y的长度相同 C.数组x的长度大于数组y的长度

D.数组x的长度小于数组y的长度

24.设有单精度变量f,其值为13.8.执行语句“n=((int)f)%3;”后,n的值是()

A.4 B.1 C.4.333333 D.4.6

25.执行语句“f=(3.0,4.0,5.0),(2.0,1.0,0.0);”后,单精度变量f的值是( )

A.3.0 B.5.0 C.2.0 D.0.0

26.设a、b均为整型变量,下列表达式中不是赋值表达式的是( ) A.a=3,4,

5 B.a=3*2 C.a=a&&b D.a=b=4

27.表达式“1?(0?3:2): (10?1:0)”的值为( ) A.3 B.2 C.1 D.0 28.sizeof(double)的结果值是( )A.8 B.4 C.2 D.出错

29.指出下面正确的输入语句是( )

A.scanf (“a=b=%d”,&a,&b); B.scanf(“a=%d,b=%f”,&m,&f);

C.scanf(“%3c”,c); D.scanf(“%5.2f,&f);

30.若有以下定义和语句,且0<=i<5,则( )是对数组元素地址的正确表示

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

p=a;

A.&

(a+i) B.&p C.a++ D.&p[i]

二、填空(20分,每空1分)1.在内存中存储“A”要占用( 2 )个字节,存储‘A’要占用( 1 )字节。 2.符号常量的定义方法是(#define 符号常量 常量 )。

3.能表述“20<x<30或x<-100”的C语言表达式是( (x>20 && x<30) || x<-100 )。

4.结构化程序设计方法规定程序或程序段的结构有三种:顺序结构、(分支结构 )和( 循环结构 )。

5.C语言共提供了三种用于实现循环结构的流程控制语句,它们是( while )、( do-while )和( for )。

6.若在程序中用到“putchar”,应在程序开头写上包含命令

(.#include “stdio.h” ),若在程序中用到“strlen()”函数时,应在程序开头写上包含命令( # include “string.h” )。

7.设有定义语句“static int a[3][4]={{1},{2},{3}}”,则a[1][1]值为( ),a[2][1]的值为( )。

8.“*”称为( 指针运算符 )运算符,“&”称为( 地址运算符 )运算符。

9.赋值表达式和赋值语句的区别在于有无( 分号 )号。 10.用{}把一些语句括起来称为( .复合语句 )语句

11.设a=12、b=24、c=36,对于“scanf (”a=%d,b=%d,c=%d“,&a,&b,&c);”,输入形式应为(a=12,b=24,c=36 )

12.表达式“sqrt(s*(s-a)*(s-b)*(s-c));”对应的数学式子为( ) 13.C语言编绎系统在判断一个量是否为“真”时,以0代表“假”,以( 非0 )代表“真” 三、读程序(30分) 1. main()

{ int a=10,b=4,c=3; if (a<b) a=b; if (a<c) a=c;

printf(“%d,%d,%d”,a,b,c);}

2. main( ) {int y=9;

for (;y>0;y——)

if (y%3= = 0) {printf (“%d”,——y);continue;} 3. main() { int x,y;

for (y=1,x=1;y<=50;y++)

{ if (x>=10) break; if (x%2= =1) { x+=5;continue;} x-=3; }

printf (“%d”,y)4. main() { static int a[][3]={9,7,5,3,1,2,4,6,8};

int i,j,s1=0,s2=0; i,j,s1=0,s2=0;

for (i=0;i<3;i++) for (j=0;j<3;j++) { if (i= =j )s1=s1+a[i][j]; if (i+j= =2) s2=s2+a[i][j]; }

printf (“%d\n%d\n”,s1,s2);} 5. main()

{static char a[]={‘*’,‘*’,‘*’,‘*’,‘*’}; int i,j,k; for (i=0;i<5;i++) {printf (“\n”); for (j=0;j<i;j++) printf (“%c”,‘ ’);

for (k=0;k<5;k++) printf (“%c”,a[k]); } } 6. int fac(int n)

{static int f=1; f=f*n; return(f);}

main()

{int i;

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

printf (“%d!=%d\n”,i,fac(i));}

四、编写程序(20分) 1. 编一个程序,输入X的值,按下列公式计算并输出Y的值 2. 编程序按下列公式计算e的值(精度为1e-6)

e=1+1/1!+1/2!+1/3!+??1/n! 参考答案:

一、单项选择题(共30分,每题1分)

1.C 2. B 3. D 4. A 5. B 6.

A 7. C 8. C 9. A 10. A 11.

C 12. D 13. A 14. D 15. D 16.

C 17. D 18. D 19. A 20. B 21.

D 22. A 23. C 24. B 25. D 26.

D 27. B 28. A 29. B 30. C ;}二、填空(20分,每空1分) 1.2,1

2.#define 符号常量 常量 3.(x>20 && x<30) || x<-100 4.分支结构,循环结果 5.while do for

6.#include “stdio.h” # include “string.h” 7.a[1][1]=0 , a[2][1]=0

8.* 指针运算符, &地址运算符

9.分号;

10.复合语句

11.a=12,b=24,c=36 13.非0

三、读程序(30分) 1.结果:10,4,3 2.结果:8 5 2 3.6 4.18 10 5.***** 6.5!=120

四、编写程序(20分1. Main() {int x,y; scanf (“%d”,&x);

if (x<=1) y=x; (x<=1) y=x; else if (x>1&&x<10) y=2*x-1; else y=3*x-11;

printf (“x=%d,y=%d\n”,x,y);

}bsp; }

2.Main()

B、"a" C、"\n"

{float E; int n; s=0;E=1;

试题二

一、单项选择题(每小题2分,共50

分)

1、一个C程序的执行是从___A__。

A、本程序的main函数开始,到main

函数结束

B、本程序的main函数开始,到本

程序文件的最后一个函数结束

C、本程序文件的第一个函数开始,

到本程序文件的最后一个函数结束

D、本程序文件的第一个函数开始,

到本程序main函数结束

2、C语言程序的基本单位是___C___。

A、程序行

B、语句

C、函数 D、字符

3、请选出可用作C语言用户标识符的

一组标识符___B___。

A、void B、a3_b3 C、For D、2a

define _123

-abc DO

WORD IF

ase sizeof

4、假定x和y为double型,则表达

式(x=2,y=x+5/2)的值是__C__ 。

A、4.500000

B、4

C、4.000000 D、2.000000

5、下列可以正确表示字符型常量的是

___D__。

A、297

D、'\t'

6、在C语言中,要求运算数必须是整

型的运算符是__D__。

A、/ B、++

C、*= D、%

7、C语言中,复合语句的构成是将一

系列语句置于__C__。 A、begin与end之间 B、方框号“[ ]”之间

C、花括号“{ }”之间

D、圆括号“( )”之间

8、有如下程序段,对应正确的数据输

入是___A___。

float x,y;

scanf(”%f%f”, &x,&y);

printf(”a=%f,b=%f”, x,y);

A、2.04<回车>

B、2.04,5.67<回车>

5.67<回车>

C、A=2.04,B=5.67<回车>

D、2.045.67<回车>

9、以下程序段的输出结果是___D__。

int a=5678;

printf(”%2d\n”, a);

A

、提示出错、无结果

B、56

C、78

D、5678

10、已知:char ch='A';则下列表达

式的值是__B__。

ch = (ch>='A'&&ch<='Z') ?

(ch+32) : ch;

A、A B、a C、

Z D、z

11、下列描述,正确的是___B__ 。

A、表达式3.91%5是合法的

B、用b=89作为while循环的条

件是合法的

C、逗号表达式是没有值和类型的

D、字符型变量和int型变量的操

作完全不同

12、阅读以下程序:

main() B、把x和y按从小到大排列 {int x; C、无确定结果 scanf("%d",&x); D、交换变量x和变量y的值 if(x--<5) printf("%d",x); 16、以下程序的输出结果是 ___A__ 。 else printf("%d",x++); main() } {int a, b; 程序运行后,如果从键盘上输人5, for(a=1, b=1; a<=100; a++) 则输出结果是__B__ 。 {if(b>=10) break; A、3 B、 4 if (b%3==1) C、 5 D、 6 13、下列程序的运行结果是___C__。 #include ”stdio.h” main() { int k; k=3; switch(k) { case 1: printf(”%d\n”, k++); case 2: printf(”%d\n”, k++); case 3: printf(”%d\n”, k++); case 4: printf(”%d\n”, k++); break; default: printf(”Full!\n”); } } A、3 B、4 C、3 D、4 4 4 14、设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、 m=2、n=1,则逻辑表达式(m==a<b)&&(n==c<d) 的值为__A__。 A、0 B、 1 C、2 D、 3 15、设x、y和temp均为long int型变量,则以下语句: {temp=x; x=y; y=temp;} 的功能是__D__。 A、把x和y按从大到小排列 { b+=3; continue; } }

printf("%d\n",a); } A、4 B、6 C、5 D、101 17、执行以下程序后输出的结果是___D__。 main()

{ int y=10; do {y--;}

while(--y); printf("%d\n",y--);}

A、-1 B、1 C、8 D、0

18、执行以下程序后输出的结果是___B__。 main()

{int i, j, w=0; for(i=4; i; i--) for(j=1;j<=2;j++) w=w+i*j; w=i*j;

printf("%d\n",w); } A、4 B、0 C、1 D、30 19、以下程序运行后,输出结果是__C__。 main() { int n[5]={3,3,3},i,k=2; for(i=0;i<k;i++)

n[i]=n[i]+1; printf("%d\n",n[k]);

}

A、4 B、9 C、9 6 1 C、3 D、不确定的值 D、3 5 7 20、以下程序的输出结果是 __A__ 。 23、若定义:float x=3.14159,*p=&x; f ( int a) 则printf("%f\n",*p++);的输出 {int b=0; 结果为__C__ 。 static int c = 3; A、无确定值 b++; c++; B、x的地址 return(a+b+c); C、3.14159 } main() {int a = 2, i; for(i=0;i<3;i++) printf("%d\n",f(a)); } A、 7 B、 7 C、 7 D、 7 8 9 10 7 9 11 13 7 21、设C程序如下: #define ABC(x) x*x #include"stdio.h" main() {int a=3,b; b=ABC(a+1); printf("b=%d", b); } 上述程序运行输出的结果是__D_ 。 A、b=4 B、b=a+1 C、b=16 D、b=7 22、以下程序的输出结果是__B__。 main() {int i, a[10]; for(i=9;i>=0;i--) a[i]=10-i; printf("%d %d %d",a[1],a[6],a[9]); } A、1 6 9 B、9 4 1 D、4.14159 24、以下程序的输出结果是___B__ main() {char b[]="Language"; char *p=b; printf("%c ",*(b+2)); p=p+7; printf("%c\n",*p++); } A、2 7 B、n e C、a g D、n u 25、下列程序的输出结果是___A__。 #include "stdio.h" main() { int a[]={1,2,3,4,5,6,7,8,9,0}, i, s, *p; p=a;s=0; for(i=0;i<=9;i++) s+=*p++; printf("%d\n", s); } A、45 B、44 C、0 D、9 二、判断题(每小题1分,共10分) 1.语句int *point;中的point是指针变量名。( T ) 2.主函数和其它函数之间可以相互调用。( F ) 3.puts( )和gets( )函数只能输入或输出一个字符。( F ) 4. 可以对字符型数组元素进行整体输入、输出。( T )

5.do-while语句构成的循环不能用数的三位数的个数,请选择填空。

其他语句构成的循环来代替。 #include<stdio.h> ( F ) void main()

6.在一个函数内的复合语句中定义的 { int i, j, k, w, count = 0;

变量可以在本函数范围内有效。 for( (3) ; i<=9; i++) (F ) 7.函数必须有返回值,否则不能使用函数。( F ) 8.for(;;);语句相当于while(1);语句。( T ) 9.C程序的执行总是从第一个定义的函数开始。( F ) 10.C语言中的关键字专门用作语言的特定成分,而不能作为一般标识符使用。( T ) 三、程序填空题(每空2分,共10分) 1、下面程序完成判断某一个数m是否为素数,如果是则输出"m is a prime!",否则就输出"m is not a prime!",请选择填空。 main() { int i, m; scanf("m=%d", &m); for(i=2; i<m; i++) { if(m%i==0) { printf("%d is not a prime!\n", m); (1) } else (2) } if(i==m) printf("%d is a prime!\n", m); } (1)、 A、break B、continue C、break; D、continue; (2)、 A、break B、break; C、continue D、continue; 2、以下程序的功能是:求出用数字0至9组成没有重复数字且是13倍 for(j=0;j<=9; j++) for(k=0; k<=9;k++)

if( (4) ) { w =

i*100+j*10+k; if( (5) ) count++; } printf("\n count=%d\n", count); } (3)、 A、i=0 B、i=1 C、i=9 D、i=-1 (4)、 A、i!=j B、i!=j ||j!=k C、i!=j&& j!=k D、i!=j&& j!=k && k!=i (5)、 A、w%13=0 B、w/13=0 C、w%13==0 D、w/13==0 四、编程题(第1小题12分,第2小题18分,共30分) 1、从键盘输入一个4位数的正整数n,将该数反序输出。例如,若输入的是

1357,则输出的是7531。 要求:1)利用VC++编译系统进行

调试、运行

2)对输入的正整数n的合

法性进行检查 3)将源程序以“编程题

1.c”为文件名保存在

网络盘(K:盘)的考生文件夹上,用其它文件名保存或保存在其他

地方均不能得分

2、已知一组字符串a[27]="jjyyzzabcdefgJJYYZZABCDEFG"; 请编一程序,将其 中的小写字母换成其前一个字母,即z换成y,y换成x,...,b换成a,若是a则换成z。然后对数组a[27]从小到大排序,并输出排序后的字符串。

要求:1)利用VC++编译系统进行调试、运行

2)先输出原字符串(即未做任何改变的字符串),最后输出排序后

的字符串

3)将源程序以“编程题

2.c”为文件名保存在网络盘(K:盘)的考生文件夹上,用其它文件名保存或

保存在其他地方均不能得

更多相关推荐:
20xx年个人年终总结(适用所有行业)

个人年终总结(20xx.12)不知不觉间,来到xx公司已经有3年时间了,在工作中,经历了很多酸甜苦辣,认识了很多良师益友,获得了很多经验教训,感谢领导给了我成长的空间、勇气和信心。在这几年的时间里,通过自身的不…

个人工作总结及自我评价

个人工作总结在过去的五个月中在工程服务部领导的带领下经过了和同事的共同奋斗经过了自己的积极努力做了以下工作一工作态度思想工作我非常热爱本职工作能够严以律己遵守工程部的各项制度保持对工作负责的工作态度谦逊学习积极...

20xx年事业单位年度考核个人总结

自进入单位近一年来,在领导的关心、指导和同事们的帮助下,我迅速的融入集体,进入工作角色,基本掌握了各项工作要领,较好的完成了各项工作任务。工作之余通过自学,丰富了理论学识,并在工作过程中将所学理论付诸实践,通过…

个人总结范文参考

光阴如梭,时光荏苒。20xx年就要成为历史了,内心不禁感慨万千!转眼间又将跨过一个年度之坎,回首过去的一年,虽没有轰轰烈烈的战果,但也算经历过不平凡的考验和磨砺了。非常感谢领导给我这个锻炼的平台,令我在工作中不…

个人思想工作总结(精选25篇)

同志思想工作小结三年来我坚持学习邓小平理论三个代表重要思想及科学发展观学习各类业务和法律法规知识从而提升自身修养和素质在纪律上能够严格要求自己永葆党员干部的本色在工作中能切实履职尽责善于突破常规性套路创造性开展...

20xx年个人工作总结

20xx年个人工作总结一年以来本人坚持以科学发展观党的十八大精神以及十八届三中全会精神为指导狠抓工作落实努力提高理论知识和业务工作水平遵纪守法努力工作认真完成领导交办的各项工作任务在领导及同志们的关心支持和帮助...

20xx年个人工作总结

20xx年的时光转瞬即逝,一年来,在领导的关心、指导和同事的帮助、支持下,我严格要求自己,勤奋学习,积极进取,努力提高理论和实践水平,较好地完成了各项工作任务,自己素质能力也获得了全方位的提升。现将一年来工作情…

医院信息科个人总结

个人工作总结xxxx回想近三年自己所做的一些工作在这三年里我踏实工作不断增强自己的工作能力和技术水平把自己的热情投入到工作中努力争取做好每项工作并在各方面表现优秀得到了大家的认可和好评三年来我和科室同事一起在院...

年中个人总结

年中个人总结年中gt个人总结一酷暑到来之际我们工作也随着这酷热的天气一起进入了如火如荼的状态中没有丝豪懈待回首走过的这半年路程样品小组在上级领导的大力支持下加上小组成员的通力协作样品开发工作完成的基本上是成功的...

合约部个人工作总结

个人工作总结和计划20xx年8月份我进入工作岗位实习回顾这一年的工作和生活真的是受益良多想到一年之前自已还是一个还在大学里面不知道工作之滋味的学生现在已经在工作岗位上实习了将近一年的时间了觉得人生真的是充满了变...

个人工作总结

个人工作总结今年以来我在局领导的精心指导下在各位同事的支持和帮助下通过深入学习实践科学发展观牢记为领导分忧为职工解难的宗旨切实履行作为一名劳务输出大厅工作人员的基本职责圆满完成领导交办的各项工作任务现将全年个人...

个人工作总结

个人工作总结20xx年月一年来在领导的帮助指导下在全体成员的配合支持下我到岗位后积极工作充分发挥岗位职能不断改进工作方法提高工作效率较好地完成了各项工作任务现总结如下一强化职能做好服务工作我坚持从小事做起从大事...

个人 总结(51篇)