ImageVerifierCode 换一换
格式:DOC , 页数:27 ,大小:117.54KB ,
资源ID:8210213      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/8210213.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(2024年C语言上机练习题.doc)为本站上传会员【快乐****生活】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

2024年C语言上机练习题.doc

1、C语言上机考试练习题(1) 阐明:我们已经学习完成了基本数据类型、基本控制语句,以及数组、函数这些知识了,请同学们看看附件中的这些题目是否能够迅速编写出来?也许有个别题目与过去的练习有些重复,请尽也许不要去参考过去的答案。假如目前编写起来困难还诸多,那你就要加倍努力了。 1、编写一个程序,判定一个字符串是否是另一个字符串的子串,若是,返回子串在主串中的位置。要求: (1)在主函数中输入两个字符串,调用子函数cmpsubstr()判断,并在主函数输出成果。 (2)子函数的返回值为-1表示未找到,否则返回子串的位置(起始下标)。 #include #include

2、 void main() { int cmpsubstr(char *s1,char *s2); char str1[20],str2[50]; char *s1=str1,*s2=str2; gets(str1); gets(str2); printf("%d",cmpsubstr(s1,s2)); } int cmpsubstr(char *s1,char *s2) { int i,d,a=0,situation=0; d=strlen(s1); for(i=0;*(s2+i)!='\0';i++) { if(*(

3、s1+a)==*(s2+i)) { a++; if(a==d) { situation=1; break; } } else { a=0; } } if(situation==0)return(-1); else return(i-d+2); } 2、输入一个字符串,内有数字和非数字字符,如:a123x456 17960?302tab5876,将其中连续的数字作为一个整数,依次存储到数组a中。例如,123放在a[0]中,456放在a[1]中等等,统计共有多少个整数,并输出这些整数。要求:

4、 (1)在主函数中输入字符串,并输出成果。调用子程序处理字符串。 (2)子函数的返回值为整数的个数。 #include #include void main() { int search(char *str,int *sum); char str[100]; int d,sum[20],i; gets(str); d=search(str,sum); for(i=0;i

5、a=0; for(i=0;*(str+i)!='\0';i++) { if(*(str+i)>='0'&&*(str+i)<='9') { if(a==0) { *(sum+t)=(int)(*(str+i)-'0'); a++; } else { *(sum+t)=*(sum+t)*10+(int)(*(str+i)-'0'); } } else if(*(str+i-1)>='0'&&*(str+i-1)<='9') { t++; a=0; } }

6、 if(*(str+i-1)>='0'&&*(str+i-1)<='9')return(t+1); else return(t); } 3、编写一个主函数和子函数tran(x, r),要求是:函数tran(x, r)将十进制整数x转换成r进制数y(r在2-16之间),x和r的值由主调函数(即主函数)传入,y的值需要返回主调函数进行输出。要求:y的值利用字符数组进行存储,数组的每一个元素存储y的一位数字字符。 #include #include #include #include void main(

7、) { char* tran(int x,int r); int x,r; char *y; printf("Please input x & r =\n"); scanf("%d,%d",&x,&r); y=tran(x,r); puts(y); } char* tran(int x,int r) { int len1,len2,i,t; char *y1,*y2; len1=2+(int)log((double)x)/log((double)r); y1=(char*)malloc(len1*sizeof(char)); for(i=

8、0;x!=0;i++) { t=x%r; if(t<10) *(y1+i)=(char)(t+48); else *(y1+i)=(char)(t+87); x=(int)x/r; } *(y1+i)='\0'; len2=strlen(y1); y2=(char*)malloc(len2*sizeof(char)); for(i=0;i

9、1)函数tran(x)产生支付指定金额x(如234.78元)的各种面额人民币的数量(注意:尽也许支付大面额的人民币),要求按100元、50元、10元、1元、5角、1角、5分、1分八种面额进行统计,产生的成果存储在数组中返回主函数。(2)在主函数中输入一金额,并以该金额调用tran函数,并输出该函数返回的统计成果。 5、编写程序实现将键盘输入的一行字符按单词倒排输出。如键盘输入“I love you”,屏幕显示“you love I”。要求: (1) 编写一个函数intinvertion(char ch1[], char ch2[])实现按单词倒排字符串,第一个形参ch1接收实参传过

10、来的原字符串,倒排后的新字符串通过第二个形参返回主函数,函数中还需要统计该字符串中共有多少个单词,函数最后返回字符串中包括的单词个数。 (2) 主函数中输入字符串,调用子函数invertion,输出倒排后的字符串及字符串中包括的单词个数。 #include #include #include #include void main() { int invertion(char ch1[], char ch2[]); int len; char *ch1,*ch2; ch1=(char*)mal

11、loc(100); ch2=(char*)malloc(100); gets(ch1); len=invertion(ch1,ch2); puts(ch2); printf("%d\n",len); } int invertion(char ch1[], char ch2[]) { int i,j,t=0,len1,len,sum=0; char *str; str=(char*)malloc(10); for(i=0,len=0;*(ch1+i)!='\0';i++,len++); len1=len; for(i=0;*(ch1+i)!='\

12、0';i++) { if(*(ch1+i)!=' ') { *(str+t)=*(ch1+i); //将ch1的单词转移到str上// t++; } else { sum++; //单词个数加一// *(ch2+len1)=' '; len1=len1-t; for(j=0;j

13、词转移到ch2上// *(ch2+len1)=' '; len1=len1-t; for(j=0;j

14、dio.h> #include #include #include void main() { char *maxlong(char *str); char str[100],*str0; gets(str); str0=maxlong(str); puts(str0); } char *maxlong(char *str) { char *word,*str0; int t=0,i,max=0; for(i=0;*(str+i)!='\0';i++) { if(*(str+i)

15、' ')t++;//t为单词字母个数// else { if(t>max)//比较t与之前最大的单词个数的大小// { word=(str+i-t); max=t; } t=0;//t初始化// } } if(t>max)//最后一个单词在循环中没有比较// { word=(str+i-t); max=t; } str0=(char*)malloc(max+1); for(i=0;i

16、/ } *(str0+i)='\0'; return(str0); } 7、编写一个函数ad(a, m, n)找出一个m行n列的二维数组a中的“鞍点”;在主函数中输入二维数组的值(假设数组中任意两个数都不相等),并将它作为实参调用ad函数。所谓“鞍点”是指该位置上的元素在该行上最大,在该列上最小;一个二维数组中也许没有鞍点。 #include #include #include #include void main() { int **input(int m,int n); void

17、print(int**p,int m,int n); int ad(int **p,int m,int n); int **p,m,n; while(!ad(p,m,n)){ printf("请输入行数:m,列数:n.\n"); m=n=7; p=input(m,n); print(p,m,n);} } int ad(int **p,int m,int n) { int i,j,k,s,max,l,time=0; for(i=0;i

18、) { max=*(*(p+i)+j);l=j; } else { if(max<*(*(p+i)+j)) { max=*(*(p+i)+j);l=j; } } } s=0; for(k=0;k*(*(p+k)+l)) { s=1;break; } } if(s==0) { printf("NO.%d row NO.%d line:%d\n",i+1,l+1,*(*(p+i)+l));

19、 time++; } } return(time); } int **input(int m,int n) //建造一个m行,n列二维数组// { int **p; int i,j; p=(int**)malloc(m*sizeof(int*)); for(i=0;i

20、j)=rand() %100;//给数组赋值// } } return(p); } void print(int**p,int m,int n) { int i,j; for(i=0;i

21、2)函数max(a, n)求数组a中前n个元素中的最大值,并返回求得的最大值。(3)主函数:输入任意10个正整数给数组,调用sum函数求数组中的10个元素之和,并输出求得的和值;调用max函数求数组中10个元素的最大值,并输出求得的最大值。 #include #include #include void main() { int sum(int *a,int n); int *input(int n); int max(int *a,int n); int *s,n=10; s=input(n); pr

22、intf("%5d,%5d\n",sum(s,n),max(s,n)); } int *input(int n) { int *a,i; a=(int *)malloc(sizeof(int)*n); srand(time(NULL)); for(i=0;i

23、 { m=max(a,n-1); if(m>*(a+n-1))return(m); else return(*(a+n-1)); } } int sum(int *a,int n) { if(n==1)return(*a); else return(*(a+n-1)+sum(a,n-1)); } 9、编写一个递归程序,利用折半查找法在一个升序数组中查找一个数,假如查找成功,则输出它是第几个数,否则输出“No Find.”。 #include #include #include void

24、main() { int *input(int n); void print(int *s,int n); void sort(int*s,int n); int search(int *s,int n,int key); int *s,n=10,key,d; s=input(n); print(s,n); sort(s,n); print(s,n); scanf("%d",&key); d=search(s,n,key); if(d!=0) printf("The key is at NO.%d.\n",d); else printf

25、"NO FIND\n"); } int search(int *s,int n,int key) { int m,d; if(n==1) { if(*s==key)return(1); else return(0); } else { m=n/2; if(d=search(s,m,key))return(d); else if(d=search(s+m,n-m,key))return(d+m); else return(0); } } int *input(int n) { int *a,i; a=(int

26、 *)malloc(sizeof(int)*n); srand(time(NULL)); for(i=0;i

27、) { if(*(s+j)>*(s+j+1)) { temp=*(s+j); *(s+j)=*(s+j+1); *(s+j+1)=temp; } } } } 10、用递归法实现:对于一个正整数n(n是一个不超出8位的任意正整数,由键盘输入),(1)次序输出它的各位数;(2)判断它是一个几位数。如输入:56439;则输出: 5,6,4,3,9 5 要求:不允许使用数组;在递归函数中次序输出该数的各位数,该数的位数则必须在主函数中输出。 #include

28、 #include #include void main() { int f(int n); int n,d; scanf("%d",&n); d=f(n); printf("\n个数为%d\n",d); } int f(int n) { int d; if(n<10)d=1; else d=f((int)n/10)+1; printf("%d ",n%10); return(d); } 11、输入一个日期(年、月、日),并输入该年的元旦(即1月1日)是星期几(星期一、星期二、…、星期六、星期日分别

29、用数字1、2、…、6、7表示),计算该日期在本年中是第几天、星期几(注意润年问题)?要求写两个函数days和week,分别实现计算该日期在本年中是第几天和星期几。由主函数将日期传递给days函数,并将计算得到的成果返回给主函数输出;由主函数将日期及元旦的星期几传递给week函数,并将计算得到的成果返回给主函数输出。 12、编写一个主函数以及一个函数merge。要求是:(1)函数merge对两个已是升序的数组a、b进行归并,归并后的成果仍然是升序的,并将归并成果返回给主调函数。(2)主函数:定义长度为5的数组a,并升序初始化;定义长度为8的数组b,并升序初始化;调用merge函数对数组a、

30、b进行归并,并输出归并后返回的成果。 13、编写一个子函数求两个正整数的最大条约数和一个子函数求两个数的最小公倍数。再写一个主函数,在主函数中输入两个正整数,在调用子函数求最大条约数和最小公倍数。#include void main() { int m,n; int max(int m, int n); int min (int m,int n); scanf("%d,%d",&m,&n); printf("%d,%d\n",max(m,n),min(m,n)); } int min (int m,int n) { int temp;

31、 if(m>n) { temp=n; n=m; m=temp; } while(m!=0) { temp=n%m; n=m; m=temp; } return(n); } int max(int m, int n) { int min (int m,int n); return(m*n/min(m,n)); } 14、编写一个排序子函数sort,和折半查找子函数find。主函数的功效是:输入组数后,调用sort排序,输出数组;再输入一个数给key,在调用find查找,并输出查找成果。 15、编写一个索引排序函数index。主函数的功效呢个是:输入未排序的原始数组 A,调用index进行索引,index函数将按照从小到大排好序的索引数组B返回给主函数,在主函数中分别输出数组A与B。 索引数组 B 保存原始数组 A 的下标,通过索引,不变化数组 A , 只变化数组 B,就能够完成对 A 的排序。如图所示:     

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服