注册 登录
编程论坛 C语言论坛

想不明白呀?求大佬告知

梦伦 发布于 2020-06-21 21:14, 1880 次点击
#include<stdio.h>
//static int s;//为什么放在这里可以
int main()
{
int i,n,s;
scanf("%d",&n);
for(i=1;i<n;i++)
{
    if((i%3==0)&&(i%5==0))
    {  static s=0;//为什么static在这时下面的输出的s是乱码
        printf("%d,",i);
        s=s+1;
   
    }
}
printf("=>共%d个数满足条件\n",s);
 }
6 回复
#2
梦伦2020-06-21 21:14
求大佬告知

#3
牧人马2020-06-22 01:09
放在第二行相当于一个全局变量,所有函数都可以调用,第二个注释的地方只能作用于if的范围内,可以类比:
程序代码:

for(int i=0;i<10;i++)
printf("this is i:%d",i);
printf("this is not i:%d",i);

另外关于静态变量,这篇博客解释的很详细了 https://

[此贴子已经被作者于2020-6-22 01:23编辑过]

#4
rjsp2020-06-22 08:28
你的代码没法编译通过,因为“int i,ns;”中有个中文逗号。
另外,“printf("=>共%d个数满足条件\n",s);”中 s 定义在 “int i,n,s;”,而它一直没有被初始化或赋值过。

正确的代码应该是
程序代码:
#include <stdio.h>

int main( void )
{
    unsigned n;
    scanf( "%u", &n );

    unsigned s = 0;
    for( unsigned i=1; i!=n; ++i )
    {
        if( i%3==0 && i%5==0 )
        {
            printf( "%u,", i );
            ++s;
        }
    }
    printf( " => 共%u个数满足条件\n", s );

 }
#5
梦伦2020-09-06 22:14
回复 4楼 rjsp
好的,谢谢大佬。我打错了。
#6
梦伦2020-09-06 22:15
谢谢楼上的大佬。
#7
bbbt3212020-09-13 14:16
学习一下
1