zoukankan      html  css  js  c++  java
  • C语言的几个有趣问题

    问题1. 不能使用分号,编写一个“Hello World”程序。

    问题2. 如何用C语言打印“ I am print %”?

    问题3. 不能使用">、<、>=、<=“等关系运算符,找到3个整数a ,b ,c中的最小的数。

    问题4. 程序中不使用“+”法运算,实现整数加法运算。

    参考程序:

    1. 这是一个比较有趣的问题,但是答案往往十分简单,所采用的是最基本的语句,参考程序如下:

    #include <stdio.h>
    void main()
    {
        if(printf("Hello World!\n")){}  //可以换成while等
    }

    2. 对于初学者来说,有不少人不知道如何打印百分号这种类型的符号,其实也很简单,无非是在前面加个百分号而已。

    #include <stdio.h>
    int main()
    {
        printf("I am print %%!");
    }

    3. 第3个问题有一定的挑战性,而且答案不止一个,此外,关系运算符有:

    C语言提供6种关系运算符,如表所示:
    运算符
    名称
    示例
    功能
    缩写
    <
    小于
    a<b
    a小于b时返回真;否则返回假
    LT
    <=
    小于等于
    a<=b
    a小于等于b时返回真;否则返回假
    LE
    >
    大于
    a>b
    a大于b时返回真;否则返回假
    GT
    >=
    大于等于
    a>=b
    a大于等于b时返回真;否则返回假
    GE
    ==
    等于
    a==b
    a等于b时返回真;否则返回假
    EQ
    !=
    不等于
    a!=b
    a不等于b时返回真;否则返回假
    NE

    参考程序:

    #include <stdio.h>
    #define min(a,b) (((a)-(b)) >> 31 ? (a) : (b))
    int main()
    {
        int a , b , c;
        a = -30;
        b = 59;
        c = 56;
        printf("min = %d",min(min(a,b),c));
    }

    4. 不能使用"+"法运算,自然想到当初学的计算机组成原理的二进制相加的知识,采用位运算来实现相加:

    #include<stdio.h>
    #include<stdlib.h>
    int main()
    {
        int x,y;   //输入的两个数
        int inBit = 0x0000;
        int tailBit = 0x0001;
        int result = 0,Rbit;
        int XlastBit,YlastBit;
        int inBitREP;
        printf("please input two numbers :");
        scanf("%d%d",&x,&y);
        while(tailBit)
        {
            XlastBit = x&tailBit;
            YlastBit = y&tailBit;
            Rbit = XlastBit^YlastBit^inBit;
            inBitREP = 0;
            if( (XlastBit == tailBit && YlastBit == tailBit) || ( XlastBit == tailBit && inBit == tailBit) || (YlastBit == tailBit && inBit == tailBit))  //超过两个1,则进位为1
            {
                inBitREP = tailBit<<1;
            }
            inBit = inBitREP;
            result = result|Rbit;
            tailBit = tailBit<<1;
        }
        printf("The result is %d\n",result);
        system("pause");
        return 0;
    }

        以上便是C语言的几个有趣的问题,希望学习C语言的童鞋们会喜欢,以上代码均在CodeBlocks上运行无误。第一次发帖子,求各位大神轻喷!小弟先谢过了!

     

  • 相关阅读:
    【OpenCV】几何失真校正与局部增强
    【C#】WinForm 之 DOTA2英雄搭配助手(网页抓取+在线绿色版+源码开放)
    【MFC】指纹类型识别(OpenCV + MATLAB混合编程)
    【MATLAB】图像细化算法
    【MATLAB】形态学变换
    【MATLAB】二值化效果
    一个女程序员的奋斗史
    数据结构之------C++指针冒泡排序算法
    C++之------进制学习
    串口屏之------Usart GPU 使用手册
  • 原文地址:https://www.cnblogs.com/bestDavid/p/C_interestingPro.html
Copyright © 2011-2022 走看看