关于C语言编写程序的一个疑问 高手帮忙看看我的程序哪错了

2024-11-01 05:42:09
推荐回答(3个)
回答1:

看了你的代码觉得,你在C语言的语法规则上还有待提高啊,在此举出你所给出的代码的若干错误。

首先,你的代码不完整。第9、11、13行要定义三个100行的二维字符数组,如果仅仅是类似char adj[100][12]={"开心的"}的定义;这样adj[1]到adj[99]这99个词都会是空值(ASCII码为0),若用printf()函数把这个范围内的某个字符数组打印,将会什么都看不到。所以,你记得要把这总共300个词补全。

其次,格式化输出的格式有错误。若定义一个字符数组,char ch[20] = "hahaha";将它以字符串的形式输出,用printf("%s",ch);而在以上代码中,%s全都写成了s%。以后不要粗心了啊。

再次,也是以刚刚我举的为例。20位的字符数组ch[20]以字符串形式输出,用到的是printf("%s",ch);注意,这里是ch而不是ch[20]。现在你知道问题出在哪里了吧。若是将二维数组adj[100][12]的第0行字符数组以字符串形式输出,那应该是printf("%s", adj[0]);注意这里是adj[0]而不是adj[0][12],如果你用adj[0][12],逻辑上来讲,不是数组访问越界嘛。

最后,尽量不要在C语言代码中夹杂中文,虽然我知道你是在做说明,那就正规点用//作注释。不要再写成char verb[100][8]={"开炮",等一百个词}; 养成良好的代码书写习惯也是学习C语言很重要的一环。

特别提醒这四个问题,祝你编程方面有所提高。另外说明一声,C语言是认汉字的,你老师说的没错。
以下附上正确代码,在VC6中编译运行通过了的。具体不知道你要什么样的300个单词,这部分就自己补全吧。

#include
#include
#include

void main(void)
{
srand( (unsigned)time( NULL ) ); //埋下时间种子

char adj[100][12]={"开心的"}; //补全剩下99个单词

char verb[100][8]={"开炮"}; //补全剩下99个单词

char noun[100][12]={"美女"}; //补全剩下99个单词

char pron[12][12]={"妈妈","爸爸","姐姐","杰杰","猫老大","小辉","黄源兄","何俊","spider","孩子他妈","考拉","五月天"};

int a[17],i; //定义随机结构变量数组 a 和 循环结构控制变量 i

for (i=0;i<16;i++)
{
a[i]=rand()%100;
} //给随机数组中的前16个元素赋0-99的随机值

a[16]=rand()%12; //给随机数组中的最后一个元素赋0-11的随机值

printf("%s是%s\n%s,%s,%s\n%s在%s,%s%s在%s\n%s%s和%s%s在%s\n%s是%s",noun[a[0]],adj[a[1]],noun[a[2]],noun[a[3]],noun[a[4]],pron[a[16]],verb[a[5]],adj[a[6]],noun[a[7]],verb[a[8]],adj[a[9]],adj[a[10]],adj[a[11]],noun[a[12]],verb[a[13]],noun[a[14]],adj[15]); //输出结果

}

同楼上回答。。。虽然在我的机器上没啥问题。

回答2:

C语言的变量定义必须在函数的最开头。 你把 srand那句挪到所有的变量定义后面去就行了

回答3:

#include
#include
#include

void main(void)
{
srand( (unsigned)time( NULL ) ); //埋下时间种子

char adj[100]={"开心的.。。。",等一百个词};

char verb[100]={"开炮",等一百个词};

char noun[100]={"美女",等一百个词};

char pron[12]={"妈妈","爸爸","姐姐","杰杰","猫老大","小辉","黄源兄","何俊","spider","孩子他妈","考拉","五月天"};

int a[17],i; //定义随机结构变量数组 a 和 循环结构控制变量 i

for (i=0;i<16;i++)
{a[i]=rand()%100;} //给随机数组中的前16个元素赋0-99的随机值

a[16]=rand()%12; //给随机数组中的最后一个元素赋0-11的随机值

printf("s%是s%\ns%,s%,s%\ns%在s%,s%s%在s%\ns%s%和s%s%在s%\ns%是s%",noun[a[0]],adj[a[1]],noun[a[2]],noun[a[3]],noun[a[4]],pron[a[16]],verb[a[5]],adj[a[6]],noun[a[7]],verb[a[8]],adj[a[9]],adj[a[10]],adj[a[11]],noun[a[12]],verb[a[13]],noun[a[14]],adj[15]); //输出结果
}

以上这些应该可以了,主要是你定义是多维数组,赋值有问题!~