1. 程式人生 > >指針訪問下標變量

指針訪問下標變量

urn 求平均值 pan sum 函數 include 個數 sub 代碼

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;
}

指針訪問下標變量