C语言高手帮帮忙!
随机序列的产生是有规律的,当然也不是这样说
就是说:srand影响了之后产生随机数的整个序列
假如你不用这个的话后面产生的随机序列可能会相同,为了避免这样的情况就利用srand(time(NULL));
你不妨试试下面的程序看看
#include
#include
#include
int main(void)
{
int i;
//srand( time(NULL) );
for( i = 0; i < 10; i++ )
printf( "Random number #%d: %d
", i, rand() );
return 0;
}
然后你把隐去的那段不要隐了
看一下结果你就明白了,呵呵
我语言表达不是很好,不过一看就明白了
你的两个数组的长度都是 80。如果不是动态开辟的数组,你声明的时候给多少长度就是多少长度。
第二个数组的长度是2?估计你使用 strlen 函数求吧? strlen只能求字符串长度,没办法求数组长度。strlen 是用 '\0' 来判断字符串的结束标志的,而你第二个数组中放置了几个'\0' (ASCII码为0,),所以得到的长度是 2。将第二个数组改为char m[80]={'1','1','0','1','0','0','0'}; 用 strlen 求得结果为 7。
求数组长度的正确方法:
sizeof(mes)/sizeof(int);
sizeof(mes)/sizeof(char)
原因如下:
由于a被初始化为100,所以a>100不成立,进入else分支进行处理:
else printf ( "%d\n", a<=100 );
又由于a<=100成立,所以该判断式的值为1,
所以最后输出1
(2)当a=1,b=2,c=3时,以下if语句执行后,a、b、c中的值分别是:a=3,b=1,c=1
原因如下:
if(a<c)
b=a;a=c;c=b;
注意一点,由于“b=a;a=c;c=b; ”没有被花括号括起来,所以if语句只控制到“b=a;”这一句,所以执行如下:
if(a<c) //a=1,c=3,a<c不成立,b=a不被执行
b=a;
a=c;//将c的值赋给a,a=3
c=b;//将b的值赋给c,c=1
所以最后a=3,b=1,c=1
(3)输出的结果是: *#
原来的代码有问题,需要改称下面这样:
x=0;y=2;z=3;
switch(x)
{ case 0 : switch (y==2)
{ case 1 : printf ("*");break;
case 2 : printf ("%");break;
}//在这儿加一个花括号
case 1 : switch ( z )
{ case 1 : printf("$");
case 2 : printf("*");break;
default : printf("#");
}
}
说明如下:
x=0,所以进入case 0分支,进行switch (y==2)判断,由于y=2,所以y==2判断结果为1,
执行printf ("*");并且break跳出switch (y==2)
但是注意case 0分支后并没有break,所以继续执行后续处理,
进行switch (z)判断,由于z=3,所以执行default : printf("#");
所以最后输出: *#
(1):答案只会是1。
(2):b=1;a=3,c=1;
(3):题有问题,少了一个}。
(1)显示结果始终是1,因为进入判断分支的前提就是a与100的关系,输出的是判断表达式的结果;
(2)b=1;a=3;c=1;
(3)打印结果*#,因为当执行switch(x)时进入case1的结尾没有break,所以继续执行default中的语句。(在每个case 2 语句后面加一个“}”后程序正常运行)
if ( a > 100 ) printf ( "%d\n",a > 100 );
else printf ( "%d\n", a < =100 );
你肯定想要的是打印出 a < =100 与a > 100 ,那么你不想打印出1的话就把这两个表达式放在双引号里面的%d前面就可以了。
其它那个匿名的高手已经给你解释清楚了,请仔细查阅。
第一个是1 对 因为是表示判断的。 第二个 是3,1,1 因为 比如a=1 表示的 是把1赋值给a 并不是a=1的意思。 第三个case 2 : printf ("%");break;
后边少个“}” 值是怎么得的下边有人介绍我就不添一棒子了。
相关视频
c语言高手帮帮忙!
"王","李","赵","废票"};while (true) {printf("输入1选张,输入2选王,输入3选李,输入4选赵,输入-1结束投票,输入其他值为废票\\n");scanf("%s", &input);if (strcmp(input,"1") == 0) {++piao[0];++total;} else if (strcmp(input,"2") == 0) {++piao[1];++total;}
C语言高手帮帮忙!
(1)显示结果始终是1,因为进入判断分支的前提就是a与100的关系,输出的是判断表达式的结果;(2)b=1;a=3;c=1;(3)打印结果*#,因为当执行switch(x)时进入case1的结尾没有break,所以继续执行default中的语句。(在每个case 2 语句后面加一个“}”后程序正常运行)(1):答案只会是1。(...
求C语言高手帮忙!!! 输入n个数字,把它们反过来输出——但是不能用循环...
void main(){ int n,i;char *p;printf("Please input n:\\n");scanf("%d",&n);p=(char *)malloc((n+1)*sizeof(char));\/\/由于是用字符数组,故多分一个空间存n与接下来n个数字之间的回车或者空格键;for(i=0;i<n+1;i++)scanf("%c",p+i);\/\/*p应该为回车符'\\n'或者空格符...
一道c语言问题,请各位高手们帮帮忙,谢谢
char p[][20]={“get”,”put”,”out”};p是一个有3个元素的数组,数组中的每个元素都是一个char[20]类型的数组。也就是说,p是一个二维数组。strlen(p[0])+strlen(p[1])+ strlen(p[2])即计算p中的三个字符串的长度总和,为3+3+3=9。
C语言高手们帮帮忙呀
main() \/*主题 { char c1,c2; \/*定义两个变量,C1和C2 for(c1='0',c2='9';c1<c2;c1++,c2--); \/*C1的初始值为0,C2的初始值为9如果C1<C2,则C1进行自增,C2进行自减 printf("%c%c",c1,c2); \/*输入C1C2的值 printf("\\n"); \/*输出回车(即换行)} 明显,首先C1C2从09变
C语言高手帮忙啊!
struct point { float x;float y;};get_point(struct point *p){ float a,b;scanf("%f,%f",&a,&b);p->x=a;p->y=b;return 0;} put_point(struct point a){ printf("%f,%f\\n",a.x,a.y);return 0;} struct point add(struct point a,struct point b){ struct point c;c....