指針訪問下標變量
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 25Sample 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 0Sample 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 5Sample 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
abcdSample 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 doctorSample 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 M3Sample 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;
}
指針訪問下標變量