18.心得总结 2020-04-14

今天讲了指针数组,用*p[ ]表示。

今日练习如下:

1.十进制转换成八进制输出,八进制转换成十进制输出

十进制转八进制:

#include<stdio.h>

int fun(int a);

int main()

{

int a;

scanf("%d",&a);

printf("%d",fun(a));

}

int fun(int a)

{

int i;

int m=0;

int d=1;

int b=a,c;

int sum=0;

while(b!=0)

{

m++;

c=b%8;

for(i=1;i<m;i++)

{

d*=10;

}

sum=sum+c*d;

d=1;

b=b/8;

}

return sum;

}

八进制转十进制:

#include<stdio.h>

int fun(int a);

int main()

{

int a;

scanf("%d",&a);

printf("%d",fun(a));

}

int fun(int a)

{

int i;

int m=0;

int d=1;

int b=a,c;

int sum=0;

while(b!=0)

{

m++;

c=b%10;

for(i=1;i<m;i++)

{

d*=8;

}

sum+=c*d;

d=1;

b=b/10;

}

return sum;

}

2.编写一段代码,求出数组s中的所有奇数的和,和所有偶数的和,奇数和用指针add返回,偶数和用指针even返回,在主函数内做输入输出,子函数做数据处理

#include<stdio.h>

#include<string.h>

int* fun(int *p,int len,int f);

int main()

{

printf("请输入数组,输入0结束:");

int s[100]={0};

int i=0;

while(scanf("%d",&s[i])&&s[i]!=0)

{

i++;

}

printf("奇数和为:%d\n",*fun(s,i,1));

printf("偶数和为:%d\n",*fun(s,i,0));

}

int* fun(int *p,int len,int f)

{

int sum1=0,sum2=0;

int *add,*even;

int i;

if(f==1)

{

for(i=0;i<len;i++)

{

if((*(p+i))%2==1)

{

sum1+=(*(p+i));

}

}

add=&sum1;

return add;

}

if(f==0)

{

for(i=0;i<len;i++)

{

if((*(p+i))%2==0)

{

sum2+=(*(p+i));

}

}

even=&sum2;

return even;

}

}

3.输入10个整数,将其中最小的数与第一个数对换,最大的数与最后一个数对换,要求用指针法分别写三个函数;输入10个整数;按要求对数进行交换;输出10个数

#include<stdio.h>

int scan(int *p);

int prin(int *p);

int change(int *p);

int main()

{

int a[10]={0};

scan(a);

change(a);

prin(a);

}

int scan(int *p)

{

int i;

for(i=0;i<10;i++)

{

scanf("%d",&(*(p+i)));

}

}

int prin(int *p)

{

int i;

for(i=0;i<10;i++)

{

printf("%d ",*(p+i));

}

}

int change(int *p)

{

int i;

int max=*p;

int temp;

for(i=0;i<10;i++)

{

if(*(p+i)>max)

{

max=*(p+i);

}

}

for(i=0;i<10;i++)

{

if(max==*(p+i))

{

temp=*(p+i);

*(p+i)=*(p+9);

*(p+9)=temp;

}

}

int min=*p;

for(i=0;i<10;i++)

{

if(*(p+i)<min)

{

min=*(p+i);

}

}

for(i=0;i<10;i++)

{

if(min==*(p+i))

{

temp=*(p+i);

*(p+i)=*p;

*p=temp;

}

}

}

4.写一个函数intdigit(int  n,int k),返回n的从右向左的第k个十进制数字位值;例如:digit(1357,2),将返回5

#include<stdio.h> 

int digit(int n,int k);

int main()

{

int n,k;

scanf("%d%d",&n,&k);

printf("%d",digit(n,k));

}

int digit(int n,int k)

{

int m;

while(k>0)

{

m=n%10;

n=n/10;

k--;

}

return m;

}

5.给一个不多于9位的正整数, 13657   75631 要求:

1) 求它是几位数      2) 逆序打印出各位数字(拼成一个整型数字)

#include<stdio.h>

int wei(int a);

int change(int a,int b);

int main()

{

int a,b;

scanf("%d",&a);

b=wei(a);

printf("该数字是:%d位数\n",b);

printf("调换后的数字是:%d\n",change(a,b));

}

int wei(int a)

{

int m=0;

while(a!=0)

{

m++;

a=a/10;

}

return m;

}

int change(int a,int b)

{

int sum=0;

int n=1;

int i;

while(b!=0)

{

for(i=1;i<b;i++)

{

n=n*10;

}

sum=sum+a%10*n;

a=a/10;

b--;

n=1;

}

return sum;

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 8,749评论 0 2
  • 计算机二级C语言上机题库(南开版) 1.m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平...
    MrSunbeam阅读 11,527评论 1 42
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 6,154评论 0 2
  • 1)程序结构是三种: 顺序结构 、选择结构(分支结构)、循环结构。 2)读程序都要从main()入口, 然后从最上...
    杵臼凉薄yo阅读 6,430评论 0 7
  • 前言 本文将用C/C++实现二叉搜索树的基本操作:插入、搜索、删除,以及详细的原理介绍。 二叉搜索树 有了这个概念...
    Void_Caller阅读 4,943评论 0 1