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>
*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]);
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小时内删除。
发表评论