C语言练习题Day2

简介: C语言练习题Day2

今天继续分享C语言刷题练习

一、选择题

1、以下程序段的输出结果是( )

#include<stdio.h>
int main()
{
char s[] = "\\123456\123456\t";
printf("%d\n", strlen(s));
return 0;
}

A: 12 B: 13 C: 16 D: 以上都不对

这题考的就是我们对转义字符的理解,\就是\的意思,算一个字符,因为strlen是求\0前有多少字符个数,所以我们一个一个看过去,\123是一个16进制,算一个字符 \ t算一个字符,那数一下有12个字符,这题的答案就是A

2、若有以下程序,则运行后的输出结果是( )

#include <stdio.h>
#define N 2
#define M N + 1
#define NUM (M + 1) * M / 2
int main()
{
printf("%d\n", NUM);
return 0;
}

这题我们走读代码就可以写出来了,定义N为2,定义M为N+1,num=(N+1+1)*N+1/2,我们计算一下得到的结果就是8

3、如下函数的 f(1) 的值为( )

int f(int n)
{
  static int i = 1;
  if(n >= 5)
  return n;
  n = n + i;
  i++;
  return f(n);
}

A: 5 B: 6 C: 7 D: 8

首先这是一个简单的递归思路,只有到n=5的时候才会返回 这里的static起到让i会持续增长,因为我们在调用函数的时候会创建函数栈帧,如果没用static修饰的话,它就是一个局部变量,出栈就销毁,所以加了static就变成静态的局部变量。那我们现在来看这道题,我们其实写个草稿就行了

所以答案是7

4、下面3段程序代码的效果一样吗( )

int b;
(1)const int *a = &b;
(2)int const *a = &b;
(3)int *const a = &b;

记住我们的口号,左定值右定向,这题目就能解决了,我们来看一下选项

A: (2)=(3) B: (1)=(2) C: 都不一样 D: 都一样

根据我们的口号,答案就是B

5、对于下面的说法,正确的是( )

A: 对于 struct X{short s;int i;char c;},sizeof(X)等于sizeof(s) + sizeof(i) + sizeof©

B: 对于某个double变量 a,可以使用 a == 0.0 来判断其是否为零

C: 初始化方式 char a[14] = “Hello, world!”; 和char a[14]; a = “Hello, world!”;的效果相同

D上面的说法都不正确

我们一个一个看过去,首先A选项肯定错,结构体需要对齐,所以不可能相等,我们这里也可以画图计算一下,要是不懂得话可以看我们之前得文章结构体内存对齐得文章,那我们来计算一下吧

首先我们默认编译器得内存对齐数是8,然后short是占2个字节大小 int 是4 我们得从int 得对齐数整数倍开始,所以从4开始往下四个到7,然后是char加一就是8,所以我们结构体大小就是9.

B选项也是错的,原因是我们数据存储方式不一样,具体文章我也写了,是数据得存储方式,不懂得可以去看看

然后就是C选项,一个是字符串,一个是数组,效果肯定不同,开辟得空间不同。

所以我们得答案就是D

1、验证尼科彻斯定理,即:任何一个整数 m 的立方都可以写成 m 个连续奇数之和。例如:

输入一个正整数 m(m≤100) ,将 m 的立方写成 m 个连续奇数之和的形式输出。

注意:本题含有多组输入数据。

输入描述:输入一个int整数

输出描述:输出分解后的string

OJ链接【牛客网题号: HJ76 尼科彻斯定理】【难度:简单】

1^3=1

2^3=3+5

3^3=7+9+11

4^3=13+15+17+19

其实这道题关键是算第一个数难,开始得数很难想到,会算第一个数,这个题目就很简单,我一开始也没算出来哈哈哈哈

#include <stdio.h>
int main()
{
   int m=0;
   scanf("%d",&m);
   int i=0;
   int start=0;
   start=m*(m-1)+1;
    printf("%d",start);
   for(i=1;i<m;i++)
   {
        start+=2;
        printf("+%d",start);
   }
   return 0;
}

第二题

等差数列

会了上面的那题,这题肯定更简单,我就不解释了

#include<stdio.h>
int main()
{
  int n=0;
  scanf("%d",&n);
  int start=2;
  int i=0;
  int sum=2;
  for(i=1;i<n;i++)
  {
    start+=3;
    sum=sum+start;
  }
  printf("%d",sum);
  return 0;
}

今天的每日C语言分享就到这里,我们下次再见

相关文章
|
4月前
|
C语言
C语言练习题
C语言练习题
28 0
|
4月前
|
C语言
c语言编程练习题:7-50 输出华氏-摄氏温度转换表
c语言编程练习题:7-50 输出华氏-摄氏温度转换表
59 0
|
4月前
|
C语言
c语言编程练习题:7-49 Have Fun with Numbers
c语言编程练习题:7-49 Have Fun with Numbers
52 0
|
4月前
|
C语言
c语言编程练习题:7-46 爬动的蠕虫
c语言编程练习题:7-46 爬动的蠕虫
53 0
|
3月前
|
人工智能 算法 Java
|
4月前
|
C语言
C语言练习题 温度自动转换‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪
C语言练习题 温度自动转换‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪
|
4月前
|
C语言 数据安全/隐私保护
C语言练习题
C语言练习题
39 1
|
4月前
|
C语言
c语言编程练习题:7-60 Welcome to You!
c语言编程练习题:7-60 Welcome to You!
63 0
|
4月前
|
C语言
c语言编程练习题:7-52 求简单交错序列前N项和
c语言编程练习题:7-52 求简单交错序列前N项和
46 0
|
4月前
|
C语言
c语言编程练习题:7-51 求奇数分之一序列前N项和
c语言编程练习题:7-51 求奇数分之一序列前N项和
51 0