C语言 习题

时间:2019-05-12 07:56:38下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《C语言 习题》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《C语言 习题》。

第一篇:C语言 习题

第一章 C语言概述

1.1选择题

【题1.1】以下不是C语言的特点的是()A.C语言简洁、紧凑

B.能够编制出功能复杂的程序 C.C语言可以直接对硬件进行操作 D.C语言移植性好

【题1.2】以下不正确的C语言标识符是()。A.ABC B.abc C.a_bc D.ab.c 【题1.3】以下正确的c语言标识符是()。A.%x B.a十b C.a123 D.test!【题1.4】一个c程序的执行是从().A.main()函数开始,直到main()函数结束 B.第一个函数开始,直到最后一个函数结束 C.第一个语句开始,直到最后一个语句结束

D.main()函数开始,直到最后一个函数结束 【题1.5】一个C语言程序是由()。A)一个主程序和若干子程序组成 B)函数组成 C)若干过程组成 D)若干子程序组成

【题1.6】一个c程序是由()。A.一个主程序和若干子程序组成 B.一个或多个函数组成 C.若干过程组成 D.若干子程序组成

【题1.7】C语言派程序的基本单位是()。A.过程 B.函数 c子程序 D.标识符 【题1.8】编辑程序的功能是()。

A.建立并修改程序 B.将c源程序编译成目标程序 C.调试程序 D.命令计算机执行指定的操作

1.2填空题

【题1.9】c语言符号集包括【】。

【题1.10】一个c程序有且仅有一个【】函数。

【题1.11】C程序的基本单位是【】。

【题1.12】一个c派程序有【 】个main()函数和【】二个其他函数。【题1.13】在一个C源程序中,注释部分两侧的分界符分别是【】和【】。【题1.14】结构化设计中的三种基本结构是【】。

【题1.15】在C语言中,输入操作是由库函数【】完成的,输出函数是由库函数【】完成的。

1.3编程题

【题1.16】编写一个程序,在屏幕上输出你的姓名。试着上机编辑、编译、运行你的程序。

第二章 数据类型、运算符与表达式

2.1选择题

【题2.1】以下结果为整数的表达式(设有int i;char c;float f;)().A.i十f B.i*c C.c十f D.i十c十f 【题2.2】以下使i的运算结果为4的表达式是()。A.int i=0,j=0;(i=3,(j十十)十i); B.int i=1,j=0;j=i=((i=3)*2); C.int i=0,j=1;(j==1)?(i=1);(i=3); D.int i=1,j=1;i+=j十=2;【题2.3】设n=10,i=

4、则赋值运算n%=i+1执行后,n的值是().A.0 B.3 C.2 D.1 【题2.4】逗号表达式(a=3*5,a*4),a十15的值为(),a的值为()。

①A.15 B.60 C.30 D.不确定 ②A.60 B.30 C.15 D.90

【题2.5】如果a=1,b=2,c=3,d=4,则条件表达式a<b?a:c<d?c:d的值为().A.1 B.2 C.3 D.4 【题2.6】下面不正确的字符串常量是()A)’abc’ B)”12’12” C)”0” D)” ”

【题2.7】在程序中可以用来作为变量名的合法的标识符是:_______ A.)static B)23_b1 C)stu_1t D)#33 【题2.8】若有代数式3ae/bc,则不正确的C语言表达式是()A)a/b/c*e*3 B)3*a*e/b/c C)3*a*e/b*c D)a*e/c/b*3 【题2.9】以下不正确的叙述是()

A)在C程序中,逗号运算符的优先级最低

B)在C程序中,APH和aph是两个不同的变量

C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变

D)当从键盘输入数据时,对于整形变量只能输入整形数值,对于实型变量只能输入实型数值

【题2.10】以下正确的叙述是().A)在C程序中,每行中只能写一条语句

B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数 C)在C程序中,无论是正数还是实数,都能被准确无误的表示 D)在C程序中,%是只能用于正数运算的运算符

【题2.11】已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=’A’+’6’-‘3’;后,c2的值为().A)D B)68 C)不确定的值 D)C 【题2.12】在C语言中,要求运算数必须是整形的运算符是().A)/ B)++ C)!= D)% 【题2.13】若以下变量均是整形,且num=sum=7;则计算表达式sUM=num++,sUM++,++num后sum的值为().A)7 B)8 C)9 D)10 【题2.14】 在C语言中,int、char和short三种类型数据在内存中所占用的字节数()。

A)由用户自己定义

B)均为2个字节

C)是任意的D)由所用的机器的机器字长决定 【题2.15】 若有说明语句: char c=‘72’; 则变量c()。

A)包含1个字符

B)包含2个字符

C)包含3个字符

D)说明不合法,c的值不确定

【题2.16】 设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为()。

A)int

B)float C)double

D)不确定

【题2.17】设int n=3;则十十n的结果是(),n的结果是()A)2 B)3 C)4 D)5 【题2.18】设有说明: char w;int x;float y;double z;则表达式w*x+z-y值的数据类型为()。

A)float B)char

C)int

D)double.【题2.19】语句(1,2,3,4)的结果是()。

A)1

B)2

C)3

D)4

2.2填空题

【题2.20】表达式10%3的结果是【】

【题2.21】 执行下列语句后,a的值是【】

int a=12;a+=a-=a*a;【题2.22】 定义int x,yl执行y=(x=1,十十x,x十2)5语句后,y的值是【】 【题2.23】 在C语言中的实型变量分为两种类型,他们是【单精度型(或:float型)】和【双精度型(或;double型]】。

【题2.24】 若a、b和c均是int型变量,则计算表达式后,a值为【】,b值为【】,c值为【】。

a=(b=4)+(c=2)【题2.25】 若有定义:char c=’10’;则变量c中包含的字符个数为【】。

【题2.26】 若x和n均是int型变量,且x的初值为12,n的初值为5,则计算表达式后x的只为【】。

x%=(n%=2)【题2.27】 C语言中的标识符只能由三种字符组成,它们是【】,【】和【】。

【题2.28】 已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=’a’+’8’-‘3’的值为【】.【题2.29】 设int a=1,b=2.c=3,d;执行d=!(a十b十c)后,d的结果是【】

第三章 最简单的C程序设计

3.1 选 择 题

【题3.1】以下C程序正确的运行结果是().main(){long y=-43456;printf(“y=%-8ldn”,y);printf(“y=%-08ldn”,y);printf(“y=%08ldn”,y);printf(“y=%+8ldn”,y);} A)y=-43456 B)y=-43456

y=-43456 y=-43456 y=-0043456 y=-0043456 y=-43456 y=+ 43456 C)y=-43456 D)y=-43456 y=-43456 y=-0043456 y=-0043456 y=00043456 y=-43456 y=+43456 【题3.2】以下C程序正确的运行结果是().main(){long y=23456;printf(“y=%3xn”,y);printf(“y=%8xn”,y);printf(“y=%#8xn”,y);} } A)y = 5ba0 B)y = ︼ ︼ ︼5ba0 y = ︼ ︼ ︼ ︼5ba0 y = ︼ ︼ ︼ ︼ ︼ ︼ ︼5ba0 y = ︼ ︼0x5ba0 y =︼ ︼0x5ba0 C)y = 5ba0 D)y = 5ba0 y = 5ba0 y = ︼ ︼ ︼ ︼5ba0 y = 0x5ba0 y = # # # #5ba0 【题3.3】已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据是,正确的数据输入方式是()。(注:︼表示空格,表示回车)

int a1,a2;char c1,c2;scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);A)10A︼20B B)10︼A︼20︼B C)10A20B D)10A20︼B 【题3.4】已有定义int x;float y;且执行scanf(“%3d%3f”,&x,&y);语句时从第一列开始输入数据12345︼678<回车>,则x的值为(),y的值为()。(注:︼表示空格)

【1】A)12345 B)123 C)45 D)345 【2】A)无定植 B)45.000000 C)678.000000 D)123.000000 【题3.5】已有如定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A 和B,当从第一列开始输入数据时,正确的数据输入方式是()。(注:表示回车)

int a1,a2;char c1,c2;scanf(“%d%d”,&a1,&a2);scanf(“%c%c”,&c1,%c2);A)1020AB B)10︼20 AB C)10︼ ︼20︼ ︼AB D)10︼20AB 【题3.6】已有程序和输入数据的形式,程序中输入语句的正确形式应当为()。

(注:︼表示空格,表示回车)main(){ int a;float f;printf(“nInput number:”);输入语句

printf(“nf=%f,a=%dn”,f,a);} Input number:4.5︼ ︼2 A)scanf(“%d,%f”,&a,&f);B)scanf(“%f,%d”,&f,&a);C)scanf(“%d %f”,&a,&f);

D)scanf(“%f %d”,&f,&a);【题3.7】根据定义和数据的输入方式,输入语句的正确形式为()。

已有定义:float f1,f2;数据的输入方式:4.52 3.5 A)scanf(“%f,%f”,&f1,&f2);B)scanf(“%f%f”,&f1,&f2);C)scanf(“%3.2f%2.1f”,&f1,&f2);D)scanf(“%3.2f,%2.1f”,&f1,&f2);【题3.8】阅读以下程序,当输入数据的形式为:25,13,10,正确的输出结果为()。

main(){ int x,y,z;scanf(“%d%d%d”,&x,&y,&z);printf(“x+y+z=%dn”,x+y+z);} A)x+y+z=48 B)x+y+z=35 C)x+z=35 D)不确定值

【题3.9】根据题目中已给出的数据的输入和输出形式,程序中输入输出语句的正确内容是()。

main(){ int x;float y;pringf(“enter x,y;”)输入语句 输出语句 } 输入形式 enter x,y:2 3.4 输出形式 x+y=5.40 A)scanf(“%d,%f”,&x,&y);printf(“nx+y=%4.2f”,x+y);B)scanf(“%d%f”,&x,&y);printf(“nx+y=%4.2f”,x+y);C)scanf(“%d%f”,&x.&y);printf(“nx+y=%6.1f”,x+y);D)scanf(“%d%3.1f”,&x,&y);printf(“nx+y=%4.2f”,x+y);【题3.10】以下说法正确的是().A)输入项可以为一个实型常量,如scanf(“%f”,3.5);

B)只有格式控制,没有输入项,也能进行正确输入,如scanf(“a=%d,b=%d”);C)当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(“%4.2f”,&f);D)当输入数据时,必须指明变量的地址,如scanf(“%f”,&f);【题3.11】根据下面的程序及数据的输入和输出形式,程序中输入语句的正确形式应该为().main(){ char ch1,ch2,ch3;输入语句

printf(“%c%c%c”,&ch1,&ch2,&ch3);} 输入形式:A B C

输出形式:A B scanf(“%c%c%c”,&ch1,&ch2,&ch3);scanf(“%c,%c,%c”,&ch1,&ch2,&ch3);scabf(“%c %c %c”,&ch1,&ch2.&ch3);scanf(“%c%c”,&ch1,&ch2,&ch3);【题 3.12 】有输入语句:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量a的值为1,b为3,c为2,从键盘输入数据的正确形式应当是()。(注:——表示空格)

A)132《回车》 B)1,3,2《回车》 C)a=1——b=3——c=2《回车》 D)a=1,b=3,c=2《回车》

【题3.13】 以下能正确的定义整形变量a,b,c并为其付初值5的语句是().int a=b=c=5; int a,b,c=5; a=5 ,b=5,c=5;a=b=c=5;【题 3.14】 已知ch是是字符形变量,下面不正确的赋值语句是().ch=`a+b`;ch=`o`;ch=`7`+`9`;ch=5+9;【题 3.15 】 已知ch是是字符形变量,下面正确的赋值语句是().ch= `123`;ch=`xff`;ch=`8`;ch=””;【题3.16 】 若有以下定义,则正确的赋值语句是().int a,b;float x A)a=1,b=2 B)b++;C)a=b=5 D)b=(int)x;【题 3.17】 设X,Y均为FLOAT变量,则以下不合法的赋值语句是()A)++x;B)y=(x%2)/10;C)x*=y+8;D)x=y=10;【题3.18】有如下程序,对应正确的数据输入是()。#include main(){ float a,b;scanf(“%f%f”,&a,&b);printf(“a=%f,b=%fn”,a,b);} A.2.04 5.56 B.2.01,5.67 C.A=2.04,B=5.67 D.2.045.67 【题3.19 】以下程序的执行结果是()。

#include main(){ int sum,pad;sum=pad=5;pad=sum++;pad++;++pad;printf(“%dn”,pad);} A.7 B.6 C.5 D.4 【题3.20 】巳知字母A的ASCII码是65,以下程序的执行结果是()。#include main(){ char c1='A',C2='Y';printf(“%d,%dn”,c1,c2);A.A,Y B.65,65 C.65,90 D.65,89 3.2 填空题

【题3.21 】 以下程序的输出结果为【 】.main(){printf(“*%f,%4.3f*n”,3.14,3.1415);} 【题3.22】以下程序的输出结果为【 】.main(){ int x=1,y=2;printf((“x=%d y=%d*sum*=%dn”,x,y,x+y);printf(“10Squared is : %dn”,10*10);} 【题3.23 】假设变量a,b,c为整形, 以下语句借助中间变量把a,b和c中的直进行交换,把b 的直给a, 把c 的直给b, 把a 的直给c,例如,交换前,a=10,b=20,c=30,交换后,a=20,b=30,c=10请填空 【 】;a=b;b=c;【 】.【题3.24 】 假设变量x,为整形变量,则执行下面语句后x的直为【】.x=7;x+=x-=x+x;【题3.25 】以下程序的执行结果是【】。#include main(){ char c='A'+10;printf(“c='%cn”,c);} 【题3.26 】以下程序输入123<cR>后的执行结果是【】.#include main(){ int a,c;char b;scanf(“%d%c%d”,&a,&b,&c);printf(“a=%d,b=%c,c=%dn”,a,b,c);}

【题3.27 】以下程序输入ABC<CR>后的执行结果是【】.#include main(){ char c;scanf(“%3c”,&c);printf(“c=%cn”,c);} 3.3编程题 【题3.28 】“水仙花数”是指一个三位数,它的三个数位数字的立方和这个数的数值相等,编程打印所有的水仙花数。

解:本题适于使用穷举法求解,注意穷举范围为三位数100~999,穷举条件为:三位数的三个数位数字的立方和等于这个数的数值。需要使用循环结构。程序如下:

#include main(){ int d0,d1,d2,n;printf(“The numbers are :”);for(n=100;n<=999;n++){ d0=n%10;d1=n%100/10;d2=n/100;if(n==d0*d0*d0+d1*d1*d1+d2*d2*d2)printf(“%5d”,n);} printf(“n”);}

第二篇:大自然的语言_习题

3、书写全都正确的一项是()

A.草木荣枯俗语农谚耐人寻味俯首贴耳

B.离愁别苦凝神静听不记其数少见多怪

C.苍海一粟无忧无虑千呵万护涵养水分

D.饱学之士雅俗共赏不胜玫举昂首挺立

二、阅读

(一)①立春过后,大地渐渐从沉睡中苏醒过来。②冰雪____化,草木____发,各种花次第开放。③再过两个月,燕子____然归来。④不久,布谷鸟也来了。⑤于是转入炎热的夏季,这是植物孕育果实的时期。⑥到了秋天,果实成熟,植物的叶子渐渐变黄,在秋风中____的落下来。⑦北雁南飞,活跃在田间草____的昆虫也都销声匿迹。⑧到处呈现一片衰草____天的景象,准备迎接风雪载途的寒冬。⑨在地球上温带和亚热带区域里,年年如是,周而复始。

几千年来,劳动人民注意了草木荣____、候鸟去来等自然现象同气候的关系,据以安排农事。杏花开了,就好像大自然传语要赶快耕地;桃花开了,又好像暗示要赶快种谷子。布谷鸟开始唱歌,劳动人民懂得它在唱什么:“阿公阿婆,割麦插禾”。这样看来,花香鸟语,草长____飞,都是大自然的语言。

4、.横线上依次填的词语是:_________________________________

5、解释加点的词:

①销声匿迹____________②风雪载途____________

③年年如是____________④次第____________

6、用下列词语各写一句话:

①次第_______________________________________________________________ ②周而复始__________________________________________________________

7、.选文运用了_______、准确的语言,请在选文中按要求各摘录一句使用了修辞手法的句子。

①比喻___________________________________________________________ ②拟人_____________________________________________________________

③引用__________________________________________________________

8、.选文第一段写了四季自然景象的变化。试将句子的序号填入下列对应的季节后的横线上。

春________________

夏________________

秋________________

冬________________

9、四季景色有时并无明显的分界线,尤其在幅员辽阔的我国,更是如此。⑦⑧ 两句可以说是写的___________末__________初的景色。

10、.⑨句在选文第一段中的作用是:__________________________________

11、.概括两段的大意。

①第一段:__________________________________________________________ ②第二段:________________________________________________________

第三篇:C语言习题讲解

练习题 2015-2016(2)重修)判断

1.C 语言源程序文件通过了编译、连接之后 , 生成一个后缀为.BAK 的文件。()2.在 C 程序中, APH 和 aph 代表不同的变量。()3.C语言中数据类型只有整型、实型和字符型。()4.int i=20;switch(i/10){case 2:printf(“A”);case 1:printf(“B”);}的输出结果为A。()5.Break语句用在循环体中,可结束本层循环,continue语句用在循环体中,可结束本次循环。()6.函数strlen(“ASDFGn”)的值是7。()7.结构体类型只有一种。()

8.构成数组的各个元素可以有不同的数据类型。()9.C语言中字符串的结束符是''。()10.数组名代表数组的首地址。()11.函数的递归调用不过是一个函数直接或间接地调用它自身。()12.通过return语句,函数可以带回一个或一个以上的返回值。()

13.Char *p=“girl”;的含义是定义字符型指针变量p,p的值是字符串“girl”。()14.若有定义:char *p(char a[10]);则p是函数名。()

15.用fopen(“file”,“r+”);打开的文件“file”可以进行修改。()

C概述,数据类型,运算符,表达式,选择结构

1.以下叙述中正确的是()。

A.程序设计的任务就是编写程序代码并上机调试 B.程序设计的任务就是确定所用数据结构 C.程序设计的任务就是确定所用算法 D.以上三种说法都不完整 2.C语言源程序的基本单位是()。A.过程 B.函数 C.子程序 D.标识符

3.C语言规定,在一个源程序中main函数的位置()。

A.必须在最开始 B.必须在最后 C.必须在预处理命令的后面 D.可以在其他函数之前或之后 4.以下叙述中正确的是()。

A.C语言系统以函数为单位编译源程序 B.main函数必须放在程序开始

C.用户定义的函数可以被一个或多个函数调用任意多次 D.在一个函数体内可以定义另外一个函数 5.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符()A.必须为字母 B.必须为下划线 C.必须为字母或下划线 D.可以是字母,数字和下划线中任一种字符

6.下面四个选项中,均是合法转义字符的选项是()

A.''' '' 'n' B.'' '17' '“' C.'18' 'f' 'xab' D.'' '101' 'xlf' 7.下面四个选项中,均是不合法的用户标识符的选项是()

A.A P_0 do B.float la0 _A C.b-a goto int D._123 temp INT 8.已知有声明 char c='1';int x=300;float t=35000;double d=3.1234567e10;,则以下表达式求值时除()外其结果都可能是不准确的。A.x=t/c B.t=d/x C.t=d/le5f D.t=x+c

9.已知有声明”int n;float x,y;“,则执行语句”y=n=x=3.89;“后,y的值为()。A.3 B.3.0 C.3.89 D.4.0 10.已知有声明”int a=3,b=4,c=5;“,以下表达式中值为0的是()。

A.a&&b B.a<=b C.a||b&&c D.!(!c||1)11.有)12.执行了以下程序段后,x、w的值为()。int x=0,y=1,z=2,w;if(x++)w=x;else if(x++&y>=1)w=y;else if(x++&&z>1)w=z;A.0、1 B.1、1 C.2、1 D.3、2 13.寺

14.已知有声明”long x,y;“且x中整数的十进制表示有n位数字(4

A.y=x/(10*(n-1))B.y=x%(10*(n-1))C.y=x%(long)pow(10,n-1)D.y=x%(10^(n-1))15.下列程序的输出结果是()。main(){ int a=7,b=5;printf(”%dn“,b=b/a);} A.5 B.1 C.0 D.不确定值

16.假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是()。A.7 B.8 C.9 D.2 17.设a为int型变量,执行下列赋值语句后,a的取值分别是()。a=125.534;a=(int)125.521%4;a=5<<2;A.125,31,1 B.125,1,20 C.125,31,20 D.125.534,2,20 18.若有以下程序段 int r=8;printf(”%dn“,r>>1);输出结果是()。A.16 B.8 C.4 D.2 19.若有声明: int k,a,b;unsigned long y=5;Double x=1.23;则以下表达式中正确的是()。

A.x%(-5)B.x=y[6] C.k=(a=l,b=2,&a+&b)D.a+=a-=(b=2)*(a=3)

20.若num、a、b和c都是int型变量,则执行表达式num=(a=4,b=16,c=32)后num的值为()

A.4 B.16 C.32 D.52 21.已知a、b、c为int类型变量,若有输入语句:scanf(”a=%db=%dc=%d“,&a,&b,&c);为使a值为1,b值为3,c值为2,从键盘输入数据的正确形式应当是()

A.132<回车> B.a=1b=3c=2<回车> C.1<回车>3<回车>2<回车> D.a=1<回车>b=3<回车>c=2<回车> 22.已知ch是字符型变量,则不正确的赋值语句是()A.ch=5+9; B.ch=''; C.ch='7'+'9'; D.ch='a+b'; 23.判断char型变量c1是否为大写字母的正确表达式是()

A.'A'<=c1<='Z' B.(c1>='A')&(c1<='Z')C.(c1>='A')&&(c1<='Z')D.('A'<=c1)AND('Z'>=c1)24.若希望当num的值为奇数时,表达式的值为“真”,num的值为偶数时,表达式的值为“假”。则以 2

下不能满足要求的表达式是()

A.num%2==1 B.!(num%2==0)C.!(num%2)D.num%2 25.若有定义:int k=7;float a=2.5,b=4.7;则表达式a+k%3*(int)(a+b)%2/4的值是()A.2.500000 B.2.7500000 C.3.500000 D.0.000000 26.设变量y为float类型,x为int类型,则以下能实现将y中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是()

A.y=(y*100+0.5)/100.0 B.x=y*100+0.5,y=x/100.0 C.y=y*100+0.5/100.0 D.y=(y/100+0.5)*100.0 27.以下正确的if语句是()

A.if(n>0)printf(”%f“,n)printf(”%f“,-n);

B.if(n>0){ n=n+m;printf(”%f“,n);}else printf(”%f“,-n); C.if(n>0){ n=n+m;printf(”%f“,n);};else printf(”%f“,-n); D.if(n>0){ n=n+m;printf(”%f“,n)};else printf(”%f“,-n); 28.以下程序运行的结果是()#include int main(){ int x1=3,x2=0,x3=0;if(x1=x2+x3)printf(”****“);else printf(”####“);} A.输出:**** B.输出:#### C.存在语法错误 D.无输出结果 29.语句while(!y)中的表达式!y 等价于()

A.y==0 B.y!=1 C.y!=0 D.y==1 30.若有定义语句:int x=10;,则表达式 x-=x+x 的值为()。A.-20 B.-10 C.0 D.10 31.以下程序段中,与语句:k=a>b?(b>c ? 1 : 0): 0;功能相同的是()。

A.if((a>b)&&(b>c))k=l;else k=0;B.if((a>b)||(b>c))k=l;else k=0;C.if(a<=b)k=0;else if(b<=c)k=1;D.if(a>b)k=l;else if(b>c)k=1;else k=0;32.已知某程序如下: float p=1.5;#define p 2.5 main(){printf(”%f“,p);} 则main函数中标识符p代表的操作数是()。

A.float型变量 B.double型变量 C.float型常量 D.double型常量

33.逻辑”异或“运算可描述为”a xor b“,其中a和b为参加运算的两个操作数,运算结果为当且仅当a、b两个操作数中只有一个为真时才为真,其他情况下均为假。以下表达式中()可以正确表示逻辑”异或“运算。

A.a||b B.a&&b C.(a&&b)&&!(a||b)D.(a||b)&&!(a&&b)34.以下选项中,()是C语言关键字。A.printf B.include C.fun D.default

35.已知有声明”int a=3,b=4;“,下列表达式中合法的是()。A.a+b=7 B.a=|b| C.a=b=0 D.(a++)++ 3

36.以下选项中,不能用作c语言标识符的是()。A.print B.FOR C.&a D._00 37.已知int类型数据在内存中存储长度为2个字节,以下语句中能正确输出整数32768的是()。A.printf(”%d“,32768);B.printf(”%ld“,32768);C.printf(”%f“,32768);D.printf(”%c“,32768);38.已知有声明”int a=3,b=4,c=5;“,以下表达式中值为0的是()。A.a&&b B.a<=b C.a||b&&c D.!(!c||1)39.有以下定义语句,编译时会出现编译错误的是()。

A.char a='a';B.char a='n';C.char a='aa';D.char a='x2d';40.已有预处理命令和声明如下:

#define N 10 int a=2,c=1;double b=1.2;下述程序段正确的是()。

A.switch(a){case C.a--;break;Case c+1:a++;break;} B.switch(a){case N>0:a=1;break;Case 1:a=O;break;} C.switch(a){case 2: b++;break;Case '0': b=3;} D.switch(b){case 1.0: b++;break;Case 1.2: b=1;break;} 41.阅读以下程序

#include main(){int case;float printF;printf(”请输入 2 个数:“);scanf(”%d %f“, &case, &printF);printf(”%d %fn“, case, printF);} 该程序在编译时产生错误,其出错原因是()。

A.定义语句出错,case 是关键字,不能用作用户自定义标识符 B.定义语句出错,printF 不能用作用户自定义标识符 C.定义语句无错,scanf 不能作为输入函数使用 D.定义语句无错,printf 不能输出 case 的值

42.设 int x=2,y=3,z=(++x<=y--)?((--y==1)?y--:--y):y--;则x,y,z的值为()。

A.3,0,1 B.2,0,0 C.3,1,1 D.2,2,1 43.一个用c语言编写的程序,()是必不可少的。

A.取名为main的函数定义 B.#include C.变量声明 D.注释

44.以下单目运算符均只需一个操作数,其中要求操作数的类型只能是指针型的是()。A.& B.++ C.!D.* 45.有以下程序

#include main(){ char c1,c2;C1='A'+'8'-'4';C2='A'+'8'-'5';printf(”%c,%dn“,c1,c2);} 已知字母 A 的 ASCII 码为 65,程序运行后的输出结果是()。

A.E,68 B.D,69 C.E,D D.输出无定值

46.以下选项中,能用作用户标识符的是()。A.void B.8_8 C._0_ D.unsigned 47.有以下程序

#include main(){ int a=1, b=0;printf(”%d,“, b=a+b);printf(”%dn“, a=2*b);} 程序运行后的输出结果是()。A.0,0 B.1,0 C.3,2 D.1,2

48.设有定义:int a=l, b=2, c=3;,以下语句中执行效果与其它三个不同的是()。

A.if(a>b)c=a,a=b,b=c;B.if(a>b){c=a,a=b,b=c;} C.if(a>b)c=a;a=b;b=c;D.if(a>b){c=a;a=b;b=c;} 49.有以下程序

#include main(){ int c=0, k;for(k=1;k<3;k++)switch(k){ Default: c+=k;Case 2: c++;break;Case 4: c+=2;break;} printf(”%dn“, c);} 程序运行后的输出结果是()。

A.3 B.5 C.7 D.9 50.已有声明语句”unsigned char ch;“,与表达式”ch='B'“的值不相同的表达式是()。(注释:字符A的Ascii码以十进制表示为65)A.ch=0x42 B.ch=0102 C.ch='102' D.ch=066

51.已知有声明”int a=3,b=4,c;“,则执行语句”c=1/2*(a+b);“后,c的值为()。

A.0 B.3 C.3.5 D.4 52.表达式:(int)((double)9/2)-(9)%2 的值是()。A.0 B.3 C.4 D.5 53.r 54.已知有声明”int a=3,b=4,c=5;“,以下表达式中值为0的是()。A.a&&b B.a<=b C.a||b&&c D.!(!c||1)

55.若有语句 double x=17;int y;,当执行 y=(int)(x/5)%2;之后 y 的值为_______。1 56.若有定义语句:int a=5;,则表达式:a++的值是_____________。5 57.以下程序运行后的输出结果是_____________。10

#include main(){int x=20;printf(”%d“,0

} 58.若有定义:int y=7;float x=2.5,z=4.7;,则表达式x+(int)(y/3*(int)(x+z)/2)%4的值为________。5.5 59.设x、y、z均为int类型变量,请用C语言的表达式描述以下命题。

x或y中有一个小于z _________ x

60.设x、y、z均为int类型变量,请用C语言的表达式描述以下命题。

x、y和z中只有两个为负数________ x<0&&y<0&&z>=0||y<0&&z<0&&x>=0||x<0&&z<0&&y>=0 61.设x、y、z均为int类型变量,请用C语言的表达式描述以下命题。

y是奇数 _________________________ y%2 y%2==1

62.设x、y、z均为int型变量,且x=3, y=-4, z=5,请写出下面每个表达式对应的结果。

(x&&y)==(x||z)_______ 1

63.27.设x、y、z均为int型变量,且x=3, y=-4, z=5,请写出下面每个表达式对应的结果。

!(x>y)+(y!=z)||(x+y)&&(y-z)______ 1

64.若a是int型变量,且a的初值为6,则计算表达式a+=a-=a*a后a的值为________-60 65.若s是int型变量,且s=6,则下面表达式s%2+(s+1)%2的值为______ 1

66.已知有变量定义:int x=4;float y=3.5;则执行 x+=y+2 之后,x的值为____ 9

C语言规定,可执行程序的开始执行点是____ 主函数 main 67.有int a=3,b=4,c=5;则以下表达式!(a+b)+c-1&&b+c/2的值是___________ 1

68.若采用十进制数的表示形式,则077为______,0111为____,0x29为____,0xab为______。

63,73,41,171 69.若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++后x的值为_____,n的值为_____ 10,6

70.设有说明:int a=1,b=0; 则执行以下语句后的输出结果是_______________ **0****2**

switch(a){ case 1:switch(b){ case 0: printf(”**0**“);break;Case 1: printf(”**1**“);break;} Case 2: printf(”**2**“);break;} 71.当a=1, b=3, c=5, d=4 时,执行完下面一段程序后x的值是_____ 2

if(a

#include main(){char a[20]=”How are you?“,b[20];scanf(”%s“,b);printf(”%s %s“,a,b);} 程序运行时从键盘输入:How are you?<回车> 6

则输出结果为________________。How are you? How

循环结构,数组,指针

73.以下对于break语句使用的正确描述是()。

A.可以出现在程序中的任何位置 B.只能出现在循环或switch结构中 C.只能出现在switch结构中 D.只能出现在循环结构中

74.已知有声明”char s[20]=“Hello”;“,在程序运行过程中,若要想使数组s中的内容修改为”Good“,则以下语句中能够实现此功能的是()。

A.s=”Good“;B.s[20]=”Good“;C.strcat(s,”Good“);D.strcpy(s,”Good“);75.有以下程序

#include main(){int m=1, n=2, *p=&m, *q=&n, *r;r=p;p=q;q=r;printf(”%d,%d,%d,%dn“,m,n,*p,*q);} 程序运行后的输出结果是()。

A.1,2,1,2 B.1,2,2,1 C.2,1,2,1 D.2,1,1,2 76.? 77.?;78.设有如下程序段,下面描述中正确的是()。

int k=10;while(k=0)k=k-1;A.循环执行一次 B.循环是无限循环 C.循环体语句一次也不执行 D.循环体语句执行一次 79.若有定义语句:int a[4][10],*p,*q[4];且 0≤i<4,则错误的赋值是()。

A.p=a B.q[i]=a[i] C.p=a[i] D.p=&a[2][1] 80.有以下程序

#include #include main(){char a[10]=”abcd“;printf(”%d,%dn“,strlen(a),sizeof(a));} 程序运行后的输出结果是()。A.7,4 B.4,10 C.8,8 D.10,10 81.设有程序段如下,则描述正确的是()int x=10;while(x=0)x=x-1;

A.while循环执行10次 B.循环是无限循环

C.循环体语句一次也不执行 D.循环体语句只执行一次

82.设x、y均是int类型变量,且x值为100,则关于以下for循环的正确判断是____

for(y=100;x!=y;++x,y++)printf(”****n“);

A.循环体只执行一次 B.是无限循环 C.循环体一次都不执行 D.for语句中存在语法错误 83.若有声明语句”int a=5,b=4,c=3,*p=&a;“,则下列()表达式语句是正确的。

A.(*p)++=c;B.printf(a%4==0?”%3dn“:”%3d“,*p);7

C.*(*p)++;D.a>20?return *p-20:return *p-1;84.若有声明”int a [5],*b=a,(*c)[3],*d[3];“,则在以下表达式中有语法错误的是()。A.a[0]=0 B.b[0]=0 C.c[0]=0 D.d[0]=0 85.以下跳转语句中,只有()可以选择不唯一的跳转目的地。A.continue;B.break;C.goto 标识符;D.return;86.以下声明中正确的是()。

A.int n=2,a[n]={10};B.int n=10,*p[2]=&n;C.int n=10,a[2]={n};D.int a[2][2]={10},(*p)[2]=a+1;87.已知有声明”int a[4][4]={{1,2,3,4},{5,6,7,8), {9,10,11,12},{13,14,15,16)};“,若需要引用值为12的数组元素,则下列选项中错误的是()。

A.*(a+2)+3 B.*(*(a+2)+3)C.*(a[2]+3)D.a[2][3] 88.已知有声明”int a=12,b=15,c;“,则执行表达式”c=(a||(b-=a))“后,变量b和c的值分别为()。A.3,1 B.15,12 C.15,1 D.3,12 89.已知有声明 int i,a[10],*p=a;,现需要将1到l0保存到元素a[0]到a[9]中,以下程序段中不能实现这一功能的是()。

A.for(i=0;i<10;i++)a[i]=i+1;B.for(i=0;i<10;i++)p[i]=i+1;C.i=1;while(p

A.p=”abcd“;B.a=”abcd“;C.*p=”abcd“;D.*a=”abcd“;91.有以下程序

#include main(){int n=2,k=0;while(k++ &&n++>2);printf(”%d %dn“,k,n);} 程序运行后的输出结果是()。A.0 2 B.1 3 C.5 7 D.l 2 92.有以下程序

#include #include main(){char str[][20]={”One*World“,”One*Dream!“},*p=str[1];printf(”%d,“,strlen(p));printf(”%sn“,p);} 程序运行后的输出结果是()。

A.9,One*World B.9,One*Dream!C.10,One*Dream!D.10,One*World 93.有以下程序

#include main(){int a[]={2, 3, 5, 4}, i;for(i=0;i<4;i++)switch(i%2){case 0 : switch(a[i]%2){case 0 : a[i]++;break;Case 1 : a[i]--;8

}break;Case 1 : a[i]=0;} for(i=0;i<4;i++)printf(”%d“,a[i]);printf(”n“);} 程序运行后的输出结果是()。

A.3 3 4 4 B.2 0 5 0 C.3 0 4 0 D.0 3 0 4 94.设指针变量占2个字节的内存空间,若有声明”char *p=“123”;int c;“,则执行语句”c=sizeof(p);“后,c的值为()。

A.1 B.2 C.3 D.4 95.已知有声明”int m[]={5,4,3,2,1},i=0;“,下列对m数组元素的引用中,错误是()。A.m[++i] B.m[5] C.m[2*2] D.m[m[4]] 96.有以下程序

#include main(){char s[]={”012xy“};int i, n=0;for(i=0;s[i]!=0;i++)if(s[i]>='a' &&s[i]<='z')n++;printf(”%dn“,n);} 程序运行后的输出结果是()。A.0 B.2 C.3 D.5 97.下面是有关 C 语言字符数组的描述,其中错误的是()。

A.不可以用赋值语句给字符数组名赋字符串 B.可以用输入语句把字符串整体输入给字符数组 C.字符数组中的内容不一定是字符串 D.字符数组只能存放字符串

98.设有定义:char *c;,以下选项中能够使字符型指针 c 正确指向一个字符串的是()。

A.char str[]=”string“;c=str;B.scanf(”%s“,c);C.c=getchar();D.c=*string”;99.已知有声明 char s[80];,若需要将键盘输入的一个不含空格的字符串保存到数组中,则下列语句中正确的是()。

A.scanf(“%s”,s);B.scanf(“%s”,s[0]);C.s=gets();D.s=getchar();100.若要对a进行++运算,则a应具有以下说明()。

A.int a[3][2];B.char *a[]={“12”,“ab”};C.int b[10],*a=b;D.char(*a)(char);101.已有声明“int s[2][3]”,以下选项中()正确地引用了数组s中的基本元素。A.s[1>2][!1] B.s[2][0] C.s[1] D.s 102.以下程序运行后的输出结果是__________。

#include main(){int a=1,b=7;Do { B=b/2;a+=b;} while(b>1);printf(“%d”,a);} 5 103.有以下程序

#include main(){int f,f1,f2,i;f1=0;f2=1;printf(“%d,%d”, f1,f2);9

for(i=3;i<=5;i++){f= f1+f2;printf(“%d”,f);f1=f2;f2=f;}} 程序运行后的输出结果是___________。0,1123 104.设a、b、c均是int类型变量,则执行以下for循环后,c的值为_____________ 40

for(a=1,b=5,c=0;a<=b;a++)c+=a+b;105.执行下面程序段后,k值是_________ 36

k=1;n=263; Do{ k*=n%10;n/=10;}while(n); 106.下面程序的输出结果是_________ a=16,y=60

#include “stdio.h” main(){int a,y;a=10;y=0;Do{ a+=2;y+=a;if(y>50)break;}while(a=14);printf(“a=%d,y=%d”,a,y);} 107.下面程序的输出结果是________ 7

#include void main(){ int k=1;long sum=0;Do{ k=k*(k+1)/2;sum+=k;}while(sum%7);printf(“%d”,sum);}

函数

108.以下程序的输出结果为()。

int i;void prt(){ for(i=5;i<8;i++)printf(“%c”,'*');printf(“t”);} main(){for(i=5;i<=8;i++)prt();} A.*** B.*** *** *** *** C.*** *** D.* * * 109.若有以下程序:

int x:

int f(int y)10

{return 标识符;} #include int w: main(){int z=2;f(z);…} 则在函数f中return语句后允许出现的标识符是()。A.x或w B.x或y C.z或w D.NULL 110.在C语言程序中,以下说法正确的是()。

A.函数的定义可以嵌套,但函数的调用不可以嵌套 B.函数的定义不可以嵌套,但函数的调用可以嵌套 C.函数的定义和函数的调用都不可以嵌套 D.函数的定义和函数的调用都可以嵌套 111.下列函数的功能是()。

fun(char *a,char *b){while((*b=*a)!=''){a++;b++;} } A.将 a 所指字符串赋给 b 所指空间 B.使指针 b 指向 a 所指字符串

C.将 a 所指字符串和 b 所指字符串进行比较 D.检查 a 和 b 所指字符串中是否有'' 112.设有以下函数:

void fun(int n,char *s){……} 则下面对函数指针的定义和赋值均正确的是()。A.void(*pf)();pf=fun;B.void *pf();pf=fun;C.void *pf();*pf=fun;D.void(*pf)(int,char);pf=&fun; 113.以下程序的输出结果为()。

#include “stdio.h” void xy(int *x,int *y){ int *t;t=x;x=y;y=t;} int main(){ int a=7,b=8,*x=&a,*y=&b;xy(x,y);printf(“%d,%d,%d,%d”,a,b,*x,*y);} A.7,8,7,8 B.7,8,8,7 C.8,7,7,8 D.8,7,8,7 114.在定义任何一个函数时,下列选项中,()是不可缺少的。

A.函数名之前的数据类型 B.函数名之后的一对圆括号 C.形式参数声明 D.函数体内的语句 115.若有函数fun的定义为

void fun(…){static int a=1;… } 则下列叙述中不正确的是()。

A.在每次调用fun函数时,变量a的值是上次调用结束时a的值 B.在fun函数之外,可以用变量名a直接引用a的值

C.在其他函数中,可以出现声明double a=2.5;D.fun函数的形式参数不能取名为a 116.若函数调用时的实参为变量,则以下关于函数形参和实参的叙述中正确的是()。

A.实参和其对应的形参占用同一存储单元 B.形参不占用存储单元

C.同名的实参和形参占用同一存储单元 D.形参和实参占用不同的存储单元 117.以下函数调用语句中含有()个实参。

func((e1,e2),(e3,e4,e5));A.2 B.3 C.5 D.语法错误 118.有以下程序

#include void fun(int p){int d=2;p=d++;printf(“%d”,p);} main(){int a=1;fun(a);printf(“%dn”,a);} 程序运行后的输出结果是()。A.32 B.12 C.21 D.22 119.以下函数 findmax 拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能。

#define MIN-2147483647 int findmax(int x[],int n){int i,max;for(i=0;i

A.定义语句 int i,max;中 max 未赋初值 B.赋值语句 max=MIN;中,不应给 max 赋 MIN 值 C.语句 if(max

A.f(c,s);B.f(c[i],s[i]);C.f(*(c+i),&s[i]);D.f(c+i,s+i);121.当需要定义一个函数时,以下标识符中,()不能用作函数名。A.scanf B.for C._sum D.F2 122.有以下程序

# include int f(int n);main(){int a=3,s;s=f(a);s=s+f(a);printf(“%dn”,s);} int f(int n){static int a=1;n+=a++;return n;} 程序运行后的输出结果是()。A.7 B.8 C.9 D.10 123.有以下程序

# include # define f(x)x*x*x main(){int a=3,s,t;s=f(a+1);t=f((a+1));printf(“%d,%dn”,s,t);} 程序运行后的输出结果是()。

A.10,64 B.10,10 C.64,10 D.64,64 124.若有以下声明和定义:

void fun(int c){printf(“%d”,c);} main(){void(*a)(int)=fun,*b(int),(*c)(int);/*调用fun函数语句位置*/ } void *b(int c){} 如果在main函数中需要调用fun函数,以下调用语句中错误的是()。A.fun(1);B.(*a)(1);C.b=fun;(*b)(1);D.c=a;(*c)(1);125.有以下程序

#include int a=5;void fun(int b){int a=10;a+=b;printf(“%d”,a);} main(){int c=20;fun(c);a+=c;printf(“%d”,a);} 程序运行后的输出结果是________________。3025 126.有以下程序: #include 13

fun(int x){if(x/2>0)fun(x/2);printf(“%d”, x);} main(){fun(6);} 程序运行后的输出结果是___________________。136

结构体

127.设有以下定义,值为5的枚举常量是()。

enum week{sun,mon=4,tue,wed,thu,fri,sat} w;

A.tue B.sat C.fri D.thu 128.有以下程序

#include #include struct A {int a;char b[10];double c;};struct A f(struct A t);main(){struct A a={1001,“ZhangDa”,1098.0};a=f(a);printf(“%d,%s,%6.1fn”,a.a,a.b,a.c);} struct A f(struct A t){t.a=1002;strcpy(t.b,“ChangRong”);t.c=1202.0;return t;} 程序运行后的输出结果是()。

A.1001,ZhangDa,1098.0 B.1002,ZhangDa,1202.0 C.1001,ChangRong,1098.0 D.1002,ChangRong,1202.0 129.下面结构体的定义语句中,错误的是()。

A.struct ord {int x;int y;int z;};struct ord a;B.struct ord {int x;int y;int z;} struct ord a;C.struct ord {int x;int y;int z;}a;D.struct {int x;int y;int z;} a;130.下列程序段执行后的结果为()。

main(){ static int a[3][3]={1,3,5,7,9,11,13,15,17},y,x,*p=&a[2][2];for(x=0;x<3;x++)y+=*(p-4*x);printf(“n%d”,y);} A.45 B.33 C.17 D.27 131.已知数据类型定义和变量声明如下:

struct sk {int a;float b;} data[2],*p;若有p=data,则以下对data[0]中成员a的引用中错误的是()。

A.data[0]->a B.data->a C.p->a D.(*p).a 132.已有数据类型定义和变量声明如下:

struct person {int num;Char name[20],sex;strrut{int cla;char prof[20];}in;}a={20,“Li ning”,'M',{5,“computer”}},*p=&a;下列语句中正确的是()。

A.printf(“%s”,a->name);B.printf(“%s”,p->in.prof);C.printf(“%s”,*p.name);D.printf(“%s”,p->in->prof);133.设有定义如下;typedef stuct{int x,y;}pOINT;typedef enum{RED,YELLOW,BLUE,GREEN}COLOR;struct {pOINT xy;COLOR c;}pixel,*p=&pixel;以下对变量pixel的赋值操作中正确的是()。

A.pixel={1,2,BLUE};B.p->xy.x=1;p->xy.y=2;p->c=BLUE;

C.scanf(“%d%d%d”,p->xy.x,p->xy.y,&pixel.c);D.pixel.color=2;134.以下程序的输出结果为()。

#define ADD(x)x*x main(){ int a=4,b=6,c=7,d=ADD(a+b)*c;printf(“d=%d”,d);} A.d=70 B.d=80 C.d=140 D.d=700 135.设有以下程序段,则值为6的表达式是()。

struct st { int n;struct st *next;};static struct st a[3]={5,&a[1],7,&a[2],9,0 },*p;p=&a[0];A.p++->n B.++p->n C.p->n++ D.(*p).n++ 136.有以下程序

#include #include struct A {int a;char b[10];double c;};struct A f(struct A t);main(){struct A a={1001,“ZhangDa”,1098.0};a=f(a);printf(“%d,%s,%6.1fn”,a.a,a.b,a.c);} struct A f(struct A t){t.a=1002;strcpy(t.b,“ChangRong”);t.c=1202.0;return t;} 程序运行后的输出结果是()。

A.1001,ZhangDa,1098.0 B.1002,ZhangDa,1202.0 C.1001,ChangRong,1098.0 D.1002,ChangRong,1202.0 137.设有定义:

struct person {int ID;char name[12];}p;请将 scanf(“%d”,______________);语句补充完整,使其能够为结构体变量 p 的成员 ID 正确读入数据。p.ID

138.有以下程序

#include typedef struct { int num;double s;} REC;void funl(REC x){x.num=23;x.s=88.5;} main(){REC a={16,90.0};funl(a);printf(“%d”,a.num);} 程序运行后的输出结果是____________________。16

文件

139.下列关于 C 语言文件的叙述中正确的是()。

A.文件由一系列数据依次排列组成,只能构成二进制文件 B.文件由结构序列组成,可以构成二进制文件或文本文件 C.文件由数据序列组成,可以构成二进制文件或文本文件 D.文件由字符序列组成,其类型只能是文本文件 140.在缺省情况下,标准C的编译系统中预定义的标准输出流stdout直接连接的设备是()。A.软盘 B.硬盘 C.键盘 D.显示器 141.下列叙述中,正确的是()。

A.C语言中的文件是流式文件,因此只能顺序存取文件中的数据

B.调用fopen函数时若用“r”或“r+”模式打开一个文件,该文件必须在指定存储位置或默认存储位置处存在

C.当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到该文件中的第1个数据 D.无论以何种模式打开一个已存在的文件,在进行了写操作后,原有文件中的全部数据必定被覆盖 142.C语言中的文件类型只有()。

A.索引文件和文本文件两种 B.文本文件一种

C.二进制文件一种 D.ASCII码文件和二进制文件两种

第四篇:c语言课后习题

C语言程序设计实验报告

学院

数学与信息技术

班级

学号

11130730

姓名

指导教师

实验1 简单程序设计

1.实验目的

(1)熟悉C语言开发环境并掌握在该环境下如何编辑、编译、连接和运行一个C程序。(2)通过运行一个简单的C程序过程,初步了解C程序的基本结构及特点。

2. 实验要求

(1)认真阅读和掌握和本实验相关的教材内容。

(2)输入三个整数,请把这三个数由小到大输出。试编写多种方法。(3)上机运行程序。

(4)保存和打印出程序的运行结果,并结合程序进行分析。

3.实验重点和难点

(1)C程序是由一个个函数构成,当一个函数调用另一个函数时,需要对被调函数作声明。(2)用户自定以的函数最好写在一个头文件中,在需要的地方用文件包含命令即可。

(3)system(“cls”)函数的作用是清屏,它的声明在头文件stdlib.h中。如果是在Linux操作系统的gcc环境下,清屏用system(”clear”)。

4. 常见错误

(1)数据声明或语句后面缺少分号。(2)对被调函数没有声明。

(3)没有main函数或者有多个main函数。

5. 程序代码

#include int main(){ float a,b,c,t;printf(“请输入三个数:”);scanf(“%f,%f,%f”,&a,&b,&c);if(a>b){

t=a;a=b;b=t;} if(a>c){t=a;a=c;c=t;} if(b>c){t=b;b=c;c=t;} printf(“%5.2f,%5.2f,%5.2fn”,a,b,c);} 6. 实验结果

7. 心得体会

刚开始学习C语言,有一些小问题,数据声明时,分号会忘记,语句后面缺少分号。而且n斜杠会写反,有时会忘记声明函数。

实验2 顺序结构程序设计

1.实验目的

(1)掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量。(2)掌握数据的输入输出的方法,能正确使用各种格式控制符。(3)掌握算术运算符和赋值运算符。

2. 实验要求

(1)认真阅读和掌握和本实验相关的教材内容。

(2)输入圆半径和圆柱高,求圆周长、圆面积、圆球表面积、圆球体积和圆柱体积。输入输出要有文字说明,输出结果取小数点后2位。(3)上机运行程序。

(4)保存和打印出程序的运行结果,并结合程序进行分析。

3.实验重点和难点

(1)用scanf和printf对数据进行输入输出时,不同的数据类型用不同的格式控制符。(2)scanf函数中的格式控制后面应当是变量地址,而不是变量名。

4. 常见错误

(1)变量没有定义,直接使用。

(2)企图利用整数除以整数得到精确结果。例如1/4结果不是0.25而是0,1/4.0结果才是0.25。(3)printf和scanf函数中格式控制符的个数与变量或变量地址的个数不一致。(4)scanf函数的地址表列因该是变量地址,而不是变量名。

(5)scanf函数在格式控制字符串中除了格式说明以外还有其他字符时,在输入数据时(6)没有在对应的位置输入与这些字符相同的字符。

5. 程序代码

#include int main(){ float h,r,l,s,sq,vq,vz;float p=3.141526;printf(“请输入圆半径r,圆柱高h”);scanf(“%f,%f”,&r,&h);l=2*p*r;//圆周长

s=r*r*p;//圆面积

sq=4*p*r*r;//圆球表面积

vq=4.0/3.0*p*r*r*r;//圆球体积

vz=p*r*r*h;//圆柱体积

printf(“圆周长为: l=%6.2fn”,l);printf(“圆面积为: s=%6.2fn”,s);printf(“圆球表面积为: sq=%6.2fn”,sq);printf(“圆球体积为: vq=%6.2fn”,vq);printf(“圆柱体积为: vz=%6.2fn”,vz);return 0;} 6. 实验结果

7. 心得体会

这边是基础的用scanf和printf对数据进行输入输出,不同的数据类型用不同的格式控制符。有点小睇混淆。才刚开始,还是觉得挺简单的。

实验3 选择结构程序设计

1.实验目的

(1)了解C语言表示逻辑变量的方法(2)学会正确使用关系运算符和逻辑运算符。(3)熟练掌握if语句和switch语句。

2. 实验要求

(1)认真阅读和掌握和本实验相关的教材内容。(2)把百分制成绩转换成5级记分制,要求分别用if else 和switch语句。

90分以上(包括90): A 80至90分(包括80):B 70至80分(包括70):C 60至70分(包括60):D 60分以下:E

(3)上机运行程序。

(4)保存和打印出程序的运行结果,并结合程序进行分析。

3.实验重点和难点

(1)注意关系运算符==和复制运算符=的区别。(2)if和else的匹配原则。

(3)在switch语句中正确使用break。

4. 常见错误

(1)赋值运算符=和关系运算符等号=搞混。(2)在if语句为复合语句时,忘记写{}。(3)if语句出现嵌套时,没正确配对。(4)switch语句中,没正确使用break。

5. 程序代码

#include int main(){ float score;char grade;printf(“请输入学生成绩:”);scanf(“%f”,&score);while(score>100 || score<0){

printf(“n输入有误,请重新输入!”);

scanf(“%f”,&score);} switch((int)(score/10)){ case 10: case 9:grade='A';break;case 8:grade='B';break;case 7:grade='C';break;case 6:grade='D';break;case 5: case 4:

} case 3: case 2: case 1: case 0:grade='E';} printf(“成绩是%5.1f,相应的等级是%cn”,score,grade);return 0;6. 实验结果

7. 心得体会

赋值运算符=和关系运算符等号=搞混。在if语句为复合语句时,忘记写{}。if语句出现嵌套时,没正确配对。

实验4 循环结构程序设计

1.实验目的

(1)熟练掌握循环语句中的for语句、while语句和do while语句的使用方法,以及这三种循环语句之间的转换方法。

(2)掌握编写循环结构程序的方法。

2. 实验要求

(1)认真阅读和掌握和本实验相关的教材内容。

(2)通过键盘输入任意两个正整数,求其最大公约数和最小公倍数。(3)上机运行程序。

(4)保存和打印出程序的运行结果,并结合程序进行分析。

3.实验重点和难点

(1)循环结构程序的设计方法。

(2)while和do while循环之间的转换方法。

(3)getch函数从键盘接收一个字符,该函数被调用后程序会暂停,等待按任意键,再继续执行后续的语句,以便我们观察中间结果。在VC++下需要包含conio.h头文件,在Linux下需要包含头文件curses.h。由于在Linux下getch函数还需要与其它函数配合使用才能达到上面所说的功能并且在编译时还要指定链接所使用的库文件,所以在Linux环境建议使用两次调用getchar函数来替换getch函数。

4. 常见错误

(1)循环体为复合语句时,没用{}括起来。

(2)在while()和for()后面添加分号,使得循环体为空语句。(3)for括号里的分号和逗号用错。

(4)循环嵌套时,内循环的初始条件和循环体没正确设计好。

5. 程序代码

#include int main(){ int r,m,n,p;scanf(“%d,%d”,&m,&n);p=n*m;do{ r=m%n;m=n;n=r;p=p/m;}while(r!=0);printf(“最大公约数:%dn”,m);

printf(“最小公倍数:%dn”,p);return 0;} 6. 实验结果

7. 心得体会

循环体为复合语句时,没用{}括起来。在while()和for()后面添加分号,使得循环体为空语句。for括号里的分号和逗号用错。循环嵌套时,内循环的初始条件和循环体没正确设计好。

实验5 数组的应用

1.实验目的

(1)掌握一维数组和二维数组的定义和引用。(2)掌握字符数组和字符串函数的使用。(3)掌握与数组有关的算法(特别是排序算法)。

2. 实验要求

(1)认真阅读和掌握和本实验相关的教材内容。(2)用选择法对10个整数排序。(3)上机运行程序。

(4)保存和打印出程序的运行结果,并结合程序进行分析。

3.实验重点和难点

(1)在循环中,数组元素的引用。

(2)起泡排序法、选择排序法和插入排序法。

4. 常见错误

(1)数组定义时,没规定数组长度或者长度为一变量。(2)循环中数组元素的下标没正确表示。

(3)起泡排序、选择排序和插入排序算法没理解透。

(4)起泡排序、选择排序和插入排序中,循环的初始条件和终止条件出现错误。(5)字符串的复制和比较直接使用赋值运算符和关系运算符。

5. 程序代码

#include int main(){ int i,j,t,a[10];printf(“请输入10个整数:n”);for(i=0;i<10;i++)scanf(“%d”,&a[i]);for(i=0;i<9;i++)

for(j=i+1;j<10;j++)

if(a[i]>a[j])

{

t=a[i];

a[i]=a[j];

a[j]=t;

} printf(“选择排列:n”);for(i=0;i<10;i++)

printf(“%5d”,a[i]);printf(“n”);return 0;} 6. 实验结果

7. 心得体会

数组定义时,没规定数组长度或者长度为一变量。循环中数组元素的下标没正确表示。起泡排序、选择排序和插入排序算法没理解透。起泡排序、选择排序和插入排序中,循环的初始条件和终止条件出现错误。字符串的复制和比较直接使用赋值运算符和关系运算符。

实验6 函数的应用

1.实验目的

(1)掌握函数的定义和调用方法。

(1)掌握函数实参与形参的对应关系,以及“值传递”的方式。(1)掌握函数的嵌套调用和递归调用的方法。

(1)掌握全局变量和局部变量,动态变量以及静态变量的概念和使用方法。

2. 实验要求

(1)认真阅读和掌握和本实验相关的教材内容。

(2)写一个函数,用“起泡法”对输入的10个字符按由小到大的顺序排列,主函数通过调用它实现题目要求。

(3)上机运行程序。

(4)保存和打印出程序的运行结果,并结合程序进行分析。

3.实验重点和难点

(1)函数的定义和调用方法。

(2)函数的实参数为数组时,形参的形式以及实参和形参之间的数据传递方式。(3)函数的递归调用。

4. 常见错误

(1)函数没定义,就被调用。(2)函数定义了,又没被调用。(3)定义函数时,形参没规定类型。(4)函数调用时,实参前加类型。(5)被调函数没有声明

(6)嵌套调用和递归调用没理解透,使用错误。(7)全局变量和局部变量有效范围没能正确区分。

5. 程序代码

#include #include #define N 10 char str[N];int main(){ void sort(char[]);int i,flag;for(flag=1;flag==1;){ printf(“input string:n”);scanf(“%s”,&str);if(strlen(str)>N)printf(“string is too long,input again!”);else flag=0;} sort(str);printf(“string sorted:n”);for(i=0;istr[i+1]){ t=str[i];str[i]=str[i+1];str[i+1]=t;} } 6. 实验结果

7. 心得体会

有时候函数没定义就使用,有时候会定义函数,然后没有使用,定义函数时,形参没规定类型。函数调用时,实参前加类型。会把形参与实参搞混

实验7 指针的应用

1.实验目的

(1)熟练掌握指针的定义、赋值和使用。

(2)掌握用指针引用数组的元素、熟悉指向数组的指针的使用。(3)熟练掌握字符数组与字符串的使用,掌握指针数组。(4)掌握指针函数与函数指针的用法。

2. 实验要求

(1)认真阅读和掌握和本实验相关的教材内容。

(2)有一个班4个学生,5门课程。①求第1门课程的平均分;②找出两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩;③找出平均成绩在90以上或全部课程成绩在85分以上的学生。分别编3个函数实现以上3个要求。(3)上机运行程序。

(4)保存和打印出程序的运行结果,并结合程序进行分析。

3.实验重点和难点

(1)列指针变量的定义、赋值以及利用它引用数组元素。(2)行指针变量的定义、赋值以及它在二维数组中的使用。(3)函数指针变量的定义、赋值和利用它进行函数调用。

4. 常见错误(1)混淆变量值和变量地址。

(2)指针变量没有初始化,就利用该指针变量引用变量。

(3)利用指针变量引用一维数组元素和二维数组元素或地址时,引用的方法不对。(4)函数指针概念清楚。(5)混淆行指针变量和指针数组。

5. 程序代码

#include int main(){ void avsco(float *,float *);void avcour1(char(*)[10],float *);void fali2(char course[5][10],int num[],float *pscore,float aver[4]);void good(char course[5][10],int num[4],float *pscore,float aver[4]);int i,j,*pnum,num[4];float score[4][5],aver[4],*pscore,*paver;char course[5][10],(*pcourse)[10];printf(“input course:n”);pcourse=course;for(i=0;i<5;i++)scanf(“%s”,course[i]);printf(“input NO.and scores:n”);printf(“NO.”);for(i=0;i<5;i++)printf(“%3s”,course[i]);printf(“n”);pscore=&score[0][0];pnum=&num[0];for(i=0;i<4;i++){

scanf(“%d”,pnum+i);

for(j=0;j<5;j++)

scanf(“%f”,pscore+5*i+j);} paver=&aver[0];printf(“nn”);avsco(pscore,paver);avcour1(pcourse,pscore);printf(“nn”);fali2(pcourse,pnum,pscore,paver);printf(“nn”);good(pcourse,pnum,pscore,paver);return 0;} void avsco(float *pscore,float *paver){ int i,j;float sum,average;for(i=0;i<4;i++){

sum=0.0;

for(j=0;j<5;j++)

sum=sum+(*(pscore+5*i+j));

average=sum/5;

*(paver+i)=average;} } void avcour1(char(*pcourse)[10],float *pscore){ int i;float sum,average1;sum=0.0;for(i=0;i<4;i++)sum=sum+(*(pscore+5*i));average1=sum/4;printf(“course1:%s average score:%7.2fn”,*pcourse,average1);}

void fali2(char course[5][10],int num[],float *pscore,float aver[4]){ int i,j,k,labe1;printf(“ ==========Student who is fail in two courses======= n”);printf(“NO.”);for(i=0;i<5;i++)printf(“%11s”,course[i]);printf(“averagen”);for(i=0;i<4;i++){

labe1=0;for(j=0;j<5;j++)if(*(pscore+5*i+j)<60.0)labe1++;if(labe1>=2)

{

printf(“%d”,num[i]);for(k=0;k<5;k++)printf(“%11.2f”,*(pscore+5*i+k));printf(“%11.2fn”,aver[i]);

} } } void good(char course[5][10],int num[4],float *pscore,float aver[4]){ int i,j,k,n;printf(“ ======Students whose score is good======n”);printf(“NO.”);for(i=0;i<5;i++)printf(“%11s”,course[i]);printf(“ averagen”);for(i=0;i<4;i++){

n=0;

for(j=0;j<5;j++)

if(*(pscore+5*i+j)>85.0)n++;

if((n==5)||(aver[i]>=90))

{

printf(“%d”,num[i]);

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

printf(“%11.2f”,*(pscore+5*i+k));

printf(“%11.2fn”,aver[i]);

} } } 6. 实验结果

7. 心得体会

指针这章有点小混乱 混淆变量值和变量地址。会忘记给指针变量没有初始化,就利用该指针变量引用变量。数组元素或地址有些模糊

实验8 结构体的应用

1.实验目的(1)掌握结构体变量、结构体数组以及结构体指针的定义和使用。(2)掌握动态存储分配函数的用法和单向链表的创建、输出等操作。(3)掌握用typedef定义类型。

2. 实验要求

(1)认真阅读和掌握和本实验相关的教材内容。

(2)编写建立链表的函数creat,输出链表的函数print,删除链表中节点的函数del,插入节点的函数insert,再编写一个主函数,先后调用这些函数,在主函数中指定需要删除和插入的节点的数据。(3)上机运行程序。

(4)保存和打印出程序的运行结果,并结合程序进行分析。

3.实验重点和难点

(1)结构成员引用的三种方法。(2)链表节点数据类型的定义。

(3)malloc函数用于动态分配存储空间,它的返回值类型是void *,在实际使用中一般需要强类型转换成多需要的类型。该函数的声明在stdlib.h头文件中。(4)链表操作中,节点指针域的使用。

4. 常见错误

(1)引用结构体成员时,成员运算符.和指向运算符->的使用混淆。(2)链表操作过程中不能正确利用指针域进行操作。(3)不能正确使用typedef声明新类型名。

5. 程序代码

#include #include #define LEN sizeof(struct Student)struct Student { long num;float score;struct Student *next;};int n;int main()//主函数 { struct Student *creat();struct Student *del(struct Student *,long);struct Student *insert(struct Student *,struct Student *);void print(struct Student *);struct Student *head,stu;long del_num;printf(“input records:n”);head=creat();print(head);printf(“input the deleted number:”);scanf(“%ld”,&del_num);head=del(head,del_num);print(head);printf(“input the inserted record:”);scanf(“%ld,%f”,&stu.num,&stu.score);head=insert(head,&stu);print(head);return 0;} struct Student *creat()//创建链表 { struct Student *head;struct Student *p1,*p2;n=0;p1=p2=(struct Student *)malloc(LEN);scanf(“%ld,%f”,&p1->num,&p1->score);head=NULL;while(p1->num!=0){

n=n+1;

if(n==1)head=p1;

else p2->next=p1;

p2=p1;

p1=(struct Student *)malloc(LEN);

scanf(“%ld,%f”,&p1->num,&p1->score);} p2->next=NULL;return(head);} struct Student *del(struct Student *head,long num)//{ struct Student *p1,*p2;if(head==NULL){

printf(“nlist null!n”);

return(head);} p1=head;while(num!=p1->num && p1->next!=NULL){

删除

p2=p1;

p1=p1->next;} if(num==p1->num){

if(p1==head)head=p1->next;

else p2->next=p1->next;

printf(“delete:%ldn”,num);

n=n-1;} else printf(“%ld not been found!n”,num);return(head);} struct Student * insert(struct Student *head,struct Student *stud)//{ struct Student *p0,*p1,*p2;p1=head;p0=stud;if(head==NULL){

head=p0;

p0->next=NULL;} else {

while((p0->num>p1->num)&&(p1->next!=NULL))

{

p2=p1;

p1=p1->next;

}

if(p0->num<=p1->num)

{

if(head==p1)head=p0;

else p2->next=p0;

p0->next=p1;}

else

{p1->next=p0;

p0->next=NULL;

}} n=n+1;return(head);} void print(struct Student *head)//输出链表 { struct Student *p;printf(“nNow,These %d records are:n”,n);p=head;

插入

if(head!=NULL)do {

printf(“%ld %5.1fn”,p->num,p->score);

p=p->next;}while(p!=NULL);} 6. 实验结果

7. 心得体会

结构体可以允许我们自己建立不同类型数据,组成组合型的数据结构。这样可以处理一些复杂的问题。但是,在引用结构体成员时,成员运算符.和指向运算符->的使用时会有点混淆。而且有时会不能正确利用指针域进行操作。

实验9 文件的应用

1.实验目的

(1)掌握文件、缓冲文件系统以及文件指针等概念。

(2)学会使用文件打开、关闭、读、写等函数对文件进行简单的操作。

2. 实验要求

(1)认真阅读和掌握和本实验相关的教材内容。(2)编写函数void fun(int n,int *t),其功能是计算n!,通过指针t返回。编写main函数,通过键盘输入一个不大于100的整数,调用fun函数,将指针t返回的值写入文件myf2.out中。(3)上机运行程序。

(4)保存和打印出程序的运行结果,并结合程序进行分析。

3.实验重点和难点

(1)access函数可以用来判断某一文件是否存在。调用该函数时,在VC++下需包含头文件io.h,在Linux下需包含unistd.h头文件。(2)fopen、fclose函数的使用。(3)fread和fwrite函数的使用。

4. 常见错误

(1)文件打开方式使用错误。(2)文件使用完毕没有关闭。

(3)不能正确使用文件读写函数对文件进行操作。

5. 程序代码

#include #include void fun(int n, int *t){

int result=1;int i;for(i=1;i<=n;i++){ result*=i;} *t=result;}

int main(){ int num;int write;FILE *pFile;scanf(“%d”,&num);while(num>=100){

printf(“输入的数据大于100了n”);

scanf(“%d”,&num);} fun(num,&write);

} if((pFile=fopen(“myf2.out”,“w”))==NULL){

printf(“打开文件失败!n”);

} fprintf(pFile,“%d”,write);fclose(pFile);printf(“%d”,write);return 0;6. 实验结果

7. 心得体会

文件打开方式使用错误。文件使用完毕没有关闭。不能正确使用文件读写函数对文件进行操作。而且对于的各种操作容易混淆。不太清楚什么时候怎样使用。

第五篇:C语言课后习题

习题

第三章

#include #include int main(){

int d,p;

double r,a,m;

scanf(“%d %d %lf”,&d,&p,&r);

a=(p/(p-d*r));

m=log(a)/log(1+r);

if(p>0&&d>0)

{

if(d<=m*p)

printf(“%.1f”,m);

else

printf(“God”);

}

else

printf(“0.0”);

return 0;}

勾股数

#include int main(){

int a,b,c,n;

scanf(“%d”,&n);

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

{

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

{

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

{

if(c*c==a*a+b*b)

{

if(a<=b)

{

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

}

}

}

}

}

return 0;}

第四章

计算分段函数值 #include int main(){

float x,y;

scanf(“%f”,&x);

if(x<1)y=x;

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

else if(x>=10)y=3*x-11;

printf(“%.2f”,y);

return 0;}

找出三个数中最大的数 #include int main(){

int a,b,c,max;

scanf(“%d%d%d”,&a,&b,&c);

max=a>b?a:b;

if(c>max)

max=c;

printf(“%d”,max);

return 0;}

10844成绩等级评分 #include int main(){

int x;

scanf(“%d”,&x);

if(x>=0&&x<=100)

{

switch(x/10)

{

case 10:

case 9: printf(“A”);break;

case 8 : printf(“B”);break;

case 7 : printf(“C”);break;

case 6 : printf(“D”);break;

default:

printf(“E”);break;

}

}

else

printf(“error”);

return 0;}

前续和后续字符 #include int main(){

char x;

x=getchar();switch(x){ case'0':printf(“first”);printf(“ %c”,x+1);break;case'9':printf(“%c ”,x-1);printf(“last”);break;case'1': case'2': case'3': case'4': case'5': case'6': case'7': case'8': printf(“%c ”,x-1);printf(“%c”,x+1);break;default: printf(“error”);break;

} return 0;}

20秒后的时间 #include #include int main(){

int h,m,s;

scanf(“%d:%d:%d”, &h,&m,&s);

s=s+20;

if(s>59)

{

s=s%60;

m++;

if(m>59)

{

m=m%60;

h++;

if(h>23)

h=0;

}

}

printf(“%02d:%02d:%02dn”, h, m, s);

return 0;}

分期还款

#include #include int main(){

int d,p;

double r,a,m;

scanf(“%d %d %lf”,&d,&p,&r);

a=(p/(p-d*r));

m=log(a)/log(1+r);

if(p>0&&d>0)

{

if(d<=m*p)

printf(“%.1f”,m);

else

printf(“God”);

}

else

printf(“0.0”);

return 0;}

第五章

字母分类统计 #include #include int main(){

char ch;

int a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;

while((ch=getchar())!='n')

{

if(ch<=127&&ch>=123)

a++;

else if(ch>=97&&ch<=122)

b++;

else if(ch<=96&&ch>=91)

c++;

else if(ch<=90&&ch>=65)

d++;

else if(ch>=58&&ch<=64)

e++;

else if(ch>=48&&ch<=57)

f++;

else if(ch>=33&&ch<=47)

g++;

else if(ch==32)

h++;

else

i++;

}

printf(“%d %d %d %d”,d+b,f,h,a+c+e+g+i);}

水仙花数

#include int main(){

int n,a,b,c;

for(n=100;n<1000;n++)

{

a=n/100;

b=(n%100)/10;

c=n%10;

if(n==a*a*a+b*b*b+c*c*c)

{

printf(“%dn”,n);

}

}

return 0;}

计算数列和

#include int main(){

int a=1,n,i,sum=0;

scanf(“%d”,&n);

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

{

sum=sum+a;

a=a+2;

}

printf(“%d”,sum);

return 0;}

自由落体

#include int main(){

int i,n;

double h=100.0,s=0.0,c=100.0;

scanf(“%d”,&n);

{

s=s+c;

h=h/2;

c=2*h;

}

printf(“%.3lf”,s);

printf(“%.3lf”,h);

return 0;}

迭代法求平方根 #include #include int main(){

float x1,x2,a;

x2=1;

scanf(“%f”,&a);

x1=a/x2;

while(fabs(x1-x2)>=1e-5)

{

x1=x2;

x2=0.5*(x1+a/x1);

}

printf(“%.4fn”,x2);

return 0;}

打印三角形

#include #include #include int main(){

int n,k,i,j;

scanf(“%d”,&n);

for(i=0;i<2*n-1;i++)

{

k=abs(n-1-i);

for(j=0;j

{

printf(“");

}

for(j=0;j

{

printf(”*“);

}

printf(”n“);

}

return 0;}

勾股数

#include int main(){

int a,b,c,n;

scanf(”%d“,&n);

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

{

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

{

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

{

if(c*c==a*a+b*b)

{

if(a<=b)

{

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

}

}

}

}

}

return 0;}

第六章

18052插入数据 int x,i,t;

scanf(”%d“,&x);

a[15]=x;

for(i=15;i>0;i--){

if(a[i]

{

t=a[i];

a[i]=a[i-1];

a[i-1]=t;

} }

大于平均分

#include int main(){

int a[10];

int i,sum=0,average,count;

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

{

scanf(”%d“,&a[i]);

}

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

{

sum=sum+a[i];

}

average=sum/10;

count=0;

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

{

if(a[i]>average)

count++;

}

printf(”%d“,count);

return 0;}

输出不同的数据 #include int main(){

int a[20];

int i,t,p=0;

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

{

scanf(”%d“,&a[i]);

}

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

{

for(t=0;t

if(a[t]==a[i])break;

if(t==i)printf(”%dn“,a[i]);

} }

主对角线上的元素之和 #include int main(){

int a[3][4],i,j,sum=0;

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

{

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

{

scanf(”%d“,&a[i][j]);

}

}

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

{

sum+=a[i][i];

}

printf(”%dn“,sum);

return 0;}

1051 鞍点

#include int main(){ int i,j,k,t=0,flag=0,m=0,n=0,a[3][4],max,min;for(i=0;i<3;i++){

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

{

scanf(”%d“,&a[i][j]);

} }

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

max=a[i][0];

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

{

if(max

{

max=a[i][j];m=i;n=j;

}

}

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

{

min=a[m][n];

if(min>a[k][n])

flag=1;

}

if(flag==0)

{

t=1;

printf(”%dn“,a[m][n]);}

flag=0;}

if(t==0)

printf(”NO“);

return 0;}

ASCII码值之和的差 #include #include int main(){

char s1[80];

char s2[80];

int i,sum1=0,sum2=0;

gets(s1);

gets(s2);

for(i=0;i

{

sum1+=s1[i];

}

for(i=0;i

{

sum2+=s2[i];

}

printf(”%d“,sum1-sum2);

return 0;}

第七章

所有数字之和 #include int sum(int n){

if(n<10)

return n;

int res=0;

res=(n%10)+sum(n/10);

return res;} main(){

int n;

scanf(”%d“,&n);

printf(”%d“,sum(n));}

元音字母

#include #include void yuan(char*s,char*s2){

int i,k=0;

char c;

for(i=0;*(s+i)!='';i++)

{

c=*(s+i);

switch(c)

{

case'a':

case'e':

case'i':

case'o':

case'u':

case'A':

case'E':

case'I':

case'O':

case'U':*(s2+k)=c;k++;break;

default:break;

}

}

*(s2+k)='';} int main(){

char str[81],str2[81];

gets(str);

yuan(str,str2);

printf(”%s“,str2);}

字符统计

#include #include #include int nL=0,nN=0;int statistics(char*s){

int nS=0,a;

while(*s!='')

{

a=*s;

if(a==' ')

nS++;

else

{

if(a>='1'&&a<='9')

nN++;

else if((a>='a'&&a<='z')||a>='A'&&a<='Z')

nL++;

}

s++;

}

return nS;} int main(){

char s[81];

int nS;

gets(s);

nS=statistics(s);

printf(”%d%d%dn“,nL,nN,nS);

return 0;}

选择排序

#include int sort(int a[],int n){

int i,j,k,tmp;

for(i=0;i

{

k=i;

for(j=i+1;j

if(a[j]

tmp=a[k];a[k]=a[j];a[i]=tmp;

} } int main(){

int a[10];

int i;

for(i=0;i<10;i++)scanf(”%d“,&a[i]);

sort(a,10);

for(i=0;i<10;i++)printf(”%dn“,a[i]);

return 0;}

X的N次方

#include int F(int x,int n){

if(n==0)return 1;

else return x*F(x,(n-1));} int main(){

int x,n;

scanf(”%d%d“,&x,&n);

printf(”%d“,F(x,n));

return 0;}

行列互换

#include void swap(int*a,int*b){

int temp;

temp=*a;*a=*b;*b=temp;} void col(int a[][4],int i,int j){

int k;

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

swap((*(a+k)+i),(*(a+k)+j));} void row(int a[][4],int i,int j){

int k;

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

swap((*(a+i)+k),(*(a+j)+k));} int main(){

int a[4][4];

int i,j;

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

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

scanf(”%d“,&a[i][j]);

col(a,0,2);

row(a,0,2);

col(a,1,3);

row(a,1,3);

col(a,0,3);

row(a,0,3);

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

{

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

printf(”%d“,a[i][j]);

printf(”n“);

}

return 0;}

学生信息统计 #include void average(double a[][5],int n){

int i,j;

for(i=0;i

{

double sum=0,av;

for(j=0;j<5;j++)

sum=sum+a[i][j];

av=sum/5.0;

printf(”%.2f “,av);

}

printf(”n“);} void average2(double a[][5],int n){

int i,j;

for(j=0;j<5;j++)

{

double sum=0,av;

for(i=0;i

sum=sum+a[i][j];

av=sum/n;

printf(”%.2f “,av);

}

printf(”n“);} void top(double a[][5],int n){

int i,j;

double max;

for(j=0;j<5;j++)

{

max=a[0][j];

for(i=0;i

{

if(a[i][j]>max)max=a[i][j];

}

printf(”%.2f “,max);

} } int main(){

double a[10][5];

int i,j;

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

for(j=0;j<5;j++)

scanf(”%lf",&a[i][j]);

average(a,10);

average(a,10);

top(a,10);

return 0;}

下载C语言 习题word格式文档
下载C语言 习题.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    SQL语言习题及答案范文大全

    数据库原理之关系数据库SQL语言课后习题及答案 http://www.xiexiebang.com 作者:不详 来源: 2006年9月12日 发表评论 进入社区 3.1 名词解释 SQL模式:SQL模式是表和授权的......

    高二语文语言运用习题

    高二语文语言运用习题 组长:郭勇命题人:王悬时间:2014、4、1一、扩展语句型 1.(2011山师附中调研)请使用“春天”“夏天”“秋天”“冬天”四个词语,运用一定的修辞方法写一......

    大自然的语言习题及答案

    阅读下面的语段,完成后面的练习,大自然的语言习题精选。立春过后,大地渐渐地沉睡中_______(A.清醒B.苏醒;C.醒悟;D.复苏)过来。冰雪融化,草木萌发,各种花_________(A.次第;B.连续;C.陆续;D.全部)......

    C语言课后习题解答

    第七章 函数调用 7-1 写两个函数,分别求两个整数的最大公约数和最小公倍数, #include void main { int hcf(int,int); int lcd(int,int,int); int u,v,h,l; scanf("%d......

    C语言习题(详细解答)

    程序设计基础(C语言版)习题 第01章 一.选择题 1.以下叙述中正确的是________。 A)程序设计的任务就是编写程序代码并上机调试 B)程序设计的任务就是确定所用数据结构 C)程序......

    C语言教材习题(合集5篇)

    课后习题 3-4 #include #include #include int main { float d,p,r,n,i,m; scanf("%f %f %f",&d,&p,&r); if(d!=0) { n=log(p/(p-d*r)); i=log(1+r); m=n/i; if(m>......

    2010 C语言实验与习题2010final

    一、 目录 一、 二、 1. 2. 三、 四、 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.11.12.五、 1. 2. 3. 六、 1. 2. 3. 4. 5. 6. 1) 2) 七、 1 目录 .......................................

    《C语言程序设计》课后习题参考答案

    高等院校计算机基础教育规划教材《C++程序设计》课后习题参考答案 ――武汉大学出版社习题1参考答案 一、选择题 1. A 2. D 二、填空题 1. BASIC、FORTRAN、AL_GOL60和CO......