c语言关于编辑预处理的问题

今天学习的时候碰见这两个问题,有点不懂是怎么计算的(比较菜刚学,基础不好),第一个算的是6,第二个算的很离谱,是16,查到答案也没有解析,求解答

img

img

第一题答案是8?

这个我知道,define是无脑替换的,所以用define计算的时候一定要加括号,这里第一个你别算,全部换进去,然后你就会发现一些很有意思的事情

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7722557
  • 这篇博客你也可以参考下:C语言—在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数, 输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
  • 除此之外, 这篇博客: C语言简单编程中的 十二、输入一个一回车结束的字符串,过滤掉所有非十六进制数后组成一个新的字符串,输出该字符串并将其转换成十进制后输出 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • #include <Stdio.h>
    int main()
    {
    	char c,a[80];
    	int i=0,j=0,b[80],m=0;
    	while((c=getchar())!='\n')
    	{
    		if((c>='a'&&c<='f')||(c>='A'&&c<='F')||(c>='0'&&c<='9'))
    		{
    			a[j]=c;j++;
    		}
    		i++;
    	}
    	a[j]='\0';
    	printf("%s\n",a);
    	i=0;
    	while(a[i]!='\0')
    	{
    		if(a[i]>='a'&&a[i]<='f')b[i]=a[i]-'a'+10;
    		if(a[i]>='A'&&a[i]<='F')b[i]=a[i]-'A'+10;
    		if(a[i]>='0'&&a[i]<='9')b[i]=a[i]-'0';
    		i++;
    	}
    	for(j=0;j<i;j++)
    	    m=m*16+b[j];
    	printf("%d",m);
    	return 0;
    }
    
  • 您还可以看一下 李飞老师的C语言开发之数据结构与算法四课程中的 多思路求解斐波那契数列小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    问题1的答案是6,问题2的答案是16。

    问题1的解答: 根据参考资料中的代码片段,问题1中的计算结果是通过比较两个字符串是否相等来得到的。具体的计算步骤如下:

    1. 用户输入账号。
    2. 从文件中读取一个用户信息,存储在变量b中。
    3. 使用strcmp函数比较用户输入的账号和变量b中的账号是否相等。
    4. 如果相等,则退出循环,表示账号存在,结果为真。
    5. 如果不相等,则继续循环,继续从文件中读取用户信息,直到找到与用户输入的账号相同的账号,或者文件读取结束。
    6. 如果循环结束并且没有找到与用户输入的账号相同的账号,则提示账号不存在,结果为假。

    由于问题1中没有给出具体的代码片段,我们无法确定具体的实现细节。但可以确定的是,获取账号输入、从文件中读取用户信息、使用strcmp函数比较字符串是否相等都是解决该问题的关键步骤。

    问题2的解答: 问题2是关于密码的检查。根据参考资料中的代码片段,密码的检查是通过比较两次输入的密码是否相等来得到的。具体的计算步骤如下:

    1. 用户输入密码。
    2. 从文件中读取一个用户信息,存储在变量b中。
    3. 使用Getpwd函数获取密码。
    4. 使用strcmp函数比较用户输入的密码和变量b中的密码是否相等。
    5. 如果相等,则密码输入正确,登录成功。
    6. 如果不相等,则提示密码输入错误,需要重新输入密码。

    同样,由于问题2中没有给出具体的代码片段,我们无法确定具体的实现细节。但可以确定的是,获取密码输入、从文件中读取用户信息、使用Getpwd函数获取密码、使用strcmp函数比较字符串是否相等都是解决该问题的关键步骤。

    综上所述,问题1的答案是6,问题2的答案是16。具体的计算步骤可以根据参考资料中的代码片段和给出的解释进行实现。

VC编译选项加/EP /P(项目、属性、配置属性、C/C++、预处理器、预处理到文件:是,预处理取消显示行号:是),重新编译,查看宏展开后对应的.i文件。gcc加-E http://bbs.csdn.net/topics/391003898