大一C语言问题,求解答啊
#include int main() { int a[3][3]={{1,5,8},{9,5,7},{4,2,3}},i,j,m; for(i=0;im) //判断第i行后面的数是否比第i行第一个数大 m=a[i][j]; //如果是 就把大的赋给m printf("%d",m); } return 0; }//这个程序就是求出每行中的最大值
首先main函数中的if else语句是判断调用judge函数的返回结果是1 还是0,如果是1的话就打印yes,否则打印no,这个必须清楚。
接下来我们看judge这个函数,他有3个形参xyz,这个函数也是由1个if else判断语句组成的,判断的语句为x+y>z&&x+z>y&&y+z>x &&的意思是与的意思,意思就是说这3个子表达式x+y>z x+z>y y+z>x 3个语句必须全部同时成立,才是对的,x+y>z&&x+z>y&&y+z>x 整个表达式值才会为1,那么if语句为真,返回1 否则任何1个子表达式不满足就返回0了,这个1或者0就是函数的返回值
现在 我们来看你的输入,第一次 111 明显1+1>1 if(x+y>z&&x+z>y&&y+z>x) 3个子表达式都成立,judge函数返回1,main函数中打印yes ,第二次1 2 3 1+2=3 那么子表达式有个为假了,整个表达式的值为0,函数返回0,main函数中if语句为假,执行else中的语句,打印no。
逗号表达式,从左往右计算,表达式的值为最右边表达式的值
n=i=2,++i,i++整个表达式的值就是i++的值
从左往右计算:
n=i=2 i=2
++i i=3
i++ 返回3,i的值变为4
表达式的值为i++返回的值,所以是3
n = i =2
就是指将2赋值给i,然后将 i 赋值给n。
++i和i++ 都有i = i+1的意思,但是前者在当前语句就生效,后者在下一条语句生效。
所以++i 就是i = 2+1 = 3;
i++ 还是3,但是在下一条语句里i = 3+1 = 4
jhx1008的答案更好,选他的吧
你只要理解 ++i 和i++ 的原理就可以了 。。
因为 这样的题目可能会因为编译器的不同 结果可能也不同。。
想要真正的了解 只能看编译器 ,编译后的汇编代码 。。
个人认为这题目的答案为4,不论是i++还是++i,确定的是i的值都会增1;只是i++时表达式的值没变,此时i的值要比表达式的值大1。除非最后你return i++;这样3的答案才解释的通。。
答案是n是2
i是4
i++这条语句时是3,但下一个语句就是4咯
c语言问题求解!!!谢谢!!!
2、字符串长度问题。字符串赋初值时,系统自动给字符串分配一个空间存储‘\\0’字符结束判定字符。他是一个隐藏字符。求字符长度时,strlen求字符长度时会自动忽略‘\\0’,但sizeof不会,所以求字符长度时,sizeof() = strlen() +1;3、自增运算符的运算机制问题。自增运算符放在变量后面,如a++,...
一个C语言的问题,求大神解答原因!
1、sub1中的变量a,b是其所在文件中定义的,其中a是静态全局变量,b是全局变量 a会默认初始化为0,因此第一次执行sub1()时输出结果中a=0+2=2, b=3+3=6。sub2中的变量a是其所在文件中定义的静态全局变量,因为与sub1()所处不同文件,因此变量a是不同的;而变量b是与另一个文件共享的全局...
一个C语言问题,求大佬解答?
define MAX_LEN 80 \/\/ 字符串最大长度 int main(int argc, char *argv[]){ if (argc < 2) { printf("Please specify a file name.\\n");return 1;} \/\/ 从命令行得到文件名 char *file_name = argv[1];\/\/ 打开文件 FILE *fp = fopen(file_name, "r");if (fp == NULL) {...
一道C语言问题求解答
长度为9,再加一块长度为1的。长度为8,再加一块长度为2的。由此我们可以得知铺n的情况等于铺n-1的情况+铺n-2的情况。公式 :f(n)=f(n-1)+f(n-2)。
一道C语言指针的问题 求解答 谢谢 !
++ca和&c[1]:这两个值是相等的,他们都是存放b的地址。这里要理解的是,把c[]传入fun时并没有创建整个字符数组的副本,只是创建了指针c的副本,所以c和ca同时指向一个字符串。&ca[1]和&c[1]:这两个值也相等,他们和上面的其实是一个意思。只是若编写程序验证时,若先验证++ca则验证&ca[...
大一C语言问题,求解答啊
n=i=2,++i,i++ 逗号表达式,从左往右计算,表达式的值为最右边表达式的值 n=i=2,++i,i++整个表达式的值就是i++的值 从左往右计算:n=i=2 i=2 ++i i=3 i++ 返回3,i的值变为4 表达式的值为i++返回的值,所以是3 ...
一个C语言指针问题。求大佬解答?
j = 0; j < n; j++){ scanf("%d", &matrix[i][j]);} } \/\/ 求对角线元素之和 int sum = 0;for (int i = 0; i < n; i++){ \/\/ 对角线上的元素的指针 int *p = matrix[i] + i;sum += *p;} printf("Sum of the diagonal elements: %d", sum);return 0;} ...
C语言编程问题求解答
9题:include <stdio.h>int main(){int N=1;scanf("%d",&N);if(N<=0){N=1;}int numSpaceFirst=N-1;for(int row=0; row<N; row++,numSpaceFirst--){for(int i=0; i<numSpaceFirst; i++){printf(" ");}for(int i=0; i<2*row-1; i++){printf("*");}printf("\\n...
C语言题目,求大神解答
以下是使用C语言编写的解答:```c include <stdio.h> include <string.h> void compressRLC(char* input, char* output) { int length = strlen(input);int count = 1;for (int i = 0; i < length; i++) { if (input[i] == input[i+1]) { count++;} else { sprintf(output ...
一道C语言编程问题,高手们来看看帮忙解答下
int c;int sum;\/\/ABC之和。for (a = 100;a > 0;a--)\/\/以A为循环变量,在1到100之间。{ for (b = a-1;b > 0;b--)\/\/以B为循环变量,在1到A之间。{ for (c = b-1;c > 0;c--)\/\/以C为循环变量,在1到B之间。{ \/\/判断公式左右两侧是不是相等,相等侧符合题目要求 if...