亲们 我这道题哪里有问题,,为什么编译通过运行就显示停止运行
/* 不知道哪里错了*/# include<stdio.h>
void main(){
void max(int x[],int n);
void min(int x[],int n);
void scan(int *p,int n);
void print(int *p,int n);
int a;
scan(a,10);
max(a,10);
min(a,10);
print(a,10);
}
void scan(int *p,int n){
printf("请输入10个整数:\n");
for(int i=0;i<n;i++){
scanf("%d",*(p+i));
}
}
void max(int x[],int n){
int i;
int max=x;
for(i=1;i<10;i++){
if(max<x)
max=x;
}
int y;
y=x;
x=max;
x=x;
}
void min(int x[],int n){
int i;
int min=x;
for(i=1;i<10;i++){
if(min>x)
min=x;
}
int y;
y=x;
x=min;
x=x;
}
void print(int *p,int n){
int i=0;
for(;i<10;i++){
printf("%d",*(p+i));
}
} 看这个代码风格,估计是看了谭教授的巨著吧。
#include<stdio.h>
// 函数声明
void max(int x[], int n);
void min(int x[], int n);
void scan(int *p, int n);
void print(int *p, int n);
int main(void) {
int a;
scan(a, 10);
max(a, 10);
min(a, 10);
print(a, 10);
system("pause");
return 0;
}
void scan(int *p, int n) {
printf("请输入10个整数:\n");
for (int i = 0; i<n; i++) {
scanf("%d", &*(p + i));
}
}
void max(int x[], int n) {
int i;
int max = x;
for (i = 0; i < 10; i++) {
if (max < x)
max = x;
}
int y;
y = x;
x = max;
// 这一步什么意思,i循环完必定等于10
// 而数组里面不存在第10号元素。
//如果控制在数组内,i-1 也就是9号元素,这样赋值也没意义
// 如果这里不改,又会越界。
x = x;
}
void min(int x[], int n) {
int i;
int min = x;
for (i = 0; i<10; i++) {
if (min > x)
min = x;
}
int y;
y = x;
x = min;
x = x;
}
void print(int *p, int n) {
int i = 0;
for (; i<10; i++) {
printf("%d", *(p + i));
}
}
输入的时候 scanf("%d", (p + i));
而且max,min函数里面的i循环完之后永远为10,你写x=x不对哈要越界
页:
[1]