文档库 最新最全的文档下载
当前位置:文档库 › c语言1

c语言1

c语言1
c语言1

一选择题

1、以下选项中,能做为C语言程序自定义标识符的是

( B )

A、num(10)

B、file-balk

C、break

D、class+2

2、下列选项中,不是C语言提供的合法关键字的是( B )

A、switch

B、begin

C、case

D、default

3、字符串“xyz“在内存中占用的字节数是( B )

A、3

B、4

C、5

D、6

4、一个char型数据,它的值在内存中存放的是( A )

A、asc11码值

B、bcd码值

C、内码值

D、十进制码值

5、设a为5,执行下列语句后,b的值不为2的是( C )

A、b=a/2

B、b=6-(--a)

C、b=a%2

D、b=a<3?3:2

6、若已定义x和y为double类型,则表达式x=1,y=x+3/2( B )

A、1

B、2

C、出错

D、2.5

7、若有以下定义:char a;int b;float c;double d;,则表达式a*b+d-c

值的类型为( D )

A、float

B、int

C、char

D、double

8、表达式9!=7的值是(D )

A、true

B、非0值

C、0

D、1

9、使用scanf(“x=%f,y=%f”,&x,&y)函数调用,要使x,

y均为1.25,正确的输入是( C )

A、1.25,1.25

B、1.25 1.25

C、x=1.25,y=1.25

D、x=1.25 y=1.25

10、设int a=8,b=7,c=6,x=1,;则执行下列语句if(a>6)

if(b>7)if(c>8)x=2;elsex=3;后x的值是( B )

A、0

B、1

C、2

D、3

11、执行下列程序段:x=9;while(x>7){printf(“*”);

x--;}后输出的结果是( C )

A、****

B、***

C、**

D、*

12、若i,j已定义为int类型,则以下程序段for(i=5;

i>1;i--)for(j=0;j<4;j++)内循环的执行次数是( A )

A、20

B、24

C、25

D、30

13、在C语言中,下列说法中正确的是(D )

A、编程时尽量不要使用“do语句while(条件)”循环

B、do语句while(条件)的循环中必须使用break语句退

出循环

C、do语句while(条件)的循环中,当条件非0时将结束

循环

D、do语句while(条件)的循环中,当条件为0时将结束

循环

14、下列C代码中,合法的数组定义是(D)

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};

15、字符串“m\x42\\\np\102q”的长度是(A)

A、7

B、9

C、15

D、16

16、设有如下定义,char*[]={“abcdefg”},y[]={‘a’‘b’‘c’‘d’‘e’‘f’‘g’};则正确的叙述为(C)

A、数组x和数组y等价

B、数组x和数组y长度相同

C、数组x的长度大于数组y的长度

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

17、在C语言中,下列说法中错误的是(D)

A、函数定义可以分为两个部分:函数说明部分和函数体

B、主函数可以调用任何非主函数、

C、任何非主函数可以调用其他任何非主函数

D、程序可以从任何函数开始执行

18、函数调用时,下列说法中不正确的是(A)

A、若用值传递方式,则形式参数不予分配内存

B、实际参数和形式参数可以同名

C、主调函数和被调用函数可以不在同一文件中

D、函数间传递数据可以使用全局变量

19、以下对C语言函数的有关描述中,正确的是(A)

A、在C语言中,调用函数时,只能把实参的值传递给形参,

形参的值不能传递给实参

B、C函数既可以嵌套定义,又可以递归调用

C、函数必须有返回值,否则不能使用函数

D、C程序中,有调用关系的所有函数必须放在同一个源文件程序中

20、C语言中运用对象必须是整型的运算符是(A)

A、%

B、/

C、<>

D、<=

21、函数调用语句f((e1,e2);(e3,e4,e5);中参数的个数是(B)

A、1

B、2

C、4

D、5

22、在以下一组运算符中,优先级最高的运算符是(C)

A、<=

B、=

C、%

D、&&

23、下列一维数组说明中,错误的是(C)

A、int a[]={1,2,3}

B、int a[5]

C、int n=5,a[5]

D、int a[5]={1,2,3}

24、要表示年龄(age)在18至25之间,正确的表达是(B)

A、18<=age<=25

B、age>=18&&age<=25

C、18<=age||age<=25

D、18<=age and age <=25

25、设a=3,b=4,c=5,下面逻辑表达式为逻辑假的为(D)

A、a||b+c && b-c

B、!(a>b)&&!c||a

C、!(a+b)+c-1&&b+c/2

D、a+b>c&&b==c

26、语句:int b;char c[10];则正确的输入语句是(B)

A、scanf(“%d%s”,&b&c)

B、scanf(“%d%s”,&b,c)

C、scanf(“%d%s“,b,c)

D、scanf(“%d%s”,b,&c)

27、有输入语句为scanf(“m=%dn=%d”,&m,&n);若想从键盘上输入数据,使变量M中的值为123,N中的值为456,则正确的输入是(A)

A、m=123n=456

B、m=123 n=456

C、m=123,n=456

D、123 456

28、m=12,n=34;printf(“%d%d”,m++,++n);printf (“%d%d\n”,n++,++m);程序运行后的输出结果是(A)A、12353514 B、12353513 C、12343514 D、12343513

29、以下选项中,不能作为合法常量的是(B)

A、12340

B、1.234e0.4

C、12340

D、1.234

30、以下能正确定义一维数组的选项是(A)

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

B、char a[]={0,1,2,3,4,5}

C、char a={‘A’,‘B’,‘C’}

D、int a[5]=“0123”

二、操作题

1、用下面的scanf函数输入数据,使a=10,b=20,c1=‘A’,c2=‘a’,x=1.5,y=-3.75,

z=67.8,请问在键盘上如何输入数据?

#include

Void main()

{int a,b;

Float x,y,z;

Char c1,c2;

Scanf(“%5d%5d%c%c%f%f*f,%f”,&a,&b,&c1,&c2,&x,&y,&z);

Printf(“a=%d,b=%d,c1=%c,c2=%c,x=%6.2f,y=%6.2f,z=%6.2f\n”,a,b,c1,c2,x,y,z);

}

2、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积,圆球体积、圆柱体积。用scanf输入数据,输出计算结果··········

#include

Void main()

{float h,r,l,s,sq,vq,vz;

Float pi=3.141526;

Printf(“请输入圆半径r,圆柱高h:”);

Scanf(“%f,%f”,&r,&h);

1=2*pi*r;

S=r*r*pi;

Sq=4*pi*r*r;

Vq=3.0/4.0*pi*r*r*r;

Vz=pi*r*r*h;

Printf(“圆周长为:l=%6.2f\n”,l);

Printf(“圆面积为:s=%6.2f\n”,s);

Printf(“圆球表面积为:sq=%6.2f\n”,sq);

Printf(“圆球体积为:v=%6.2f\n”,vq);

Printf(“圆柱体积为:vz=%6.2f\n”,vz);

}

3、给出三角形的3个边长,求三角形的面积。

#include

#include

{ double a,b,c,s,area;

Printf(“please enter a,b,c:”);

Scanf(“%1f,%1f,%1f”,&a,&b,&c);

If(a+b>c && b+c>a && c+a>b)

{ s=0.5*(a+b+c);

Area=sqrt(s*(s-a)*(s-b)*(s-c));

Printf(“area=%6.2f\n”,area);

}

Else

Printf(“It is not a trilateral.\n”);

}

4、为促销,对购买货物多的顾客有优惠:·············

#include

#include

void main()

{

Int number;

double cost,price,total;

printf(“please enter number and price:”);

scanf(“%d,%1f”,&number,&price);

if(number>=500) cost=0.15;

else

if(number>=300) cost=0.10;

else

if(number>=100) cost=0.075;

else

if(number>=50) cost=0.05;

else cost=0;

total=number*price*(1-cost);

printf(“Total=%10.2f\n”,total);

}

5、写程序,判断某一年是否为闰年。

#include

void main()

{

Int year,leap;

printf(“please enter a year:”);

scanf(“%d”,&year);

if(year%4==0)

{

if(year%100==0)

{

if (year%400==0)

leap=1;

else

leap=0;

}

else

leap=1;

}

else

leap=0;

if(leap)

printf(“%d is”,year);

else

printf(“%d is not”,year);

printf(“a leap year.\n”);

}

6、企业发放的奖金根据企业当年利润决定,当利润···········用if语句编程序

#include

void main()

{

long i;

double bonus,bon1,bon2,bon4,bon6,bon10; bon1=100000*0.1;

bon2=bon1+100000*0.075;

bon4=bon2+100000*0.05;

bon6=bon4+100000*0.03;

bon10=bon6+400000*0.015;

printf(“请输入利润i:”);

scanf(“%1d”,&i);

if(i<=100000)

bonus=i*0.1;

else if (i<=200000)

bonus=bon1+(i-100000)*0.075;

else if(i<=400000)

bonus=bon2+(i-200000)*0.05;

else if (i<=600000)

bonus=bon4+(i-400000)*0.03;

else if (i<=1000000)

bonus=bon6+(i-600000)*0.015;

else

bonus=bon10+(i-1000000)*0.01;

printf(“奖金是:%10.2f\n”,bonus);

}

用switch语句编程序,

#include

void mian()

{

long i;

double bonus,bon1,bon2,bon4,bon6,bon10; int brench;

bon1=100000*0.1;

bon2=bon1+100000*0.075;

bon4=bon2+200000*0.05;

bon6=bon4+200000*0.03;

bon10=bon6+400000*0.015;

printf(“请输入利润i:”);

scanf(“%1d”,&i);

branch=i/100000;

if(branch>10) branch=10;

switch(branch)

{ case 0: bonus=i*0.1;break;

case1:bonus=bon1+(i-100000)*0.075;break;

case2:

case3:bonus=bon2+(i-200000)*0.05;break; case4:

case5:bonus=bon4+(i-400000)*0.03;break; case6:

case7:

case8:

case9:bonus=bon6+(i-600000)*0.015;break; case10:bonus=bon10+(i-1000000)*0.01;

}

printf(“奖金是%10.2f\n”,bonus);

}

7、求100~200间的全部素数。

#include

#include

void main()

{ int m,k,i,n=0;

for(m=101;m<=200;m=m+2)

{k=sqrt(m);

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

if(m%i==0) break;

if(i>=k+1)

{printf(“%d”,m);

n=n+1;

}

if(n%10==0) printf(“\n”);

}

printf (“\n”);

}

8、输出所以的“水仙花数”···········#include

void main()

{

int i,j,k,n;

printf(“parcissus number are”);

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

{

i=n/100;

j=n/10-i*10;

k=n%10;

if(n==i*i*i+j*j*j+k*k*k)

printf(“%d”,n);

}

printf(“\n”);

}

9、已知一个班10个学生的成绩,要求输入这10个学生的成绩··············

#include

void main()

{float score[10],sum=0,aver;

int i=0;

printf(“请输入10个学生的成绩:”);

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

{scanf(“%f”,&score[i]);

sum=sum+score[i];

}

aver=sum/10;

printf(“平均成绩:%6.2f\n”,aver);

}

10、已知一个班10个学生的成绩,存放在一个一维数组中,要求找出其中成绩最高的学生······

#include

void main()

{float score[10],sum=0,max=0;

int i=0,i_max;

printf(“请输入10个学生的成绩:”);

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

{scanf(“%f”,&score[i]);

if(score[i]>max) max=score[i];i_max=i;

}

printf(“最高成绩:%6.2f\n最高成绩者的序号:%d\n”,max,i_max);

}

11、写一个判素数的函数,在给定的一个3*3的二维整数型数组转置,即行列互换?

#include

void main()

{void move(int*pointer);

int a[3][3],*p,i;

printf(“input matrix:\n”);

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

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

p=&a[0][0];

move(p);

printf(“Now,matrix:\n”);

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

printf(“%d%d%d\n”,a[i][0],a[i][1],a[i][2]);

}

void move(int * pointer)

{int i,j,t;

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

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

{t=*(pointer+3*i+j);

*(pointer+3*i+j)=*(pointer+3*j+i);

*(pointer+3*j+i)=t;

}

}

12、求圆柱体的体积

#include

void main()

{

float r,h,v;

printf("请输入圆柱体的半径和高:");

scanf("%f%f",&r,&h);

v=3.14159*r*r*h;

printf("圆柱体的体积为:%f\n",v); }

13、求出100-999的所有水仙花数?

#include

#include

void main()

{

int i,j,k,n;

printf("水仙花数是:");

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

{

i=n/100;

j=(n-i*100)/10;

k=n-i*100-j*10;

if(n==pow(i,3)+pow(j,3)+pow(k,3)) printf("%d ",n);

}

printf("\n");

}

14、编程求n!

#include

void main()

{

int i,n,s=1;

printf("请输入一个正整数:");

scanf("%d",&n);

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

s=s*i;

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

}

15、写程序解百鸡问题:100元钱买100只鸡,公鸡每只3元,母鸡每只3元········

#include

void main()

{ int x,y;

for(x=1;x<20;x++)

for(y=1;y<34;y++)

if(14*x+8*y==200)

printf("公鸡有%d只,母鸡有%d只,小鸡有%d只\n",x,y,100-x-y);

}

16、使用数组,编程对用户输入的10个数进行从小到大的排序后输出。

#include

void main()

{ int a[10];

int i,j,t;

printf("请输入10个数:\n");

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

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

printf("\n");

for(i=0;i<10;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("%d ",a[i]);

printf("\n");

}

C语言基础知识_测试题

C语言程序设计基础测试题 一、单选 [1] 下面叙述中错误的是____。 A. 复合语句中定义的函数只在该复合语句中有效 B. return( )语句中的括号中,可以是变量,常量或有确定值的表达式 C. 形式参数也是局部变量 D. 主函数中定义的变量在整个程序中都是有效的 [2]下列说法中正确的是____。 A.带参数的宏定义中的参数是没有类型的 B.宏展开将占用程序的运行时间 C.宏定义命令是C语言中的一种特殊语句 D.使用#include命令包含的头文件必须以“.h"为后缀 [3.] 若函数的形参为一维数组,则下列说法中正确的是____。 A.调用函数时的对应实参必为数组名 B.形参数组可以不指定大小 C.形参数组的元素个数必须等于实参数组的元素个数 D.形参数组的元素个数必须多于实参数组的元素个数 [4]. 系统的标准输出设备是____。 A.键盘 B.硬盘 C.内存 D.显示器 [5] 下面叙述中正确的是____。 A.全局变量在定义它的文件中的任何地方都是有效的 B.全局变量在程序的全部执行过程中一直占用内存单元 C. C语言的switch语句中case后可为常量或表达式或有确定值的变量及表达式 D. 说明函数时必须明确其参数类型和返回类型 [6]. C程序的基本结构单位是____。 A.文件 B.语句 C.函数 D.表达式 [7] 对于定义,char *aa[2]={"abcd","ABCD"},选项中说法正确的是____。 A.aa数组元素的值分别是"abcd"和"ABCD" B.aa是指针变量,它指向含有两个数组元素的字符型一维数组 C.aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址 D.aa数组的两个元素中各自存放了字符'a'和'A'的地址 [8]. 任何一个C语言的可执行程序都是从____开始执行的。 A.程序中的第一个函数 B.main( )函数的入口处

C语言课程标准

软件技术专业核心课程标准

《C语言程序设计》课程标准 1.前言 1.1 课程类别 专业课 1.2 适用专业 软件技术专业 1.3 课程性质 必修课 1.4 设计思路 本课程是大学一年级学生第一次接触到计算机的程序设计语言,在教学方法上采用课堂讲授、演讲和上机实践相结合,以能力培养为出发点以具备程序设计能力为教学目标。理论教学以C语言为最基本、最常用的功能(数据表达和流程控制)为重点教学,以:“够用”、“必须”为标准,在掌握必要的理论知识上从问题分析、建立数学模型、算法设计和编码、测试等方面,重点讲授程序设计的思想和方法以及设计风格,要使学生能够从较高的角度认识课程的学习目的,应看重对程序设计语言(并一定只是C语言)的特点、学习方法和应用能力的培养。 在教学过程中,应通过丰富的图片、动画、演示来帮助学生学习。 本课程实践性很强,在实践教学中以培养学生的独立思考能力与动手能力为主导原则,由教师布置时间内容和要求,并展示项目的参考作品,有学生独立上机编写并调试程序,解决实际问题,教师给予必要的辅导。要求学生通过上机训练巩固、验证、扩充或综合运用课堂讲授内容,从而进一步加深对知识的理解与掌握,培养构思解决问题的思路和良好的编程能力。 在学习方法上要求学生要“弄清概念、注重实践、由浅入深、循序渐进”。 2.课程目标 学习本课程后,学生应达到以下教学目标: 1.能正确使用C语言的标识符、数据类型、常量、变量、运算符、表达式、基本语句等基础知识; 2.认识算法流程图常用符号,能看懂算法流程图; 3.能编写简单的顺序结构,选择结构和循环结构的程序; 4.能使用函数进行模块化结构的程序设计;

10 C语言课程设计_坦克大战(提高篇)

C语言课程设计--坦克大战 一、游戏介绍 玩家坦克与敌方坦克在街道中进行巷战,玩家坦克被击中、玩家指挥部被击中或游戏时间到,一局游戏结束。 二、实验目的 综合应用C语言知识和设计知识开发一款小游戏。 三、实验内容 初始界面如下图。 按下空格键后游戏开始,“空格开始”消失,载入地图,并把玩家坦克设置在指挥部左侧。 游戏时间到,比如30秒,玩家坦克被敌方坦克摧毁,或者玩家指挥部被摧毁,一局游戏结束,游戏回到初始界面,并显示上一局的分数。 游戏区域为下图中最内部的黑色区域,左上角坐标[-26, -22],右下角坐标为[26, 22]。墙为正方形,边长为4,坦克也是正方形,比墙略小一点。 玩家用WASD键控制坦克上、下、左、右运行,按J键开炮。玩家坦克碰到墙就停下来,需要调转方向才能继续前进。玩家坦克开炮,一炮就能摧毁一块墙,或者一辆敌方坦克。玩家没摧毁一辆敌方坦克,加1分。 玩家指挥部被坦克或者炮弹(不管玩家还是敌方)碰上,都会被摧毁。 每隔几秒钟,比如3秒,就会产生一辆敌方坦克。敌方坦克每隔一段时间,比如1秒,就自动开炮。敌方坦克遇到墙就会停下来。停下来的坦克,前方的墙如果被摧毁了,又能继续前进。每隔几秒钟,比如2秒,敌方坦克就会顺时针变换一个方向前进。

四、实验准备 本实验中可能用到的C 语言标准库函数和FunCode API Stdio.h Math.h String.h

FunCode API

原图的角度 获得的旋转角度即为两张图片的

五、程序初步设计 如果程序规模比较小的时候,我们习惯一上手就写代码,边写边调整。但是当程序越来越大,代码越来越多的时候,如果我们还用这种方式编程,程序写到一半的时候,你可能会恨不得重写一遍。 此,我们在写代码之前,先把程序功能细化一下,并初步设计好程序结构,包括数据结构和自定义函数。有了比较清晰的思路以后,再开始开发程序。 在本项目中,我们要操作的对象有6个:玩家坦克、敌方坦克、玩家子弹、敌方子弹、墙、玩家指挥部。 其中,墙和指挥部都比较简单,主要是前4种,而且它们有共通性:名称、速度、位置,因此,可以考虑用一个结构体来表示。此外,我们需要用一种数据结构来管理它们。由于敌方坦克、子弹的数量都无法事先确定,所以我们选择链表而不是数组来管理它们。 struct Weapon{ char szName[128]; // 精灵名称 float fPosX, fPosY; // 精灵坐标 float fSpeedX, fSpeedY; // X和Y方向上速度 float fFireTime; // 敌方坦克距下一次开炮的剩余时间 int iHp; // 生命值 int iDir; // 朝向:0 - 上方;1 - 右方;2 - 下方;3 - 左方 int iType; // 类型: 0 - 我方坦克;1 - 敌方坦克;2 - 我方 // 子弹; 3 - 敌方子弹 Weapon* pNext; // 指向下一个节点的指针 }; 其中,iDir和iType用不同整数表示不同含义。如果在小程序中,我们可以在代码里直接调用这些整数,但是想象一下下面情况: 如果你连续写了三小时代码,你还能清晰记得1表示什么含义吗? 你时不时需要找到Weapon结构体定义查看这些数字的含义,然后再引用,出错的概率有多大? 如果你一不小心,在某处搞错了,比如要处理的是敌方坦克,你却引用2,需要多少时间才能把错误找出来? 因此,在做一个比较大的程序时,我们强烈建议用定义一个枚举类型,用我们熟悉的单词来表示这种数字的含义。 enum Direction{ UP = 0, // 上方 RIGHT = 1, // 右方 DOWN = 2, // 下方

C语言基础知识

常量和变量 1.常量: 程序执行过程中,值不变的量。 3 ,'a' 变量:值可以改变的量。 一个变量有一个名字,在内存中有一定的存储单元,存放变量的值。 2.常量类型: a.整型:12,0,-3 b.实型:4.6,-1.2 c.字符型: 'a','d' d.符号常量: #define PRICE 30 (PRICE不能再被赋值且要大写) 3.变量: 先定义,后使用。一个变量只能被指定为一确定类型。 4.标识符:标识变量名,符号常量名,函数名,数组名,类型名,文件名的有效字符数列。 a.由字母、数字、下划线三种字符组成,第一个字符必须为字母或下划线。 b.大写字母、小写字母被认为是两个不同的字符。 c.长度一般小于8个。 数据类型 一.整型: 1.整型常量 a.十进制:12,-3,0 b.八进制:以0开头。 c.十六进制:以0x开头。 2.整型变量 a. int -32768——32767 b. short int -32768——32767 c. long int d. unsigned int 0——65535 e. unsigned short 0——65535 f. unsigned long int、short int、long int 第一位为符号位 0000001 (0为正,1为负) unsigned 第一位不是符号位 0000001 所以int型和unsigned型的000001不是同一个值。 二.实型: 1.实型常量:

a.十进制数:数字和小数点组成。0.12,.12,12.0,0.0 b.指数:e之前必须有数字,e后面必须为整数。12e3 2.实型变量: a.单精度:float 7位有效数字 111111.1可,111111.11不可。 b.双精度:double 15—16位有效数字。 三.字符型: 1.字符常量: a. 'a' , 'x' , '*' ,'$' 。 b. 转义字符:‘\n'换。 '\t'从第九列开始。'\r'回车。 '\b'退一格。 2.字符变量: char char='a' 一个字符变量在内存占一个字节。 。将一个字符常量放到一个字符变量中,并不是把该字符本身放到内存单元中去,而是将该字符的ASC码 放到存储单元中,所以字符型数据和整型数据之间可以通用。一个字符型数据既可以以字符形式输出, 又可以以整数形式输出。 四.字符串常量: "how are you", "a","&12" 。不能把一个字符串赋给一个字符变量。 char c='a'对,char c="how" 错。 。'a' :在内存中存a。 “a”:在内存中存a\0。 ‘\0’是C语言中判断字符串是否结束的标志。 变量赋初值 a. int a=3; float f=7.2; char c='a'; b. int a,b,c=5; 相当于 int a,b,c; c=5; c. int a=3;b=3;c=3; 不可写: int a=b=c=3;

C语言程序设计课程设计题目

1一元稀疏多项式的运算 问题描述:设有两个带头指针的单链表表示两个一元稀疏多项式A、B,实现两个一元稀疏多项式的处理。 实现要求: ⑴输入并建立多项式; ⑵输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……c n,e n,其中n 是多项式的项数,c i,e i分别为第i项的系数和指数。序列按指数降序排列; ⑶多项式A和B相加,建立多项式A+B,输出相加的多项式; ⑷多项式A和B相减,建立多项式A-B,输出相减的多项式; ⑸多项式A和B相乘,建立多项式A×B,输出相乘的多项式; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 测试数据: (1) (2x+5x8-3.1x11)+(7-5x8+11x9) (2) (6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15) (3)(x+x2+x3)+0 (4)(x+x3)-(-x-x-3) 2成绩排序 假设某年级有4个班,每班有45名同学。本学期有5门课程考试,每门课程成绩是百分制。假定每个同学的成绩记录包含:学号、姓名各门课程的成绩共7项,其中学号是一个10位的字符串,每个学生都有唯一的学号,并且这4个班的成绩分别放在4个数组中,完成以下操作要求: ⑴编写一个成绩生成函数,使用随机数方法,利用随机函数生成学生的各门课程的成绩(每门课程的成绩都是0∽100之间的整数),通过调用该函数生成全部学生的成绩; ⑵编写一个平均成绩计算函数,计算每个同学的平均成绩并保存在成绩数组中; ⑶用冒泡排序法对4个班的成绩按每个同学的平均成绩的以非递增方式进

行班内排序; ⑷用选择排序法对4个班的成绩按每个同学的平均成绩的以非递增方式进行班内排序; ⑸对已按平均成绩排好序的4个班的同学的构造一个所有按平均成绩的以非递增方式排列的新的单链表; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 3迷宫问题 问题描述:以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 实现要求: ⑴实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。 ⑵编写递归形式的算法,求得迷宫中所有可能的通路; ⑶以方阵形式输出迷宫及其通路。 [测试数据] 迷宫的测试数据如下:左上角(1,1)为入口,右下角(8,9)为出口。 1 2 3 4 5 6 7 8 实现提示:

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语言基础知识(详细版)

C语言程序的结构认识 用一个简单的c 程序例子,介绍c 语言的基本构成、格式、以及良好的书写风格,使小伙伴对 c 语言有个 初步认识。 例1:计算两个整数之和的c 程序: #include main() { int a,b,sum; /* 定义变量a,b ,sum 为整型变量*/ a=20; /* 把整数20 赋值给整型变量a*/ b=15; /* 把整数15 赋值给整型变量b*/ sum=a+b; /* 把两个数之和赋值给整型变量sum*/ printf( “ a=%d,b=%d,sum=%d\n” ,a,b,sum); /* 把计算结果输出到显示屏上*/ } 重点说明: 1、任何一个c 语言程序都必须包括以下格式: main() { } 这是c 语言的基本结构,任何一个程序都必须包含这个结构。括号内可以不写任何内容,那么该程序将不执行任何结果。 2、main() - 在c 语言中称之为“主函数” ,一个c 程序有且仅有一个main 函数,任何一个c 程序总是从 main 函数开始执行,main 函数后面的一对圆括号不能省略。 3、被大括号{ }括起来的内容称为main 函数的函数体,这部分内容就是计算机要执行的内容。 4、在{ }里面每一句话后面都有一个分号(; ),在c 语言中,我们把以一个分号结尾的一句话叫做一个 c 语 言的语句,分号是语句结束的标志。 5、printf( “ a=%d,b=%d,sum=%d\n” ,a,b,sum); 通过执行这条c 语言系统提供给我们直接使用的屏幕输出 函数,用户即可看到运行结果,本程序运行后,将在显示器上显示如下结果: a=20,b=15,sum=35 6、#include 注意:(1)以#号开头 (2)不以分号结尾这一行没有分号,所以不是语句,在c 语言中称之为命令行,或者叫做“预编译处理命令” 。 7、程序中以/* 开头并且以*/ 结尾的部分表示程序的注释部分,注释可以添加在程序的任何位置,为了提高程序的可读性而添加,但计算机在执行主函数内容时完全忽略注释部分,换而言之就是计算机当做注释部分不存在于主函数中。 C程序的生成过程 C程序是先由源文件经编译生成目标文件,然后经过连接生成可执行文件。 源程序的扩展名为.c ,目标程序的扩展名为.obj , 可执行程序的扩展名为.exe 。

C语言习题课(附答案)

C语言习题课 一、单项选择题: 1.以下A是C语言中有效的变量名称。 A._abc B.2abc C.char D.a#3 变量名只能以下划线和字母开头 2.下面四个说法中错误的是B。 A.for循环不仅可以和for循环嵌套,而且可以和While循环嵌套。 B.当在循环体内执行continue语句的时候,将结束整个循环。 C.while循环最少循环0次,do-while循环最少循环1次。 D.goto语句也可以实现循环的功能。 3.在while ( x )中的x与下面条件表达式等价的是D A.x = = 0 B.x= = 1 C.x! = 1 D.x ! = 0 4.为表示关系x≥y≥z,应使用C语言表达式A A.(x>=y)&&(y>=z) B.(x>=y)AND(y>=z) C.(x>=y>=z) D.(x>=y)&(y>=z) 5.设有如下定义:int x=9,y=2,z;则语句printf(“%d\n”,z= x/y);的输出结果是C A.1 B. C.4 D.3 整形中的“/”是整除 6.若有以下语句:static char x[ ]=”12345”;static char y[ ]={‘1’,’2’,’3’,’4’,’5’};则正 确的说法是 B 。 A.x数组和y数组的长度相同 B.x数组的长度大于y数组的长度 C.x数组的长度小于y数组的长度 D.x数组与y数组等价

字符串后有一个“\0” 7.已知有定义:char ch;则下面正确的赋值语句为A。 A.ch='X' B.ch='55' C.ch="M" D.ch="55" 8.以下说法中正确的是C A.C语言程序总是从第一个的函数开始执行 B.在C语言程序中,要调用的函数必须在main()函数中定义 C.C语言程序总是从main()函数开始执行 D.C语言程序中的main()函数必须放在程序的开始部分 语言中,形参的缺省存储类型说明是: A 语言中的简单数据类型有: B A.整型实型逻辑型 B.整型实型字符型 C.整型字符型逻辑型 D.整型实型逻辑型字符型 11.以下程序段的输出结果是: C A.1 int x=3; B.3 0 do{ C.1 -2 printf("%3d",x-=2); D.死循环 }while(!(--x)); 12.以下非法的赋值语句是: A A.n=(i=2,++i); B.j++; C.++(i+1); D.x=y>0; 13.设a和b均为double型变量,且a=,b=,则表达式(int)a+b/b的值是: D A.B.6 C. D.

c语言基本代码

c语言基本代码 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

'\0':是字符串的结束标志 ‘‘:空格 auto:声明自动变量一般不使用 double:声明双精度变量或函数(和%lf连用), m=(double)(v-l)/l*100+; 这个式子加个double是将后面式子中非double类型强制转换类型为double float:声明浮点型变量或函数(和%f连用),单精度 int:声明整型变量或函数(与%d连用) struct:声明结构体变量或函数 long:声明长整型变量或函数 switch:用于开关语句 enum:声明枚举类型 register:声明积存器变量 typedef:用以给数据类型取别名(当然还有其他作用) extern:声明变量是在其他文件正声明(也可以看做是引用变量) return:子程序返回语句(可以带参数,也看不带参数) union:声明联合数据类型 const:声明只读变量 short:声明短整型变量或函数 unsigned:声明无符号类型变量或函数 signed:生命有符号类型变量或函数 void:声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)default:开关语句中的“其他”分支

goto:无条件跳转语句 sizeof:计算数据类型长度,,是整型表达式用法sizeof(类型说明符,数组名或表达式);sizeof()是获取类型占用的字节数,是整形的 volatile:说明变量在程序执行中可被隐含地改变 static:声明静态变量 char:声明字符型变量或函数 strcmp:strcmp(s1,s2)比较字符串大小两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止大于返回1小于返回-1等于返回0 循环: for:一种循环语句(可意会不可言传)for(表达式1;表达式2;表达式3)while:循环语句的循环条件 do:循环语句的循环体 break:跳出当前循环 continue:结束当前循环,开始下一轮循环 判断: d=a>30b:c:相当于if暨当a>30是d=b否则d=c; if:条件语句与elseifelse并用1、在C语言中一般认为“0”是假,其他不是“0”的都是真。 2、if()里面为真,则进入if下的大括弧{},为假,就跳过。 以此题为例: 若X是“0”(为假)。则里面为假,跳过if下的大{} 若X不是“0”(为真)。则里面为真,进入if下的大{}。 case:开关语句分支,与switch(表达式)连用,case常量表达式;default冒号后面的语句,表示除去各种casei:情况外,其它情况均用default冒号后面的语句处理,即缺省case默认case的处理 else:条件语句否定分支(与if连用)

c语言第1章练习题答案

第一章 C语言概述练习题 一、选择题 1.C语言是一种( )。 A) 机器语言B) 汇编语言C) 高级语言 D) 低级语言 2.下列各项中,不是C语言的特点是( )。 A) 语言简洁、紧凑,使用方便B) 数据类型丰富,可移植性好 C) 能实现汇编语言的大部分功能D) 有较强的网络操作功能 3.下列叙述正确的是( )。 A) C语言源程序可以直接在DOS环境中运行 B) 编译C语言源程序得到的目标程序可以直接在DOS环境中运行 C) C语言源程序经过编译、连接得到的可执行程序可以直接在DOS环境中运行 D) Turbo C系统不提供编译和连接C程序的功能 4.下列叙述错误的是()。 A) C程序中的每条语句都用一个分号作为结束符 B) C程序中的每条命令都用一个分号作为结束符 C) C程序中的变量必须先定义,后使用 D) C语言以小写字母作为基本书写形式,并且C语言要区分字母的大小写 5.一个C程序的执行是从()。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束 D) 本程序的main函数开始,到本程序文件的最后一个函数结束 6.以下叙述不正确的是()。 A) 一个C源程序必须包含一个main函数 B) 一个C源程序可由一个或多个函数组成 C) C程序的基本组成单位是函数 D) 在C程序中,注释说明只能位于一条语句的后面 7.C语言规定:在一个源程序中,main函数的位置( )。 A)必须在程序的开头B)必须在系统调用的库函数的后面 C)可以在程序的任意位置D)必须在程序的最后 8.一个C语言程序是由( )。 A)一个主程序和若干个子程序组成B) 函数组成 C) 若干过程组成D) 若干子程序组成 9.以下有4组用户标识符,其中合法的一组是()。 A) For B) 4d C) f2_G3 D) WORD -sub DO IF void Case Size abc define 10. 一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是 ()。

C语言复习第十九课

第十九课 ※主要内容 (1)、选择结构 ※主要知识点 (1)、if语句 1.不含else子句的if语句 语句格式: If(表达式) 语句; 例如: if(x>y)printf(“%d”,x);if(x>z) {x++; printf(“%d”,x);} 执行过程是: 先计算出表达式的值,如果表达式的值为真(非0值),则执行其后的if子语句,执行后再去执行if语句后面的下一条语句;如果表达式的值为假(0值),则不执行if子语句,直接执行if语句后面的下一条语句. 例如: 输入两个实数,输出其中的最大数. #include main() { float a,b; scanf(“%f %f”,&a,&b); if(a>b)printf(“%5.2f”,a); if(b>a)printf(“%5.2f”,b); } 2.含else的if语句 语句格式: If(表达式) 语句1; else 语句2; 执行过程是: 先计算出表达式的值,如果表达式的值是真,则执行语句1,执行后再去执行if语句后面的下一条语句;如果表达式的值是假,则跳过语句1而直接执行语句2. 例如: if(x>y)

p rintf(“%d”,x); else p rintf(“%d”,y); 功能是: 如果x>y则输出x,否则输出y. (2)、if语句的嵌套 1、在if语句中嵌套具有else子句的if语句语句格式: If(表达式1) If(表达式) 语句1; Else 语句2; Else 语句3; 2、在if语句中嵌套不含else子句的if语句格式: If(表达式1) {if(表达式2) 语句1;} else 语句2; 3、在else子句中嵌套if子句 格式: If(表达式1) 语句1; else If(表达式2) 语句2; else 语句3; if语句的配对问题

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 语言中,预处理命令行都以“ # ”开头;当需要时才用 #in clude;预处理的作用就是实现宏定义和条件编译。16. 当数组元素的下标超出了定义的下标范围时,系统不给出“下标 越界”的字样,而是得出错误的答案,因此在编程时务必检查下标是否越界。 17. 共用体变量不能作为函数的参数,也不能使函数带回共用体变量。 18. 指向函数的指针变量的定义形式为:数据类型(* 指针变量) ();,因此其为指向函数的指针变量。 19. 用 C 语言编写的代码程序是源程序,只有通过编译、连接才能进 行。 20. 在说明为static时,其生存期得到延长,而其作用域并没有改 变,在定义后系统会自动帮它赋值为 0, static 为关键字不能 被用作它用。

最新C语言第1章概述

第一章概述 单选题 C语言的前身是(B )。 A.A语言 B.B语言 C.C++语言 D.BASIC语言 C语言规定,必须用(C )作为主函数名。 A.Function B.include C.main D.void 一个C程序可以包含任意多个不同名的函数,但有且仅有一个(B )。 A.过程 B.主函数 C.函数 D.进程 一个C程序总是从( B)开始执行。 A.过程 B.主函数 C.函数 D.进程 C程序的基本构成单位是(A )。 A.函数 B.过程 C.进程 D.子程序 下列说法正确的是( D)。 A.main函数必须放在C程序的开头 B.main函数必须放在C程序的最后 C.main函数可以放在C程序中间部分,执行C程序时是从程序开头执行的 D.main函数可以放在C程序中间部分,执行C程序时是从main函数开始的下列说法正确的是( C)。 A.在执行C程序时不是从main函数开始的 B.C程序书写格式严格限制,一行内必须写一个语句 C.C程序书写格式自由,一个语句可以分写在多行上 D.C程序书写格式严格限制,一行内必须写一个语句,并要有行号 在C语言中,每个语句和数据定义结束都是用( C)。 A.句号 B.逗号 C.分号 D.括号 不是C语言提供的合法关键字( B)。 A.switch

C.case D.default 不是C语言提供的合法关键字( D)。 A.int B.float C.char D.scanf C语言提供的合法关键字是(A )。 A.break B.printf C.function D.end C语言提供的合法关键字是(A )。 A.continue B.procedure C.begin D.scanf 下列说法正确的是(C )。 A.一个函数的函数体必须要有变量定义和执行部分,二者缺一不可 B.一个函数的函数体必须要有执行部分,可以没有变量定义 C.一个函数的函数体可以没有变量定义和执行部分,函数可以是空函数 D.一个函数的函数体必须要有变量定义,可以没有执行部分 下列说法正确的是( D)。 A.C语言中引号可以单独使用 B.C语言中括号可以单独使用 C.C语言中逗号可以单独使用 D.C语言中分号可以单独使用 下列字符串是合法的用户自定义标识符的是( A)。 A._HJ B.9_student C.long D.LINE 1 下列字符串是合法的用户自定义标识符的是(A )。 A.char1 B.#int C.float D.void-2 下列字符串不是合法的用户自定义标识符的是(C )。 A. a B.pi C.if D.print 下列字符串不是合法的用户自定义标识符的是(D )。

C语言第一节课

计算机语言的发展史: 硬件→机器语言→汇编语言→ C语言→ C++语言→ Java语言 面向过程语言:C语言 面向对象语言:C++语言,Java语言 例:盖楼:需要考虑那块放柱子,哪块放梁,哪块放楼梯。 C程序基本结构: 函数是C程序的基本单位 #include Void main(){ 函数的首部 int a, b, sum; 函数体声明部分 a = 123; b = 456; 执行部分 sum = a + b; printf(“sum is %d\n”, sum); } %d表示以十进制整数类型,用来指定输入输出时的数据类型和格式。 Sum是要输出的变量。 在编写程序的时候一律使用的是英文标点符号。 在C语言中把定义的类型写在前面,把定义的名称写在后面。(先定义后使用)

C语言基本数据类型:整型 字符型 浮点型单精度浮点型 双精度浮点型 枚举类型 数据有常量和变量之分。 常量:不变的量 变量:变化的量 整型:int a = 100; int b; 浮点型:单精度浮点型(float) 32位有效位数 6~7位 双精度浮点型(double)64位有效位数15~16位 float a = 3.14; double a = 3.14; 字符型:char c = ‘a’; char c; char,short → int → long → float → double 强制类型转换(类型名)(表达式) 隐式强制类型转换,显式强制类型转换 在程序中对用到的所有的数据都必须指定其数据类型 int a; C语言数据运算: 算数运算:(+, -, *, /, %取余), 自增自减运算符 ++ -- 赋值运算符:(=) 逻辑运算符:(>, <, ==, >=, <= !=) 关系运算符:(&&, ||, !) 逗号运算符:(表达式1,表达式2)整个逗号表达式的值为表达式2的值 命名规则: 计算机区分大小写字母 变量名用小写字母表示 程序中的变量名长度不能大于8个字符,如果大于8个字符时,系统会默认前8位为变量名。student_name; student_number;

C语言基础题(含答案)

第一章C语言基础知识 1.1 选择题 1. 以下不是C语言的特点的是()。 A、语言简洁紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件操作 D、C语言移植性好 2.下列字符序列中,不可用作C语言标识符的是()。 A.abc123 B.no.1 C._123_ D.-_ok 3.正确的C语言标识符是()。 A._buy_2 B.2_buy C.?_buy D.buy? 4. 请选出可用作C语言用户标识符的一组标识符()。 A.void B.a3_b3C.For D.2a define _123 -abc DO WORD IF Case sizeof 5.下列符号中,不属于转义字符的是()。 A.\\ B.\0xAA C.\t D.\0 6.不属于C语言关键字的是()。 A.int B.break C.while D.character 7.是C语言提供的合法关键字的是()。 A.Float B.signed C.integer D.Char

8.以下不能定义为用户标示符的是()。 A.scanf B.V oid C._3com_ D.int 9.一个C程序是由()。 A.一个主程序和若干子程序组成 B.一个或多个函数组成 C.若干过程组成 D.若干子程序组成 10. C语言程序的基本单位是()。 A.程序行B.语句C.函数D.字符 11.下列说法中,错误的是()。 A.每个语句必须独占一行,语句的最后可以是一个分号,也可以是一个回车换行符号 B.每个函数都有一个函数头和一个函数体,主函数也不例外C.主函数只能调用用户函数或系统函数,用户函数可以相互调用 D.程序是由若干个函数组成的,但是必须有、而且只能有一个主函数 12.以下说法中正确的是()。 A.C语言程序总是从第一个定义的函数开始执行 B.在C语言程序中,要调用的函数必须在main( )函数中定义 C.C语言程序总是从main( )函数开始执行 D.C语言程序中的main( )函数必须放在程序的开始部分13. C编译程序是()。 A.C程序的机器语言版本 B.一组机器语言指令

c语言作业答案

No.: Name: 第1讲C语言概述 注:本系列习题中符号表示一串字符中的空格,符号表示下划线,符号ê表示换行回车,即键盘上Enter键。 一、选择题 1. 一个C程序的执行是从A 。 A) 本程序main函数开始,到main函数结束 B) 本程序文件第一个函数开始,到最后一个函数结束 C) 本程序文件第一个函数开始,到本main函数结束 D) 本程序main函数开始,到本程序文件最后一个函 数结束 2. 以下叙述不正确的是D 。 A) 一个C源程序必须包含一个main函数 B) 一个C源程序可由一个或多个函数组成 C) C程序的基本组成单位是函数 D) 在C程序中,注释说明只能位于一条语句的后面 3. 以下叙述正确的是C 。 A) 在对一个C程序进行编译的过程中,可发现注释中 的拼写错误 B) 在C程序中,main函数必须位于程序的最前面 C) 语言本身没有输入输出语句 D) C程序的每行中只能写一条语句 4. 一个C语言程序是由B 。 A) 一个主程序和若干个子程序组成 B) 函数组成 C) 若干过程组成 D) 若干子程序组成 5. 以下叙述中正确的是C 。 A) C语言比其他语言高级 B) C语言可以不用编译就能被计算机识别执行 C) C语言以接近英语国家的自然语言和数学语言作为 语言的表达形式 D) C语言出现的最晚,具有其他语言的一切优点 6. 下列叙述中正确的是D 。 A) C语言编译时不检查语法 B) C语言的子程序有过程和函数两种 C) C语言的函数可以嵌套定义 D) C语言的函数可以嵌套调用 7. 以下叙述中正确的是A 。 A) 构成C程序的基本单位是函数 B) 可以在一个函数中定义另一个函数 C) main函数必须放在其他函数之前 D) 所有被调用的函数一定要在调用之前进行定义

C语言第05次课

4.3 do-while 语句 do-while 语句与while 语句十分相似,只是do-while 语句先执行循环体语句再进行判断循环条件,而while 语句是先判断循环条件再执行循环体语句。 do-while 语句的一般格式: do { 循环体语句; } while(表达式) ; ● 表达式:用作循环条件,与在while 语句中的作用一样。 ● 循环体语句:被重复执行的语句。 ● 注意:在while(表达式)后面一定有分号“;”。 其语义是:先执行循环体语句,再判断表达式的值,如为真(非0)则反复执行循环体语句,如为假(为0)则退出while 循环继续执行do-while 语句的后续语句。 其过程如图4.3所示。 用do-while 语句完成本章任务(1): main() { int i,sum=0; i=1; do { sum=sum+i; i++; } while(i<=100); printf("1+2+...+100=%d",sum); getch(); } 输出结果:1+2+...+100=5050 【例4.8】由键盘输入一个整数n ,反序输出。 如输入:3214665,则输出5664123 分析: ①可先取出此数n 的最后一位:n%10输出 ②再用用此数除以10取整数部分n=n/10判断是不是为0,如果不是0则重复从①开始执行,直到(n=n/10)==0 程序如下: main() { long n; printf("Input n: "); scanf("%ld",&n); do { 图4.3 do- while 语句执行流

printf("%ld",n%10); } while(n/=10); getch(); } 【例4.9】编程实现猜数游戏,先由计算机随机生成一个1~100之间的数让人猜,如果人猜对了,在屏幕上输出此人猜了多少次猜对此数,以此来反映猜数者“猜”数水平,则结束游戏;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,给出失败提示,游戏结束。 分析:本题要完成的主要任务有如下几步, ①计算机随机产生一个1~100间的数,C语言提供了随机函数rand(),功能产生0~32767之间 的随机数。可以用rand()%100+1来得到1~100间的任意数。注意:使用此函数有的编译器需 要在程序的开始处添加文件包含:#include ②用循环语句实现猜数功能,循环体内用if语句判断是否猜对,并对猜对与否处出相应处理。 程序如下: #include /*由于要用到函数rando()及randomize()故需要添加此声明*/ main() { int i, n, ran, right; /*i用于统计猜数次数,ran用于存放计算机随机产生的数, right用于标识是否猜的正确,如正确为1否则为0*/ i=0; right=0; randomize(); /*用在TC编译器中,初始化随机数发生器,如没有此语句会使 每次运行时,rand()得到的随机值都一样,从而不能实现随机*/ ran=rand()%100+1; /*在上一条语句的基础上实现随机得到1个1~100之间的数*/ do { printf("\nYou have %d chances. input a num: ",10-i); scanf("%d",&n); if(n==ran) right=1; else if(n>ran) printf("\n%d is too big.\n",n); else printf("\n%d is too small.\n",n); i++; } while(right!=1&&i<10); /*如没猜对且猜数次数没超过10次则重复进行猜数*/ if(right==1) printf("\nCongratulations, num = %d, you are right at %dth time.",ran,i); else printf("\nSorry, you have no chanse to guess the num,num = %d.",ran); getch(); }

相关文档