C语言问题,菜鸟一个求解救~~

作者&投稿:偶岩 (若有异议请与网页底部的电邮联系)
C语言题目~本人菜鸟求教~~

#include "stdio.h"

void main()
{
int a,b,c;

int max;
scanf("%d,%d,%d",&a,&b,&c);


max = a > b ? a:b;
max = max > c ? max:c;
printf("max = %d
",max);
}

以下是修改后的程序:只改了两处第一处是第五行,第二处就是你说的有问题的地方。

#include"stdio.h"
#include"math.h"
#include"stdlib.h"
#include"time.h"
#include //。。。。。。。。。。。。。。字符库函数
int main(){
int giveNum,guessNum,useTime;
int max; //设定范围
int ifAgain=1;char ia;
long beginTime,endTime;
while(ifAgain==1){
printf("欢迎进入猜字游戏!
请输入所猜数字的最大范围:");
scanf("%d",&max);
srand((unsigned)time(NULL)); //设置随机种子
while((giveNum = (int)rand())>max){}; //系统随机生成一个数
printf("请输入一个0~%d数字:",max);
beginTime = time(NULL); //开始计时
scanf("%d",&guessNum);
while(guessNum != giveNum){
if(guessNum > giveNum){
printf("请输入小点的数:");
scanf("%d",&guessNum);
}
else {
printf("请输入大点的数:");
scanf("%d",&guessNum);
}
}
endTime = time(NULL); //结束计时
useTime = endTime-beginTime;
printf("well,the number you guess is %d
it takes you %ds
",guessNum,useTime);
if(max/10>useTime){
printf("你真棒!!!");
}
else{
printf("您可以更快哦...
");
}
printf("是否要继续???
(y):再来一次/ 其他键:退出
");
if((ia=getch())!='y') ifAgain=0;
//getchar()需要按回车后才能从键盘读取字符,
//getch()不需要按回车,就能从键盘读取字符
//只有一条语句没必要用大括号

}
return 0 ;
}

你好

首先楼主要知道:
用static关键词标示的变量是静态全局变量
在函数中只被初始化一次 再次进入函数时不会被初始化
而是执行上一次该函数后的值
首先从循环入手 显然循环执行2次
第一次:
s=fun() --> x=1(第一次被初始化为1) x*2不会改变x的值
return x --> s=x=1 此时x=1
第二次:
s=fun() --> x=1(虽然还是1 是因为上一次x的值依然还是1 其实x没被初始化)
x*2依然不会改变x的值
return x --> s=x=1
因此最终结果是s=1
那么运行结果就是1 选择B

希望能帮助你哈

按你写的题,fun()每次返回的都是1,因此结果s=1;
根据这里的知识点,我想你有可能是写错了,可能是下面这样:
int fun()
{
static int x=1; //静态变量可视作全局变量,所不同的是,这里的初值只有第一次时起作用。
x*=2; //如果这里*=,则返回结果则不同 第一次,x=1 x*=2后x变为2,第二次,x=2 x*=2 后变成4
return x;
}

for(i=1;i<=2;i++) s=fun(); //循环两次,因此,s=4

答案应该是A(1)因为fun函数中的x是static变量的,存储储在静态数据区(全局变量和static变量)的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。

简单的说,就是不管你main函数调用几次的fun函数,static int x=1这行只有在第一次调用的时候被执行。

额。。。如果你确定你题目没抄错的话这个题其实是选B的。。。因为fun()中x*2根本就没对x进行改变。这是个脑筋急转弯。。。。
如果题目是X*=2的话,这个题应该选C,因为x是静态变量,不管它被写在那里都只会声明一次,而且是在程序开始的时候,后来一直都是在已有的x上进行操作。

B,不需要详解。
你的程序中错误百出,如果除去这些以你的格式为正确的编排,放VC上就是1.
因为x一直能于1,所以无论返回几次s=fun(),都一定是1.


问一个菜鸟的C语言问题,谢谢大家
第三个是错的,第一个是一个整形的函数,带两个整形的形参;第二个是一个void类型的函数,也是带两个整形的形参!

第二个问题:分析一个 C 语言短小程序(菜鸟级问题)
a[i]=10-i,这个就是计算公式。a[2]=10-2=8 a[5]=10-5=5

请大神解释一下n*10是什么意思?n不是一直等于0吗?c语言大菜鸟一个
while(*p!='\\0') \/\/当字符不是字符串结束符时执行循环{n=n*10+*p-'0';\/\/n的值左移一位,加上p指向的字符,再减去0对应的ASCII码,就得到n的中间值p++ \/\/指针后移一位}例如123 n=0,n*10+1=1 n*10+2=1*10+2=12 n*10+3=12*10+3=123 这样就得到123了。每次n都得到新值...

一条简单的C语言问题求助,我是菜鸟..
int main(int argc, char *argv[]){ double x;double y;double p = (x*y);\/\/这样定义有问题吧,x,y中都无初值,后面几句类似问题 double s = (x+y);double total = (s*s)+(p*(s-x)*(p+y));printf("please enter two number:");scanf ("%f %f",&x,&y); \/\/这样是输入了...

我是菜鸟!有一个有关C语言小程序的疑问
分析过程:1.函数首先进入main()中,要求输入2个数,scanf("%d%d",&x,&y);是指把输入的两个数值分别保存 x和y中了.2.z=max(x,y);这个表达式,先分析右边,右边是一个max函数体,当main()函数执行到这块就会调用int max(int a,int b)函数,顺便把x和y的值分别赋给形参a和b.(相当于a=...

哪位好心的大神帮忙讲下C语言的题,我是一个初学的菜鸟,拜托了
这道题的关键在switch函数这里,因为x=1,所以函数可以这样看:switch(1){case 0: b++;case 1: a++;case 2: a++,b++;}1、现在开始进入switch函数。因为函数的判断条件是1,所在选择条件中从1的项开始运行,即a++;此时a=1,b=0;2、因为函数中没有break语句,所以继续执行case 2。执行a...

SQL语言问题,菜鸟求助
','"&hkszd3&"','"&gzdw&"','"&lxdh&"','"&zyshgx11&"','"&zyshgx12&"','"&zyshgx13&"','"&zyshgx21&"','"&zyshgx22&"','"&zyshgx23&"','"&zyshgx31&"','"&zyshgx32&"','"&zyshgx33&"','"&lrdw&"','"&lkyy&"')"去掉了一个引号,values前面的....

关于C程序的一个菜鸟的问题?
一看你的程序,就知道你是第一次写语言,你的程序有不少漏洞,我归纳如下:1.加头文件 #include "stdio.h"2.main前面加 void 3.体积,还有三个棱长最好定义成float型 4.scanf读数时,格式控制符之间最好什么都不加,即写成 scanf("%f%f%f",&a,&b,&c);5.在主程序之前要先申明子函数 ...

一个日语的菜鸟问题 高手帮忙解决下
1, 五段活用动词 五段活用动词是动词中的一个大家族。词尾形式多样,词尾变化分布广,学习时应掌握其规律性的东西。词尾特征:词尾共有九种形式,均为「う」段假名。即:く、ぐ、す、つ、ぬ、ぶ、む、る、う 动词举例:书・く、泳・ぐ、出・す、立・つ、死&#...

再提两个菜鸟C语言程序问题,急求解答!!!1
1.include <stdio.h> void main(){ int nMaxLen = 321;int a = 17, b = 27;int na = 1, nb;do { na++;nb = (321 - na * a) \/ b;printf("na = %d, nb = %d\\n", na, nb);} while (nb > 1);} 2.include <iostream> include <stdio.h> int func(int n){ retu...

陈仓区17571955058: 急~~~~~~~一个菜鸟的简单C语言问题,求高手解答... -
独全妇血: 这个是char型的问题 你改成这样就行了scanf(" %c",...

陈仓区17571955058: 菜鸟求助C语言的一个小问题忘大神帮忙 -
独全妇血: #include<stdio.h> int main() { int a[10],x,*p,*q; printf("请输入十个整数:\n"); for(p=a;p<a+10;++p) scanf("%d",p); printf("请输入待删数据:"); scanf("%d",&x); for(p=q=a;p<a+10;p++) if(x!=*p) *(q++)=*p; if(q==p) printf("查无此数!\n"); else { for(p=a;p<q;) printf("%5d",*p++); printf("\n"); } }

陈仓区17571955058: C语言,问题~~~菜鸟求解
独全妇血: 你程序的问题确实出在回车键上,回车键=回车+换行(ASCII为10和13)你可以在需要时清空键盘缓冲区来解决这个问题,函数fflush(stdin); (以下是你的程序,只在倒数第4行和第11行加了这个函数) 还有一个错误,你的统计字符个数的那几...

陈仓区17571955058: 关于C语言的一个菜鸟级问题 -
独全妇血: printf("%d%d%d%d\n",1+2,5,-2*4,11%3); "%d%d%d%d\n" 这里的点表示显示的小数位,给你看一个例子,%10.6f 表示输出的浮点数占10位,其中小数点后面有6位,整...

陈仓区17571955058: 求助:一个C语言编程的菜鸟问题
独全妇血: #include<stdio.h> #include<math.h> void main() { float a,b,c,p,s; //这里用double比较好 printf("Input a,b,c:\n"); scanf("%f%f%f",&a,&b,&c); //scanf把三个double型的变量输送到a,b,c的地址,故用取地址符& //以下代码帮你重新写过,因为你写...

陈仓区17571955058: 新手菜鸟求一道简单C语言题目解答..
独全妇血: 【stdlib.h】这个头文件为你下边调用某些C语言提供的函数,比如system提供了调用规则描述.如果你不写这句,在程序编译时就会报错,比如system没有定义之类.那么如果你的程序在编译时报这样的错,你就需要查一下你调用的函数是在哪...

陈仓区17571955058: C语言菜鸟求高手解答... -
独全妇血: 1 (x>=1 && x<=10) || (x>=15 && x<=20)2 开始m = 5,接下来m++>5,先判断,后加,即m先于5判断,再++,所以m++>5为false,结束后m=6,执行printf("%d\n",m--);同样,先输出,后--,即输出6,结束后m=5.希望有所帮助

陈仓区17571955058: 菜鸟求助,一道C语言的题,麻烦大家帮我看看哪儿错了..... -
独全妇血: #include int main(){ char ch,a[1000]; int i=0,k; FILE*in,*out; in=fopen("copy.in","r"); if (NULL == in) { ...

陈仓区17571955058: 关于C语言中一个比较低级的问题.菜鸟求解~急 -
独全妇血: 调用时至少要带2个参数,也可以带3个.理由是参数int g已经带有默认值了.当调用该函数时,若是有2个参数,则它的第三个参数默认为值5;若是有3个参数,则第三个参数的值为你指...

陈仓区17571955058: c 语言初学者,菜鸟问题求帮助.二维数组中,输入列数m,然后逐步检测行数i ,如果数组值小于60,就输出. -
独全妇血: #include void main(){ float score[][4]={{60.0,70.0,80.5,90.5},{56.0,89.0,67.0,88.0}...

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