C语言拓展训练编程题
- 格式:doc
- 大小:44.00 KB
- 文档页数:7
单元3 拓展训练一、单项选择题1.表达式各运算量不能自动转换数据类型的下列选项是()。
A.char转换为intB.short转换为intC.unsigned char转换为unsigned intD.unsigned char转换为unsigned short2.定义int i;float a;double k;则下列表达式类型为double是().A.i*10+a+'k' B.i*10+a+(int)kC.i*10.0+a D.i*10+a+(float)k3.若x=2,y=3,则x&y的结果是()。
A.1 B.2 C.3 D.04.表达式0x13&0x17的值是是()。
A.0x17 B.1C.0x13 D.0x1f5.设有char x=3,y=6,z;z=x^y<<2;则z的二进制值是()。
A.00010100 B.00011000C.00011100 D.000110116.在位运算中,操作数每左移一位,其结果相当于是()。
A.操作数乘以2 B.操作数除以2C.操作数乘以4 D.操作数乘以47.设有定义语句:char c1=92,c2=92;则以下表达式中值为零的是()。
A.c1^c2 B.c1&c2C.~c2 D.c1|c28.设int b=2;表达式(b>>2)/(b>>1)的值是()。
A.4 B.2 C.0 D.89.整型变量x和y的值相等、且为非0值,则以下选项中,结果为零的表达式是()。
A.x || y B.x | y C.x & y D.x ^ y 10.设有int x=5;char z='a';则printf("%d\n",(x&1)&&(z<'z'));输出的结果是()。
A.0 B.1 C.2 D.311.在VC++6.0系统中,函数调用时实参的求值顺序是()。
实验⼀熟悉C语⾔的开发环境和C程序的上机步骤实验⼀熟悉C语⾔的开发环境和C程序的上机步骤⼀、实验⽬的和要求:1. 了解C程序设计的编译系统,熟悉各菜单的功能,掌握在该系统上编辑、编译、连接和运⾏⼀个C程序的⽅法。
2. 通过调试、运⾏简单的C程序,初步了解C语⾔源程序的特点⼆、实验内容:1. 编写C程序,运⾏时输出:Hello world!。
#include <stdio.h> //这是编译预处理指令int main() //定义主函数{ //主函数体开始printf("Hello world\n"); //输出return 0; //返回函数值为0}2. 编写C程序,运⾏时输出以下图形:********************#include <stdio.h>int main(){printf("*****\n");printf(" *****\n");printf(" *****\n");printf(" *****\n");return 0;}3. 编写C程序实现:输⼊两个整数a、b,输出它们的和。
#include<stdio.h>int main(){int a,b;printf("请输⼊两个整数:a,b\n");scanf("%d%d", &a,&b);printf("%d\n",a+b);return 0;}4. 编写C程序实现:输⼊两个整数a、b,输出它们中的最⼤者。
#include<stdio.h>int main(){int a,b;printf("请输⼊两个整数:a,b\n");scanf("%d%d", &a,&b);printf("%d\n",a>b?a:b);return 0;}5. 编写C程序实现:求三个数中的最⼤者。
单元8 拓展训练答案一、单项选择题1.下面有关结构体的叙述中,不正确的是(C )。
A.结构体中的每个成员均须作类型说明B.成员的类型可以是基本类型C.成员的类型不能是其它的结构体D.成员的类型可以是数组、指针2.下面有关typedef的叙述中,正确的是(D )。
A.typedef用于定义新类型B.typedef用于给已定义变量取别名C.typedef用于定义新变量D.typedef用于给已定义类型取别名3.若有如下定义,则下列叙述中正确的是(C )。
typedef struct stu { int a, b; } student ;A.stu 是结构体变量B.student 是结构体变量C.student 是结构体类型D.a和b是结构体变量4.若有以下说明和定义typedef int *INTEGER;INTEGER p,*q;以下叙述正确的是(A )。
A.p是基类型为int的指针变量B.可用INTEGER代替intC.q是基类型为int的指针变量D.P是int型变量5.设有以下说明语句struct ex{ int x;float y;char z;}example;则下面的叙述中不正确的是( B )。
A.struct是结构体类型的关键字B.example是结构体类型C.x,y,z都是结构体成员名D.struct ex是结构体类型名6.以下叙述中正确的是(C )。
A.结构体中的成员不能是结构体类型B.结构体的类型不能是指针类型C.结构体中成员的名字可以和结构体外其他变量的名称相同D.在定义结构体类型时就给结构体分配存储空间7.设有以下定义,正确的赋值语句是(A )。
struct student{int num;char name[10];}stu,*p;A.p=&stu.num; B.p=stu;C.p=&stu; D.p=(struct student*)stu.num; 8.若有如下定义,则下列输入语句中正确的是(B )。
C语言拓展训练编程题选择结构(1) 编程判断输入整数 x 的正负性和奇偶性。
(2) 已知银行整存整取存款不同期限的月息利率分别为:要求输入存钱的本金和期限, 求到期时能从银行得到的利息与本金的合计。
(3) 通过键盘输入字符,将输入的字符分为控制、数字、大写字母、小写字母和其他字符等五类。
(4) 简单计算器。
请编写一个程序计算表达式: datal op data2 的值。
其中 op 为运算符 +、—、*、/。
(5) 输入年份 year 和月 month ,求该月有多少天。
判断是否为闰年,可用如下 C 语言表达式: year%4==0 && year%100!=0 || year%400==0 。
若表达式成立 (即表达式值为 1),则 year为闰年 ;否则 ,表达式不成立 (即值为 0), year 为平年。
(6) 对输入的行、单词和字符进行计数。
我们将单词的定义进行化简 ,认为单词是不包含空格、制表符 (\t) 及换行符的字符序列。
例如:“ a+b+c ”认为是1个单词,它由5个字符组成。
又如:“ xy abc ”,为 2 个单词 ,6 个字符。
0.63%0.66% 月息利率 = 0.0.75%0.84%期限一年期限=年 69% 期限三年期限五年期限八年(7)从键盘输入任意的字符,按下列规则进行分类计数。
第-类'0','1 ','2','3','4 ','5','6 ', 7','8','9'第=类'+','-','*','/','%','='第三类其它字符当输入字符''时先计数,然后停止接收输入,打印计数的结果。
(8)输入10 个整数,求其中正数的个数及平均值,精确到小数点后两位。
(9)已知一个首项大于0 的等差数列的前四项和为26 ,前四项的积为880 ,求此数列。
(10)输入a、b、c、 d 四个整数,求最小值min 和最大值max 。
(11)编写程序,输入三角型的三条边长,求其面积。
以下是一些C语言编程训练题,你可以选择其中一个或多个进行练习:
1. 编写一个C语言程序,将用户输入的字符串反转并输出。
2. 编写一个C语言程序,计算并输出给定数字的阶乘。
3. 编写一个C语言程序,找出数组中的最大值和最小值。
4. 编写一个C语言程序,计算给定年份是否为闰年。
5. 编写一个C语言程序,将两个整数相加并输出结果。
6. 编写一个C语言程序,找出给定数字中的质数。
7. 编写一个C语言程序,实现冒泡排序算法。
8. 编写一个C语言程序,计算给定数字的平方根。
9. 编写一个C语言程序,将两个字符串连接起来并输出。
10. 编写一个C语言程序,实现二分查找算法。
这些题目可以帮助你提高C语言编程技能,掌握基本的语法和数据结构。
记得在练习时,注意代码的简洁、可读性和效率。
(1) 编程判断输入整数x的正负性和奇偶性。
(2) 银行整存整取存款不同期限的月息利率分别为:0.63% 期限一年0.66% 期限=年月息利率= 0.69% 期限三年0.75% 期限五年0.84% 期限八年要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。
(3) 通过键盘输入字符,将输入的字符分为控制、数字、大写字母、小写字母和其他字符等五类。
(4) 简单计算器。
请编写一个程序计算表达式:datal op data2的值。
其中op为运算符+、—、*、/。
(5) 输入年份year和月month,求该月有多少天。
判断是否为闰年,可用如下C语言表达式:year%4==0 && year%100!=0 || year%400==0。
假设表达式成立(即表达式值为1),那么year为闰年;否那么,表达式不成立(即值为0),year为平年。
(6) 对输入的行、单词和字符进展计数。
我们将单词的定义进展化简,认为单词是不包含空格、制表符(\t)及换行符的字符序列。
例如:“a+b+c〞,认为是1个单词,它由5个字符组成。
又如:“xy abc〞,为2个单词,6个字符。
(7) 从键盘输入任意的字符,按以下规那么进展分类计数。
第-类'0','1','2','3','4','5','6','7','8','9'第=类'+','-','*','/','%','='第三类其它字符当输入字符'\'时先计数,然后停顿接收输入,打印计数的结果。
(8) 输入10个整数,求其中正数的个数及平均值,准确到小数点后两位。
(9) 一个首项大于0的等差数列的前四项和为26,前四项的积为880,求此数列。
(10) 输入a、b、c、d四个整数,求最小值min和最大值max。
(11) 编写程序,输入三角型的三条边长,求其面积。
注意:对于不合理的边长输入要输出数据错误的提示信息。
(1) 从键盘输入十个整数,求这十个整数之和。
(2) 从键盘中读入一系列字符,直到输入字母“a〞时才停顿。
(3) 对输入的行和字符进展计数一行是以一个回车符(’\n’)作为行完毕标记的,这样在程序中可以通过搜索’\n’对行进展计数。
当输入[CTRL+D]时表示文件输入完毕,停顿计数。
(4) 输出如以下图所示的下三角形乘法九九表。
1 2 3 4 5 6 7 8 9- - - - - - - - - - - - - - - - - - - - - -12 43 6 94 8 12 165 10 15 20 256 12 18 24 30 367 14 21 28 35 42 498 16 24 32 40 48 56 649 18 27 36 45 54 63 72 81(5) 求1到10的阶乘的和。
(6) 输入一个正整数,要求以相反的顺序输出该数。
例如输入12345,输出位54321。
(7) 求555555的约数中最大的三位数是多少?(8) 输入10个整数,求其中正数的个数及平均值,准确到小数点后两位。
(9) 输入n值,打印以下高为n的等腰三角形。
************************************ 当n=6时(10) 输入n值,请编程输出如以下图形(例n=3时)。
* ** *** ** *(11) 编程打印数字金字塔。
l1 2 11 2 3 2 11 2 3 4 3 2 11 2 3 4 5 4 3 2 11 2 3 4 5 6 5 4 3 2 11 2 3 4 5 6 7 6 5 4 3 2 11 2 3 4 5 6 7 8 7 6 5 4 3 2 11 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1(12) 编程输出以下高度为n 的图形。
1 3 6 10 15 212 5 9 14 204 8 13 197 12 1811 1716当n=6时(13) 请输入n 值,编写程序输出以下图形(例如n=5)。
1 2 3 4 51 123 41 1 12 31 1 1 1 21 1 1 1 1(14) 求以下算式的值:SUM=1+ 1/2+ 1/3+ 1/4+...+ 1/999+ 1/1000(15) 求下式的值:(16) 编写-个程序,读入一个整数N;假设N 为非负数,那么计算N 到2*N 之间的整数和;假设N 为一个负数,那么求2*N 到N 之间的整数和。
利用for 和while 写出两个程序。
(17) 100匹马驮100担货,大马一匹驮 3担,中马一匹驮 2担,小马两匹驮 1担。
试编写程序计算大、中、小马的数目。
〔18〕求解爱因斯坦数学题。
有一条长阶梯,假设每步跨2阶,那么最后剩余1阶,假设每步跨3阶,那么最后剩2阶,假设每步跨5阶,那么最后剩4阶,假设每步跨6阶那么最后剩5阶,假设每步跨7阶,最后才正好一阶不剩。
请问,这条阶梯共有多少阶?数组(1) 反向输出有5个元素的int 数组中各元素的值。
(2) 在一个二维数组中形成并输出如下矩阵:1 1 1 1 12 1 1 l 1A= 3 2 1 l l∑∑∑===++1015011001)*(k k k k k k k4 3 2 1 15 4 3 2 1(3) 求矩阵A(2 ×3)的转置矩阵B(3×2)。
1 2 3 1 4A= B= 2 54 5 6 3 6(4) 某班期终考试科目为高等数学(MT)、英语(EN)和物理(PH),有30人参加考试。
为评定奖学金,要求统计并输出一个表格,表格内容包括学号、各科分数、总分和平均分,并标出三1]课均在90分以上者(该栏标志输出为“Y〞,否那么为“N〞),表格形式如下:N0 HT EN PH SUM V >90------------------------------------1 97 87 92 276 92 N2 92 91 90 273 91 Y3 90 81 82 253 84 N可以将学生的学号和各科成绩放在数组a[30][4]中,然后进展统计处理。
(5) 有一个3 ×4的矩阵,求其中的最大元素的值。
(6) 编写程序实现将字符串str2拷贝到字符串strl。
(7) 输入英文的星期几,查找星期表后输出对应的数字。
具体的算法是:假设发现与表中某项一样,那么输出该字符串在表中的位置(序号):假设查到表尾仍不一样,那么输出错误信息。
设星期表的内容如以下图所示。
(8) 给定某年某月某日,将其转换成这一年的第几天并输出。
(9) 如果一个正整数等于其各个数字的立方和,那么该数称为阿姆斯特朗数(亦称为自恋性数)。
如407=43+03+73就是一个阿姆斯特朗数。
试编程求1000以内的所有阿姆斯特朗数。
(10) 写出下面给出的数组说明中所定义的数组的数组名、类型、维数、数组体积,并给出各数组元素在计算机中占用存储单元的情况。
int x[4]={1,2,3,4};float y[3][4]={1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8};int z[2][2][3]={1,2,3,4,5,6,7,8,9,10,11,12};int i[2][3]={{ },{4,5,6}},j[2][2][2]={{ },{3,4},{ },{7,8}};char c1[10]={〞Happy.〞},c2[ ][3]={{〞*〞},{〞**〞},{〞*〞}};(11) 设某班50人,写一程序统计某一单科成绩各分数段的分布人数,每人的成绩随机输入,并要求按下面格式输出统计结果(〞*〞表示实际分布人数)。
0 一一39 *40 一一49 **50 一一59 *****............90 一一100 ****(12) 输入=维数组a[3][5],打印其中最小值和最大值及其对应的行列位置。
(13) 输入5×5的数组,编写程序实现:(a)求出对角线上各元素的和;(b)求出对角线上行、列下标均为偶数的各元素的积;(c)找出对角线上其值最大的元素和它在数组中的位置。
(14) 简单的密码加密程序。
其加密过程是先定义一张字母加密对照表。
输入输出输入输出a d i ab w k bc k ; cd :w ee I将需要加密的一行文字输入加密程序,程序根据加密表中的对应关系,可以很简单地将输入的文字加密输出,对于表中未出现的字符那么不加密。
(15) 使用二维数组输入〞BASIC〞,〞ADA〞,〞Pascal〞,〞C〞,〞Fortran〞,将它们按从小到大的顺序排列后输出。
(16) 某运动会上女子百米运发动决赛成绩。
要求编写程序,按成绩排序并按名次输出排序结果,包括名次、运发动号、成绩三项内容。
(17) 将矩阵A[2][3]的六个元素送入矩阵A[3][2]中,使其顺时针旋转90度。
例:1 2 3 4 1a= b= 5 24 5 6 6 3(18) 输入10个人的序号和成绩,对成绩从小到大进展排序,输出排序后的序号和成绩(19) 对数组A中的N(0<N<100)个整数从小到大进展连续编号,要求不能改变数组A中元素的顺序,且一样的整数要具有一样的编号。
例如:A=(5,3,4,7,3,5,6) 那么输出为:(3,1,2,5,1,3,4)(20) 现将不超过2000的所有素数从小到大排成第一行,第二行上的每个数都等于它“右肩〞上的素数与“左肩〞上的素数之差。
请编程求出:第二行数中是否存在这样的假设干个连续的整数,它们的和恰好是1898?假设存在的话,又有几种这样的情况?第一行:2 3 5 7 11 13 17 .....1979 1987 1993第二行:1 2 2 4 2 4 .....8 6(21) 下面是5×5的螺旋方阵。
请编程生成n×n(n<10)阶方阵。
1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9函数(1) 将一个数的数码倒过来所得到的新数叫原数的反序数。
如果一个数等于它的反序数,那么称它为对称数。
求不超过1993的最大的二进制的对称数。
(2) 将1、2、3、4、5、6、7、8、9九个数字分成三组,每个数字只能用一次,即每组三个数不许有重复数字,也不许同其它组的三个数字重复,要求将每组中的三位数组成一个完全平方数。
(3) 对数组A中的N(0<N<100)个整数从小到大进展连续编号,要求不能改变数组A中元素的顺序,且一样的整数要具有一样的编号。
例如:A=(5,3,4,7,3,5,6) 那么输出为:(3,1,2,5,1,3,4)(4) 编写函数insert(s1,s2,f),实现在字符串s1中的指定位置f处插入字符串s2。