一个C语言的问题,求大神解答原因!

作者&投稿:夔吴 (若有异议请与网页底部的电邮联系)
一题C语言,求大神解答~

#includemain(){ int n; printf("Enter n:"); scanf("%d",&n); if(n%2==0) printf("整数 %d 是偶数,",n); else printf("整数 %d 不是偶数,",n); if(n%3==0) printf("能被3整除"); else printf("不能被3整除");}代码如上,功能已经测试过,望采纳!

我给你写了一个
#include #includetypedef struct _date{ int year; int month; int day;}date;int dayofyear(int year,int month, int day);int dayofyear_date(date d);int getdaysofmonth(int year,int month);int isleapyear(int year);int main(){ int count,index,year,month,day,*result; date *pdate; printf("输入你要判断的日期总数目"); scanf("%d",&count); if(count > 0) { result = (int*)malloc(sizeof(int)*count); pdate = (date*)malloc(sizeof(date)*count); for(index = 0; index year = year; (pdate + index)->month = month; (pdate + index)-> day = day; } for(index = 0; index year, (pdate + index)->month, (pdate + index)-> day); } for(index = 0; index < count; ++index) { printf("%d
",*(result + index)); } free(pdate); free(result); } return 0;}int dayofyear(int year,int month, int day){ int i,days = 0; for(i=1;i<month;++i) { days += getdaysofmonth(year,i); } days += day; return days;}int getdaysofmonth(int year,int month){ switch(year) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; case 4: case 6: case 9: case 11: return 30; case 2: if(isleapyear(year)) return 29; return 28; default: return 0; }}int isleapyear(int year){ return 0;}int dayofyear_date(date d){ return dayofyear(d.year,d.month,d.day);}
是否可以解决您的问题?

1、sub1中的变量a,b是其所在文件中定义的,其中a是静态全局变量,b是全局变量
a会默认初始化为0,因此第一次执行sub1()时输出结果中a=0+2=2, b=3+3=6。
sub2中的变量a是其所在文件中定义的静态全局变量,因为与sub1()所处不同文件,因此变量a是不同的;而变量b是与另一个文件共享的全局变量。因此第一次执行sub2()时输出结果中a=10+10=20, b=6+2=8。
再次执行sub1(),a=2+2=4, b=8+3=11
再次执行sub2(),a=20+10=30, b=11+2=13
最后在main函数中输出的a仍然是文件中的静态全局变量,a=4,而b=13

2、注释1去掉static,a变为全局变量,但不会产生影响,因为sub2中仍使用的是其文件内定义的静态全局变量

3、加上注释2的语句后,sub1中的变量a变为其函数内定义的局部变量,每次进入都重新初始化为5
而b不受影响,sub2()中执行也不受影响,只列出与1中不同的输出结果
因此,第一次sub1(), a=5+2=7
第二次sub1(), a=5+2=7
最后main函数中的a是文件中的静态全局变量,其值为初始值,即a=0

4、加上static后,sub1中的变量a变为静态局部变量,在运行初始化时其值为5,之后进入函数不再初始化,其余不受影响(与3中相同)
因此,第一次sub1(), a=5+2=7
第二次sub1(), a=7+2=9

变量和函数的存储类以及链接性有关


C语言问题 1*2*3*...*1000结果是一个很大的数,求这个数末尾有多少个连续...
{ if (n < 5) return 0;return n \/ 5 + f(n \/ 5);} int main(){ printf("%d\\n", f(1000));system("pause");return 0;} f(1000)即为所求299个 大概解释一下 1 * 2 * 3 * 4 * 5 * …… * 1000 里面能被5整除的有5,10,15,……,1000 这些数正好是1000 \/ ...

一个C语言转义符识别问题。求大佬解答?
else if (txt[i] == t && p >= 0 && p + 1 < i) { \/\/ 匹配到一个表情 for (j = p + 1; j < i; ++j)printf("%c", txt[j]);return;} } printf("未匹配到表情");} int main() { char txt[141], s, t; \/\/ 转义和终止符 printf("输入转义符: ");scanf("%c...

求问第一第二这两个c语言的题目怎么做。求详细的解答步骤
第一题:执行 i = 0后,i = 1;j = 2后, j = 2;a = ++i;该语句先i自加,再把值赋值给a,所以a = 2, i = 2 b = j++; 该语句先把j的值赋值给b,然后j自加。所以,b = 2, j = 3;第二题:执行 i = 1后, i = 1 j = 2后, j = 2 a+= i++;可以把...

C语言题目,求大神解析!
程序1,输出:a972 include<stdio.h> union example_uni { int i;char ch;}a;int main(){ a.ch='a';printf("%c%d",a.i,a.ch); \/\/输出a97('a'的ASCII码即为97)a.i=2;printf("%d",a.i); \/\/输出2 } 程序2,输出:8 12 20 include<stdio.h> int f(int a)...

求大神C语言编程,题目要求在下面
下面是我的代码,三个函数分别对应三个问题。include<stdio.h> define MLEN 20\/\/字符串最大长度 char fun1();void fun2();void fun3();int main(void){ fun1();fun2();fun3();return 0;} char fun1(){ int nI;float nF;char c;char str[MLEN];printf("请分别输入1个整数,1个...

C语言问题,题目:输入一个5位数以内的正整数,要求输出这是个几位数?每...
"%d位数\\n每一位是:",len);for(n=len-1;n>=0;n--){ printf("%d ",a[n]);} } 你的没什么问题啊,你用什么编译器啊,不是16位的吧,如果是16位编译器,可能会有溢出 这个是我测试你的程序的结果:87654 this is 5 steps b=8 c=7 d=6 e=5 f=4请按任意键继续. . ....

大一C语言题目求解
c=n[0][j]+n[1][j]-2*’0’;——把对应字符相加变成了数字相加,如第一次是'0'+'8'-2*'0'结果就是数字0+8==8。第二次得到'8'+'9'-2*'0'==17,相应地第三次是10,最后一次是17。后面n[0][j]=c%10+’0’;又相应地把第一次的得数8+了'0'变成了字符'8'并存储到n[...

求助一个c语言问题?
既然+0和-0的补码一致,所以只需保留一个(+0和-0原码不同,注意看符号位)。这样一来,“[-0] = [10000000]原”相当于没有使用,于是规定:“[10000000]”为-128。既然是“规定”,就不能按原码、反码、补码的规则计算了。设计计算机时就在硬件中设置为:10000000代表-128。之所以引入补码,是...

C语言问题:编写程序求:1!+2!+3!+4!+5! 求大家帮忙谢谢
C语言问题:编写程序求:1!+2!+3!+4!+5!这个问题,只要使用一个单重循环就可以解决的。include<stdio.h> int main(){int i,t,s=0;for(i=1;i<6;i++){t*=i;s+=t;} printf("%d\\n",s);return 0;}

求助一个C语言问题 为什么在VC中老是提示我 warning C4101: 'c...
警告的意思为:警告C4101:'e':未引用的局部变量 原因是局部变量的错误使用。你的 f,c,k都是在main()函数里面定义的,然而,你在使用这些变量时是在temp()函数里面,在某个函数里面定义的变量只能在此函数中使用,所以你会产生错误。解决办法为,将这些变量定义为全局变量。问题成功解决。

蚌埠市18217485673: C语言问题,求大神解决,我是小白,解释下原因,谢谢拉.下列变量定义中合法的是 A) short - a=1 - .le - 1 ; B) double b=1+5e2.5 ; C) long do=0xfdaL ; D) float ... -
倚珊迪北:[答案] A 前面的0应该要写上 0.1e-1

蚌埠市18217485673: C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下原因 -
倚珊迪北: 已修改,看注释#include int main() { char a[20],b[20],c[50],*p1,*p2,*p3; p1=a,p2=b,p3=c; gets(a); while(*p1) { *p2 = (*p1)+3; //对字符串中的每个字符用加3的方法加密并存入数组b p1++; p2++; }*p2='\0'; //串结束符 p2=b ; //p2重新指向b的开始位置 while(*p2) { *p3 = (*p2)-3; //对b中的字符串解密存入数组c p3++; p2++; }*p3='\0'; puts(a); //puts是输出一个串 puts(b); puts(c); return 0; }

蚌埠市18217485673: 一个简单的C语言问题,求解答~~ -
倚珊迪北: 这都是一样的.但是习惯是把变量放在右边,常量放在右边.如:0 == i.这样就是防止把==打成=.这样就会使编译器报错.但如果是i == 0.这样如果写成了i=0,编译器是不会报错的.但是逻辑上就会...

蚌埠市18217485673: 问大神们一题C语言遇到的问题,求解释 -
倚珊迪北: 结果应该是 循环打印1.01.1.....1.9 推出循环时 x = 2.0 循环条件 为 xx = 2.0 此时 x编译器会精确出 x实际值并不刚好等于2.0,其判断方法是 无限接近 认为相等 可以修改循环条件 x 代码如下:已经调试,望采纳#include #include int main() { double x; for(x = 1.0; xprintf("%.1f\n", x); return 0; }

蚌埠市18217485673: C语言问题,求大神解决,我是小白,最好解释下原因,谢谢拉. -
倚珊迪北: 因为有四条是合法的啊,if (a-b) x++; 这一句是错的,因为括号里面需要的是一个判断性的语句,而不是一个算式

蚌埠市18217485673: 一道C语言的问题求大神解答!!! -
倚珊迪北: 你好,代码如下 #include<stdio.h> float avg(float *p,int n) { int i = 0; float sum = 0; for(i = 0 ;i < n;i++) { sum += *(p+i);} return sum/n; }int main(void){ float arraya[5],arrayb[8]; int i = 0; printf("请输入数组a的元素:\t"); for(i = 0 ; i <5; i++) { scanf(...

蚌埠市18217485673: C语言问题,求大神解决,谢谢拉..我是小白,解释下原因 -
倚珊迪北: while((ch=getchar(给ch变量赋值,当遇到#时结束 switch (ch) //判断ch值{case'a...

蚌埠市18217485673: 一个c语言文件问题求大神帮忙解决 -
倚珊迪北: 你那个 stu[m] 前的 & 取掉 ,看看C语言数组和指针那一章

蚌埠市18217485673: 一个C语言问题,求高手指教! -
倚珊迪北: 典型的求素数的代码,这是等于是可能的如果不是素数,那么k不等到i就break跳出循环了,这个你明白所以k小雨i的时候就不是素数如果是素数,那么k会循环到i,这个是for的机制得出的.那么k...

蚌埠市18217485673: c语言问题,求大神解答 -
倚珊迪北: char a=97 a为字符型,对应的是ASCII码表中十进制数97对应的字符,是a c对应的字符是A,对应的ASCII码表中十进制数是65 输出语句的意思是计算字符a和字符A在ASCII码表中对应十进制数的差并按规定格式输出.97-65=32 结果输出a-A=32 选C

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网