• c语言初阶测评


    选择一

    int i = 10; 
    int j = 20;
    int k = 3;
    k *= i + j;
    
    • 1
    • 2
    • 3
    • 4

    上面k运行的结果是

    因为k*=是一个赋值操作符

    它的优先级比较低 所以要先算i+j

    所以说k的值是90

    选择二

    假定 x 和 y 为 double 型,则执行 x=2; y=x+3/2; 后y的值为()
    A 3.500000
    B 3
    C 2.000000
    D 3.000000

    这里要注意的是3/2因为是两个整数相除

    所以说得到的值是1

    所以说最终的值会是3.000000

    选择三

    若有定义语句:int year=1009,*p=&year;以下不能使变量 year 中的值增至 1010 的语句是()
    A *p+=1;
    B (*p)++;
    C ++(*p)
    D *p++
    首先A 显然可以
    B显然可以
    C显然可以
    D中 两个单目操作符进行运算 按照先右后左的顺序使用

    首先是解引用p的值 然后将指针p的位置加加

    总结: 主要是操作符的先后顺序这一块的知识比较薄弱

    编程题一

    还是老朋友 求最大公因数和最小公倍数

    这里提供一个求最小公倍数的另一种解法

    思路分析

    对于两个整数m n
    它们的最小公倍数k肯定有
    k / m ==i
    k / n == j
    那么我们就假设这个i的值为1
    则有k=im
    如果此时的k模上n刚好等于0 那么这个k就是最小公倍数
    那么此时的最大公因数即为 (m*n)/k

    完成代码如下

    #include
    int main()
    {
        int m = 0;
        int n = 0;
        scanf("%d %d", &m, &n);
        int i = 1;
        while ((i * m) % n != 0)
        {
            i++;
            
        }
    
        printf("%d", i * m);
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    这道题的主要是一个技巧问题

    记住这个求最大公倍数数的技巧就可以

    编程题二

    在这里插入图片描述

    题目分析

    对于这道题目我们可以首先逆序整个字符串 然后再通过空格和‘\0’对于其中的每个单词进行逆序

    // 逆序函数
    void my_reverse(char* str, char* end)
    {
    	
    	char tmp = 0;
    	while (end>str)
    	{
    		tmp = *str;
    		*str = *end;
    		*end = tmp;
    		str++;
    		end--;
    	}
    
    }
    int main()
    {
    	char arr[105] = { 0 };
    	gets(arr);
    	int len = strlen(arr)-1;
    	char* end = arr+len;
    	// 逆序字符串
    	my_reverse(arr,end);
    	// 测试逆序字符串是否成功
    	//for (int i = 0; i < len; i++)
    	//{
    	//	printf("%c", arr[i]);
    	//}
    	// 逆序每个单词
    	char* start = arr;
    	char* end2  = arr;
    	int i = 0;
    	for (i = 0; i <= len+1; i++)
    	{
    		if (*end2==' '||*end2 =='\0')
    		{
    			my_reverse(start, end2 - 1);
    			start = end2 + 1;
    		}
    		end2++;
    	}
    	for (int i = 0; i <= len; i++)
    	{
    		printf("%c", arr[i]);
    	}
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

    实现代码如上

    以上就是本篇博客的全部内容啦 由于博主才疏学浅 所以难免会出现纰漏 希望大佬们看到错误之后能够

    不吝赐教 在评论区或者私信指正 博主一定及时修正

    那么大家下期再见咯

  • 相关阅读:
    C++入门笔记
    到github上去学别人怎么写代码
    MCS:离散随机变量——Pascal分布
    windows 系统下 设置 redis开机自启动
    密码管理的艺术:数据库存储密码的策略、技术和工具
    wps:基本使用【笔记】
    回调地狱(嵌套金字塔)及promise语法
    Java————形参和实参
    JVM 性能调优参数
    MFC为“对话框中的控件添加变量”,QT中使用“ui.对象名称”来调用控件
  • 原文地址:https://blog.csdn.net/meihaoshy/article/details/126854914