文档库 最新最全的文档下载
当前位置:文档库 › 程序设计基础习题

程序设计基础习题

程序设计基础习题
程序设计基础习题

7.8 习题

1. 编制一个C 程序,从键盘输入一个正整数,如果该数为素数,则输出该素数,否则输出该数的所有因子(除去1与自身)。

2. 编制一个C 程序,从键盘输入一个正整数N ,然后计算并输出 S=12||1222N ++++

最后计算并输出

T=1121311

1-+-+-+ ()K K

其中K S =的整数部分。

3. 编制一个C 程序,计算并输出多项式的值 S x x x n n x n n

=++

-+--++--+1050505120505105230505105123..(.)!.(.)(.)!.(.)(.)!

的值,直到 |S n -S n-1|<0.000001 为止。其中x 从键盘输入。

4. 编制一个C 程序,计算下列级数和:

s n =1+(2/1)+(3/2)+(5/3)+(8/5)+(13/8)+…+(a n /a n-1) 其中n ≥1,由键盘输入;s 1=1。

5. 编制一个C 程序,计算并输出下列级数之和:

e x x x x n x

n

=+++++12323!!!

其中n 与x 从键盘输入。

6. 编制一个C 程序,输出能写成两个数平方之和的所有三位数。

7. 如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,则称之为“完数”。例如,6的因子为1、2、3,且1+2+3=6,即6是一个“完数”。编制一个C 程序,计算并输出1000以内的所有“完数”之和。

8. 编制一个C 程序,从键盘输入30个实数,分别计算并输出以下5个量:所有正数之和,所有负数之和,所有数的绝对值之和,正数的个数,负数的个数。

9. 100元钱买100只鸡,母鸡3元/只,公鸡2元/只,小鸡0.5元/只。编制一个C 程序,制定买鸡方案。

10. 设A ,B ,C ,D ,E 五人,每人额头上贴了一张或黑或白的纸。五人对坐,每人都可以看到其他人额头上的纸的颜色,但都不知道自己额头上的纸的颜色。五人相互观察后开始说话:

A 说:我看见有三人额头上贴的是白纸,一人额头上贴的是黑纸。

B 说:我看见其他四人额头上贴的都是黑纸。

C 说:我看见有一人额头上贴的是白纸,其他三人额头上贴的是黑纸。

D 说:我看见四人额头上贴的都是白纸。

E 什么也没说。

现在已知额头上贴黑纸的人说的都是真话,额头上贴白纸的人说的都是假话。编制一个

C程序,确定这五人中谁的额头上贴白纸,谁的额头上贴黑纸?

11. 寻找1000以内最小的10个素数与最大的10个素数(去掉重复的素数),计算并输出这20个素数之和。

具体要求:

(1) 画出计算过程的结构化流程图。

(2) 虽然1000以内素数个数超过20个,但仍要求考虑1000以内不够10个最小素数与10个最大素数,以及最小的10个素数与最大的10个素数有重复的情况。

(3) 输出要有文字说明。输出形式为

zui xiao su shu :素数1,素数2,…,素数10

zui da su shu :素数1,素数2,…素数10

su shu zhi he :和的具体值

(4) 在程序内部加必要的注释(至少有三处)。

方法说明:

对于某个(从小到大与从大到小)自然数k,开始时置标志flag为0,然后对2到k中的自然数j进行检测,当发现j是k的因子,就置flag为1,表示不必再对别的自然数进行检测,因为此时已经可以确定k不是素数了,只有当2到k中的所有自然数都不是k的因子(即flag保持为0)时,说明k为素数,输出k,并进行累加。

12. A、B、C、D、E五人分苹果。A将所有的苹果分为五份,将多余的一个苹果吃掉后再拿走自己的一份苹果;B将剩下的苹果分为五份,将多余的一个苹果吃掉后再拿走自己的一份苹果;C、D、E依次按同样的方法,将剩下的苹果分为五份,吃掉多余的一个苹果后拿走自己的一份苹果。编程计算原来至少有多少个苹果?A、B、C、D、E各得到多少个苹果?

具体要求:

(1) 画出计算过程的结构化流程图。

(2) 输出要有文字说明。

(3) 在程序内部加必要的注释(至少有三处)。

方法说明:

采用逐步试探的方法。

设当前试探的苹果数为n。如果n满足下列条件:

n-1(多余的一个被吃掉)后要能被5整除;

拿走一份后,余下的四份苹果数为4*(n-1)/5。

按上述策略连续进行五次分配,如果每次分配时均满足其中的条件,则试探的n即为原来的苹果数x。

为了第一次能分配,试探从6开始。

根据分配策略,最后A,B,C,D,E五人得到的苹果数(不包括吃掉的一个苹果)可以按如下公式依次计算:

a=(x-1)/5

b=(4*a-1)/5

c=(4*b-1)/5

d=(4*c-1)/5

e=(4*d-1)/5

13. 某单位要在A,B,C,D,E,F六人中选派若干人去执行一项任务,选人的条件如下:

(1) 若C不去,则B也不去;

(2) C 和D 两人中去一个;

(3) D 和E 要么都去,要么都不去; (4) A ,B ,F 三人中要去两个; (5) C 和F 不能一起去:

(6) E 和F 两人中至少去一个。 问应该选哪几个人去? 具体要求:

(1) 画出计算过程的结构化流程图。 (2) 输出要有文字说明。

(3) 在程序内部加必要的注释(至少有三处)。

8.5 习题

1. 编写一个函数sabc(),根据给定的三角形三条边长a ,b ,c ,函数返回三角形的面积。

2. 编写一个计算阶乘值的函数p()(该函数为双精度实型);再编写一个主函数,从键盘输入两个正整数m 与n(m ≥n),通过调用函数p(),计算

m m n !

()!

- 的值(即求 A m n )。

3. 编写一个函数,计算并返回给定正整数m 与n 的最大公约数。

4. 编写一个主函数,调用例8.3中的函数sushu(),输出小于1000的最大五个素数。

5. 编写一个主函数,调用例8.3中的函数sushu(),验证6到1000中的所有偶数均能表示成两个素数之和。

6. 编写一个递归函数,计算并返回菲波那契(Fibonacci )数列中第n 项的值。菲波那契数列的定义如下:

Fib(1)=1,Fib(2)=1

Fib(n)=Fib(n-1)+Fib(n-2)

7. 编写一个递归函数,计算并返回阿克玛(Ackermann)函数值。阿克玛函数的定义如下:

Ack n x y x n x n y n y n y n y Ack n Ack n x y x n y (,,)(,(,,),)

=+=======≥=--≠≠??

???????

1

0100201302401100

且且且且且 其中n ,x ,y 均为非负整数。 8. 编写计算n!的递归函数。

9. 编写一个递归函数,其功能是将一个正整数n 转换成字符串(要求各字符之间用一个空格分隔)输出。例如,输入的正整数为735,应输出字符串“7 3 5”。其中正整数在主函数中从键盘输入,要求判断其输入的合理性。

10. 计算并输出500以内的所有“亲密数”对,并输出所有“完数”之和。 具体要求:

(1) 编写一个函数facsum(n),返回给定正整数n 的所有因子(包括1但不包括自身)之和。

(2) 编写一个主函数,调用(1)中的函数facsum(n),寻找并输出500以内的所有“亲密数”对以及计算所有“完数”之和。

(3) 分别画出函数facsum(n)和主函数计算过程的结构化流程图。

(4) 在输出每对“亲密数”时,要求小数在前、大数在后,并去掉重复的数对。例如,220与284是一对“亲密数”,而284与220也是一对“亲密数”,此时只要求输出220与284这对“亲密数”。

(5) 输出要有文字说明(英文或汉语拼音)。输出时每对“亲密数”用一对圆括号括起来,两数之间用逗号分隔,且所有的“亲密数”对占一行。输出形式为

各对“亲密数”

“完数”之和

(6) 在程序内部加必要的注释(至少有三处)。

(7) 将两个函数分别放在两个文件中进行编译、连接并运行。

(8) 将两个函数放在一个文件中进行编译、连接并运行。

方法说明:

如果自然数M的所有因子(包括1但不包括自身,下同)之和为N,而N的所有因子之和为M,则称M与N为一对“亲密数”。例如,6的所有因子之和为1+2+3=6,因此,6与它自身构成一对“亲密数”;又如,220的所有因子之和为1+2+4+5+10+11+20+22+44+55+110=284,而284的所有因子之和为1+2+4+71+142=220,因此,220与284为一对“亲密数”。

如果一个自然数的所有因子之和恰好等于它自身,则称该自然数为“完数”。例如,6不仅与它自身构成一对“亲密数”,且6是一个“完数”。

11. 计算并输出k!

=

∑的值。

具体要求:

(1) 编写一个计算k!的递归函数,其函数名返回k!的值。

(2) 编写一个主函数,首先从键盘输入m和n的值(要求n≥m≥0),然后调用(1)中的函数计算k!

=

∑的值。

(3) 在计算k!的递归函数中,要检查形参k的合理性,当k<0时,应输出出错信息,并返回0值。

(4) 在主函数中应检查从键盘输入的数据的合理性,对于不合理的输入,应输出出错信息,并不再调用计算。

(5) 分别输入(m, n)=(-3, 7), (0, 0), (1, 7), (9, 13), (9, 4)运行你的程序。

3. 利用变步长梯形求积法计算定积分。

具体要求:

(1) 编写一个函数st(a, b, eps)(要求该函数放在独立的文件中),其功能是利用变步长梯形求积法计算定积分

?=b a

dx )x(f

s

其中eps为精度要求。

要求画出该函数处理的结构化流程图。

(2) 编写一个主函数以及计算被积函数值的函数fun(x),在主函数中调用(1)中的函数st(a,

b, eps),计算并输出下列积分值

?

=

8

4dx x

1s 精度要求为eps=0.0001。

要求主函数与函数fun(x)放在同一个文件中。

(3) 编写另一个主函数以及计算被积函数值的函数fun(x),在主函数中调用(1)中的函数st(a, b, eps),计算并输出下列积分值

?

-+=

1

1

2

dx 1

x 1

s

精度要求为eps=0.00001。

同样要求主函数与函数fun(x)放在同一个文件中。 方法说明:

变步长梯形求积法的基本步骤如下: ① 利用梯形公式计算积分。即取 n=1,h=b-a 则有

∑-=++=

1

n 0

k 1k k n )]x (f )x

(f [2

h

T

其中x k =a+kh 。

② 将求积区间再二等分一次(即由原来的n 等分变成2n 等分),在每一个小区间内仍利用梯形公式计算。即有 ]2

)

x (f )x (f 2)x (f )x (f [

2

h T 1k 5.0k 1

n 0

k 5.0k k n

2++-=++++=∑

=

)x

(f 2h

)]x (f )x (f [4

h

1

n 0

k 1

n 0

k 5.0k 1k k ∑

∑-=-=+++

+

=)

x

(f 2

h

T 211

n 0

k 5.0k n ∑-=++

③ 判断二等分前后两次的积分值之差的绝对值是否小于所规定的误差。若条件

|T 2n -T n |

成立,则二等分后的积分值T 2n 即为结果;否则作如下处理: h=h/2,n=2*n ,T n =T 2n 然后重复②。

9.6 习题

1. 编写一个C 程序,从键盘为一个长度为10的整型一维数组输入数据。最后按逆序输出数组中的元素,并输出数组中最大元素的下标值。

2. 编写一个C 程序,将两个长度相同的一维数组中各下标相同的对应元素相乘,并将结果存放到另一个一维数组中。

3. 编写一个C程序,从键盘为5

×5的一个整型二维数组输入数据。最后输出该二维数组中的对角线元素。

4. 编写一个C程序,从键盘为4×6的一个整型二维数组输入数据。最后输出该二维数组中最小元素的行下标与列下标。

5. 从键盘输入5行5列二维整型数组的数据。编制一个函数,计算二维数组中每一行中的最小值,并将此最小值顺序存放在一个长度为5的一维数组中。最后按矩阵形式输出二维数组中的各元素,且各行中的最小值(即一维数组中的元素)输出到相应行的右边。

6. 编写一个C函数,将一个一维数组中的元素逆转。逆转是指将数组中的第一个元素与最后一个元素进行交换,第二个元素与倒数第二个元素进行交换,以此类推,直到数组的中间一个元素为止。

7. 编写一个C函数,将矩阵进行转置后输出。

8. 设有两个整型一维有序数组(即数组中的元素按从小到大进行排列),编写一个C函数,将这两个有序数组合并存放到另一个一维数组中,并保证合并后的一维数组也是有序的。

9. 编制一个C程序,从键盘输入一个由5个字符组成的单词,然后判断该单词是否是China。要求给出判断结果的提示信息。

10. 编写一个C程序,从键盘输入50个字符,并统计其中英文字母(不分大小写)与数字字符的个数。

11. 中国有句俗语叫“三天打鱼,两天晒网”。现某人从2000年1月1日起开始“三天打鱼,两天晒网”,请编程判断此人在以后的某年某月某日是在“打鱼”还是在“晒网”。其中以后的某年某月某日从键盘输入。

12. 一辆汽车在开始出发前其里程表上的读数是一个对称数95859,后匀速行驶两小时后,发现里程表上是一个新的对称数。问该新的对称数是多少?汽车的速度是多少?

注:所谓对称数是指从左向右读与从右向左读完全一样。

13. 计算多项式函数

P6(x)=1.5x6+3.2x5-0.8x4+1.4x3-6.5x2+0.5x-3.7

在x=-2.3,-1.1,-0.6,0.8,2.1,3.6处的函数值。

具体要求:

(1) 编写一个函数,其功能是:给定一个x值,返回多项式函数值。

(2) 编写一个主函数,定义两个一维数组,分别存放多项式的系数和需要计算的各x值。然后在主函数中调用(1)中的函数逐个计算各x值时的多项式值。

(3) 在主函数中的输出形式为

P(x值)=具体的多项式值

方法说明:

设多项式为

P n(x)=a n x n+a n-1x n-1+…+a1x+a0

可以表述成如下嵌套形式:

P n(x)=(…((a n x+a n-1)x+a n-2)x+…+a1)x+a0

利用上式的特殊结构,从里往外一层一层地进行计算,即按如下递推关系进行计算:u=a n

u=ux+a k,k=n-1,…,1,0

最后计算得到的u即是多项式的值P n(x)。

14. 产生100个0~1之间均匀分布的随机数,并将这些随机数按非递减顺序进行排序,存放到一个一维数组中。最后输出该有序数组。 具体要求:

(1) 在产生随机数的过程中,每产生一个随机数就将它插入到前面已经有序的数组中。 (2) 输出时要求每行输出10个数据,并上下对齐。 方法说明:

产生随机数p k (k=1,2,…,100)的公式为 r k =mod(2053r k-1+13849,216) p k =r k /216 其中初值r 0=1。

解决本问题的流程图如图9.4所示。

15. 利用高斯(Gauss)消去法求解线性代数方程组。 具体要求:

(1) 编写一个用高斯(列选主元)消去法求解给定线性代数方程组的函数 gauss(a, b, x)

其中a 为系数矩阵,b 为常数向量,x 为解向量。

(2) 编写一个主函数,调用(1)中的函数求解下列线性代数方程组: ??????

?=+++=+++=+++=+++7471

.1x 2271.0x 2168.1x 2071.0x 1968.08471.1x 2671.1x 2568.0x 2471.0x 2368.06471.1x 1871.0x 1768.0x 1675.1x 1582.05471.1x 1490.0x 1397.0x 1254.0x 1161.14

32143214

3214321

其中系数矩阵与常数向量利用初始化赋初值。

(3) 在主函数中要求输出系数矩阵与常数向量。输出形式为 MAT A=

1.1161 0.1254 0.1397 0.1490 0.1582 1.1675 0.1768 0.1871 0.2368 0.2471 0.2568 1.2671

0.1968 0.2071 1.2168 0.2271 MAT B=

1.5471 1.6471 1.8471 1.7471 (4) 结果输出形式为 x(1)=具体值 x(2)=具体值 x(3)=具体值 x(4)=具体值

(5) 在函数gauss()中至少要求有五处加注释。 方法说明:

设线性代数方程组为AX=B 。高斯消去法求解线性代数方程组的步骤如下: ①对于k 从1到n-1,作如下操作: 进行列选主元

a kj =a kj /a kk ,j=k+1,…,n

b k =b k /a kk

这一步称为归一化。然后作

a ij =a ij -a ik a kj ,i=k+1,…,n ;j=k+1,…,n

b i =b i -a ik b k ,i=k+1,…,n 这一步称为消去。 ② 进行回代

x n =b n /a nn j

n

1

i j ij i i x a

b x ∑+=-

= ,i=n-1,…,2,1

列选主元的基本思想是在变换到第k 步时,从第k 列的a kk 以下(包括a kk )的所有元素中选出绝对值最大者,然后通过行交换将它交换到a kk 的位置上。由于交换系数矩阵中的两行(包括交换常数向量中的两个相应元素),只相当于两个方程的位置被交换了,因此,列选主元不影响求解结果。

最后需要说明的是,在C 语言中,数组的下标是从0开始的,不是从1开始的。另外,注意在函数gauss()中要将二维数组的下标转换成一维数组的下标。

10.8 习题

1. 阅读下列C 程序: (1)

#include main()

{ int a[4][3]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; int (*ptr)[3]=a, *p=a[0];

printf("%d\n", *(p+5) + *(*(ptr+1) + 2)); }

输出结果为( )。

(2)

#include

main()

{ int a[5]={2, 4, 6, 8, 10};

int *p=a, **k, z;

k=&p; z=*p; p=p+1; z=z + **k;

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

}

输出结果为( )。

(3)

#include

void ast(int x, int y, int *cp, int *dp)

{ *cp=x+y; *dp=x-y;

return;

}

main()

{ int a, b, c, d;

a=4; b=3;

ast(a, b, &c, &d);

printf("%d\n", c+d);

}

输出结果为( )。

2. 编写一个C程序,从键盘输入两个字符串,然后按先小后大的顺序显示输出。

3. 编写一个C程序,利用指针数组,显示输出如下信息:

File

Edit

Write

Read

Exit

4. 编写函数void disp(char *s, int n),将在s指向的字符串中连续显示输出n个字符,若字符串中不够n个字符,则输出到字符串结束符为止。再编写一个主函数,从键盘输入一个字符串,调用函数disp(),将该字符串中的第4到第10个之间的字符显示输出。

5. 编写一个函数,功能是计算给定字符串的长度。再编写一个主函数调用该函数来计算字符串的长度,其中字符串在执行程序时的命令行中作为参数输入。

6. 利用指针数组实现矩阵相乘C=AB。其中矩阵相乘函数为通用的,在主函数中对矩阵A与B进行初始化,并显示输出矩阵A、B与乘积矩阵C。

7. 编写一个C函数,将一个字符串连接到另一个字符串的后面。

8. 编写一个C函数,将两个有序字符串(其中字符按ASCII码从小到大排列)合并到另一个有序字符串中,要求合并后的字符串仍是有序的。

9. 编写一个C程序,从键盘输入一个月份号,输出与之对应的英文名称。例如,输入“5”,则输出“MAY”。要求用指针数组处理。

10. 编写一个C函数int str_cmp(char *str1, char *str2),实现两个字符串的比较(即实现strcmp(str1, str2)的功能)。

11. 编写一个主函数,其功能是将执行该程序时所输入的命令行中所有的字符串显示输出。

12. 计算给定复数z=x+jy 的指数e z 、对数ln(z)以及正弦sin(z)、余弦cos(z)。 具体要求:

(1) 分别编写计算给定复数的指数、对数、正弦和余弦的四个函数。这四个函数的形参分别是给定复数的实部x 、虚部y 以及计算结果的实部u 、虚部v 。并且,在每一个函数中应允许存放计算结果的变量与给定复数的变量具有相同的存储地址。 (2) 编写一个主函数,首先调用计算复数指数的函数计算并输出复数z=2+j3的指数,再调用复数对数的函数计算并输出该结果(为一个复数)的对数,然后调用计算复数正弦的函数计算并输出新结果(为一个复数)的正弦,最后调用计算复数余弦的函数计算并输出新结果(为一个复数)的余弦。

(3) 在主函数中输出结果的形式为(其中x 与y 为复数实部与虚部的具体值,u 与v 为计算结果中实部与虚部的具体值) exp(x+jy)=u+jv ln(x+jy)=u+jv sin(x+jy)=u+jv cos(x+jy)=u+jv 方法说明:

设给定的复数为z=x+jy 。则 (1) 复数z 的指数为

w=u+jv=e z =e x+jy =e x (cos(y)+jsin(y)) 即u=e x cos(y),v=e x sin(y)。 (2) 复数z 的对数为

w=u+jv=ln(z)=ln(x+jy) =ln 22y x ++jArctg(y/x) 即u=ln 22y x +,v=Arctg(y/x)。

(3) 复数z 的正弦为

w=u+jv=sin(z)=sin(x+jy) =sin(x)cos(jy)+cos(x)sin(jy)

=sin(x)(e y +e -y )/2+jcos(x)(e y -e -y )/2 即u=sin(x)(e y +e -y )/2,v=cos(x)(e y -e -y )/2。 (4) 复数z 的余弦为

w=u+jv=cos(z)=cos(x+jy) =cos(x)cos(jy)-sin(x)sin(jy)

=cos(x)(e y +e -y )/2-jsin(x)(e y -e -y )/2 即u=cos(x)(e y +e -y )/2,v=-sin(x)(e y -e -y )/2。

特别要指出的是,根据题目的要求,应允许给定复数z 与计算结果w 存放在同一个存储地址中,即在调用这些函数时,计算结果的实部与虚部仍然存放在给定复数的实部变量x 与虚部变量y 中。因此,在每一个函数中,当给定复数的实部x 与虚部y 还没有使用完,不能直接将计算结果赋给u 或v ,因为在这种情况下,函数中如果改变了u 值,也即改变了x 值;同样,函数中如果改变了v 值,也即改变了y 值。

13. 利用冒泡排序法对给定的单词序列进行排序。

具体要求:

(1) 编写一个函数,其功能是对由n个单词所构成的字符串序列按非递减顺序进行冒泡排序。其中单词序列中的各单词(即字符串)由长度为n的一维字符串指针数组中的各元素指向。

(2) 编写一个主函数,调用(1)中的函数,对下列单词序列进行排序:

zhang,gou,xu,zheng,mao,zhao,li,bai,qing

其中该单词序列中各单词以赋初值的方式用一维字符串指针数组的各元素指向。

(3) 在主函数中,要求先输出原序列,换行后再输出排序后的序列。输出时各单词之间用两个空格分隔。

方法说明:

使用字符串比较函数strcmp(),需要包含头文件string.h。

11.7 习题

1. 编写一个C程序,要求定义一个有关日期的结构体类型变量(包括年、月、日),从键盘为该变量中的各成员输入数据,然后再将输入的日期显示输出。

2. 建立一个学生情况登记表的表格空间(学生人数最多为20),包括学号、姓名、五门课程的成绩与总分。在主函数中调用以下函数实现指定的功能:

(1) 输入n个学生的数据(不包括总分)。其中n(≤20)在主函数中从键盘输入。

(2) 计算每个学生的总分。

(3) 按总分进行排序。

(4) 显示输出给定学号学生的所有信息。其中学号在主函数中从键盘输入。

3. 编写一个C程序,根据键盘输入的非负整数值,显示输出颜色的英文名称。

4. 编制一个C程序,定义一个长度为10的联合体类型数组。首先从键盘输入一个标志,标志值为0时表示输入五分制成绩(整型),标志值为1时表示输入百分制成绩(单精度实型)。然后从键盘输入10个成绩存放到数组中。最后输出这些成绩。

5. 编写一个C函数,功能是计算给定链表的长度。

6. 编写一个C函数,功能是逆转给定链表。

7. 设有两个有序线性单链表,头指针分别为ah与bh。编写一个C函数,将这两个有序链表合并为一个头指针为ch的有序链表。

8. 设有一个链表,其结点值均为正整数,且按值从大到小链接。编写一个C函数,将该链表分解为两个链表,其中一个链表中的结点值均为奇数,而另一个链表中的结点值均为偶数,且这两个链表均按值从小到大链接。

9. 设有一个链表,其结点值均为整数,且按绝对值从小到大链接。编写一个C函数,将此链表中的结点按值从小到大链接。

10. 设有一个链表,其结点值均为正整数。编写一个C函数,反复找出链表中结点值最小的结点。并输出该值,然后将该结点从链表中删除,直到链表空为止。

11. 给定学生成绩登记表如表11.4所示。编写一个C程序,用冒泡排序对该学生成绩表按成绩(grade)从低到高进行排序。

表11.4 学生成绩登记表

具体要求:

(1) 定义一个结构体数组表示学生成绩登记表,其中的每个元素依次存放表11.4中各学生的情况。

结构体类型为

struct student

{ int num;

char name[10];

int grade;

};

(2) 在程序中另外定义一个结构体指针数组,在排序前,其中每一个数组元素依次指向学生成绩登记表(为结构体类型数组)中的各学生情况。

(3) 在程序中,首先输出排序前的学生情况,然后输出排序后的结果。输出形式如表11.4所示,但不要表中的框线。

(4) 将冒泡排序的功能独立编写成一个函数。

方法说明:

在实际排序的过程中,并不需要交换学生成绩登记表中的各学生情况,而只需要交换另一指针数组中的各指针。因此,排序的最后结果,学生成绩登记表中各学生情况之间的存储顺序并没有改变,而只是按指针数组中各指针元素顺序指向的各学生情况是按成绩有序的。

12. 链表基本操作。

具体要求:

(1) 定义一个结构体数组表示学生成绩登记表,其中的每个元素依次存放表11.4中各学生的情况。

结构体类型为

struct student

{ int num;

char name[10];

int grade;

};

(2) 对于表11.4所示的学生成绩登记表,依次将每个学生的情况作为一个结点插入到链表的链头(即当前插入的结点将成为链表中的第一个结点)。初始时链表为空,即该链表的头指针为空。

每个学生情况结点结构的结构体类型为

struct stunode

{ int num;

char name[10];

int grade;

struct stunode *next;

};

(3) 当所有学生情况都插入到链表后,从链头开始,依次输出链表中的各结点值(即每个学生的情况)。输出格式如同表11.4所示,但不要表中的框线。

方法说明:

为了给每个学生情况的结点p动态分配存储空间,可以用如下语句:

p=(struct stunode *)malloc(sizeof(struct stunode));

其中p为结构体类型struct stunode的指针。

另外,为了使用函数malloc(),应该包含头文件stdlib.h。

13. 将表11.4所示的学生成绩登记表划分成三个子表,其中子表1登记的是成绩在90~100之间的学生情况,子表2登记的是成绩在80~89之间的学生情况,子表3登记的是成绩在70~79之间的学生情况。

具体要求:

(1) 定义一个结构体数组表示学生成绩登记表,其中的每个元素依次存放表11.4中各学生的情况。

结构体类型为

struct student

{ int num;

char name[10];

int grade;

};

(2) 划分成的三个子表均采用链表结构,链表中各结点的数据域存放学生情况在原登记表中的序号(即结构体数组元素的下标),而不是直接存放学生的成绩情况。即各链表结点的结构体类型为

struct stunode

{ struct student *data;

struct stunode *next;

};

(3) 最后输出原学生成绩登记表以及划分成的三个子表。输出格式如表11.4所示,但不要表中的框线。

方法说明:

划分子表的方法如下:

对于表11.4中的各学生成绩grade,计算

k=10-int(grade/10)

其中int()表示取整。根据k值将学生情况插入到相应的子表中:

程序设计基础试题库

练习题一Visual FoxPro 基础 、选择题 1. 关系数据库管理系统应能实现的专门关系运算包括___c __________ A 显示、打印、制表B关联、更新、排序 C 选择、投影、连接D排序、索引、统计 2. 关系是指__b__。 A 属性的集合B元组的集合 C 实例的集合 D 字段的集合 3. 如果把学生看成实体,某个学生的姓名叫“杨波”,则“杨波”应看成是___b ______ 。 A)属性型B )属性值C )记录型D )记录值 4. 关系数据库系统中所使用的数据结构是 _______ d ___ 。 A)图B )树C )表格D )二维表 5. 对表进行水平方向的分割用的运算是 _______ b ___ 。 A)交B )选择C )投影D )连接 6. 下列数据库技术的术语与关系模型的术语的对应关系中_______ d _____ 是正确的。 A)实例与关系 B )字段与元组C )记录与属性 D )记录类型与关系模式 7. 下列关于数据库系统的叙述中,正确的是 _____ c _____ 。 A)数据库系统中数据的一致性是指数据类型一致 B)数据库系统只是比文件系统管理的数据更多 C)数据库系统减少了数据冗余 D数据库系统避免了数据冗余 8. 关系数据模型 ______ d ___ 。 A)只能表示实体间的1:1联系 B)只能表示实体间的1:n C只能表示实体间的m:n D 可以表示实体间的上述三种联系 9. 在一个关系中如果有这样一个属性存在,它的值能惟一地标识关系中的每一个元组,称

这个属性为 _____ a____ 。 A)关键字B )主属性C )数据项D )主属性值 10. 关系数据库管理系统中的元组是______ b ____ 。 A)关系中的垂直方向的列 B )关系中的水平方向的行 C属性或属性的组合 D )以上的答案均不正确 11. 从数据库的整体结构看,数据库系统采用的数据模型有_________ a __ 。 A)层次模型、网状模型和关系模型 B)层次模型、网状模型和环状模型 C)网状模型、链状模型和层次模型 D链状模型、关系模型和层次模型 12. 设有属性A B、C D以下表示中不是关系的是___________ d__。 A)R( A) B )R( A, B)C )R (A, B, C, D) D )R (A X B X C X D) 13. 若实体间联系是M N的,则将联系类型_________ a___ 。 A)也转换为关系模型 B)属性加入任一个关系模式中 C)属性加入N端实体类型相应的关系模式中 D)属性加入M端实体类型相应的关系模式中 14. 数据库系统的构成为数据库、计算机硬件系统、用户和________ a ____ 。 A 数据库管理系统 B 操作系统 C 数据集合 D 文件系统 15. 层次型、网状型和关系型数据库划分原则是________ c ___ 。 A 文件大小 B 记录长度 C 数据之间的联系 D 联系的复杂程度 16. 在数据库设计中用关系模型来表示实体和实体之间的联系,关系模型的结构是 _____ d ___ 。 A 封装结构 B 层次结构 C 网状结构 D 二维表结构 17. 在关系模型中,实现“关系中不允许出现相同的元组”的约束是通过__a ________ 。 A 主键 B 超键 C 外键 D 候选键 18. 层次模型不能直接表示 ______ b __ 关系。 A 1:1 B m:n C 1:m D 1:1 和1:m 19. DBAS旨的是_____ d____ 。

《程序设计基础》试卷B及答案

黄淮学院计算机科学系2007-2008学年度第一学期 期末考试《程序设计基础》B 卷 注意事项:本试卷适用于计科系06级本科计算机科学与技术专业学生。 1.__ ____函数是程序启动时惟一的入口。 2.算法的复杂性包含两方面: 和 。 3.已知 char c= 'a' ; int x=2,k; 执行语句k=c&&x++ ; 则x 为 ,k 为 。 4.数值0x34对应的十进制为 。 5.已知int a ; 则表达式”(a=2*3 , 3*8), a*10”的结果为_ _ ____,变量a 的值为___ ___。 6.面向对象程序开发步骤为: 、 和面向对象实现。 1.下列程序设计语言中( )是面向对象语言。 A. FORTRAN B. C 语言 C. C++ D. 汇编语言 2.下列关于注释的说法哪个是错误的( )。 A. 注释不是程序中的可执行语句 B. 注释对于程序的执行有很重要的意义 C. 注释将在程序的编译阶段被编译器剔除 D. 编程时在程序中添加适当的注释是一个良好的编程风格 3.算法设计应该遵守( )的设计原则。 A. 自底向上,逐步求精 B. 自顶向下,逐步求精 C. 自底向上,同步扩展 D. 自顶向下,同步扩展 4.下列语句执行后a 的值为( )。 int a=4, &z=a, k=3; a=k; z+=2; k++; A. 0 B. 4 C. 1 D. 5 5.以下程序执行后,屏幕输出为( )。 #include “iostream.h ” void fun(int d) {d++;} void main() { int d=3; fun(d); d++; cout<=’a ’)&&(d<=’z ’) B. ‘a ’<=d<=’z ’ C. (d>=’a ’)||(d<=’z ’) D. ‘A ’<=d<=’Z ’ 8.已知:int k=7, x=12; 则执行语句( )后x 的值为0。 A. x+=k-x%5; B. x+=(x-k%5); C. x%=(k-=5); D. (x-=k)-(k+=5); 9.运行下列程序,其输出结果为( )。 #include “iostream.h ” void main() { int x(5),y(5),z(5); y--&&++x&&z--||y++; cout<

程序设计基础试题和答案解析二

《程序设计基础》考试试卷二 1.1966年,Bohra和Jacopini提出的三种基本程序设计结构是:________ A.if、while和for; B. switch、do-while和for; C.while、do-while和for; D.顺序结构、分支结构和循环结构。 2.算法的特征不包括:______。 A.有穷性 B.可行性 C.确定性 D.有1个或者多个输入。 3.C语言源程序的基本组成单位是______。 A.函数 B. 语句 C. 声明和语句 D. 文件 4.下列标识符中,只有______是合法的。 A.if B. 3ab C. Int D. A-4 5.下列常量中,只有______是合法的。 A.3e-0.3 B. ‘abc’ C. 02a1 D. ‘\377’ 6.下列说法中正确的是:______。 A.C语言中的for语句的三个表达式都可以省略,而且分号也可以省略。 B.宏替换比函数调用的执行速度慢。 C.实质上,C语言中的指针就是一个变量的地址。 D.C语言中的任何函数都可以由程序员命名。 7.C语言中,运算对象必须是整型的运算符是_______。 A./ B. % C. + D. - 8.以下叙述中错误的是_______。 A.C语句必须以分号结束 B.复合语句在语法上被看作一条语句 C.空语句出现在任何位置都不会影响程序运行 D.赋值表达式末尾加分号就构成赋值语句 9.以下叙述中正确的是_______。 A.调用printf函数时,必须要有输出项 B.使用putchar函数时,必须在之前包含头文件stdio.h C.在C语言中,整数可以以十二进制、八进制或十六进制的形式输出 D.调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码10.以下关于函数的叙述中正确的是_______。 A.每个函数都可以被其它函数调用(包括main函数) B.每个函数都可以被单独编译 C.每个函数都可以单独运行 D.在一个函数内部可以定义另一个函数 11.有以下程序段typedef struct NODE{ int num; struct NODE *next;

程序设计基础练习题(全答案版)

《程序设计基础——C#.NET》练习 参考答案: 一、选择题 https://www.wendangku.net/doc/4a4109725.html,的目的就是将____A____作为新一代操作系统的基础,对互联网的设计思想进行扩展。A.互联网 B. Windows C. C# D. 网络操作系统 2.假设变量x的值为10,要输出x值,下列正确的语句是__C__。 A.System.Console.writeline(“x”) B. System.Cosole.WriteLine(“x”) C. System.Console.WriteLine(“x={0}”,x) D. System.Console.WriteLine(“x={x}”) 3.要退出应用程序的执行,应执行下列的_A___语句。 A. Application.Exit(); B. Application.Exit; C. Application.Close(); D. Application.Close; 4.关于C#程序的书写,下列不正确的说法是__D________。 A.区分大小写 B.一行可以写多条语句 C.一条语句可以写成多行 D.一个类中只能有一个Main()方法,因此多个类中可以有多个Main()方法 5. 在C#语言中,下列能够作为变量名的是__C__。 A.if B. 3ab C. b_3a D. a-bc 7. 能正确表示逻辑关系“a≥5或a≤0”的C#语言表达方式是__D__。 A.a>=5 or a<=0 B. a>=5|a<=0 C. a>=5&&a<=0 D. a>=5||a<=0 8. 以下程序的输出结果是___C_____。 A. 5 B. 4 C. 6 D. 不确定 9. If语句后面的表达式应该是__A___。 A.逻辑表达式 B. 条件表达式 C. 算术表达式 D. 任意表达式10.有如下程序:

计算机程序设计基础习题册(含答案)

《计算机程序设计基础》 习 题 册

班级学号姓名成绩一、单选题 1.C++源程序文件的默认扩展名为A。 A) cpp B) exe C) obj D) lik 2.由C++源程序文件编译而成的目标文件的默认扩展名为C。 A) cpp B) exe C) obj D) lik 3.由C++目标文件连接而成的可执行文件的默认扩展名为B。 A) cpp B) exe C) obj D) lik 4.编写C++程序一般需经过的几个步骤依次是B。 A)编译、编辑、连接、调试 B)编辑、编译、连接、调试 C)编译、调试、编辑、连接 D)编辑、调试、编辑、连接 5.程序中主函数的名字为 A 。 A) main B) MAIN C) Main D) 任意标识符 6.下面四个选项中,均是不合法的用户标识符的选项的是C。 A) A p_o do B)float lao _A C)b-a goto int D)_123 temp INT 7.下列变量名中合法的是C。 A) B)C)Tom B) 3a66 C) _6a7b D) $ABC 8.存储以下数据,占用存储字节最多的是 D 。 A) 0 B) ‘0’ C) “0” D) 0.0 9.在C++语言中,字符型数据在内存中的存储形式是D。 A) 补码 B) 反码 C) 原码 D) ASCII码 10.若有说明语句:char c =’\072’;则变量c A。 A) 包含1个字符 B) 包含2个字符 C) 包含3个字符 D) 说明不合法,变量的值不确定 二、填空题 1.C++头文件和源程序文件的扩展名分别为.h和.cpp 。 2.C++语言规定,标识符只能由字母、数字、下划线三种字符组成,而且第一个字符必须是字母或下划线。 3.一条表达式语句必须以__分号_;___作为结束符。 4.用于从键盘上为变量输入值的标准输入流对象是___cin____;用于输出表达式值的标准输出流对象是__cout____。 5.在一个C++程序文件中,若要包含另外一个头文件或程序文件,则应使用以_#include___标识符开始的预处理命令

计算机程序设计基础习题册含答案

《计算机程序设计基础》 计算机程序设 计基础_基础知识(一) 班级 学号 姓名 成 绩 一、 单选题 习题册

1.C++源程序文件的默认扩展名为A。 2.A) cpp B) exe C) obj D) lik 3.由C++源程序文件编译而成的目标文件的默认扩展名为C。 4.A) cpp B) exe C) obj D) lik 5.由C++目标文件连接而成的可执行文件的默认扩展名为B。 6.A) cpp B) exe C) obj D) lik 7.编写C++程序一般需经过的几个步骤依次是B。 8.A)编译、编辑、连接、调试 B)编辑、编译、连接、调试 C)编译、调试、编辑、连接 D)编辑、调试、编辑、连接9.程序中主函数的名字为 A 。 10.A) main B) MAIN C) Main D) 任意标识 符 11.下面四个选项中,均是不合法的 用户标识符的选项的是 C。 12.A) A p_o do B)float lao _A C)b-a goto int D)_123 temp INT 13.下列变量名中合法的是 C。 14.A) B)C)Tom B) 3a66 C) _6a7b D) $ABC 15.存储以下数据,占用存储字节最 多的是 D 。 16.A) 0 B) ‘0’

C) “0” D) 17.在C++语言中,字符型数据在内存中的存储形式是D。 18.A) 补码 B) 反码 C) 原码 D) ASCII码 19.若有说明语句:char c =’\072’;则变量c A。 20.A) 包含1个字符 B) 包含2个字符 C) 包含3个字符 D) 说明不合法,变量的值不确定 二、填空题 1.C++头文件和源程序文件的扩展名分别为.h和.cpp 。 2.C++语言规定,标识符只能由字母、数字、下划线三种字符组成,而且第一个字符必须是字母或下划线。 3.一条表达式语句必须以__分号_;___作为结束符。 4.用于从键盘上为变量输入值的标准输入流对象是___cin____;用于输出表达式值的标准输出流对象是__cout____。 5.在一个C++程序文件中,若要包含另外一个头文件或程序文件,则应使用以_#include___标识符开始的预处理命令 计算机程序设计基础_基础知识(二) 班级学号姓名成绩 一、单选题 1.下列哪一个是C++语言中合法的变量 C A) 8ZSe B) ±A0 C) X0_2 D) ’x0’2.已知ch是字符型变量,下面不正确的赋值语句是A 3.A) ch='a+b' B) ch='\0'

程序设计基础试题(附答案)

程序设计基础复习题 一、单选 1、一个完整的计算机系统应该包括() A、系统软件和应用软件 B、计算机及其外部设备 C、硬件系统和软件系统 D、系统硬件和系统软件 2、“裸机”的概念是指() A、正在进行设计还没有组装好的计算机 B、已经组装好但还没有安装任何软件的计算机 C、仅安装了操作系统的计算机系统 D、安装了文字处理软件但没有安装专用数据处理系统的计算机 3、世界上第一台电子数字计算机研制成功的时间是() A、1936年 B、1946年 C、1956年 D、1970年 4、CASE的含义是() A、计算机辅助设计 B、计算机辅助制造 C、计算机辅助教学 D、计算机辅助软件工程5、当前广泛使用的微型计算机是() A、第一代 B、第二代 C、第三代 D、第四代 6、当代计算机的体系结构称为是() A、冯·诺依曼机 B、非冯·诺依曼机 C、图灵机 D、比尔盖茨机 7、硬盘是() A、输入设备 B、输出设备 C、存储设备 D、计算设备 8、下面4句话中,最准确的表述是() A、程序=算法+数据结构 B、程序是使用编程语言实现算法 C、程序的开发方法决定算法设计 D、算法是程序设计中最关键的因素

9、计算机能直接执行的语言是() A、机器语言 B、汇编语言 C、高级语言 D、目标语言 10、解释程序的功能是() A、将高级语言程序转换为目标程序 B、将汇编语言程序转换为目标程序 C、解释执行高级语言程序 D、解释执行汇编语言程序 11、下面4种程序设计语言中,不是面向对象式语言的是() A、JAVA B、Object Pascal C、Delphi D、C 12、不是C语言的基本数据类型是() A、int B、double C、char D、bool 13、在C语言中,为了求两个整数相除之后得到的余数,可以使用运算符() A、/ B、% C、* D、++ 14、数据的逻辑结构分为() A、纯属结构和非线性结构 B、顺序结构和非顺序结构 C、树型结构和图型结构 D、链式结构和顺序结构 15、用链表表示纯属表的优点是() A、便于随机存取 B、便于插入和删除操作 C、花费的存储空间较顺序存储少 D、元素的物理顺序与逻辑顺序相同 16、栈的最主要特点是() A、先进先出 B、先进后出 C、两端进出 D、一端进一端出 17、下面4句结论只有一句是错误的,它是()

(完整版)程序设计基础试题_10_答案

广州大学学年第学期考试卷 课程高级语言程序设计考试形式(开/闭卷,考试/查) 学院系专业班级学号姓名 一、填空题(每空1分,共10分) 1.C源程序的基本单位是(函数)。 2.一个C源程序中至少应包含一个(main()函数)。 3.若a和b均是int型变量,且a和b的初值均为5,则计算表达式a+=b++ 后,a的值为(10 ),b的值为( 6 )。 4.若a、b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,b值为( 4 ),c 值为( 2 )。 5.表达式8.2-2/3 的计算结果是(8 )。 6.在C语言中,整数可用三种数制表示,它们分别是(十进制)、(八进制)和(十六进制)。 二、程序计算题(每小题5分,共15分) 1. # define f(a) printf(“%d”,a) main() { int i,b[]={1,2,3,5,7,9,11,13,15},*p=5+b; for(i=3;i;i--) switch(i) { case 1: case 2: f(*p++); break;

case 3: f(*(--p)); } } 2. main() { int arr_sum(int arr[],int n); int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int *p,total; int (*pt)( int arr[],int n); pt=arr_sum; p=a[0]; total=(*pt)(p,12); printf(“total=%d\n”,total); } arr_sum(int arr[],int n) { int i,sum=0; for(i=0;i

C程序设计基础_复习题

c语言规定,任何非0的数像1 -1等都被认为是真,而0被认为是假 1>1为假 试题一、单选题 1. 已知int k,m=1;执行语句k=-m++;后,k的值是_____。【知识点:难度:正确答案:A】 A.-1 B.0 C.1 D.-2 2. 已知定义int m; float k; 正确的语句是。【知识点:难度:正确答案:D】 A.(int k)%m B.int(k)%m C.int(k%m)D.(int)k%m 3. 当k的值不为0时,在下列选项中能够将k的值赋给变量m,n的是______。【知识点:难度: 正确答案:B】 A.m=k=n B.(m=k)&&(n=m) C.(m=k)||(n=k)D.(n=m)&&(m=k) 4. 已知int x=5; 表达式6>x>1值是_____。【知识点:难度:正确答案:A】 A.0 B.1 C.5 D.表达式语法错 表达式6>x>1 ,先 判断6>x 为0,再 判断0>1,所以值 为0。 (6>x 为1 ,再判 断1>1,所以值为 0。) 5. 下列程序段执行后c值为_____。【知识点:难度:正确答案:D】 int k=7, c=0; while(--k) if (k%3) continue; else c++; A.5 B.4 C.3 D.2 6. 已知字母a的ASCII码为十进制数97,且ch为字符型变量,则执行语句ch=…a?+…D?-…A?;后,ch 中的值为_____。【知识点:难度:正确答案:C】 A.d B.c C.100 D.不确定 7. 设m,n已正确定义,执行语句{for(m=0, n=10; m,能使puts(s)语句正确输出ABCDE字符串的程序 段是______。【知识点:难度:正确答案:C】 A.char s[5] = {"ABCDE"}; puts(s) B.char s[5] = {…A?,?B?,?C?,?D?,?E?}; puts(s); C.char *s; s = "ABCDE"; puts(s); D.char *s; scanf(“%s”,s); puts(s); 《C程序设计基础及实验》

《程序设计基础》题库(50道)

《程序设计基础》题库(50道) <说明> 1、难易程度依次为:易(16道)、较易(38道)、较难(31道)、难(15道)。 2、总共抽8道题,按难易程度:易(1道)、较易(4道)、较难(2道)、难(1道); 按题型:顺序(1道)、分支(2道)、单循环(2道)、多循环(1道)、数组(1道)、字符串(1道) 3、考试要求:先画流程图再写程序,理论考试,2个半小时 一、顺序结构 1、 请定义4个整型变量,并打印输出这4个变量的加、减、乘、除后的结果。(易) 2、 将华氏温度转化成摄氏温度。公式为:C=(5/9)*(F-32),其中F 为华氏温度,C 为 摄氏温度。请根据给定的华氏温度输出对应的摄氏温度。(易) 3、 根据观察,蟋蟀的名叫频率与温度有关,具体的公式为T=(c+40)/10.其中,c 代表 蟋蟀每分钟鸣叫数,T 代表华氏温度。请根据蟋蟀每分钟的鸣叫数输出相应的华氏温度。(易) 4、 编写程序,读入0~1000的一个整数并将其各位数字之和赋给一个整数,如整数932, 各位数字之和为14. (较易) 5、 编程实现两个整数交换位置,例如:int x = 6,y = 9,交换后 x = 9,y = 6。(较易) 6、 求空间两点之间的距离。(提示:空间一点(x,y,z ),可由三个实数来描述)(较易) 7、 已知圆的半径,求圆的面积。(易) 8、 已知一个三角形的三边边长分别为a,b,c ,利用海伦公式求三角形的面积。(较难) 海伦公式: 9、 求两数平方和的算术根。(易) 10、 给定一段时间求出它的秒数。(如计算2小时 17分30秒等于多少秒)(易) 11、 某印刷厂3月1日有A4纸500盒,3月2日又买进进100盒,3月3日用掉A4 纸存量的三分之二,3月4日又买进A4纸存量的2倍,问该印刷厂3月1日到3月4日期间每天的A4纸存量分别是多少盒?(易) 12、 三个小朋友,大毛有糖果50粒,二毛有糖果43粒,三毛有糖果13粒。现在他们 三兄弟做游戏,从大毛开始,将自己的糖果三等分,三兄弟每人一份,多余的自己吃掉;然后二毛和三毛也依次这样做,问最后三兄弟各有多少糖果?(较易) 二、分支结构 13、 两个整数比较大小,输出较大值。(易) 14、 三个整数比较大小,输出最大值。(较易) 15、 求下列函数中y 的值。(较易) y=10 (x=0) y=3x+5 (x>0) y=x-2 (x<0) 16、 判断某年是否为闰年。(闰年的条件是:该年的年号能被4整除且不能被100整除, 或该年的年号能被400整除,则该年是闰年,否则不是闰年。)(较易) 17、 根据某同学的成绩,判定其成绩的等级。(90~100分为“优秀”,80~89为“良好”, 70~79为“中等”,60~69为“及格”,60分以下为“不及格”。)(较易) ))()((c p b p a p p S ---=2 c b a p ++=

程序设计基础试卷与答案

程序设计基础 一、单选题(每题2分,共60分) 1. 以下对C语言函数的描述中,正确的是()。 A. C程序必须由一个或一个以上的函数组成 B. C函数既可以嵌套定义又可以递归调用 C. 函数必须有返回值,否则不能使用函数 D. C程序中有调用关系的所有函数必须放在同一个程序文件中 2. 在C语言中,char型数据在内存中的存储形式是()。 A. 补码 B. 反码 C. 原码 D. ASCII码 3. 以下叙述中不正确的是()。 A. 一个好的程序应该有详尽的注释 B. 在C程序中,赋值运算符的优先级最低 C. 在C程序中,j++;是一条赋值语句 D. C程序中的#include和#define均不是C语句 4. 应用缓冲文件系统对文件进行读写操作,关闭文件的函数名为()。 A. fclose() B. close() C. fread() D. fwrite 5. 设C语言中,int类型数据占2个字节,则short类型数据占()。 A. 1个字节 B. 2个字节 C. 4个字节 D. 8个字节 6. 已知函数的调用形式fread(buffer,size,count,fp);其中buffer代表的是()。 A. 一个整数,代表要读入的数据项总数 B. 一个文件指针,指向要读的文件 C. 一个指针,指向要读入数据的存放地址 D. 一个存储区,存放要读的数据项 7. 在C语言中,形参的缺省存储类是()。 A. auto B. register C. static D. extern 8. 以下标识符中,不能作为合法的C用户定义标识符的是()。 A. putchar B. _double C. _123 D. INT 9. 在C语言中,能代表逻辑值“真”的是()。 A. True B. 大于0的数 C. 非0整 D. 非0的数 10. 已知x=43,ch='A',y=0;则表达式(x>=y&&ch<'B'&&!y)的值是()。 A. 0 B. 语法错 C. 1 D. "假" 11. 函数rewind的作用是()。 A. 使位置指针重新返回文件的开头 B. 将位置指针指向文件中所要求的特定位置 C. 使位置指针指向文件的末尾 D. 使位置指针自动移至下一个字符位置 12. 以下正确的说法是:在C语言中()。 A. 实参和与其对应的形参各占用独立的存储单元 B. 实参和与其对应的形参共占用一个存储单元

程序设计基础试题一知识讲解

山东科技大学200 —200 学年第学期 《程序设计基础》考试试卷一 班级姓名学号____________ 一、选择题(20分) 1.算法具有五个特性,以下选项中不属于算法特性的是B (A)有穷性(B)简洁性(C)可行性(D)确定性 2.以下选项中可作为C语言合法常量的是A (A)-80. (B)-080 (C)-8e1.0 (D)-80.0e 3.以下叙述中正确的是C (A)用C语言实现的算法必须要有输入和输出操作 (B)用C语言实现的算法可以没有输出但必须要有输入 (C)用C程序实现的算法可以没有输入但必须要有输出 (D)用C程序实现的算法可以既没有输入也没有输出 4.以下不能定义为用户标识符是D (A)Main (B) _0 (C) _int (D) sizeof 5.以下选项中,不能作为合法常量的是B (A)1.234e04 (B)1.234e0.4 (C)1.234e+4 (D)1.234e0 6.数字字符0的ASCII值为48,若有以下程序 main() {char a='1',b='2'; printf("%c,",b++); printf("%d\n",b-a);} 程序运行后的输出结果是C (A)3,2 (B)50,2 (C)2,2 (D)2,50

7.有以下程序 main(){ int m=12,n=34; printf("%d%d",m++,++n); printf("%d%d\n",n++,++m);}程序运行后的输出结果是A (A)12353514 (B)12353513 (C)12343514 (D)12343513 8.有以下语句: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); 9.有以下程序 main(){ int m,n,p; scanf("m=%dn=%dp=%d",&m,&n,&p); printf("%d%d%d\n",m,n,p); } 若想从键盘上输入数据,使变量M中的值为123,N中的值为456,P中的值为789,则正确的输入是A A)m=123n=456p=789 B)m=123 n=456 p=789 C)m=123,n=456,p=789 D)123 456 789 10.有以下程序 main(){ int a,b,d=25; a=d/10%9;b=a&&(-1); printf("%d,%d\n",a,b); } 程序运行后的输出结果是B A)6,1 B)2,1 C)6,0 D)2,0 11.有以下程序 main(){ int i=1,j=2,k=3; if(i++==1&&(++j==3||k++==3)) printf("%d %d %d\n",i,j,k);}程序运行后的输出结果是D (A)1 2 3 (B)2 3 4 (C)2 2 3 (D)2 3 3

《程序设计基础》考试试卷一

《程序设计基础》考试试卷一 班级姓名学号____________ 一、选择题(20分) 1.算法具有五个特性,以下选项中不属于算法特性的是 (A)有穷性(B)简洁性(C)可行性(D)确定性 2.以下选项中可作为C语言合法常量的是 (A)-80. (B)-080 (C)-8e1.0 (D)-80.0e 3.以下叙述中正确的是 (A)用C语言实现的算法必须要有输入和输出操作 (B)用C语言实现的算法可以没有输出但必须要有输入 (C)用C程序实现的算法可以没有输入但必须要有输出 (D)用C程序实现的算法可以既没有输入也没有输出 4.以下不能定义为用户标识符是 (A)Main (B) _0 (C) _int (D) sizeof 5.以下选项中,不能作为合法常量的是 (A)1.234e04 (B)1.234e0.4 (C)1.234e+4 (D)1.234e0 6.数字字符0的ASCII值为48,若有以下程序 main() {char a='1',b='2'; printf("%c,",b++); printf("%d\n",b-a);} 程序运行后的输出结果是 (A)3,2 (B)50,2 (C)2,2 (D)2,50

7.有以下程序 main(){ int m=12,n=34; printf("%d%d",m++,++n); printf("%d%d\n",n++,++m);}程序运行后的输出结果是 (A)12353514 (B)12353513 (C)12343514 (D)12343513 8.有以下语句:int b;char c[10];,则正确的输入语句是 A)scanf("%d%s",&b,&c); B) scanf("%d%s",&b,c); (C)scanf("%d%s",b,c); D)scanf("%d%s",b,&c); 9.有以下程序 main(){ int m,n,p; scanf("m=%dn=%dp=%d",&m,&n,&p); printf("%d%d%d\n",m,n,p); } 若想从键盘上输入数据,使变量M中的值为123,N中的值为456,P中的值为789,则正确的输入是 A)m=123n=456p=789 B)m=123 n=456 p=789 C)m=123,n=456,p=789 D)123 456 789 10.有以下程序 main(){ int a,b,d=25; a=d/10%9;b=a&&(-1); printf("%d,%d\n",a,b); } 程序运行后的输出结果是 A)6,1 B)2,1 C)6,0 D)2,0 11.有以下程序 main(){ int i=1,j=2,k=3; if(i++==1&&(++j==3||k++==3))

vfP程序设计基础习题集

VFP程序设计习题 习题一 一、判断题(1分/题,共20分,对打画√,错打×) 1.建立自由表分两步:定义表结构和输入数据。 2.表间的关系分三种:一对一关系、一对多关系和多对多关系。 3.若要使用多个表,就要使用多个工作区。 4.在应用程序中可以通过使用该工作区的表的别名来标识工作区。 5.对象具有属性,而属性只能在设计阶段设置。 6.引用对象的方法分绝对引用和相对引用。 7.表单集是指两个以上的表单同时输出,并且可以通过程序或鼠标交换输出权。 8.一条命令可分几行写,在行结束处用“:”表示一行未完,转入下一行。 9.VFP主要数据容器有:表记录、变量和数组。 10.报表包括两个基本组成部分:数据源和布局。 11.如果不想使用“报表向导”或“快速报表”设计报表,可以从空白报表布局开始,然后自己添加控件。 12.表选择查询输出的去向可以是浏览、报表或表单。 13.视图与查询相类似的地方是:可以用来从一个或多个相关联的表中提取有用信息。14:视图与表相类似的地方是:可以用来更新其中的信息,并将更新结果永久保存在磁盘上。15.在“数据库设计器”中,视图的显示方式与表在分层结构中的显示方式相同,所不同的是视图名代替了表名。 16.一个视图在使用时,将作为临时表在自己的工作区中打开。 17.如果打开基于本地表的视图,则在Visual FoxPro的另一个工作区中基表被同时打开。18.在视图中更新数据与在表中更新数据类似,使用视图还可以对其基表进行更新。19.VFP中的NULL表示未知数据,便于与含有NULL值的SQL数据库一起工作。20.索引是改变表的物理顺序,排序是排列表的逻辑顺序。 二、选择题(每个选择3分,共24分) 1.统计女生人数并将结果存放于变量X中的命令是() (A).COUNT FOR .NOT. 性别=”男” TO X (B).COUNT FOR ( 性别=”女”)=.T. TO X (C).SUM FOR ( 性别<>”男”)=.T. TO X (D).SUM FOR 性别=”女” TO X 2. 在已打开的表中,要永久删除当前记录位置开始的10条记录,可用() (A)先执行DELETE NEXT 10命令,后用PACK命令 (B)先执行DELETE RECORD 10命令,后用PACK命令 (C)先执行DELETE FOR RECORD> 10命令,后用PACK命令 (D)ZAP NEXT 10 3.按数值型字段”总分”进行索引,使其按降序排列的命令是() (A)INDEX ON -总分TO WP (B)INDEX ON 总分/A TO WP (C)INDEX ON 总分TO WP (D)INDEX ON 总分/D TO WP 4.下列操作后,不改变表记录指针的命令是()

程序设计基础习题

7.8 习题 1. 编制一个C 程序,从键盘输入一个正整数,如果该数为素数,则输出该素数,否则输出该数的所有因子(除去1与自身)。 2. 编制一个C 程序,从键盘输入一个正整数N ,然后计算并输出 S=12||1222N ++++ 最后计算并输出 T=1121311 1-+-+-+ ()K K 其中K S =的整数部分。 3. 编制一个C 程序,计算并输出多项式的值 S x x x n n x n n =++ -+--++--+1050505120505105230505105123..(.)!.(.)(.)!.(.)(.)! 的值,直到 |S n -S n-1|<0.000001 为止。其中x 从键盘输入。 4. 编制一个C 程序,计算下列级数和: s n =1+(2/1)+(3/2)+(5/3)+(8/5)+(13/8)+…+(a n /a n-1) 其中n ≥1,由键盘输入;s 1=1。 5. 编制一个C 程序,计算并输出下列级数之和: e x x x x n x n =+++++12323!!! 其中n 与x 从键盘输入。 6. 编制一个C 程序,输出能写成两个数平方之和的所有三位数。 7. 如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,则称之为“完数”。例如,6的因子为1、2、3,且1+2+3=6,即6是一个“完数”。编制一个C 程序,计算并输出1000以内的所有“完数”之和。 8. 编制一个C 程序,从键盘输入30个实数,分别计算并输出以下5个量:所有正数之和,所有负数之和,所有数的绝对值之和,正数的个数,负数的个数。 9. 100元钱买100只鸡,母鸡3元/只,公鸡2元/只,小鸡0.5元/只。编制一个C 程序,制定买鸡方案。 10. 设A ,B ,C ,D ,E 五人,每人额头上贴了一张或黑或白的纸。五人对坐,每人都可以看到其他人额头上的纸的颜色,但都不知道自己额头上的纸的颜色。五人相互观察后开始说话: A 说:我看见有三人额头上贴的是白纸,一人额头上贴的是黑纸。 B 说:我看见其他四人额头上贴的都是黑纸。 C 说:我看见有一人额头上贴的是白纸,其他三人额头上贴的是黑纸。 D 说:我看见四人额头上贴的都是白纸。 E 什么也没说。 现在已知额头上贴黑纸的人说的都是真话,额头上贴白纸的人说的都是假话。编制一个

程序设计基础-题库 (填空)

程序设计基础-题库 1、C源程序的基本单位是___。 答案:函数; 2、在C语言中,输入操作是由库函数___完成的,输出操作是由库函数___完成的。答案: scanf;scanf();printf;printf(); 3、一个C源程序中,至少应该包含一个___。 答案:主函数;main函数;main();主函数main; 4、C语言程序中,一个函数由两部分组成,分别是__和__。 答案:函数的首部;函数首部;函数体;函数头;函数的头;函数体;函数的首部;函数首部;函数头;函数的头; 5、请写出以下表达式的值: 10/4*3 答案: 6 ; 6、已有定义int x;float y;且执行scanf("%3d%f",&x,&y);语句时,从第一列开始输入数据12345□678,则x的值为⑴ ,y的值为⑵ 。 答案: 123 ; 45.0 ; 解析:读取数据格式中规定域宽时,系统仅读取指定宽度的数据。 7、以下程序的输出结果是()。 main() {int x=1,y=2; printf("x=%d y=%d *sum*=%d\n",x,y,x+y);

printf("10 Squared is :%d\n",10*10); } 答案: x=1 y=2 *sum*=3 10 Squared is :100 ; 解析: 8、假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。请填空。 a+=( );b=a-( );a-=( ); 答案: b ; b ; b ; 解析: 9、若x为int型变量,则执行以下语句后x的值为()。 x=7; x+=x-=x+x; 答案: -14 ; 解析: 10、以下程序实现输出x,y,z三个数中的最大者。请分析程序填空。 main() {int x=4,y=6,z=7;; int ____; if(____) u=x;

《C语言程序设计基础》--试卷A及参考答案

《c语言程序设计基础》试卷 (A卷) 考试时间:90分钟闭卷任课老师: 班级:学号:姓名:成绩: (每小题2分,共30分) 、由C++源文件编译生成的目标文件的缺省扩展名为() A、cpp B、exe C、obj D、lik 、下列中,不是C++合法的标识符() A、2mn B、m123 C、kk D、a_1 、C++中,基本数据类型不包括() A、int B、float C、char D、class 、x和y均为bool量,则x| |y为真的条件是() A、它们均为真 B、其中一个为真 C、它们均为假 D、其中一个为假 、C++中,一个字符型数据在内存中占()字节。 A、4 B、2 C、1 D、8 、字符串常量”hello”的长度是() A、5 B、6 C、7 D、8 、以下语句,int i=2,j=2,m,n;m=i++;n=++j;则m,n,i,j的值分别为() A、2,3,2,2 B、2,3,3,3 C、2,2,3,3 D、3,3,2,2 、假定a为一个整型数组名,则元素a[4]的字节地址为() A、a+4 B、a+8 C、a+16 D、a+32 、 x>0 || y==5的相反表达式为()。 A、 x<=0 || y!=5 B、 x<=0 && y!=5 C、 x>0 || y!=5 D、 x>0 && y==5 、在下面的函数声明中,存在着语法错误的是() A、void BC(int a , int) B、void BD(int , int) C、void BE(int , int=5) D、int BF(int x ; int y) 、循环体至少被执行一次的语句为()。 A、for循环 B、while循环 C、do循环 D、任一种循环 、已知一函数中有下列变量定义,其中属于静态变量的是() A、int a=5; B、static double b; C、register char c; D、auto short d;

相关文档
相关文档 最新文档