欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    C语言知识学习上机理解练习知识题82870198.docx

    • 资源ID:12000549       资源大小:35.89KB        全文页数:20页
    • 资源格式: DOCX        下载积分:1金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要1金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言知识学习上机理解练习知识题82870198.docx

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

    2、void main() int cmpsubstr(char *s1,char *s2); char str120,str250; 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(*(s1+a)=*(s2+i) a+; if(a=d) situation=1; break; else a=0; if(

    3、situation=0)return(-1); else return(i-d+2);2、输入一个字符串,内有数字和非数字字符,如:a123x456 17960?302tab5876,将其中连续的数字作为一个整数,依次存放到数组a中。例如,123放在a0中,456放在a1中等等,统计共有多少个整数,并输出这些整数。要求:(1)在主函数中输入字符串,并输出结果。调用子程序处理字符串。(2)子函数的返回值为整数的个数。#include#includevoid main() int search(char *str,int *sum); char str100; int d,sum20,i; get

    4、s(str); d=search(str,sum); for(i=0;i=0&*(str+i)=0&*(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在之间),x和r的值由主调函数(即主函数)传入,y的值需要返回主调函数进行输出。要求:y的值利用字符数组进行存储,数组的每一个元素存放y的一位数字字符。#include#include#include#includevoid main() char* tran(int x,in

    5、t 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=0;x!=0;i+) t=x%r; if(t10) *(y1+i)=(char)(t+48); else *(y1+i)=(ch

    6、ar)(t+87); x=(int)x/r; *(y1+i)=0; len2=strlen(y1); y2=(char*)malloc(len2*sizeof(char); for(i=0;ilen2;i+) *(y2+i)=*(y1+len2-i-1); *(y2+i)=0; return(y2);4、编写一个主函数和函数tran(x),要求是:(1)函数tran(x)产生支付指定金额x(如234.78元)的各种面额人民币的数量(注意:尽量支付大面额的人民币),要求按元、5元、元、元、角、角、分、分八种面额进行统计,产生的结果存放在数组中返回主函数。(2)在主函数中输入一金额,并以该金额调用

    7、tran函数,并输出该函数返回的统计结果。5、编写程序实现将键盘输入的一行字符按单词倒排输出。如键盘输入“I love you”,屏幕显示“you love I”。要求:(1) 编写一个函数intinvertion(char ch1, char ch2)实现按单词倒排字符串,第一个形参ch1接受实参传过来的原字符串,倒排后的新字符串通过第二个形参返回主函数,函数中还需要统计该字符串中共有多少个单词,函数最后返回字符串中包含的单词个数。(2) 主函数中输入字符串,调用子函数invertion,输出倒排后的字符串及字符串中包含的单词个数。#include#include#include#inclu

    8、devoid main() int invertion(char ch1, char ch2); int len; char *ch1,*ch2; ch1=(char*)malloc(100); ch2=(char*)malloc(100); gets(ch1); len=invertion(ch1,ch2); puts(ch2); printf(%dn,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+

    9、i)!=0;i+,len+); len1=len; for(i=0;*(ch1+i)!=0;i+) if(*(ch1+i)!= ) *(str+t)=*(ch1+i); /将ch1的单词转移到str上/ t+; else sum+; /单词个数加一/ *(ch2+len1)= ; len1=len1-t; for(j=0;jt;j+)*(ch2+j+len1)=*(str+j); /将str转移到ch2上/ t=0; len1-; sum+; /最后一个单词转移到ch2上/ *(ch2+len1)= ; len1=len1-t; for(j=0;jt;j+)*(ch2+j+len1)=*(st

    10、r+j); *(ch2+len)=0; return(sum);6、编写一个主函数以及一个函数maxlong(str)。要求是:(1)函数maxlong(str)找出字符串str中包含的第一个最长单词(用字符数组进行存储),并返回主调函数。(2)在主函数中输入一个字符串,假定输入字符串中只含字母和空格,空格用来分割不同单词;以该字符串作为参数调用maxlong函数,并输出返回的结果。#include#include#include#includevoid main() char *maxlong(char *str); char str100,*str0; gets(str); str0=ma

    11、xlong(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)!= )t+;/t为单词字母个数/ else if(tmax)/比较t与之前最大的单词个数的大小/ word=(str+i-t); max=t; t=0;/t初始化/ if(tmax)/最后一个单词在循环中没有比较/ word=(str+i-t); max=t; str0=(char*)malloc(max+1); for(i=0;imax;i+) *(str0

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

    13、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;im;i+) for(j=0;jn;j+)/max为一行最大值/ if(j=0) 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;

    14、 if(s=0) printf(NO.%d row NO.%d line:%dn,i+1,l+1,*(*(p+i)+l); 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;im;i+) *(p+i)=(int*)malloc(n*sizeof(int); srand(time(NULL);/ for(i=0; im; i+) for(j=0;jn;j+) *(*(p+i)+j)=rand() %100;/给数组赋

    15、值/ return(p);void print(int*p,int m,int n) int i,j; for(i=0;im;i+) printf( 第%d行为:n,i+1); for(j=0;jn;j+) printf(%4d,*(*(p+i)+j); printf(n); 8、编写主函数和两个递归函数sum(a, n)、max(a, n)。要求是:(1)函数sum(a, n)求数组a中前n个元素之和,并返回求得的和值。(2)函数max(a, n)求数组a中前n个元素中的最大值,并返回求得的最大值。(3)主函数:输入任意10个正整数给数组,调用sum函数求数组中的10个元素之和,并输出求得的

    16、和值;调用max函数求数组中10个元素的最大值,并输出求得的最大值。#include#include#includevoid main() int sum(int *a,int n); int *input(int n); int max(int *a,int n); int *s,n=10; s=input(n); printf(%5d,%5dn,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*(a+n-1)return(m);

    17、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#includevoid 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); in

    18、t *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(NO FINDn);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

    19、(d=search(s+m,n-m,key)return(d+m); else return(0); int *input(int n) int *a,i; a=(int *)malloc(sizeof(int)*n); srand(time(NULL); for(i=0;in;i+) *(a+i)=rand() %100; return(a);void print(int *s,int n) int i; for(i=0;in;i+)printf(%4d,*(s+i); printf(n);void sort(int*s,int n) int i,j,temp; for(i=0;in-1;i

    20、+) for(j=0;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,95要求:不允许使用数组;在递归函数中顺序输出该数的各位数,该数的位数则必须在主函数中输出。#include#include#includevoid main() int f(int n); int n,d; scanf(%d,&n); d=f(n); printf(n个数为%dn,d

    21、);int f(int n) int d; if(n10)d=1; else d=f(int)n/10)+1; printf(%d ,n%10); return(d);11、输入一个日期(年、月、日),并输入该年的元旦(即1月1日)是星期几(星期一、星期二、星期六、星期日分别用数字1、2、6、7表示),计算该日期在本年中是第几天、星期几(注意润年问题)?要求写两个函数days和week,分别实现计算该日期在本年中是第几天和星期几。由主函数将日期传递给days函数,并将计算得到的结果返回给主函数输出;由主函数将日期及元旦的星期几传递给week函数,并将计算得到的结果返回给主函数输出。12、编写一

    22、个主函数以及一个函数merge。要求是:(1)函数merge对两个已是升序的数组a、b进行归并,归并后的结果仍然是升序的,并将归并结果返回给主调函数。(2)主函数:定义长度为5的数组a,并升序初始化;定义长度为8的数组b,并升序初始化;调用merge函数对数组a、b进行归并,并输出归并后返回的结果。13、编写一个子函数求两个正整数的最大公约数和一个子函数求两个数的最小公倍数。再写一个主函数,在主函数中输入两个正整数,在调用子函数求最大公约数和最小公倍数。#includevoid main() int m,n; int max(int m, int n); int min (int m,int

    23、n); scanf(%d,%d,&m,&n); printf(%d,%dn,max(m,n),min(m,n);int min (int m,int n) int temp; if(mn) 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 的排序。如图所示:


    注意事项

    本文(C语言知识学习上机理解练习知识题82870198.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开