c语言练习-2

昨天晚上写好的,结果本子没电了,就没来得及发表上来~今天中午补上。

2-1.
  输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:(1)输入10个数;(2)进行处理;(3)输出10个数。

#include "stdio.h"
void read(int b[10])
{
    int i,*p1,x;
    for (p1=b;p1<(b+10);p1++)
      {
          scanf("%d",&x);
          *p1=x;
      }
}
void work(int b[10])
{
    int max,min,*p2,t;
    max=b[0];min=b[0];
    for (p2=b+1;p2<(b+10);p2++)
      {
          if (*p2>max)
            max=*p2;
          if (*p2<min)
            min=*p2;
      }   
     t=b[0];b[0]=min;min=t;
     t=b[9];b[9]=max;max=t;
}
void output(int b[10])
{
    int *p4;
    for (p4=b;p4<(b+10);p4++)
      printf("%d ",*p4);
}            
int main()
{
    int a[10];
    printf("Please input the 10 numbers/n");
    read(a);
    work(a);
    printf("The new order is");  
    output(a);
    getch();
    return 0;
}    

这个发现的问题就是, 定义了 int *max,*min   之后,系统并没有给分配空间, 如果写成 *max=*p2 ,就会出错。 用一个普通的整型变量代替就更好点。

2-2.
  写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。

#include "stdio.h"
length(char *p)
{
    int n=0;
    while (*p!=0)
      {
          n++;
          p++;
      }
    return n;
}       
int main()
{
    int len;
    char *str[20];
    printf("Please input the string./n");
    scanf("%s",str);
    len=length(str);
    printf("The length of the string is %d./n",len);
    getch();
    return 0;
}        

有个问题就是, 定义了指针数组长度为20,但是输入的字符超过20个,程序依然能执行,而且计算出个数来,有点不明白。。

2-3.
  用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。n个整数在主函数中输入,最后在主函数中输出。

#include "stdio.h"
void px(int **p, int n)
{
    int i,j,*temp;
    for (i=0;i<n;i++)
      for (j=i+1;j<n;j++)
        if (**(p+i)<**(p+j))
          {
               temp=*(p+i);
               *(p+i)=*(p+j);
               *(p+j)=temp;
           }
}
int main()
{
    int i,n,a[20],**p,*pstr[20];
    printf("Please input how many the numbers are./n");
    scanf("%d",&n);
    for (i=0;i<n;i++)
      pstr[i]=&a[i];
    printf("Please input the numbers with the 'space' among them./n");
    for (i=0;i<n;i++)
      scanf("%d",pstr[i]);
    p=pstr;
    px(p,n);
    printf("The new order is:");
    for (i=0;i<n;i++)
      printf("%d  ",*pstr[i]);
    getch();
    return 0;
}    

练习的是指向指针的指针。。有点晕,还得多练练, 题目也不难, 用着一个冒泡。  有点累赘就是需要先输入 准备要几个数,然后再输入相应个数的数。  后来想想吧,应该是直接输入进来,然后编一个函数先计算个数n,然后再执行后面的, 用起来就方便了。。

最后想问个问题就是, 看书上的例题什么的,都是先写出主函数, 然后再写其他用到的函数。 我是习惯先把要用什么函数都写出来,  最后再写主函数。   这个有什么顺序没? 还是想咋就咋。。


           

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值