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

加入VIP,免费下载
 

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

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

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(c语言第六次作业解析.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

c语言第六次作业解析.docx

1、c语言第六次作业解析 第六次作业:指针(以下题目如无特殊声明,请使用指针技术实现,尽量不要使用数组作为形参,也尽量避免使用数组下标引用数组元素)1. 数组元素循环移位有n个整数,使前面的各整数顺序向后移动m个位置,后面的m个整数则变成最前面的m个数。写一函数实现以上功能。在主函数中输入n及n个整数,输入m (mn),调用编写的上述函数,然后输出调整后的n个整数。#includevoid main() void inv(int *p,int n,int m); int n,m,a20,*p; printf(please input n=); scanf(%d,&n); printf(please

2、 input %d numbers:,n); p=a; while(pa+n) scanf(%d,p+); printf(please input m=); scanf(%d,&m); p=a; inv(a,n,m); printf(the new array:n); while(pa+n) printf(%d ,*p+); putchar(n);void inv(int *p,int n,int m) int i; for(i=1;i=n;i+) *(p+n-i+m)=*(p+n-i); for(i=0;im;i+) *(p+i)=*(p+n+i);2. 矩阵元素的排序将一个55的整数型矩阵

3、中各元素重新排序。排序规则为,矩阵元素按照从左到右,从上到下的顺序依次递增,即 。要求编写一个函数实现上述排序功能。在主函数中输入该矩阵,调用编写的上述函数,然后输出排序后的矩阵。#includevoid main() void inv(int (*x)5); int i,j,a55; int (*p)5; printf(please input an 5*5 array:n); p=a; for(i=0;i5;i+) for(j=0;j5;j+) scanf(%d,*(p+i)+j); inv(p); printf(the new array:n); for(i=0;i5;i+) for(j

4、=0;j5;j+) printf(%4d,*(*(p+i)+j); putchar(n); putchar(n);void inv(int (*x)5) int i,j,t; for(i=0;i24;i+) for(j=i+1;j*(*x+j) t=*(*x+i);*(*x+i)=*(*x+j);*(*x+j)=t; return;3. 星期的查找编写一个程序,输入一个17之间的整数,表示星期几,然后输出相应的文字。例如:如用户输入3,则输出“星期三”。要求:用指针数组的方法来实现。#includevoid main() int n; char (*p)3; char a73=一,二,三,四,

5、五,六,七; printf(please input n=); scanf(%d,&n); p=a; printf(星期%sn,p+n-1);4. 字符串库函数的实现请使用指针的方法来实现如下的库函数:Char * strncpy( char *s, char * t, int n) /复制t的前n个字符至sChar * strncat( char *s, char * t, int n) /连接t的前n个字符至s的末尾int strncmp( char *s, char * t, int n) /比较s和t的前n个字符并请编写一个主函数来调用并测试自己编写的库函数。#include#incl

6、udechar *strncpy(char *s,char *t,int n) int i,length; length=strlen(s); for(i=0;in;i+) *(s+i)=*(t+i); if(lengthn)*(s+n)=0; return(s);char *strncat(char *s,char *t,int n) int i,length; length=strlen(s); for(i=0;in;i+) *(s+i+length)=*(t+i); *(s+length+n)=0; return(s);int strncmp(char *s,char *t,int n)

7、 int i; for(i=0;i*(t+i)return(1);break; else return(-1);break; void main() char a20,b20; int n; scanf(%s%s%d,a,b,&n); printf(%sn,strncpy(a,b,n); scanf(%s%s%d,a,b,&n); printf(%sn,strncat(a,b,n); scanf(%s%s%d,a,b,&n); printf(%dn,strncmp(a,b,n);5. 算术练习程序(指针型函数)一位小朋友正在学习两个100以内正整数的简单运算(加法、减法、乘法、除法),请编写一

8、个程序来帮助他学习。该程序调用一个GetRandomExpression(),由它随机返回一个简单的表达式;然后程序提示用户输入表达式的计算结果,并判断答案是否正确。#include#include#includeint result=1; void GetRanddomExpression(int *num1,char *a,int *num2) int n; srand(time(NULL); *num1=rand()%100+1; *num2=rand()%100+1; n=rand()%4; switch(n) case 0:while(*num2*num1) *num2=rand()

9、%100+1; result=(*num1)-(*num2);*a=-;break; case 1:while(*num1+*num2)100)*num2=rand()%100+1; *a=+;result=(*num1)+(*num2);break; case 2:while(*num1*(*num2)100)*num2=rand()%100+1; *a=*;result=(*num1)*(*num2);break; case 3:while(*num1%*num2!=0)*num2=rand()%100+1; result=(*num1)/(*num2);*a=/;break; int j

10、udge(int answer) if(answer=result)return(1); else return(0);void main() int num1,num2; char a; int answer; while(result!=answer) GetRanddomExpression(&num1,&a,&num2); printf(please input the result of the expression:n%d%c%d=,num1,a,num2); scanf(%d,&answer); if(judge(answer)=1)printf(you are right!);

11、 else printf(sorry,it not the right answer.n); 6. 数组分区(指针作为函数参数)本题由三个部分构成(1) 编写一个函数CountEvensAndOdds,其功能是统计一个整型数组中奇数和偶数的个数。该函数有4个参数,整数型数组、数组的长度和两个指针(用于返回奇数、偶数的个数)(2) 利用(1)中的CountEvensAndOdds函数,编写一个Partition函数,其功能是找出给定长度的一个整型数组中的所有奇数和偶数,并把它们分别保存在两个新的整型数组中(用C语言的库函数malloc函数动态创建),然后返回这两个新数组及其长度。该函数的参数有6

12、个,整型数组、数组长度、奇数数组及其长度、偶数数组及其长度。(3) 编写主函数,要求能够定义一个数组,并能够用随机数对该数组进行初始化,然后调用(2)中的函数Partition,将原始数组、奇数数组、偶数数组输出。#include #include#include#includevoid CountEvensAndOdds(int *parr,int arr_len,int *even_count,int *odds_count) int i; int count_even=0,count_odds=0; for (i=0;iarr_len;i+) if (*(parr+i)%2)=0)cou

13、nt_even+; else count_odds+; *even_count=count_even; *odds_count=count_odds;void Partition(int *parr,int arr_len,int *even_arr,int *even_len,int *odds_arr,int *odds_len) int even_count,odds_count,i,m=0,n=0; int count_even=0,count_odds=0; CountEvensAndOdds(parr,arr_len,&even_count,&odds_count); *even_

14、arr=(int *)malloc(sizeof(int)*even_count); *odds_arr=(int *)malloc(sizeof(int)*odds_count); for (i=0;iarr_len;i+) if(*(parr+i)%2)=0) *(*even_arr+m) = *(parr+i);m+; else *(*odds_arr+n) = *(parr+i);n+; *even_len=m; *odds_len=n;void print_arr(int *parr,int arr_len) int i; for(i=0;iarr_len;i+) printf(%-

15、3d,*(parr+i);if(i+1)%10=0)printf(n); printf(n);void main() int *parr,arr_len,i,*even_arr,even_len,*odds_arr,odds_len; srand(time(NULL); arr_len = rand()%50; parr=(int *)malloc(sizeof(int)*arr_len); printf(arr_len=%dn,arr_len); for(i=0;iarr_len;i+) parri = rand()%100; Partition(parr,arr_len,&even_arr

16、,&even_len,&odds_arr,&odds_len); printf(arr:n); print_arr(parr,arr_len); printf(even_arr len=%dn,even_len); printf(even_arr:n); print_arr(even_arr,even_len); printf(odds_arr len=%dn,odds_len); printf(odds_arr:n); print_arr(odds_arr,odds_len);7. 字符串压缩(使用字符指针)编写一个程序,输入一个字符串,然后采用如下的规则对该字符串当中的每一个字符进行压缩:

17、(1) 如果该字符是空格,则保留该字符。(2) 如果该字符是第1次出现或第3次出现或第6次出现,则保留该字符(3) 否则删除该字符。例如,若用户输入occurrence,经过压缩后,字符c的第2次出现被删除,第1和第3次出现仍保留;字符r和e的第2次出现均被删除,因此最后的结果为: occurrence 。#include#include#includevoid main() char *p,str50=0; int n,i,j=0,num26=0; gets(str); n=strlen(str); p=(char*)malloc(n*sizeof(char); for(i=0;stri!=

18、0;i+) if(stri= )*(p+j+)=stri; else if(numstri-97=0|numstri-97=2|numstri-97=5) *(p+j+)=stri; numstri-97+; else numstri-97+; for(i=0;ij;i+) printf(%c,*(p+i); putchar(n); 8. 字符查找(使用指针数组)用一个指针数组存储6种计算机语言FORTRAN、PASCAL、BASIC、C、COBOL、SMALLTALK,根据用户输入的若干个开头字符,显示所有相匹配的计算机语言,例如:输入”BA”,显示”BASIC”;输入”C”,显示”C”和”

19、COBOL”。#include#includevoid main() char *a6=FORTRAN,PASCAL,BASIC,C,COBOL,SMALLTALK; char b6,*p; int length,i,k; printf(please input some charactors:); scanf(%s,b); length=strlen(b); for(i=0;i6;i+) for(p=b;pb+length;p+,ai+) if(*p=*ai)k=i; else k=6;break; if(k=i)printf(%sn,ai-length); 9. 字符串排序(使用多级指针)

20、用指向指针的指针的方法对于输入的5个字符串进行排序并输出。(假设每个字符串最大长度不超过20)/用指向指针的指针的方法对于输入的5个字符串进行排序并输出。#include#includevoid sort(char *name,int n) char *temp; int i,j,k; for(i=0;in-1;i+) k=i; for(j=i+1;j0)k=j; if(k!=i)temp=namei;namei=namek;namek=temp; void print(char *name,int n) int i; for(i=0;in;i+) printf(%sn,namei);void

21、 main() char *name5; char a520; int n=5,i; printf(please input five str:n); for(i=0;in;i+) scanf(%s,ai); namei=*(a+i); printf(nthe new str:n); sort(name,n); print(name,n);10. 最长公共字串(提示使用strstr()库函数)编写一个程序,求给定三个字符串的最长公共子串。假设给定的三个字符串分别为:What is local bus?Name some local bus.A Local bus is high speed I

22、/O bus close to the processor.#include#includeint str_match(char *s1,char *s2,int len) while(len0) if(*s1!=*s2)return 0; s1+; s2+; len-; return 1;void main() int i,j,s,l,flag1,flag2; char str360=what the local bus?,Name some local bus.,A Local bus is high speed I/O bus close to the processor.; int l

23、en3; for(i=0;i0;l-) for(s=0; s+l-1len0;s+) flag1=1; for(i=1;i3;i+) flag2 = 0; for(j=0;j+l-1leni;j+) if(str_match(str0+s,stri+j,l)flag2=1;break; if(!flag2)flag1=0;break; if(flag1)goto L; L:printf(最长公共子串为:); for(i=0;il;i+) printf(%c,*(str0+s+i); putchar(n); /以下为选做题目11. 网络警察作为一名网络警察,你的任务是监视电子邮件,看其中是否有一

24、些敏感的关键词。不过有些狡猾的犯罪嫌疑人会改变某些单词的字母顺序,以逃避检查。请编写一个程序,发现这种调整过顺序的关键词。程序的输入有两行,第一行为关键词列表,第二行为待检查的句子。程序的输出为在该句子中所找到的经过顺序调整的关键词。例如输入:guns mines missilesaameric ssell snugs dan iimsssle ot sit neeemis则输出为:guns missiles#include#includeint FindCode(char keyword100, int string_num, char string100) int k,letter126=

25、0,letter226=0; for(k=0;kstring_num;k+) letter1keywordk-97+,letter2stringk-97+; for(k=0;k26;k+) if(letter1k!=letter2k)break; if(k=26)return 1; return 0;void Part(char keyword100, char temp100, int *Size) char *p; int i=0,j;p=temp; while(*p!=0) j=0; while(*p!= &*p!=0)keywordij+=*(p+); keywordi+j=0; wh

26、ile(*p= )p+; *Size=i;void main() char keyword100100, string100100,temp100; int key_num,string_num; int i,j; gets(temp); Part(keyword,temp,&key_num); gets(temp); Part(string,temp,&string_num); for(i=0;ikey_num;i+) for(j=0;jstring_num;j+) if(FindCode(keywordi,strlen(keywordi),stringj) printf(%s ,keywordi); printf(n);12. 动态三维数组a、编写一个函数CreateGrid(int m, int n, int t),用来创建一个动态的三维数组,其中m、n、t分别表示该数组每一维的长度。要求整个数组的存储空间都是用用C语言的库函数malloc函数动态申请的。b、另外编写一个FreeGrid函数,用来释放这个三维数组。C、在主函数中

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1