本帖最后由 u012786758 于 2013-11-12 00:08:30 编辑

解决方案 »

  1.   

    #include "stdafx.h"
    #include<iostream>
    using namespace std;int print_first_and_last_edge (int b);
    int print_middle_edge(int c,int d);int main(){
    int print_first_and_last_edge(int b),print_middle_edge(int c,int d);
    int a;
    std::cout<<"请输入正方形的边:";
    std::cin>>a;
    std::cout<<print_first_and_last_edge(a)<<endl;
    std::cout<<print_middle_edge(a)<<endl;
    std::cout<<print_first_and_last_edge(a)<<endl;
    return 0;
    }
    int print_first_and_last_edge(int a){
    int b;
    for(b=0;b<=a;b++){
    std::cout<<"*";
    }
    std::cout<<endl;
    return b;}
    int print_middle_edge(int a){
    int c,d;
    for(c=0;c<=a/2-2;c++){
    std::cout<<"*";
    for(d=0;d<=a-2;d++){
    std::cout<<" ";
    }
    std::cout<<endl;
    return c;
    }
    }
    注意红色部分,为什么声明的时候用2个参数,定义的时候就只有一个参数了?
      

  2.   

    靠居然没变成红色。。就是print_middle_edge这个函数声明与实现参数个数不同
      

  3.   

    你说的声明的时候用2个参数,是说自定义函数中吗?自定义函数中声明的参数是For循环的循环计数器。
    主函数的a参数值要传入自定义函数中。
      

  4.   

    另外在main里面多声明了一次,可以去掉。
      

  5.   

    int print_middle_edge(int c,int d);这是你的函数声明,
    int print_middle_edge(int a){
    int c,d;
    for(c=0;c<=a/2-2;c++){
    std::cout<<"*";
    for(d=0;

    这是你的函数实现,函数头都不一样啊!
    从你的后面实现来看,声明部分明显错了,那个int d 根本就没有用啊。