8.4C语言小测总结

简介: 8.4C语言小测总结

前言

这篇博客,是针对今天测试的总结复盘,我整理了一些我认为有用的题,总结的知识点都不难,但比较细,大家可以看一看有没有帮助大家查漏补缺

前四道是选择题,后两道是编程题。

1.

k的结果是:

int i = 10;
int j = 20;
int k = 3;
k *= i + j;

答案及解析:

90

计算过程:

(i+j)k

解析:

操作符的优先级很低,所以*=的优先级低于+,先计算+

2.

下列程序的运行结果是:

#include<stdio.h>
#include<stdlib.h>
int a = 1;
void test()
{
  int a = 2;
  a += 1;
}
int main()
{
  test();
  printf("%d\n", a);
  return 0;
}

解析:

首先在test函数内部创建的变量是局部变量,她的作用域只在test函数的内部,所以在主函数中,刚才为局部变量a申请的空间已经销毁了,所以在打印a时,打印的是全局变量a。

所以结果是1

错因:

在看这道题时,我认为它考察的知识点是,局部变量和全局变量的名称相同时,局部变量优先。而忽略了他们之间的作用域和生命周期不同。

3.

以下叙述正确的是:

A.在c程序中,main函数必须位于程序的最前面。

B.c程序的每行中只能写一条语句。

C.c语言本身没有输入输出语句。

D.在对一个c程序进行编译的过程中,可发现注释中的拼写错误

概念介绍:


main函数可位于任意位置,这是常识。

2.

C语言给定了语法,而输入输出语句是库函数中提供的。

C语言约定了一些函数,规定了函数的名字、功能、参数、返回类型

而这些规定的函数是由编译器的厂商实现的,msvc、gcc、clang的厂商在实现编译器的时候提供实现的。

这些函数放在标准库中,成为库函数。

4.

若有定义语句:

int year = 2009, * p = &year;

下列不能使year中的值增至2010的语句是:

A.(*p)+=1;

B.(*p)++;

C.++(*p);

D.*p++;

解析:

此题考查的就是运算符的优先级以及指针的知识

++的优先级高于*,所以++是作用于p,而非*p。

5.

点击此处跳转题干

示例答案:

#include<stdio.h>
int main()
{
  long long a = 0;
  long long b = 0;
  scanf("%lld %lld", &a, &b);
  long long m = 0;
  m = (a > b) ? a : b;
  while (1)
  {
    if (m % a == 0 && m % b == 0)
    {
      break;
    }
    m++;
  }
  printf("%d\n", m);
  return 0;
}

优化一下:

#include<stdio.h>
int main()
{
    long long a = 0;
    long long b = 0;
    scanf("%lld %lld", &a, &b);
    long long i = 1;
    while (i * a % b != 0)
    {
        i++;
    }
    printf("%lld\n", i * a);
    return 0;
}

6.

点击此处跳转至题目

解答:第一种方法:

void reverse(char* left, char* right)
{
    while (left < right)
    {
        char tmp = *left;
        *left = *right;
        *right = tmp;
        left++;
        right--;
    }
}
int main() {
    char arr[101] = { 0 };//留一个空间给\0
    gets(arr);
    //此处输入语句也可以用:scanf("%[^\n]s", arr);
    //意思是知道\0才读取结束
    int ch = 0;
    int i = 0;
    while ((ch = getchar()) != '\n')
    {
        arr[i++] = ch;
    }
    int len = strlen(arr);
    //1. 逆序整个字符串
    reverse(arr, arr + len - 1);
    //2. 逆序每个单词
    char* cur = arr;
    while (*cur)
    {
        char* start = cur;
        while (*cur != ' ' && *cur != '\0')
        {
            cur++;
        }
        char* end = cur - 1;
        reverse(start, end);//逆序一个单词
        if (*cur == ' ')
            cur++;
    }
    printf("%s\n", arr);
    return 0;
}

第二种方法:

int main()
{
  char arr[101] = { 0 };
  gets(arr);
  int i = 0;
  for (i = (int)strlen(arr); i > 0; i--)
  {
    if (arr[i] == ' ')
    {
      printf("%s ", arr + i+1);
      arr[i] = 0;
    }
  }
  printf("%s", arr);
  return 0;
}

结语

虽然这次测试的结果自己并不满意,但总结之后,发现归根到底是自己掌握的知识不牢固,还是需要努力啊。

相关文章
|
28天前
|
存储 编译器 Linux
【C语言】初识C语言
【C语言】初识C语言
19 0
|
6月前
|
网络协议 Java 程序员
C语言
一、什么是C语言 C语言是一种通用的高级编程语言,由美国计算机科学家丹尼斯·里奇于1972年在贝尔实验室开发。C语言以其简洁、高效和可移植性而闻名,广泛应用于系统软件、应用软件和嵌入式系统等领域。 C语言具有简单的语法和丰富的库函数,使得程序员能够更有效地编写代码,并具有更好的可读性和可维护性。它支持面向过程的编程风格,允许开发者直接操作内存,提供了强大的指针功能,使得对内存的管理更加灵活。 C语言被广泛应用于操作系统、编译器、数据库、网络协议、游戏开发等领域。许多其他编程语言,如C++、Java和Python等,都受到C语言的影响,并在其基础上发展而来。 二、C语言的特点 C语言具有以下几个
32 0
|
7月前
|
C语言
C语言练习
C语言练习。
50 1
|
11天前
|
Java Unix 程序员
初识C语言(一)
初识C语言(一)
|
1月前
|
存储 编译器 C语言
C语言:练习4
C语言:练习4
18 3
C语言:练习4
|
1月前
|
BI C语言
C语言:练习1
C语言:练习1
33 2
|
3月前
|
C语言 C++
C语言集106-111
C语言集106-111
|
9月前
|
算法 Serverless C语言
C语言假期作业 DAY 08
C语言假期作业 DAY 08
|
4月前
|
Java 编译器 C语言
初识C语言(1)
初识C语言(1)
52 0
|
5月前
|
自然语言处理 Java 编译器
零基础玩转C语言-初识C语言(上)
零基础玩转C语言-初识C语言(上)
96 0