


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言程序设计题集如果n不能被k整除,则用k+1作为k的一、编制程序解决下列问题并 给出结果(%1)关于顺序结构、选择结构的程序【程序1】题目:编写程序,求解一元二次方程ax2+bx+c=O的根,要求考虑 a=0,及方程有实数根与复数根的 情 况。【程序2】题目:输入任意学生的百分制成绩,要求输岀成绩等级'A'、'B'、'C'、D、'E':90 分以上为'A, 80-89 分为'B', 70-79F 分为'C', 60-69 分为? ',60分以下为'E,【程序3】题目:输入
2、一行字符,分别统计其中的英文字符,空格,数字字符和其他字符的个数是多少?【程序4】题目:输入某年某月某日,判断这一天是这一年的第几天?程序分析:以 3月5日为例,应该先把前两个月 的 加起来,然后再加上 5天即本年的第几天;如 果是 闰年且输入月份大于 3时需考虑多加一天。【程序5】题目:将一个正整数分解质因数。例如:输入90,打印岀 90=2*3*3*5。程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于 n,则说明分解质因数的过程已经结束,打印岀即可。如果n不等于k,但n能被k整除,则应打印 岀k 的值,并用 n除以k的商,作为新的正整 n
3、数,重 复执行第一步。值,重复执行第一步【程序6】题目:古典问题有一对兔子,从岀生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?请写岀前30个 数。程序分析:兔子的规律为 Fibonacci序列1, 1,2, 3, 5,8, 13, 21.找出其规律,即可解决问题。【程序7】题目 判断101-200之间有多少个素数,并输岀所有素数。程序分析:判断素数的方法:用一个数分别去除2到此数的平方根整值,如果能被整除,贝憔明此数不是素数,反之是素数。【程序8】题目:打印岀所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方
4、和等于该数本身。例如:153是一个“水仙花数”,因为 153=1的三次方+ 5的三次方+ 3的三次 方。程序分析:利用for循环控制100-999个数,每个 数分解岀个位,十位,百位。【程序9】题目:输入两整数,求他们的最大公约数和最小公倍数。程序分析:最小公倍数等于两整数之乘积除以最大公约数【程序10题目:两个乒乓球队进行比赛,各岀三人。甲队为a, b, c三人,乙队为 x, y, z三人。已抽签 决定比赛 名单。有人向队员打听比赛的名单。a说他不和 X比,C说他不和X, Z比,请编程序找 岀三队赛手的 名单。析:请利用数轴来分界,定位。注意定 金定义成长整型。义时需把奖【程序11】题目求
5、1+2!+3!+. .+20!的和【程序12】题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或 if语句判断第二 个字母。【程序题目 进制)。13】八进制转换为十进制(或十六进制转换)成十【程序14】题目求07所能组成的奇数个数。【程序15】题目一个偶数总能表示为两个素数之和。【程序16】题目有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?程序分析:可填在百位、十位、个位的数字都 是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。【程序17】题目:企
6、业发放的奖金根据利润提成。利润低于或等于10万元时,奖金可提 10% ;利润高于10万 元,低于20万元时,低于 10万元的部分 按10%提 成,(1)高于10万元的部分,可提成 7. 5% ;(2) 20万到40万之间时,高于20万元的部 分,可提成5% ;(3) 40万到60万之间时高于 40万元的部分,可 提成3% ;(4) 60万到100万之间时,高于 60万元的部 分,可提成1. 5%,高于100万元时,超过 100万元 的部分按1%提成,从键盘输入当月利润 I,求应发放奖金总数?程序分(二)关于数组及函数的程序:【程序1】题目:有n个人围成一圈,顺序排号(编号为 n的 人的下一个人
7、编号为1)。从第一个人开始报数(从1到3报数),凡报到 3的人退岀圈子,问最后 留下的是原来第几号的那位。程序分析: 可假设输入人数 n< 50,用一个数组 num 表示某一个编号的人是否仍在队列中,数组的下标对应人的编号,数组中的值取0或人的编 号,numi=i+l表示编号为i+1的人仍在队 列中, numi=0表示编号为i+1的人不在队列 中,num数 组的初值为 10计数岀列的人数,当岀列的人数=n时记录岀列人的编号即可。【程序2】题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上 5,然后用和除以 10的余数代替该 数字,再将
8、第一位和第四位交换,第二位和第三位交换。【程序3】题目:将一个数组中的元素逆序输出。【程序4】题目:写一个函数,将一个 3*3的整形矩阵转置。程序5】题目输入6行6列的矩阵a,然后1)输岀矩阵a2) .将对角线(指矩阵的左上角到右下角的对角线)之外的上三角的每个元素加1,下三角 中的每个元素减1,形成新的矩阵并输出。3).找岀新矩阵 a中绝对值最大的元素及其所在的行、列位置并输出。【程序6】题目:用两个同样长度的一维数组表示两个向量,编写函数,求两个向量的和,两个向量由参数带入,和向量由返回值给岀。【程序7】题目:有15个数按照值的升序存放在一个数组 中, 输入一个数,要求用折半查找法找岀该数
9、是数组中第几个元素的值。如果该数不在数组中,则输岀“无此数”。已知 15个数用赋初值 的方法在程序中 给岀。要找的数用 seanf函数输 入。【程序8】题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。(三)关于指针链表的程序【程序1】题目:反向输出一个链表。【程序2】题目:连接两个链表。题目:创建一个链表。将新生成的结点放在链表的前面。设链表中只有一个整数数据域,从键盘中输入链表结点中的整数,以 0表示输入 结束。【程序6】题目:已知有两个链表 a,b,每个链表中的节 点包括 学号、成绩,每个链表都是按学号升序从前向后排列节点,写一个函数将两链表合并,合并后的链
10、表仍然按学号升序排列。(四)关于文件保存的程序【程序1】 题目:有两个磁盘文件 A和B,各存放一行字母, 要 求把这两个文件中的信息合并(按字母顺序 排 列),输出到一个新文件 C中。【程序2】题目:有一个磁盘文件存放了职工的数据,职.的数据包括:职工号,姓名,性别,年龄,住:,工资,健康状况,文化程度,今要求只将职 .的姓名、工资 数据抽出另建一个简明的职工工文件。【程序3】题目:编写一个函数,输入n为偶数时,调/函数求1/2+1/4+. +l/n,当输入n为奇数时,调用函数1/1+1/3+. . +l/n程序分析:利用指针函数 【程序4】题目:定义链表数据节点的结构是一个字符数 据域 加一
11、个指针数据域,从键盘读入一串字符 ,以'?'号 结束,将读入字符组成先进先出链 表并输出程序分析:所谓先进先出是指链表结点中字符 的存 放顺序是按字符的读入顺序存放的,新读 入的字符 放在链表的表尾。【程序5】【程序3】 题目:把s字符串中的所有字母改写成该字母的下一个字母,字母 Z改写成字母 a。要求大写字 母仍为大写字母,小写字母仍为小写字母,其它字符不做改变。请考生编写函数chg (char *s)实现程序要求,最后把结果输岀到文件bcl.c【程序4】题目:已知在文件IN. c中存有100个产品销售 记录,每个产品销售记录由产品代码dm (字符型4位),产品名称 me (
12、字符型10位),单价 dj(整型),数量si (整型),金额je (长整型) 五部分 组成。其中:金额 =单价*数量计算得出。 函数 ReadDat ()是读取这 100个销售记录并存 入结构 数组sell中。请编制函数 SortDat (),其 功能 要求:按金额从小到大进行排列,若金额相 等,则按产品代码从小到大进行排列,最终排列 结果仍存入结构数组sell中,最后调用函数 WriteDat ()把结果输岀到文件 0UT1. c中。二、阅读下列程序,掌握程序的输入、输出及设计算法【程序1】题目:输入某年某月某日,判断这一天是这一年的第几天?1. 程序分析:以3月5日为例,应该先把前两个月的
13、加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考 虑多加一天。2. 程序源代码:mai n()int day, mon th, year, sum, leap;printf ( /zn please in put year, mon th, dayn )sca nf( d, %d, %d , &year, &month, &day);switch (month) A先计算某月以前月份的总天数*/case 1:sum=0;break;case 2:sum=31;break;case 3:sum=59;break;case 4:sum=90;bre
14、ak;case 5:sum=120;break;case 6:sum=151;break;case 7:sum=181;break;case 8:sum=212;break;case 9:sum=243;break;case 10:sum=273;break;case 11:sum=304;break;case 12:sum=334;break;default:printf (/zdata error") ;break;leap=l;elseleap=O;if (leap=l&&mo nth>2) / *如果是闰年且月份大于2,总天数应该加一天*/SUH1+;p
15、rintf( It is the %dth day. ,sum) ;【程序2】题目:将一个正整数分解质因数。例如:输入90,打印岀 90=2*3*3*5。1. 程序分析:对n进行分解质因数,应先找到一个最小的质数 k,然后按下述步骤完成:(1) 如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印岀即可。(2) 如果nOk,但n能被k整除,则应打印岀 k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。(3) 如果n不能被k整除,则用k+1作为k的值,sum=sum+day; /*再加上某天的天数 */if(year%400=0|(year%4=0&&year%
16、100!=0)/*判断是不是闰年*/2. 程序源代码:/* zhe ng int is divided yin shu*/main ()int n, i;printf ( n please in put a nu mber:n );scanf ( %d , &n);printf ( d= ,n);for (i=2;i<=n ;i+)while (n !=i)if (n %i=0) printf ( %d* ,i);n=n/i;elsebreak;printf ( d ,n) ;【程序3】题目:读程序,给出程序的运行结果#in elude "stdio.h"#d
17、efi ne M 7)for(i=0;i<M;i+)printfC'%d” ,*(a+i);)【程序4】题目:设全班有 40名同学,计算全班数学成绩 均分,并统计低于平均分的人数。#defi ne N 40mai n()(in t classfN;float sum, ave;int nu mber, i;sum=0;nu mber=0;prin tf("please en ter stude nt score");for (i=0 ; i<N ; i+ )(scanf(n%d", &classi);sum += classi;)ave
18、= sum/N;for (i=0; i<N; i+)if (classi<ave)nu mber+;prin tf("the nu mber of lowed aveis %d", nu mber);)的平mai n() int aM= 1,2,3,4,5,6,7;int i,j,t;i=0; j=M-l;while(i < j)(t= *(a+i);*(a+i)=*(a+j);*(a+j)=t;【程序5】题目:写一个函数,求一个字符串的长度,在 函数中输入字符串,并输出其长度。mai n()(int len;char str20;prin tf(&quo
19、t;please in put a stri ng: n");mainscan f("%s",str);Ien=len gth(str);prin tf("the stri ng has %d characters. n,le n);)int len gth(p)char *p;(int n;n=0;while(*p!= 0,)(n+;P+ ;)return n;)【程序6】题目:从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件“test中保存。输入的字符串以!结束。#in clude "stdio.h"ma
20、i n()(FILE *fp;char str100;int i=0;if(fp=fopen( ntesf,nwn)=NULL)(pri ntf("ca nnot ope n the filen"); exit(O);)prin tf("please in put a stri ng:n");get s( str);while(stri !='!')(if( stri>='a' && stri<='z') stri=stri-32;fputc( stri, fp);i+ ;)fc
21、lose( fp);【程序7】题目:有n个人围成一圈,顺序排号(编号为n的人的下一个人编号为 1)。从第一个人开始 报数(从1 到3报数),凡报到3的人退岀圈子,问最后留下的是原来第几号的那位。算法分析:输 入人数n<50,用一个数组num表 示某 一个编号的人是否仍在队列中,数组的下 标对应人 的编号,数组中的值取 0或人的编号,numi=i+l表示编号为i+1的人仍在队列中,numi=0表示编号为i+1的人不在队列中,num数组的初值为1。计 数岀列的人数,当岀列的人数=! 1时记录岀列人的编号即可。#defi ne nmax 50mai n()int i, k, count, n,
22、 numnm ax;prin tf("please in put the total of nu mbers:");sca nf("%d",&n);for(i=0;i<n;i+)/*初始化数组中的编号*/nu mi=i+l;i=0; /*从第一个人进行报数 */ k=0; /*记录报数*/count=0; /*记录岀列的人数*/while( count < n-1 ) /*n-l 人岀列 */(if( numi !=0) k+; /* 编号 i+1 在队列中,进行报数*/if( k=3 )/*如果报数为3,报数的人岀 列*/(nu m
23、i=0;k=0;coun t+;)i+ ; /*计算下一个报数人的编号*/if(i=n) i=0; /*如果报数人编号超过n,则下一个编号是1 */)for(i=0; nu mi=0;i+);/*求队列中最后一人*/ printf(" %dis leftn", numi);【程序8】阅读下列程序,写岀程序的输岀结果int a, b, c, d;void prin t_abcd(i nt b)(int a=5, c=5;a+; b+; C+; d+;pri ntf("2.a=%d,b=%d,c=%d,d=%dn",a,b,c,d);)mai n()(a=l
24、;b=l;c=l;d=l;pri ntf("l.a=%d,b=%d,c=%d,d=%dn",a,b,c,d);prin t_abcd(b);printf("3.a=%d,b=%d,c=%d,d=%dn n,a,b,c,d);prin t_abcd(b);printf( n4.a=%d,b=%d,c=%d,d=%dn n,a,b,c,d);)【程序9】题目:创建一个链表。将新生成的结点放在链表的前面。设链表中只有一个整数数据域,从键盘中输入链表结点中的整数,以0表示输入结束。#include "stdlib.h"#include "st
25、dio.h"struct list(int data;struct list *n ext;);mai n()struct list *p, *head;int num;head=NULL;scanf( n%d", &nu m);while( nu m!=0)(p=(struct list *)malloc(sizeof(struct list);p->data=num;p->n ext=head;head=p;sca nf( "%d", &nu m);)p=head; /*遍历链表*/while(p!=NULL)(print
26、f( n%d n,p->data);p=p->n ext; /*释放链表*/while(head!=NULL)(p=head;head=head->n ext;free(p);【程序10题目:有五个学生,每个学生有3门课的成绩, 从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算岀平均成绩,原有的数据和计算岀的平均分数存放在磁盘文件 "stud"中。#defi ne N 5#in clude "stdio.h"struct stude nt(char nu m6;char n ame8;int score3;float avr;
27、stuN;mai n()int i, j, sum;FILE *fp;/*in put*/for(i=0; i<N; i+)(pri ntf("n please in put No%d score: n",i);printfC'stuNo:,sca nf("%sn, stui .nu m);printf( nname:n);sea nf("%sn, stui. name );sum=O;for(j=0; j<3;j+)(printf("seore %d.” ,j+l);seanf( %d" , stui.score
28、j); sum+=stui.scorej ;)stui.avr=sum/3.0;)if(fp=fope n nst£idn,Hwn)=NULL)(printf("cannot open the filen n);exit(0);)for(i=0;i<N;i+)if(fwrite(&stui,sizeof(struct stude nt),l,fp)!=l) pr in tf("file write error'n");felose(fp);)【程序11题目:设整数数组中的元素按照值的升序存放,写一个函数,用折半查找法查找一个给定的值
29、是否在数组中,找到返回值是该数在数组中的下标位置,找不到,返回值为 ? 1。算法分析:设要查找的元素为num,设两个指针 low,high (用数组的下标表示)分别指向查找区间的两端,取两指针的中间位置mid,查找该 位置所对应的值amid,是否=num,如果num=amid,找至!,返 回mid位置;如果不相等,如果num<amid,则下一次查找应该在数组的前半部分进行,修改 high=mid-l,继续上述过程;如果num>amid,则下一次查找应该在数组的后半部分进行,修改 low=mid+l,继续上述过程;当low>high时,查找不成功,返回-1。#in elude
30、<stdio.h>int bin ary_seareh(i nt array , i nt num, int size)(int found = 0;int high = size, low = 0, mid;mid = (high + low) / 2;prin tf("nn Look ing for %dn", nu m);while (! found) && (high >= low)(prin tf("Low %d Mid %d High %dn", low, mid, high);if (num = arraymid)found = 1;else i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 现代管理和变革管理的试题及答案
- 中级经济师职业素养要求试题及答案
- 2025年咖啡连锁品牌扩张战略:咖啡店数字化运营与市场布局研究报告
- 2025年工程经济合作项目试题及答案
- 2025年国际经济学试题及答案
- 2025年VR虚拟现实智能家居设备市场分析及行业应用拓展报告
- 护理火灾应急预案(3篇)
- 2024水利水电工程基础设施建设与试题及答案
- 动漫产业产业链协同与创新型产业园区运营报告:2025年行业创新发展指南
- 自考行政管理本科人才发展试题及答案解析
- 苏教版五年级下册数学 第4单元 第10招 分数单位的拆分 知识点梳理重点题型练习课件
- 开关设备检修工(技师)技能鉴定备考试题库及答案
- 川教版二年级《生命.生态.安全》下册第10课《面对学习困难》课件
- 端午节趣味谜语及答案
- 机械制造工艺学 王先逵课后答案
- 招商计划书内容
- 2023年高考英语模拟卷(天津专用)(解析版)
- 地铁车站毕业设计
- 小学数学前置性探究学习的实践研究
- 轨道交通信号基础知到章节答案智慧树2023年同济大学
- 如何预防与处理劳动争议培训课件
评论
0/150
提交评论