C语言刷题--day02

简介: C语言刷题--day02

一、选择题


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: 以上都不对


答案解析:

正确答案:A

这里考查转义字符,注意:\\ 表示字符'\',\123表示字符'{',\t表示制表符,这些都是一个字符

知识点:

1、转义字符常考察两个:

       ①\ddd ddd表示1~3个八进制

       ②\xhh hh表示1~2个十六进制数

2、转义字符以反斜杠开头

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;
}

A: 4         B: 8         C: 9         D: 6

答案解析:

正确答案:B

宏只是替换,替换后NUM的样子是(2+1+1)*2+1/2,计算得8

知识点:#define是宏定义,只进行替换

3、下面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

const在*的左边,则指针指向的变量的值不可直接通过指针改变(可以通过其他途径改变);在*的右边,则指针的指向不可变。简记为"左定值,右定向"。


(1)和(2)const都在*的左边,(3)中const在*的右边,所以应该选择B


二、编程题


等差数列 2,5,8,11,14, ... 。(从 2 开始的 3 为公差的等差数列),求等差数列前 n 项和。

注意:本题有多组输入

输入描述:输入一个正整数 n 。

输出描述:输出一个相加后的整数。


示例:

输入:2                 输入:275

输出:7                 输出:113575

说明:2+5=7         说明:2+5+...+821+824=113575

代码1:


分析:这就是一个等差求和问题,我们知道两个公式就可以简单的写出来了①求和公式:Sn=n(a1+an)/2;②通项公式:an=a1+(n-1)d


步骤:

       1. 定义三个变量n an a1

       2.多组输入:while(scanf("%d",&n)!=EOF)

       3.循环体(输出):an=a1+(n-1)*3(公差d=3)

#include <stdio.h>
//代码1
int main()
{
    unsigned int n=0;
    int an=0;
    int a1=2;
    while(scanf("%d",&n)!=EOF)
    {
        an=a1+(n-1)*3;
        printf("%d",n*(a1+an)/2);
    }
    return 0;
}
//代码2
int main() 
{
    unsigned int n=0;//无符号整数
    while( scanf("%d",&n)!=EOF)//可以多组输入
    {
         printf("%d",2*n+(n-1)*n*3/2);
    }
    return 0;
}

代码2:


分析:不知道等差公式也没问题,可以用累加的方式求出最后的答案


步骤:

       1.定义三个变量n i j sum

       2.多组输入:while(scanf("%d",&n)!=EOF)

       3.循环体(累加:for(嵌套循环)):

       for(i=1;i<=n;i++)

       {

               sum+=j;

                j+=3;

       }

       4.输出:printf("%d",sum);

#include<stdio.h>
int main()
{
    int n=0;//输入的正整数
    int i=1;//累加次数
    int j=2;//下一项
    int sum=0;//相加后的整数
    while(scanf("%d",&n)!=EOF)//多组输入
    {
        //累加
        for(i=1;i<=n;i++)
        {
            sum+=j;
            j+=3;
        }
        printf("%d",sum);//输出
    }
    return 0;
}

以上代码仅供参考,还有很多写法,正确即可。

最后希望尽量大家在牛客网上答题,有些编程在自己的编译器可以实现但在牛客不能实现。

相关文章
|
5月前
|
C语言
【C语言刷题系列】合并两个有序数组
【C语言刷题系列】合并两个有序数组
|
3月前
|
存储 C语言
【C语言】基础刷题训练4(含全面分析和代码改进示例)
【C语言】基础刷题训练4(含全面分析和代码改进示例)
|
5月前
|
C语言
【C语言刷题系列】删除公共元素
【C语言刷题系列】删除公共元素
|
5月前
|
存储 C语言
【C语言刷题系列】对数字添加逗号
【C语言刷题系列】对数字添加逗号
|
5月前
|
C语言
【C语言刷题系列】喝汽水问题
【C语言刷题系列】喝汽水问题
|
1月前
|
机器学习/深度学习 编译器 C语言
C语言刷题(中)(保姆式详解)
C语言刷题(中)(保姆式详解)
14 0
|
3月前
|
C语言
【C语言刷题训练】——第7节(含代码与分析思路)
【C语言刷题训练】——第7节(含代码与分析思路)
|
3月前
|
测试技术 C语言 C++
【C语言刷题训练——6】鹏哥C语言刷题训练营笔记,含代码讲解改进
【C语言刷题训练——6】鹏哥C语言刷题训练营笔记,含代码讲解改进
|
3月前
|
存储 C语言
【C语言】鹏哥C语言刷题训练营——第5节内容笔记(含代码全面分析和改进,讲解)
【C语言】鹏哥C语言刷题训练营——第5节内容笔记(含代码全面分析和改进,讲解)
|
5月前
|
C语言
C语言刷题(函数)
C语言刷题(函数)