c语言---第7章编程题

  • 格式:docx
  • 大小:66.87 KB
  • 文档页数:8

【题目】
[定义三个整数及整数指针,仅用指针方法按由小到大顺序输出。

【源程序】
#include<stdio.h>
voidpaixu(int *p1,int *p2,int *p3)
{ int c;
if(*p1>*p2)
{
c=*p1; *p1=*p2; *p2=c; }
if(*p2>*p3)
{ c=*p2; *p2=*p3; *p3=c; }
if(*p1>*p3)
{ c=*p1; *p1=*p3; *p3=c; }
}
int main()
{
inta,b,c,*p1,*p2,*p3;
printf("请输入3个整数:\n");
scanf("%d%d%d",&a,&b,&c);
p1=&a;
p2=&b;
p3=&c;
paixu(p1,p2,p3);
printf("%d,%d,%d\n",a,b,c);
return 0;
}
【运行结果】
【题目】
输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个对换。

编写三函数:1输入10个数;2.进行处理;3.输出10个数。

所有函数的参数用指针
【源程序】
#include <stdio.h>
void input (int * p); voidswapmin (int * p); voidswapmax (int * p);
int main ()
{
inti;
int a[10] ;
input (a);
swapmin(a);
swapmax (a);
for(i = 0;i<10;i++)
printf("%d ",a[i]);
return 0;
}
void input (int * p)
{
inti;
printf("请输入十个数\n"); for(i=0;i<10;i++)
{
printf("a[%d]:",i);
scanf("%d",p++);
}
}
voidswapmin(int * p) {
int *q = p;
int *min = p,tmp;
for (;q < p + 10;q++)
{
if (*min > *q)
min = q;
}
tmp = *p;
*p = *min;
*min = tmp;
}
voidswapmax (int * p) {
int *q = p;
int *max = p,tmp;
for (;q < p + 10;q++)
{
if (*max < *q)
max = q;
}
q = p+9;
tmp = *q;
*q = *max;
*max = tmp;
}
【运行结果】
【题目】
)编写一个求字符串的函数(参数用指针),在主函数中输入字符串,并输出其长度
【源程序】
#include<stdio.h>
int length(char *s){
inti=0;
while(s[i]) i++;
returni;
}
int main(){
charstr[50];
int n;
printf("请输入字符串:\n");
scanf("%s",str);
n=length(str);
printf("%d\n",n);
}
【运行结果】
【题目】
)利用指向行的指针变量求5x3数组各元素之和。

【源程序】
#include <stdio.h>
int main()
{ int a[5][3];
int (*p)[3];
int i,j,s;
printf("请输入一个5*3的数组:\n");
for(i=0;i<5;i++)
for(j=0;j<3;j++)
{ printf("\n a[%d][%d]=",i,j); scanf("%d",&a[i][j]); } p=a;
for(i=0; i<5;i++)
{ s=0;
for(j=0; j<3; j++)
s+=*(*p+j);
printf("第%d行和= %d\n",i,s);
p++;
}
printf("\n\n\n\n\n\n");
}
【运行结果】。