C语言第六次作业指针,c语言第六次作业解析

《c语言第六次作业解析》由会员分享,可在线阅读,更多相关《c语言第六次作业解析(36页珍藏版)》请在人人文库网上搜索。

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

2、=a;while(pvoid 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;i*(*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=一, 二, 三, 四, 五。

3、,六 , 七;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 个字符并请编写一个主函数来调用并测试自己编写的库。

4、函数。#include#includechar *strncpy(char *s,char *t,int n)int i,length;length=strlen(s);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,strnc。

5、mp(a,b,n);5. 算术练习程序(指针型函数)一位小朋友正在学习两个 100 以内正整数的简单运算(加法、减法、乘法、除法) ,请编写一个程序来帮助他学习。该程序调用一个 GetRandomExpression (),由它随机返回一个简单的表达式; 然后程序提示用户输入表达式的计算结果, 并判断答案是否正确。#include#include#includeint result=1;voidGetRanddomExpression(int*num1,char *a,int *num2)int n;srand(time(NULL);*num1=rand()%100+1;*num2=rand(。

6、)%100+1;n=rand()%4;switch(n)case0:while(*num2*num1)*num2=rand()%100+1;result=(*num1)-(*num2);*a=-;break; case1:while(*num1+*num2)100)*num2=rand()%100+1;*a=+;result=(*num1)+(*num2);break; case2:while(*num1*(*num2)100)*num2=rand( )%100+1;*a=*;result=(*num1)*(*num2);break; case3:while(*num1%*num2!=0)*n。

7、um2=rand()%1 00+1;result=(*num1)/(*num2);*a=/;break;int judge(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,&ans。

8、wer);if(judge(answer)=1)printf(youareright!);else printf(sorry,it not the right answer.n);6. 数组分区(指针作为函数参数)本题由三个部分构成(1) 编写一个函数 CountEvensAndOdds ,其功能是统计一个整型数组中奇数和偶数的个数。该函数有 4 个参数,整数型数组、数组的长度和两个指针(用于返回奇数、偶数的个数)(2) 利用( 1)中的 CountEvensAndOdds 函数,编写一个 Partition 函数,其功能是找出给定长度的一个整型数组中的所有奇数和偶数,并把它们分别保存在两个新。

9、的整型数组中(用 C 语言的库函数 malloc 函数动态创建),然后返回这两个新数组及其长度。该函数的参数有 6 个,整型数组、数组长度、奇数数组及其长度、偶数数组及其长度。(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。

10、,count_odds=0; for (i=0;i#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!=0;i+)if(stri= )*(p+j+)=stri;elseif(numstri-97=0|numstri-97=2 |numstri-97=5)*(p+j+)=stri;numstri-97+;else numstri-97+;for(i=0;i#includevoid main。

11、()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;i#includevoid sort(char *name,int n)char *temp;int i,j,k;for(i=0;i0)k=j;if(k!=i)temp=namei;namei=namek;namek=temp;void print(char *name,int n)int i;fo。

12、r(i=0;i#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 Localbus is high speed I/O bus close to the processor.;int len3;for(i=0;i0;l-)for(s=0; s+l-1#includei。

13、nt FindCode(char keyword100, int string_num, char string100)int k,letter126=0,letter226=0; for(k=0;k#include#includeint *CreateGrid(int m, int n, int t)int *p=NULL;int i,j;p=(int *)malloc(sizeof(int)*m);for(i=0;im;i+)*(p+i)=(int*)malloc(sizeof(int)*n); for(j=0;jn;j+)*(*(p+i)+j)=(int*)malloc(sizeof(i。

14、nt)*t);return p;void FreeGrid(int *p,int m,int n,int t)int i,j;if(p!=NULL)for(i=0;im;i+)for(j=0;jn;j+)free(*(*(p+i)+j);free(*(p+i);free(p);p=NULL;void main()int *p,m,n,t,i,j,k,s=1;scanf(%d,%d,%d,&m,&n,&t);p=CreateGrid(m,n,t);for(i=0;im;i+)for(j=0;jn;j+)for(k=0;kt;k+)*(*(*(p+i)+j)+k)=s;s+;for(i=0;im;i+)printf(dimension %d:n,i);for(j=0;jn;j+)for(k=0;kt;k+)printf(%-3d,*(*(*(p+i)+j)+k);putchar(n);FreeGrid(p,m,n,t。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值