指针访问下标变量

Description

主函数框架如下。其作用是输入5个整数,并定义了一个变量aver准备存储平均值。其中横线处应是一个函数调用语句。

int main()

{

     int a[5],i,aver;

     for(i=0;i<=4;i++)    

                scanf("%d",&a[i]);

     ____________;  //此处只填写一条函数调用语句,不按要求做得0分。

     printf("%d",aver);

     return 0;

}

编写一个被调函数void X(......)供主函数调用,其功能是:计算平均值并存储到主函数定义的aver之中。

注意:

1、提交代码时,主函数也应一并提交

2、主函数所缺代码请自行填补,只填写一条调用语句,不得增加其他代码,也不允许改变程序结构,否则得0分

Input

输入5个整数

Output

求平均值(保留整数,不四舍五入)

Sample Input
5 10 15 20 25
Sample Output
15  #include<stdio.h> void X(int *aver,int *p)

{
int i,sum=0;
for(i=0;i<5;i++)
{
sum+=*(p++);
}
*aver=sum/5;
}
int main()
{
int a[5],i,aver;
for(i=0;i<=4;i++)
scanf("%d",&a[i]);
X(&aver,a);
printf("%d",aver);
return 0;


}

Description

 键盘输入10个数据存入数组,调用被调函数使数组各元素的值翻番(被调函数完成),然后主函数输出翻番后的数据

Input

 输入10个数据

Output

 输出处理后的数据,每个数据占5个字符的宽度

Sample Input
1 2 3 4 5 6 7 8 9 0
Sample Output
2 4 6 8 10 12 14 16 18 0
 

#include<stdio.h>
void db(int *p)
{
int i;
for(i=0;i<=9;i++)
p[i]=p[i]*2;//*p=*(p++)*2;
}
int main()
{
int a[10],i;
for(i=0;i<=9;i++)
scanf("%d",&a[i]);
db(a);
for(i=0;i<=9;i++)
printf("%5d",a[i]);
return 0;
}

Description

键盘输入10个整数,由被调函数找出最大、最小值并分别交换到数组的最前、最后,然后在主函数中输出交换后的数组内容。

注意:是被调函数交换位置,不是主函数

Input

输入10个数

Output

输出交换后的所有数据

Sample Input
4 6 2 9 0 8 1 7 3 5
Sample Output
9 6 2 4 5 8 1 7 3 0
 

方法一//有误?

#include<stdio.h>
#include<string.h>
void X(int *p)
{
int temp,i;
int max,m,min,n;
max=min=p[0];
m=0;n=0;
for(i=1;i<10;i++)
{
if(p[i]>max)
{
max=p[i];
m=i;
}
if(p[i]<min)
{
min=p[i];
n=i;
}
}
if(m>n)
{
temp=p[n];
p[n]=p[m];
p[m]=temp;
}

if(m==0&&n==9)
{
;
}
if(m==9&&n==0)
{
temp=p[n];
p[n]=p[m];
p[m]=temp;
}
if(m>0&&m<9&&n==9)
{
temp=p[m];
p[m]=p[0];
p[0]=temp;
}
if(m==0&&n>0&&n<9)
{
temp=p[n];
p[n]=p[9];
p[9]=temp;
}

if(m>0&&m<9&&n>0&&n<9)
{
temp=p[m];
p[m]=p[0];
p[0]=temp;
temp=p[n];
p[n]=p[9];
p[9]=temp;
}
if(n==0&&m>0&&m<9)
{
temp=p[m];
p[m]=p[9];
p[9]=temp;
temp=p[0];
p[0]=p[9];
p[9]=temp;
}
if(m==9&&n>0&&n<9)
{
temp=p[n];
p[n]=p[0];
p[0]=temp;
temp=p[0];
p[0]=p[9];
p[9]=temp;
}

}
int main()
{
int a[10],i;
for(i=0;i<10;i#include<stdio.h>
#include<string.h>
void X(int *p)
{
int temp,i;
int max,m,min,n;
max=min=p[0];
m=0;n=0;
for(i=1;i<10;i++)
{
if(p[i]>max)
{
max=p[i];
m=i;
}
if(p[i]<min)
{
min=p[i];
n=i;
}
}
if(m==0&&n==9)
{
;
}
if(m==9&&n==0)
{
temp=*(p+n);
*(p+n)=*(p+m);
*(p+m)=temp;
}
if(m>0&&m<9&&n==9)
{
temp=*(p+m);
*(p+m)=*(p);
*(p)=temp;
}
if(m==0&&n>0&&n<9)
{
temp=*(p+n);
*(p+n)=*(p+9);
*(p+9)=temp;
}

if(m>0&&m<9&&n>0&&n<9)
{
temp=*(p+m);
*(p+m)=*(p);
*(p)=temp;
temp=*(p+n);
*(p+n)=*(p+9);
*(p+9)=temp;
}
if(n==0&&m>0&&m<9)
{
temp=p[m];
p[m]=p[9];
p[9]=temp;
temp=p[0];
p[0]=p[9];
p[9]=temp;
}
if(m==9&&n>0&&n<9)
{
temp=p[n];
p[n]=p[0];
p[0]=temp;
temp=p[0];
p[0]=p[9];
p[9]=temp;
}

}
int main()
{
int a[10],i;
for(i=0;i<10;i++)
{
scanf("%d",a+i);
}
X(a);
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
}

++)
{
scanf("%d",&a[i]);
}
X(a);
for(i=0;i<9;i++)
{
printf("%d ",a[i]);
}
if(i=9)
printf("%d",a[i]);

return 0;
}

方法二

#include<stdio.h>
#include<string.h>
void X(int *p)
{
int temp,i;
int max,m,min,n;
max=min=p[0];
m=0;n=0;
for(i=1;i<10;i++)
{
if(p[i]>max)
{
max=p[i];
m=i;
}
if(p[i]<min)
{
min=p[i];
n=i;
}
}
if(m==0&&n==9)
{
;
}
if(m==9&&n==0)
{
temp=*(p+n);
*(p+n)=*(p+m);
*(p+m)=temp;
}
if(m>0&&m<9&&n==9)
{
temp=*(p+m);
*(p+m)=*(p);
*(p)=temp;
}
if(m==0&&n>0&&n<9)
{
temp=*(p+n);
*(p+n)=*(p+9);
*(p+9)=temp;
}

if(m>0&&m<9&&n>0&&n<9)
{
temp=*(p+m);
*(p+m)=*(p);
*(p)=temp;
temp=*(p+n);
*(p+n)=*(p+9);
*(p+9)=temp;
}
if(n==0&&m>0&&m<9)
{
temp=p[m];
p[m]=p[9];
p[9]=temp;
temp=p[0];
p[0]=p[9];
p[9]=temp;
}
if(m==9&&n>0&&n<9)
{
temp=p[n];
p[n]=p[0];
p[0]=temp;
temp=p[0];
p[0]=p[9];
p[9]=temp;
}

}
int main()
{
int a[10],i;
for(i=0;i<10;i++)
{
scanf("%d",a+i);
}
X(a);
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
}

 

Description

主函数中输入一个字符串(不超过80个字符),由被调函数将其逆序存放。主函数输出逆序之后的字符串。

Input

输入一个字符串

Output

输出逆序之后的字符串

Sample Input
abcd
Sample Output
dcba
 

#include<stdio.h>
#include<string.h>
int main()
{
int i;
char z[81],n;
gets(z);
n=strlen(z);
for(i=n-1;i>=0;i--)
{
printf("%c",z[i]);
}
}

 

Description

键盘输入一行英文句子(不超过80字符),调用函数使其中的元音字母变成大写,然后主函数输出。用指针操作。

Input

输入英文句子一行

Output

输出变化后的句子

Sample Input
you are a teacher.I'm a doctor
Sample Output
yOU ArE A tEAchEr.I'm A dOctOr
 

#include<stdio.h>
#include<string.h>
/*
void f(int *p,int n)
{
int i;
for(i=0;i<n;i++)
{
if(p[i]=='a'||p[i]=='e'||p[i]=='o'||p[i]=='i'||p[i]=='u')
{
p[i]-=32;
}
}
}
*/
int main()
{
char a[81];
int n,i;
gets(a);
n=strlen(a);
for(i=0;i<n;i++)
{
if(a[i]=='a'||a[i]=='e'||a[i]=='o'||a[i]=='i'||a[i]=='u')
{
a[i]-=32;
}
}
//f(a,n);
puts(a);
//printf("%d",n);
}

 

Description

键盘输入不超过80个字符,由被调函数统计其中大写字母和空格的个数,由主函数输出结果,程序框架如下:
#include <stdio.h>
/********************************/
/*                                           */
/*  此处缺少sub函数的定义   */
/*                                           */
/********************************/

int main()
{

    ___________;   //此处缺少字符数组的定义

    int  sum1,  sum2;

    ________;      //此处缺少一条语句,该语句用来输入字符串

    sub(_____________);   //此处缺少参数

    printf("%d,%d", sum1, sum2);

    return  0;

}

上面的程序缺少4处代码,请将4处所缺代码按顺序分别填写到题目下方的4个文本框中提交,其他代码不需要提交

Input

输入字符串,不超过80个字符

Output

输出大写字母和空格的个数

Sample Input
asd M3
Sample Output
1,1
 

#include <stdio.h>

void sub(char *p,int *m,int *n)
{
int a=0,b=0;
while(*p!='\0')
{
if(*p>=65&&*p<=90)
{
a++;
}
if(*p==' ')
{
b++;
}
p++;
}
*m=a;
*n=b;

}

int main()
{

char a[100];
int sum1, sum2;
gets(a);
sub(a,&sum1,&sum2);
printf("%d,%d\n", sum1, sum2);
return 0;
}

转载于:https://www.cnblogs.com/deer-king/p/10851303.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值