资源描述
第7章 指针
一、选择题
1. A
2. D
3. D
二、填空题
1. 指针 取地址
2. 3
3. 9876
876
4. 24
三、编程题
1. 参考程序如下。
main()
{
int a[3],i,j,t;
printf("Please enter three number:\n")
for(i=0;i<3;i++)
scanf("%d",&a[i]);
for(i=0;i<2;i++)
for(j=0;j<2;j++)
if(a[j]<a[j+1])
{ t=a[j];a[j]=a[j+1];a[j+1]=t;}
for(i=0;i<3;i++)
printf("%d\n",a[i]);
}
2. 参考程序如下。
int array[4][4];
convert(int array[4][4])
{
int i,j,t;
for (i=0;i<4;i++)
for (j=i+1;j<4;j++)
{
t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;
}
}
main( )
{
int i,j;
printf("Input array:\n");
for (i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&array[i][j]);
printf("\noriginal array :\n");
for (i=0;i<4;i++)
{ for (j=0;j<4;j++)
printf("%5d",array[i][j]);
printf("\n");}
convert(array);
printf("convert array:\n");
for (i=0;i<4;i++)
{ for(j=0;j<4;j++)
printf("%5d",array[i][j]);
printf("\n");
}
}
3. 参考程序如下。
main()
{
int i, j , k, temper;
int *p1, *p2, *p3;
printf("Please input 3 integers:\n");
scanf("%d%d%d",&i, &j, &k);
p1=&i; p2=&j; p3=&k;
printf("before changed ,the 3 numbers are:\n");
printf("i=%d, j=%d,k=%d\n",i, j, k);
temper=*p1;*p1=*p3;*p3=*p2; *p2=temper;
printf("after changed ,the 3 numbers are:\n");
printf("i=%d, j=%d,k=%d\n",i, j, k);
}
4. 参考程序如下。
#include<stdio.h>
#include<string.h>
char *s="1a2b3c4d";
void main()
{
int i,j;
char t;
for(i=0,j=strlen(s)-1;i<j;++i,--j)
{
t=s[i];
s[i]=s[j];
s[j]=t;
}
printf("%s\n",s);
}
5. 参考程序如下。
int y_max(int *p,int n)
{
int max=*p,i,k=0;
for(i=0;i<n;i++) /*这里判断到i<n,而不是i<=n*/
{
if(max<*(p+i))
{
k=i;
max=*(p+i); /*记得要在这里更新一下max的记录*/
}
}
return k;
}
#define N 10
#include<stdio.h>
int main()
{
int a[N];
int i,m,max;
for(i=0;i<N;i++)
scanf("%d",&a[i]);
for(i=0;i<N;i++)
printf("%d ",a[i]);
m=y_max(a,N);
printf("\nmax=a[%d]=%d",m,a[m]);
return 0;
}
6. 参考程序如下。
#include<stdio.h>
#include<math.h>
#include<string.h>
#define N 80
int cnum=0,dnum=0; /*全局变量用于在两个函数之间传递数据*/
int main()
{
char ch[N];
void count(char c);
int i,n;
gets(ch);
n=strlen(ch);
for(i=0;i<N;i++)
count(ch[i]); /*数组元素作为函数的实参*/
printf("%d,%d\n",cnum,dnum);
}
void count(char c)
{
if(c>='0'&&c<='9')
dnum++;
if((c>='A'&&c<='Z')||(c>='a'&&c<='z'))
cnum++;
return 0;
}
7. 参考程序如下。
#include<stdio.h>
int strcmp(char *s1,char *s2)
{
for(;*s1==*s2&&*s1&&*s2;s1++,s2++); /* 找不同的字符 */
return (*s1-*s2);
}
void main()
{
char a[10],b[10];
gets(a);
gets(b);
printf("%d\n",strcmp(a,b));
}
8. 参考程序如下。
#include <stdio.h>
int main(void)
{
float a[10];
int i=0;
double sum = 0.0;
float avg = 0.0;
for(i=0;i<10;i++)
{
printf("请输入第%d个同学的成绩:",i+1);
scanf("%f",&a[i]);
printf("\n");
sum+=a[i];
}
avg = sum/10.0;
printf("%f\n",avg);
return 0;
}
9. 参考程序如下。
#include <stdio.h>
void aa(int *array)
{
int i;
for(i=0;i<20;i++)
scanf("%d,",&array[i]);
}
void bb(int *array)
{
int *max,*min,t;
int *p;
max=min=array;
for(p=array;p<=array+19;p++)
{
if(*max<*p) max=p;
if(*min>*p) min=p;
}
t=*max;*max=array[19];array[19]=t;
t=*min;*min=array[0];array[0]=t;
}
void cc(int *array)
{
int *p;
for(p=array;p<=array+19;p++)
printf("%d,",*p);
}
void main()
{
int number[20];
aa(number);
bb(number);
cc(number);
}
10. 运行结果如下:
result=14
展开阅读全文