1. 编一程序,将字符串computer赋给一个字符数组,然后从第一个字母开始间隔地输出该串。请用指针完成。
答案:#include "stdio.h"
main()
{ static char x[]="computer":
  char *p;
  for(p=x;p<x+7;p+=2)
    putchar(*p);
  printf("\n");
}
2. 写一函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。
#include<stdio.h>
void main()
{
    char a[100],*p;
    int n=0;
    p=a;
    gets(p);
    for(;*p!='\0';p++)
    {
        n++;
    }
    printf("%d",n);
}
3. 下面findmax函数将计算数组中的最大元素及其下标值和地址值,请编写*findmax()函数。并将程序调试运行
#include<stdio.h>
*findmax(int *s,int t,int *k)
{        }
main()
{ int a[10]={12,23,34,45,56,67,78,89,11,22},k,*add;
  add=findmax(a,10,&k);
  printf("%d,%d,%o\n",a[k],k,add);
}
答案:#include<stdio.h>
int *findmax(int *s,int t,int *k)
{
    int max;
    max=s[0];
  for(int i=0;i<t;i++)
  {
    if(max<s[i])
    { max=s[i];
      *k=i;
    }
  }
return k;
}
void main()
{ int a[10]={12,23,34,45,56,67,78,89,11,22},k,*add;
          add=findmax(a,10,&k);
      printf("%d,%d,%o\n",a[k],k,add);
}
4. 用指针方法处理。有一字符串,包含n(n>2)个字符。写一函数,将此字符串中从第2个字符开始的全部字符复制成为另一个字符串。
5. 用指针方法处理。有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。
#include<stdio.h>
#include<string.h>
int main()
{
    int m,len;
    char str1[100],*p,*q;
    p=str1;
    q=p;
    gets(p);
    len=strlen(p);
        printf("input m(m<len):\n");
        scanf("%d",&m);
    if(m<len)
    {
        strcpy(q,p+m-1);
        puts(q);
    }
}
6. 编写函数实现在一维数组a中查x的值,若到返回下标值,不到返回0。在主函数中输入数据和被查的值。
#include<stdio.h>
int search(int a[],int n,int x)
{
    int i;
    for(i=0;i<5;i++)
    {
        if(x==a[i])
        {
            return i;
        }
       
    }
    if(i==5)
            return 0;
}
void main()
{
    int a[5];
    int i,t;
    int x;
    for(i=0;i<5;i++)
        scanf("%d",&a[i]);
    printf("请输入被查的值:\n");
        scanf("%d",&x);
    i=search(a,5,x);
    printf("%d",i);
}
7. 从键盘输入有6个整型数据的一维数组,编写一个函数,用指针实现求第一个数和最后一个数之和.
#include<stdio.h>
int swap(int *p)
{
    int i,j,sum;
    for(i=0,j=6;i<3;i++,j--)
    {
        sum=*(p+i)+*(p+j-1);
        break;
    }
    return sum;
}
void main()
{
    int a[6],*p,sum;
字符串操作函数puts
    for(p=a;p-a<6;p++)
        scanf("%d",p);
    sum=swap(a);
    printf("%d",sum);
}
8. 编一函数,实现求3*3矩阵对角线元素之和.函数原型如下:
int sum(int (*p)[3]);
#include<stdio.h>
int sum(int (*p)[3])
{
  int c=0,i;
  for(i=0;i<3;i++)
  c+=*(*(p+i)+i);
  return c;
}
void main()
{
    int a[3][3],(*p)[3];
    p=a;
    int i,j,c;
    for(i=0;i<3;i++)
      for(j=0;j<3;j++)
            scanf("%d",*(p+i)+j);
      c=sum(p);
      printf("sum=%d",c);
}
9.编写一个函数实现:已知有4个学生5门课的成绩,从键盘输入一个课程序号,求这门课的平均分#include<stdio.h>
void swap(int a[5][5],int c)
{
    int avg=0;
    int i,j;
        for(i=0;i<5;i++)
        for(j=0;j<5;j++)
        {
            if(c==a[i][j])
            {
                for(i=1;i<5;i++)
                avg+=a[i][j];
            }
        }
        printf("%f",avg/4.0);
}
void main()
{
    int a[5][5];
    int c;
    int i,j;
    for(i=0;i<5;i++)
        for(j=0;j<5;j++)
    scanf("%d",&a[i][j]);
        printf("输入一个课程序号:");
      scanf("%d",&c);
        swap(a,c);
}
10. 编一程序,将字符串You are a student赋给一个字符数组,然后从第三个字母开始间隔地输出该串(前两个字母不变)。请用指针完成。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。