#include<stdio.h>
int a[200]
void rotateArray(int *a,int n,int m){
m%=n //这句是防止m大于n 结果会不正确的情况
for(int i=mi<n++i)scanf("%d",&a[i])
for(int i=0i<m++i)scanf("%d",&a[i])
}
int main(){
int n,m
scanf("%d%d",&n,&m)
rotateArray(a,n,m)
printf("%d",a[0])
for(int i=1i<n++i)printf(",%d",a[i])
return 0
}
第1题
原程序不能实现pt1指向a和b的大者,pt2指向小者的目的,
应该把指向int型的指针p改成int型,只需改变相应的交换程序,其它不用变.
改正后的完整的C语言程序如下(改动的地方见注释)
#include<stdio.h>
void swap(int *p1,int *p2)
{
int p//这里定义int型变量p
p=*p1*p1=*p2*p2=p//这里改变相应的交换程序
}
void main(void)
{
int a,bint *pt1,*pt2
scanf("%d,%d",&a,&b)
pt1=&apt2=&b
if(a<b) swap(pt1,pt2)
printf("%d,%d \n",*pt1,*pt2)
}
第2题
第一空填 -1
第二空填 *sn
#include<stdio.h>
void fun(float *sn,int n)
{
float s=0.0,w,f=-1.0
int i=0
for(i=0i<=ni++)
{
f=-1*f//这里第一空填 -1
w=f/(2*i+1)
s+=w
}
*sn=s//这里第二空填 *sn
}
int main()//补充的主函数
{
float sn
int n=10
fun(&sn,n)
printf("数列的前%d项计算结果S=%f",n+1,sn)
return 0
}
第3题
分析 用二维数组指针p打印二维数组的每一行字符串
#include "stdio.h"
main()
{
char a[4][5]={"ABCD","EFGH","IJKL","MNOP"}
char (*p)[5]
int i,j
p=a
for(i=0i<4i++)
{
for(j=0j<4j++) printf("%c",*(*(p+i)+j))
printf("\n")
}
}
将程序第9行中的"%c"改成"%s",则改变后的程序如下(改动的地方见注释)
#include "stdio.h"
main()
{
char a[4][5]={"ABCD","EFGH","IJKL","MNOP"}
char (*p)[5]
int i,j
p=a
for(i=0i<4i++)
{
printf("%s",*(p+i))//这里去掉for_j循环
printf("\n")
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)