C语言试题集
- 格式:doc
- 大小:220.50 KB
- 文档页数:46
C语言程序设计练习题顺序程序设计1.输入两个整型变量a,b的值,输入提示格式为a=b= ,a+b,a-b,a*b,a/b,(float)a/b,a%b 的结果,要求连同算式一起输出,每个算式占一行。
例:a等于10,b等于5,a+b的结果输成10+5=152.输入一个非负数,计算以这个数为半径的圆周长和面积。
3.输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321).4.输入任意大小的三个整数,判断其中是否有两个奇数一个偶数。
若是,则输出“YES”,不是则输出“NOT” (要求用条件表达式进行判断,不使用if语句)5.求前驱字符和后继字符。
输入一个字符,找出它的前驱字符和后继字符,并按ASCII码值,按从大到小的顺序输出这三个字符及其对应的ASCII码值。
6.输入三角形的边长,求三角形面积。
(面积=sqrt(s(s-a)(s-b)(s-c)), s=(a+b+c)/2) 分支和循环程序设计1.输入两个字符,若这两个字符之差为偶数,则输出它们的后继字符,否则输出它们的前趋字符。
这里的前趋和后继是指输入的两个字符中,较小字符前面的和较大字符后面的那个字符。
2.输入整数a和b,如果a 能被b整除,就输出算式和商,否则输出算式、整数商和余数。
3.输入某个点A的平面坐标(x,y),判断(输出)A点是在圆内、圆外还是在圆周上,其中圆心坐标为(2,2),半径为1 。
4.输入年号和月份,输出这一年的该月的天数。
(一个年份,先判断是否闰年)5.输出9*9乘法表。
6.求爱因斯坦数学题。
有一条长阶,若每步跨2阶,则最后剩余1阶;若每步跨3阶,则最后剩2阶;若每步跨5阶,则最后剩4阶;若每步跨6阶,则最后剩5阶;若每步跨7步,最后正好一阶不剩。
7.输入一串字符,直到输入一个星号(*)为止,统计(输出)其中的字母个数和数字字符个数。
8.计算斐波那契分数序列前n项之和(n是某个常数).( 2/1,3/2,5/3,8/5,13/8,21/13,...... 前一项的分子与分母之和作为后一项的分子。
前一项的分子和作为后一项的分母。
)。
9.输入一个正整数n,输出n行的正(倒)三角形宝塔图案.10.输出2---n之间的所有素数(即质数).11.从键盘输入一个正整数n,编程判断这个数是否同时含有奇数字和偶数字。
12.输入一个正整数,判断其中各位数字是否奇偶数交替出现。
是,输出"YES",不是输出"NOT"。
(例:2134和1038都是奇偶数交替出现;而22345不是.)13.设某县2000年工业总产值为200亿元,如果该县预计平均年工业总产值增长率为4.5%,那么多少年后该县年工业总产值将超500亿元?14.输入一个三位数,判断是否是一个“水仙花数”。
水仙花数是指三位数的各位数字的立方和等于这个三位数本身。
例如: 153=1*1*1+5*5*5+3*3*315.输出1-999中能被3整除,而且到少有一位数字是5的所有数字。
16.输入一串字符,直到输入一个星号为止,统计(输出)其中的正整数和负数个数,以及所有正整数的平均值和所有负数的平均值。
17.一个整数等于该数所有因子之和,则称该数是一个完数。
例如:6和28都是完数。
因为:6=1+2+3,28=1+2+4+7+14. 输出三位数中所有完数。
数组的应用1. 设数组int a[N]的元素全不相等,求出a中最大元素和次大元素.2. 输入10个数,将10个整数按生序排列输出,并且奇数在前,偶数在后。
如果输入的10个数是:10 9 8 7 6 5 4 3 2 1 ,则输出:1 3 5 7 8 2 4 6 8 10。
(编程提示:可利用2个数组变量,一个用来存放输入的整数,输入后,对这个数组进行排序,然后将数据复制到另一个数组中,先复制奇数再复制偶数)。
3.将数组a[n]的每一个元素依次循环向后移动一位。
4.将输入数组a[n]中的n个元素,再输入另一个数x,查看a中是否有值为x的元素,若有,则输出其下标,若没有,则输出-1。
5. 编写一个程序,其功能是给一维数组a输入任意6个整数,假设为:5 7 4 8 9 1,然后建立一个具有以下内容的方阵,并打印出来(屏幕输出)。
5 7 4 8 9 11 5 7 4 8 99 1 5 7 4 88 9 1 5 7 44 8 9 15 77 4 8 9 1 56.求数组int a[n]中奇数的个数和平均值,以及偶数个数和平均值。
7.统计输入的一串字符(“假设以…\n‟结束”)中,大写字母A,B,...,Z各出现的次数。
(提示,用一个数组count[26]计数各个字母出现的次数,count[0]表示A出现的次数,count[1]表示B出现的次数,...,count[25]表示字母Z出现的次数。
初始时count的各元素值为0。
以后,每读入一个字符ch ,若它是一个大写字母,就让相应计数单元count[ch-'A']加1。
)8.将一个正整数n(长整型)输出成“千分位”形式,即从个位数起,每三位之间加一个逗号,例如,将7654321输出成7,654,321.(提示:需要先将n拆成一位一位的数字,然后再输出。
然后,拆数时,只能从个位数拆起,而输出时,又得从高位数起输出,所以不得不将拆出的数字存放在一个数组中,然后再输出.while(n){ digit[++i]=n%BASE; n/=BASE;} )9.编制一个计算两个矩阵转置的通用程序。
10.输入两串字符(假定不输入大写字母),每串以“&”结束,(1)输出在任一串中至少出现一次的字母。
(2)输出在两个串中的任一串中重复出现过的字母,(3)输出在两个串中都出现的字母。
11.录入一段英文文章(存放在字符数组a[n]中),统计其中的单词个数,并按照单词长度由小到大次序输出各个单词。
假定这段文章不超过1000个字符,单词不超过240个。
请自我设计录入结束条件。
12.求出数组int a[M][N]每行元素的平均值和平均最大的行号。
13.求A[M][N]与B[M][N]两矩阵的和矩阵C[M][N]和差矩阵D[M][N].(矩阵的值由键盘输入)结构体编程:1.用结构类型描述一个学生的有关数据,其中含有:姓名,学号,语文成绩,数学成绩,外语成绩,平均成绩,排名次序。
输入全班学生(人数不超过50人)的数据(不包括平均成绩和排名次序),求出各人的平均成绩,并按平均成绩由高到低将学生排名次(要考虑并列名次),按名次顺序输出这些学生的所有数据。
函数编程:1.编写函数getmax,它带有3个int 型参数a,b,c,返回a,b,c这三个数的最大值。
在main函数调用这个函数。
2.定义一个全局数组变量,定义函数getdata,负责向这个数组中输入数据;一个函数sort,负责将这个数组中的数据按降序排序。
主函数先调用getdatat和sort 函数,输出这个数组变量中全部单元的值。
3.编写一个判断一个数是否是素数的函数,若是返回1,否则返回0。
4.编写一个函数,返回某个字符在某个字符串中出现的次数。
5.编写一个函数,找出数a[n]中最大元素和最小元素所在的下标,并返回给主调函数。
6.编写一个函数,找出数A[m][n]中最大元素和最小元素所在的行列号,并返回给主调函数。
7.编写一个过程,统计一个字符串中共有多少个大写字母,多少个小写字母,多少个数字,多少个其它字符,将统计结果返回给主调函数。
8.编写一个函数,计算下面算式前100项之和,并将计算结果返回到主调函数。
1+1/3+1/5+1/7+......9.编写一个函数,使给定的一个二维数组(3*3)转置,即行列互换.(指定的二维数组可由主程序输入,转置后输出)10.给出年、月、日,计算该日是该年的第几天?11.编写一个函数,输入一行字符,将此字符串中最长的单词输出。
指针的使用:1.定义指针pa和pb,使它们分别指向变量int a和int b。
通过指针pa和pb完成下列操作:(1)输入变量a和b的值;(2)输出这两个变量的和、差、积、商(包括整数商和实数商,但要判断除数是否为0).(3)调整指针的指向关系,使pa总是指向值较大的变量而pb指向值较小的变量.2.编写3个函数,getdata函数的任务是获取数据,reversedata函数的任务是将数据逆顺存放,showdata函数的任务是输出数据。
主函数旬下面这样调用这3个函数:void getdata(int *a, int num);void reversedata(int *a, int num);void showdata(int *a, int num);void main(){int a[10];getdata(a,10);reversedata(a,10);showdata(a,10);}3.输入数组int a[N],b[N]的元素,用数组a和b构造数组c[n],使得:c[i]=a[i]-b[i] 当a[i]>b[i]时;c[i]=b[i]-a[i] 当a[i]<=b[i]时;《C语言程序设计》测验试(A)一、选择题(5×5′)1.有以下语句:int a=6;a+=a-=a*a;printf(“%d”,a);输出结果 B A.–132B. –60C. -24D. 02.字符a的ASCII码为97,在C程序中可用下列方法表示,除了BA. ‘a’B. ‘97’C.‘\141’D. ‘\x61’3以下程序的输出结果是 Dmain( ){ int a=1 ,b=2 ,c=3,d=4,m=0,n=0 ,t;t=(m=a<b)||(n=c<d);printf(“m=%d , n=%d”,m,n); }A. m=0 , n=0B. m=1 , n=1C. m=0 , n=1D. m=1 , n=04.下列程序的运行结果为 Amain( ){ int a=1, b=-1, z=0;if(a<0)if(b<0)z=1;else z=-1;if(b)- -a;else ++a;printf(“a=%d , z=%d”,a,z); }A. a=0 , z=0B. a=0 , z=-1C. a=2 , z=-1D. a=2 , z=15.有int i=5 , j=8 ;则执行完以下语句后j的值为 Bswitch(i){ case 4: j++ ;case 5: j- - ;case 6:case 7: j++;default: j-=2; }A. 3B. 6C. 7D. 8二、填空题(5×9′)1 . 以下程序的输出结果为main( ){ int x=12;float a=3.14159;printf("%5d##\n",x);printf("%-5d##\n",x);printf("%10.6f##\n",a);printf("%-10.6f##\n",a);}输出结果:_ _ _ 1 2##1 2 _ _ _##_ _ 3.141590##3.141590_ _ ##2. 以下程序输入一个字母,并将它转换为密码。