两道C语言看程序谢结果题不会,哪位高手能帮忙解释一下,直接给答案就算了,我是新手。

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-01
几道C语言问题 请高手给看一下 找个答案 谢谢了

5.下面运算符优先级最高的是 [C]
A)<= B)= C)% D)&&
6.以下程序的输出结果是 [B]
main()
{ int a,b;
printf("%d
",(a=2)&&(b= -2));
}
A)无输出 B)1 C)-1 D)结果不确定
16.在C语言中,函数的隐含存储类别是 [C]
A)auto B)static C)extern D)无存储类别
17.下列叙述中正确的是 [C]
A)C语言编译时不检查语法 B)C语言的子程序有过程和函数两种
C)C语言的函数可以嵌套定义 D)C语言所有函数都是外部函数
27.输入一个无符号整数后求出它的各位数之和并输出。例如若输入123,则将各位之和6(即1+2+3)输出。
unsiged int f(unsigned int num;)
{ unsigned int k=0;
do
{ k+=______;
num/=10;
} while(num);
______;
}
main( )
{ unsigned int n;
scanf(〃%d〃,&n);
printf(〃%u
〃,f(n));
}
28.输入一段英文,统计其中单词的个数,句中各单词用空格分开。程序如下:
main()
{ char a[1000],i,w=0,n=0;
printf("Input char a[1000]=");
scanf("%s",a);
for(i=0; a[i]!='\0'; i++)
if(a[i]==' ') w=0;
else if(w=0)
{ w=1; n++;
}
printf("There are %d words in the line
",n);
}





第28题是书上的原题,最后一题我不懂.

将一个个c文件逐个加入工程试试看,会自动加入编译的吧

第一题:
输出结果:04321
执行过程:从 main() 函数开始执行,执行到 f(12340),进入函数 f(int x) 中,此时参数 x 的值为12340 不等于 0 ,进入 if (x) 语句,执行 putchar (x % 10 + '0'),此时,x % 10 的值为 0 , 0 + '0' 为 '0' (因为字符 '0' ~'9' 的 ASCII 码是连续的,故 0 + '0' 为 '0', 1 + '0' 为 '1',2 + '0' 为 2,以此类推),故输出 0 ,然后执行到 f (x / 10) (注意传入参数的值为 x / 10,即1234),再次调用 f (int x) 函数,内存中将会有一个新的 f (int x) 函数被创建,此时 x 的值为 1234,同上面的情况,将输出 4 ,然后再调用 f (int x) 函数,传入的参数为 123, 将会输出 3, ……最后输出 1 ,之后再调用 f 函数的时候,传入的参数为 0 (1 / 10 的值为 0 ),情况发生了变化,if (x) 内的语句将不会被执行,这个 f 函数结束,返回调用它的地方,即上一个 f 函数,返回之后,if 语句正好执行完,这个 f 函数又结束,返回调用它的地方,……最终返回到 main 函数,返回之后没有其他语句,main 函数结束,整个程序结束。

1 f函数为递归函数, putchar(x%10+'0'); 为取x的个位字符并输出。
f(x/10) /10以后再递归。也就是将12340输出到屏幕。

2考的是变量作用域问题。
但代码不正确,如i=4 应为i==4,
printf("%d%d",j);中少一变量。
k未初始化,debug与release 结果会不同。

第一题是讲输入的12340反向打印出来,即屏幕上显示的结果为04321.
putchar(x%10+'0')是将x除以十之后的余数以字符的形式打印出来,即后面加'0'的意义。
第二题代码有问题,请仔细查看题目后再提问。

孩子 自己上机运行不就解决了

第一道题:04321
第二道题感觉有点问题

  • 两道C语言看程序谢结果题不会,哪位高手能帮忙解释一下,直接给答案就算...
    答:第一题:输出结果:04321 执行过程:从 main() 函数开始执行,执行到 f(12340),进入函数 f(int x) 中,此时参数 x 的值为12340 不等于 0 ,进入 if (x) 语句,执行 putchar (x % 10 + '0'),此时,x % 10 的值为 0 , 0 + '0' 为 '0' (因为字符 '0' ~'9' 的 ASCII ...
  • c语言 看程序写出结果的问题
    答:define MAX(x,y,z) x*(y)+z//宏定义,定义MAX(x,y,z)=x*(y)+z main() //主函数 { int a=1,b=2,c=3; // 声明变量a,b,c并赋值 printf("%d\n",MAX(a+b,b+c,c+a));//因为宏定义是用标识符来代表一个字符串 } //所以MAX(a+b,b+c,c+a)被替换成了(...
  • 哪位大佬帮帮忙啊,这个C语言不会啊
    答:首先来看下程序运行的结果,由下图可知,本题目的答案为:D (16)下面我们分析一下下面的题目:1、在函数 f(int b[][4])中,for的循环体执行了4次,分别是j = 0, 1, 2, 3。2、条件if(i> 2)只有 i=j=3时才满足,所以这个条件只有最后一次才会被执行。3、因为 i = j, 所以前三次的...
  • 两道c语言,看程序写结果
    答:第一题:0246802468 在fun2这个函数中,定义了a这个数组,是局部的,所以fun2的赋值只在fun2中有用,fun3中打印的依然是原来 的 第二题:D
  • 哪位大佬帮帮忙啊,这个C语言的题不会啊
    答:这个题出的有问题,正常人不会出这种题的。首先没有什么意义。调用函数确定一个数组,需要两个量, 首地址和 数组的长度 即 出这种题的人就是jian,把简单问题复杂化。
  • c语言看程序写结果?
    答:一、参数1这里传递的是实参x的地址,因此sub函数中a地址里的值改变,x的值也变。二、注意sub中if没有大括号,作用域仅限下一句代码,也就说*a+=k;这句代码是在if作用域之外的。无论if判读成不成立,*a+=k;都会执行。所以按照递归顺序执行:第一层:n的值为8,k的值为1。执行代码:sub(x...
  • 两道c语言题求助 新学小白不会啊
    答:即a[1]=8,第六行就是输出,注意的是指针指向的内容,此时数组内容为12,8,20,所以输出应该是8,12,8 第二段程序,我建议你自己再看看,最好是自己多多想想,下午有空,就给你打这么多了,不然其他人也不会这样说太多的,因为大家都在忙啊,从你身上看到当年自己的影子,加油吧 ...
  • 阅读程序写结果,求C语言高手在线等,好多不会的,要考试了啊啊啊_百度...
    答:x=1 所以执行case 1:a--,a由2变为1 b未改变 所以printf("\na=%d,b=%d\n",a,b);结果为:(换行)a=1,b=3 (换行)
  • 哪位C语言,计算机大神帮忙讲下这个题啊,感激不尽!!真的是不会做啊...
    答:比如以加法为例,产生的数a,b放在数组里,用一个变量c保存结果,c=a+b,然后scanf,让用户输入,输入的值和c比较,看对不对。如果是除法要先判断1.除数是否为0,2能否整除,如果不满足条件重新生成随机数。如此循环10次,每次循环结束给出当前题目答案。选2就是文件读取相关,用文件操作读取即可,...
  • C语言程序不会编啊,哪位大神帮我看看!重新帮我整理一下这几步?_百度知...
    答:最后的大括号后面加一个换行