编写一函数接受主调函数实参n(这里n==5),并输出如下图形。n的值通过键盘输入,并由主函数中的语句来由
编写一函数接受主调函数实参n(这里n==5),并输出如下图形。n的值通过键盘输入,并由主函数中的语句来由实现。程序以文件名print_1.c保存。0***0*0*0***...
编写一函数接受主调函数实参n(这里n==5),并输出如下图形。n的值通过键盘输入,并由主函数中的语句来由实现。程序以文件名print_1.c保存。
0***0
*0*0*
**0**
*0*0*
0***0
【算法提示】:
① 定义函数printg(),一个形参n,类型为整型,函数无返回值;
② 找出主、次对角线上‘0’的规律,使用双层循环控制循环n*n次;
③ 循环体内部主、次对角线上打印‘0’,否则打印‘*’;
④ 在主函数中调用函数printg()。
【程序框架】:
本程序中main()是主调函数,printg()函数上被调函数。程序结构形式如下:
#include <stdio.h>
void printg(int);/* 因为被调函数printg()在主调函数main()之后,需对被调函数声明*/
main ( )
{
int a;
printf("please input a number:\n");
scanf("%d", &a);
printg(a);/* 在主调函数main()中调用被调函数printg(a) ,其中a为实参*/
}
void printg(int n)
0***0
*0*0*
**0**
*0*0*
0***0
{
这部分可按照算法提示的①、②、③步补充完整。
相关提示:如果用i控制行标,用j控制列标,则
主对角线的规律是:i==j, 即行标等于列标;
次对角线的规律是:i+j==n+1,即行标与列标的和值等于方阵的维数+1;
}
#include<stdio.h>
void printg(int a);
main()
{int a;
printf("please input a number:\n");
scanf("%d",&a);
printg(a);
}
void printf(int n)
{int i,j;
for(i=1;i<=n;i++)
{for(j=1;j<=i;j++)
if(i==j||i+j==n+1)
printf("0");
else
printf("*");
}
}
print_1.c(10) : error C2371: 'printf' : redefinition; different basic types 展开
0***0
*0*0*
**0**
*0*0*
0***0
【算法提示】:
① 定义函数printg(),一个形参n,类型为整型,函数无返回值;
② 找出主、次对角线上‘0’的规律,使用双层循环控制循环n*n次;
③ 循环体内部主、次对角线上打印‘0’,否则打印‘*’;
④ 在主函数中调用函数printg()。
【程序框架】:
本程序中main()是主调函数,printg()函数上被调函数。程序结构形式如下:
#include <stdio.h>
void printg(int);/* 因为被调函数printg()在主调函数main()之后,需对被调函数声明*/
main ( )
{
int a;
printf("please input a number:\n");
scanf("%d", &a);
printg(a);/* 在主调函数main()中调用被调函数printg(a) ,其中a为实参*/
}
void printg(int n)
0***0
*0*0*
**0**
*0*0*
0***0
{
这部分可按照算法提示的①、②、③步补充完整。
相关提示:如果用i控制行标,用j控制列标,则
主对角线的规律是:i==j, 即行标等于列标;
次对角线的规律是:i+j==n+1,即行标与列标的和值等于方阵的维数+1;
}
#include<stdio.h>
void printg(int a);
main()
{int a;
printf("please input a number:\n");
scanf("%d",&a);
printg(a);
}
void printf(int n)
{int i,j;
for(i=1;i<=n;i++)
{for(j=1;j<=i;j++)
if(i==j||i+j==n+1)
printf("0");
else
printf("*");
}
}
print_1.c(10) : error C2371: 'printf' : redefinition; different basic types 展开
展开全部
程序语法、逻辑均有错误,以下源代码已注释并改正
#include<stdio.h>
//void printg(int a); 注意这里函数声明的参数名与实际使用的不一致!
void printg(int n);
main() {
int a;
printf("please input a number:\n");
scanf("%d",&a);
printg(a);
}
//void printf(int n) { 注意这里的函数名,不能用系统的printf,要使用你声明的函数名printg!
void printg (int n) {
int i,j;
for(i=1;i<=n;i++) {
//for(j=1;j<=i;j++) 这里的条件应是j<=n,因为你要输出的是正方形,而不是三角形!
for(j=1;j<=n;j++)
if(i==j||i+j==n+1)
printf("0");
else
printf("*");
printf ("\n"); //你这里缺少了换行!
}
}
运行结果
展开全部
楼主是想说编译错误吗?你定义的函数void printf(int n),函数名和标准库里的printf
重复了,虽然参数和返回值不一样,但是很可惜,C语言不支持函数重载,所以最后还是编译不过
换个函数名就可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include "stdio.h"
void printg(int);
int main(int argc,char *argv[]){
int a;
printf("please input a number:\n");
scanf("%d", &a);
printg(a);
return 0;
}
void printg(int n){
int i,j;
for(i=0;i<n;i++){
for(j=0;j<n;j++)
if(i==j || i+j==n-1)
printf("0");
else
printf("*");
printf("\n");
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void printg(int n)
{
int i, j;
for(i=1; i<=n; ++i)
{
for(j=1; j<=n; ++j)
{
if(i==j || i+j==n+1)
putchar('0');
else
putchar('*');
}
putchar('\n');
}
}
更多追问追答
追问
要整个程序都写出来、。谢谢、。
追答
你题目不是固定了程序框架,这是printg的实现方法。
至于你写的代码,
【1】函数名写错了,
void printg(int n) //你写成void printf,跟库函数printf同名了
【2】没有打印换行,应在第一重循环末尾加上
printf("\n");
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询