
C语言 n个布尔变量输出他们所有的真值组合。下面的程序哪里有问题?就用这个方法。不要说其他的办法。
#include<stdio.h>#defineMax_size100structlist{charstr[10];}list_1[Max_size];voidvalue...
#include<stdio.h>
#define Max_size 100
struct list
{ char str[10];
}list_1[Max_size];
void value(list_1.str,int i,int n)
{ int j;
if(i==n+1)
{ for(j=0;j<=n;j++)
printf("%s ",list_1[j].str);
printf(" ");
}
else
{ list_1[i].str="True";
value(list_1.str,i+1,n);
list_1[i].str="False";
value(list_1,i+1,n);
}
}
void main(void)
{ int n,k;
printf("input the number of booleans:\n");
scanf("%d",&n);
if(n<1||n>Max_size)
{ printf("\nInproper Number n!\n");
exit(1);
}
for(k=0;k<n;k++)
list_1[k].str="True";
value(list_1,0,n-1);
} 展开
#define Max_size 100
struct list
{ char str[10];
}list_1[Max_size];
void value(list_1.str,int i,int n)
{ int j;
if(i==n+1)
{ for(j=0;j<=n;j++)
printf("%s ",list_1[j].str);
printf(" ");
}
else
{ list_1[i].str="True";
value(list_1.str,i+1,n);
list_1[i].str="False";
value(list_1,i+1,n);
}
}
void main(void)
{ int n,k;
printf("input the number of booleans:\n");
scanf("%d",&n);
if(n<1||n>Max_size)
{ printf("\nInproper Number n!\n");
exit(1);
}
for(k=0;k<n;k++)
list_1[k].str="True";
value(list_1,0,n-1);
} 展开
4个回答
2011-10-21
展开全部
修改如下:
//---------------------------------------------------------------------------
#include<stdio.h>
#include <string.h> //注意这里
#define Max_size 100
struct list
{ char str[10];
}list_1[Max_size];
void value(struct list *list_1,int i,int n) //注意这里
{ int j;
if(i==n+1)
{ for(j=0;j<=n;j++)
printf("%s ",list_1[j].str);
putchar('\n'); //此处用换行符似乎更好一些
//printf(" ");
}
else
{ strcpy(list_1[i].str,"True"); //注意这里
value(list_1,i+1,n); //注意这里
strcpy(list_1[i].str,"False"); //注意这里
value(list_1,i+1,n);
}
}
void main(void)
{ int n,k;
printf("input the number of booleans:\n");
scanf("%d",&n);
if(n<1||n>Max_size)
{ printf("\nInproper Number n!\n");
exit(1);
}
for(k=0;k<n;k++)
strcpy(list_1[k].str,"True"); //注意这里
value(list_1,0,n-1);
return 0;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include<stdio.h>
#include <string.h> //注意这里
#define Max_size 100
struct list
{ char str[10];
}list_1[Max_size];
void value(struct list *list_1,int i,int n) //注意这里
{ int j;
if(i==n+1)
{ for(j=0;j<=n;j++)
printf("%s ",list_1[j].str);
putchar('\n'); //此处用换行符似乎更好一些
//printf(" ");
}
else
{ strcpy(list_1[i].str,"True"); //注意这里
value(list_1,i+1,n); //注意这里
strcpy(list_1[i].str,"False"); //注意这里
value(list_1,i+1,n);
}
}
void main(void)
{ int n,k;
printf("input the number of booleans:\n");
scanf("%d",&n);
if(n<1||n>Max_size)
{ printf("\nInproper Number n!\n");
exit(1);
}
for(k=0;k<n;k++)
strcpy(list_1[k].str,"True"); //注意这里
value(list_1,0,n-1);
return 0;
}
//---------------------------------------------------------------------------
追问
追问1、strcpy(list_1[i].str, "True");语句为什么不能用list_1[i].str=="True";替换呢?
追问2、value()函数参数有list_1这个参数怎么就错了呢?
追答
C语言中除了在定义变量时初始化时可以用这种形式为字符数组赋值之外,其它的时候是不能这样为字符数组赋值的,要么用strcpy()函数,要么逐字符复制。一个字符串常量会被编译器看成一个指针(指向这个字符数组常量的指针)。
在声明(或者定义)函数时,参数列表中不能只出现参数名称,这是C语言的规定,必须写明参数的类型,而在原程序中没有写出参数的类型。
应该看看C语言的基础教程,这些都是C语言的基础知识。
展开全部
已改,看是否符合
#include<stdio.h>
#define Max_size 100
struct list
{
char str[10];
}list_1[Max_size];
void value(int i,int n)
{
int j;
if(i==n+1)
{
for(j=0;j<=n;j++)
printf("%s ",list_1[j].str);
printf(" ");
}
else
{
strcpy(list_1[i].str, "True");
value(i+1,n);
strcpy(list_1[i].str, "False");
value(i+1,n);
}
}
void main(void)
{
int n,k;
printf("input the number of booleans:\n");
scanf("%d",&n);
if(n<1||n>Max_size)
{
printf("\nInproper Number n!\n");
exit(1);
}
for(k=0;k<n;k++)
strcpy(list_1[k].str, "True");
value(0,n-1);
}
#include<stdio.h>
#define Max_size 100
struct list
{
char str[10];
}list_1[Max_size];
void value(int i,int n)
{
int j;
if(i==n+1)
{
for(j=0;j<=n;j++)
printf("%s ",list_1[j].str);
printf(" ");
}
else
{
strcpy(list_1[i].str, "True");
value(i+1,n);
strcpy(list_1[i].str, "False");
value(i+1,n);
}
}
void main(void)
{
int n,k;
printf("input the number of booleans:\n");
scanf("%d",&n);
if(n<1||n>Max_size)
{
printf("\nInproper Number n!\n");
exit(1);
}
for(k=0;k<n;k++)
strcpy(list_1[k].str, "True");
value(0,n-1);
}
追问
追问1、strcpy(list_1[i].str, "True");语句为什么不能用list_1[i].str=="True";替换呢?
追问2、value()函数参数有list_1这个参数怎么就错了呢?
追答
字符串赋值不能直接用=来赋值,一定要strcpy
你看看你的函数是怎么写的,而且,那已经是全局变量了,不需要通过参数传递进去
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-10-29
展开全部
#include<stdio.h>
#define Max_size 100
struct list
{
char str[10];
}list_1[Max_size];
void value(int i,int n)
{
int j;
if(i==n+1)
{
for(j=0;j<=n;j++)
printf("%s ",list_1[j].str);
printf(" ");
}
else
{
strcpy(list_1[i].str, "True");
value(i+1,n);
strcpy(list_1[i].str, "False");
value(i+1,n);
}
}
void main(void)
{
int n,k;
printf("input the number of booleans:\n");
scanf("%d",&n);
if(n<1||n>Max_size)
{
printf("\nInproper Number n!\n");
exit(1);
}
for(k=0;k<n;k++)
strcpy(list_1[k].str, "True");
value(0,n-1);
}
#define Max_size 100
struct list
{
char str[10];
}list_1[Max_size];
void value(int i,int n)
{
int j;
if(i==n+1)
{
for(j=0;j<=n;j++)
printf("%s ",list_1[j].str);
printf(" ");
}
else
{
strcpy(list_1[i].str, "True");
value(i+1,n);
strcpy(list_1[i].str, "False");
value(i+1,n);
}
}
void main(void)
{
int n,k;
printf("input the number of booleans:\n");
scanf("%d",&n);
if(n<1||n>Max_size)
{
printf("\nInproper Number n!\n");
exit(1);
}
for(k=0;k<n;k++)
strcpy(list_1[k].str, "True");
value(0,n-1);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询