初始C语言刷题记录:判断两个数大小、时间转换、计算商和余数、计算平均成绩、反向输出一个四位数、对0的含义的多重语境下的解释、scanf的返回值、判断一个数能否被5整除etc

初识C语言刷题记录

记录知识点考点相关延伸

下面代码题均出自于牛客网

1. 下面哪个不是C语言内置数据类型:

在这里插入图片描述

选C

C、 struct Stu结构体,属于自定义类型
自定义类型:自己创造出来的;内置类型:C语言本身携带。
2. 局部变量的作用:

在这里插入图片描述

选D

对选项A的解释:C语言不止main函数一种主函数
int  ADD(int x,int y)
{
    int z=x+y;
    return z;
}
int main()
{
    int a=10;
    return 0;
}
//不能说z函数的作用域在main函数内部
3. 对全局变量与局部变量的理解:

在这里插入图片描述

选B

局部变量优先原则”。

小技巧:课本上问程序结果的题不会做,可以放到编译器里进行运行和思考,以巩固所学。

4. 代码打印

在这里插入图片描述

#include <stdio.h>
int main()
{
    printf("I lost my cellphone!\n");
    return 0;
}

建议:牛客网刷题时可以复制题目要求,避免出错。如本题输出内容“I lost my cellphone!”。

5. 输出小飞机

在这里插入图片描述

#include <stdio.h>
int main()
{
    printf("     **     \n");
    printf("     **     \n");
    printf("************\n");
    printf("************\n");
    printf("    *  *    \n");
    printf("    *  *    \n"); 
    return 0;
}

注:没什么特别规律,不必要写成循环。

6. 字符串的结束标志是:

在这里插入图片描述
选C

0的含义
0——数字0
‘0’——字符0,ASCII码值 48
‘\0’——转义字符,字符串结束标志,ASCII码值是0
EOF——end of file 文件的结束标志
NULL——空指针,本质是0
#define EOF (-1)
//scanf、getchar读取失败的时候会返回EOF
#define NULL((void*)0)//强制类型转换
#define NULL 0
int*p=NULL
//右击转到定义
7. 关于数组描述错误的是:

在这里插入图片描述

选B(定义)

8.下面哪个不是转义字符:

在这里插入图片描述

选C(详细表格请阅读笔者上篇文章)

9. 对strlen的理解:

image-20220725112631643

选C

strlen查找的是‘\0’。若’\0’未定义,strlen查找的则是随机值。
10. C语言中哪个数组的创建是错误的:

在这里插入图片描述

选B

C99 标准之前,数组的大小是不能使用变量

C99 标准中增加:变长数组,数组的大小可以是变量,但是这样的数组是不能直接初始化的。

VS Code环境下:

#include <stdio.h>
//linux 的环境下
//gcc编译器是支持C99变长数组的
int main()
{
    int n=10;
    int arr[n];
    return 0;
}
11.下面程序的结果是:

在这里插入图片描述

选A

\7、\121分别是一个字符
12. 写一个函数求两个整数的较大值

在这里插入图片描述

int MAX(int x,int y)
{
    if(x>y)
        return x;
    else
        return y;
}
//或者写成三目操作符
int MAX(int x,int y)
{
    return (x > y ? x : y);
}

int main()
{
    int a=0;
    int b=0;
    scanf("%d %d",&a,&b);
    //求较大值
    int m=MAX(a,b);
    printf("%d\n",m);
    return 0;
}
13. 计算表达式的值
请计算表达式“(-8+22)×a-10+c÷2”,其中,a = 40,c = 212。

image-20220725121646699

#include <stdio.h>
int main()
{    
    int a=40;
    int b=0;
    int c=212;
    b=(-8+22)*a-10+c/2;
    printf("%d\n",b);
    return 0;
}

//改进
#include <stdio.h>
int main()
{    
    int a=40;
    int c=212printf("%d\n",(-8+22)*a-10+c/2);
    return 0;
}

注意:数学符号对应的代码符号

14. 多组输入,表明一个人的智商。

在这里插入图片描述

#include <stdio.h>
int main()
 {
    int iq=0;
    //输入
    scanf("%d",&iq);
    if(iq>=140)
    {
        printf("Genius\n");
    }
    return 0;
}//只能处理一组数据

int main()
{
    int iq=0;
    //输入
    //EOF -> -1
    while(scanf("%d",&iq)==1)
    //等价于while(scanf("%d",&iq)!==EOF)
    {
          if(iq>=140)
          {
             printf("Genius\n");
          }
    }
    return 0;
}
cplusplus.com 上查找scanf:

在这里插入图片描述

int main()
{
    int a=0;
    int b=0;
    int ret=scanf("%d %d",&a,&b);
    //4 5          ret=2
    //5 (ctrl+z)*3 ret=1
    //CodeBlock (ctrl+z)*1
    printf("ret=%d\n",ret);
    printf("ret=%d\n",a);
    printf("ret=%d\n",b);
    return 0;
}
15.判断一个整数是否能被5整除

在这里插入图片描述

#include <stdio.h>
int main()
{
    int M=1;
    scanf("%d",&M);
    if(M%5==0)
            printf("YES");
     else
            printf("NO");
    return 0;
}
16. 关于C语言关键字说法正确的是

在这里插入图片描述

选B

17. 关于static说法不正确的是:

在这里插入图片描述

选C

18. 选出以下程序执行结果:

在这里插入图片描述
在这里插入图片描述
选B(参考初识C语言讲解)

19.下面哪个不是关键字:

在这里插入图片描述

选C

#define预处理指令

20. 在switch语言关键字中不包含哪个:

在这里插入图片描述

选A

21. 计算商和余数

在这里插入图片描述

#include <stdio.h>
int main()
{
    int a=0;
    int b=0scanf("%d %d",&a,&b);
    printf("%d %d",a/b,a%b);
    return 0;
}
22. 反向输出一个四位数

在这里插入图片描述

#include <stdio.h>
//解析:
//1234
//4321

//1234%10=4
//1234/10=123
//123%10=3
//123/10=12
//12%10=2
//12/10=1
//1%10=1
//1/10=0
int main()
{
    int n=1000;
    if(1000<=n&&n<=9999)
    {
        scanf("%d",&n);
            while(n)
            {
                printf("%d",n%10);
                n=n/10;
            }
    }
    return 0;
}

//修改代码
int main()
{
    int n=0;
    scanf("%d",&n);//1234
    while(n)
    {
        printf("%d",n%10);
        n=n/10;
    }
    return 0;
}
23. 计算平均成绩

在这里插入图片描述

//法1
int main()
{
    int a=0;
    int b=0;
    int c=0;
    int d=0;
    int e=0;
    scanf("%d %d %d %d %e",&a,&b,&c,&d,&e);
    printf("%.1lf",(a+b+c+d+e)/5.0);
    return 0;
}

//法3
int main()
{
    int n=0;
    int i=0;
    int sum=0;
    while(i<5)
    {
        scanf("%d",&n);
        sum+=n;
        i++;
    }
    printf("%.1lf",sum/5.0);
    return 0}

//法2
#include <stdio.h>
int main()
{
    int score[5]={0};
    int sum=0,i=0;
    for(i=0;i<5;i++)
    {
        scanf("%d",&score[i]);
        sum+=score[i];
    }
    double ave=sum/5.0;
    printf("%.1lf",ave);
    return 0;
}
24. 判断两个数大小
//法1
int main()
{
    int a=0;
    int b=0;
    while(scanf("%d %d",&a,&b)==2)
    {
        if(a>b)
        {
            printf("%d>%d\n",a,b);
        }
        else if(a<b)
        {
            printf("%d<%d\n",a,b);
        }
            else
            {
                printf("%d=%d\n",a,b);
            }
    }
    return 0;
}

//法2
#include <stdio.h>
int main ()
{
    int a = 1 ;
    int b = 1 ;
    while(scanf("%d %d",&a,&b)!=EOF)
    {
    if(a==b)
    {
        printf("%d=%d\n",a,b);
    }
    else if( a>b)
    {
        printf("%d>%d\n",a,b);
    }
    else
        printf("%d<%d\n",a,b);
    }
    return 0;
}
25. 时间转换

在这里插入图片描述

#include <stdio.h>
//3661
//s/3600=1h
//s%3600=61
//61/60=1min
//61/60=1s
int main()
{
    int seconds;
    scanf("%d",&seconds);
      if(0<seconds&&seconds<100000000)
      {
       int h=seconds/3600;
       int m=seconds/60%60;
          //int m=(second%3600)/60;
       int s=seconds%60;
          //int s=(s%3600)%60;
        printf("%d %d %d",h,m,s);
      }
    return 0;
}
1 h = 60 min = 3600 s
1 min = 60 s
#include <stdio.h>
//3661
//s/3600=1h
//s%3600=61
//61/60=1min
//61/60=1s
int main()
{
    int seconds;
    scanf("%d",&seconds);
      if(0<seconds&&seconds<100000000)
      {
       int h=seconds/3600;
       int m=seconds/60%60;
          //int m=(second%3600)/60;
       int s=seconds%60;
          //int s=(s%3600)%60;
        printf("%d %d %d",h,m,s);
      }
    return 0;
}
1 h = 60 min = 3600 s
1 min = 60 s
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值