求教这段C语言代码分析

作者&投稿:正克 (若有异议请与网页底部的电邮联系)
求教 C语言 这段代码分析~

epx(10)即为e^10,自然底数e的10次方

定义在函数体内部的static 是静态局部变量 你可以理解为它是只能用在该函数里面的全局变量
每次进入的时候不会重新初始化 还是上次的值

所以这个函数会进入33次,只有第一次会把start_flag赋值为1
第二次如果是引导码 那么把i赋值为0 之后每次赋值对应的i值所在的irdata

这个irdata应该是个全局变量 保存码值用的

当另一个全局变量irok被赋值为1后 应该有主程序来处理码值序列并翻译成键值

把代码稍微格式化了一下,这样看着会舒服一些

首先程序switch(x),由int x= 1,可知它会进入case 1

接着就执行到了switch(y),由int y = 0可知它会进入case 0:即a++,此时a=1,b=0

由break结束掉(此时结束的是switch(y))以后,此时程序运行到case 2上边的花括号 }这里,由于没有break,所以它会顺序执行case 2:执行了a++,b++,此时a=2,b=1

遇到break,跳到printf上面的花括号,接着执行printf()

所以最终输出是a=2,b=1



#include <stdio.h>

#include <stdlib.h>

int main()

{

int x=1,y=0,a=0,b=0;

switch (x)

{

case 1: switch (y)

{

case 0:a++; break;

case 1:b++; break;

} break;

case 2:a++; b++; break;

case 3:a++; b++; break;

}

printf("a=%d,b=%d
",a,b);

system("pause");

}

switch选择语句需要执行break。以上代码的运行效果是a=1 b=0

你的疑惑:

  1. switch (y) 这句的确是x=1时 进行switch(y)

  2. 由于之后没有break;程序直接执行case 2的内容。执行完之后,break退出。于是结果就是a=2,b=1。

这其实可以自己测试出来的:

#include <stdio.h>

#include <stdlib.h>

int main()

{

int x=1,y=0,a=0,b=0;

switch (x)

{

case 1:printf("a1
");  switch (y)

{

case 0:a++; printf("a2
");break;

case 1:b++; printf("a3
");break;

}

case 2:a++; b++; printf("a4
");break;

case 3:a++; b++;printf("a5
");

}

printf("a=%d,b=%d
",a,b);

system("pause");

}

结果是

a1

a2

a4

a=2,b=1



求教大佬 分析一段 C语言代码
答:我来举个例子,比如执行if(x[i]>av) y[j++]= x[i];前j=1,i=2,那么如果x[i]>ac,y[1]=x[2],j=2,然后执行下一步操作y[2]=-1,也就是把当前最后一位被赋过值的下一位赋成-1

求教这段C语言逻辑表达式代码所有的++都要算吗? 代码: int x,y,z...
答:“&&的优先级高于||”,这个没错。所以整个表达式++x||++y&&++z可以表示为X||Y的形式,其中X为++x, Y为++y&&++z, 而对于X||Y的这种表达式,是一个短路表达式,当X为真时,整个表达式就为真,则不计算Y表达式,当X为假时,再计算表达式Y。因此在这里,满足的是前一种情况,X为真则Y不...

大一新生求教C语言问题,求大神帮助小白分析此程序的具体过程!如题(答 ...
答:include<stdio.h>#include<string.h>//函数功能:根据字符串的长度进行排序//输入参数:*s[] 字符串数组, n 数组内字符串个数//输出参数:无void fun(char *s[],int n){ char *t; int i,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strlen(s[i])>strlen(s[...

求教C语言 大佬 void fun(int a[],int n) 这段代码啥意思?
答:void fun(int a[],int n)这是一个函数的头部,函数名是fun,这个函数没有返回值(void),需要一个数组参数(int a[])和一个整数参数(int n)。

请C语言大神帮帮忙,这段代码中 #include<stdio.h> #include<stdlib_百度...
答:FILE*fp是定义一个文件指针。fp=fopen(fname,“r”);这个函数里的r 是只读的意思(read),如果是w,那是只写的意思(writer)。

这个c语言程序我看不懂,求教! # include<stdio.h> int main(){ //...
答:你这一段程序很好,很完整,没有一句多余的内容。待我慢慢跟你说来:1、int main(){ //为什么是int?下面的char定义的不是字符么。。。答:这里的int跟你下面程序里边的变量无关。它是指main()这个主程序返回的变量类型,当然,大多数主程序不需要返回变量,所以这个int即是必须的(C语言规定的...

新手求教:大侠看一段很简单的c语言代码,真没看出来哪儿错了
答:因为1是任意数的因子,所以a[i]初值应为1,循环次数最好改成min(m,n),否则运算中会有负数除法。还有要求a和(M-a)都是N的因子,所以应该用逻辑与。修改程序如下:include<stdio.h> int main(){ int N[100],M[100],a[100];int K,i,min;scanf("%d",&K);for (i=0;i<K;i++)...

这个c语言程序我看不懂,求教! # include<stdio.h> int main(){ //...
答:你C语言还没入门的赶脚啊!第一个: int main() //是指main函数的返回值是int型的,与最后的“return 0;”对应。char是申明的程序中变量的类型,你想申明申明类型都可以,两者是完全无关的!第二个:~scanf 我是没见过这种用法的,百度查了下也没找个,书上更没有,C++中构造函数才有这个...

C语言,急急急,看不懂这段代码里last啥意思,在线等
答:last就是取到的上一个字符(初始时last为0,表示没有字符)。这程序就是把所有单词的首字符变为大写,其余字符不变。(若上一字符是空格或Tab或回车符,就输出当前字母的大写,非字母由不变;否则不是空格或Tab或回车符就直接输出原样),然后把当前字符保存到last中,作为下一个字符的比较标准。

求教C语言 这段代码分析
答:epx(10)即为e^10,自然底数e的10次方