C语言编程入门之刷题篇(C语言130题)(2)

lesson 2

(题目标题可以直接转题目链接)

(牛客网输出的时候最好复制题目,防止有空格,标点符号导运行不通过)

BC8 十六进制转十进制


题目描述 : BoBo写了一个十六进制整数ABCDEF,他问KiKi对应的十进制整数是多少。

输入描述:

输出描述: 十六进制整数ABCDEF对应的十进制整数,所占域宽为15。

备注:

printf可以使用使用格式控制串“%md”输出域宽为m的十进制整数。

参考代码:

#include<stdio.h>
int main()
{
  printf("%15d\n",0XABCDEF);
  return 0;
}

答案解析: 本题考查的就是%d的格式控制域宽指定 ,因为ABCDEF为16进制故前面要加0X表示。

BC9 printf的返回值


题目描述:

KiKi写了一个输出“Hello world!”的程序,BoBo老师告诉他printf函数有返回值,你能帮他写个程序输出printf(“Hello world!”)的返回值吗?

输入描述:

输出描述:

包括两行:

第一行为“Hello world!”

第二行为printf(“Hello world!”)调用后的返回值。

参考代码:

#include <stdio.h>
int main()
{
  int ret=printf("Hello world!");
   printf("\n%d",ret);
 return 0;
}

答案解析:

本题的重点是要严格按照题目要求的格式,输出2行,先打印字符串,再打印字符串长度。这里就要控制好格式,写法比较多。 详细学习函数的参数和返回值请参考:https://www.bilibili.com/video/BV1oi4y1g7CF?p=10

如想查看printf返回值请参考cplusplus.com 关于printf返回值的列题:

printf返回值为要打印元素的个数!

printf("%d",printf( "%d",printf("%d",43)));
 //倒着看:最后一个printf打印43;第二个printf中有两个元素->打印返回值2;第一个printf中元素为上一个printf打印的2
          故第一个printf的返回值为1因此打印1
          故最众打印:4321            

BC11 学生基本信息输入输出


题目描述

依次输入一个学生的学号,以及3科(C语言,数学,英语)成绩,在屏幕上输出该学生的学号,3科成绩(注:输出成绩时需进行四舍五入且保留2位小数)。

数据范围:学号满足 1≤n≤20000000 1≤n≤20000000 ,各科成绩使用百分制,且不可能出现负数

输入描述:

学号以及3科成绩,学号和成绩之间用英文分号隔开,成绩之间用英文逗号隔开。

输出描述:

学号,3科成绩,输出格式详见输出样例。

示例1

输入:17140216;80.845,90.55,100.00

输出:The each subject score of No. 17140216 is 80.85, 90.55, 100.00.

参考代码:

#include <stdio.h>
int main()
{
 int num=0;
 float a=0;
 float b=0;
 float c=0;
  scanf("%d;%f,%f,%f",&num, &a, &b, &c);
 printf("The each subject score of No. %d is %.2lf, %.2lf, %.2lf.\n",num,a,b,c");
  return 0;
}

答案解析:

因为题目要求保留两位小数,故在%f前加.2(小数点 2)表示保留两位小数。

BC35 判断字母


题目描述

从键盘任意输入一个字符,编程判断是否是字母(包括大小写)。

输入描述:

输入包括一个字符

输出描述:

输出该字符是字母(YES)或不是(NO)。

示例1

输入:H

输出:YES

参考代码:

#include <stdio.h>
int main()
{
  char a=0;
  while(~(a=getchar()))
   {
   if((a>='a'&&a<='z')||(a>='A'&&a<='Z'))
   {
    printf("YES");
   }
   else
   printf("NO");
   getchar();
   }
  return 0;
}

答案解析:

此题为多组输入要while(~scanf())【多组输入知识文章以有详解:https://blog.csdn.net/weixin_73612682/article/details/129213863?spm=1001.2014.3001.5501

字符串相关函数的参考学习: https://www.bilibili.com/video/BV1oi4y1g7CF?p=53

BC12 字符圣诞树


描述

输入一个字符,用它构造一个边长为5的三角形圣诞树。

数据范围:保证输入的字符是一个 char 类型的值

输入描述:

输入只有一行,一个字符。

输出描述:

该字符构成的三角形圣诞树。

示例1

输入:1

输出;:

1

1 1

1 1 1

1 1 1 1

1 1 1 1 1

参考代码:

#include <stdio.h>
int main()
{
 char n=0;
 scanf("%c",&n);
 int i=0;
 for(i=0;i<5;i++)
  {
     int j=0;
     for(j=0;j<4-i;j++)    
      {
           printf(" ");
      }
      for(j=0;j<=i;j++)
{
    printf("%c ",n);
}
   printf("\n");
  }
 return 0;
}

答案解析: 每一行的输出是前边空格,后边1 本题的难点就是精确的控制空格的个数和1的个数。

BC13 ASCII码


描述

BoBo教KiKi字符常量或字符变量表示的字符在内存中以ASCII码形式存储。BoBo出了一个问题给KiKi,转换以下ASCII码为对应字符并输出他们。

73, 32, 99, 97, 110, 32, 100, 111, 32, 105, 116 , 33

输入描述:

输出描述:

一行输出转换题目中给出的所有ASCII码对应的字符,无需以空格隔开。

参考代码:

#include <stdio.h>
int main()
{
  int ar[13]={73, 32, 99, 97, 110, 32, 100, 111, 32, 105, 116 , 33};
  int i=0;
  for(i=0;i<13;i++)
   {
    printf("%d",ar[i]);
   }
 return 0;
}

答案解析: 这里得了解清楚ASCII编码,如果采用ASCII编码,每个字符都有一个对应的数字,这个数字被称为这个 字符的ASCII码,如果把这个数字按照%c打印,打印的就是字符。

BC14 出生日期输入输出


描述

输入一个人的出生日期(包括年月日),将该生日中的年、月、日分别输出。

数据范围:年份满足 1990≤y≤2015 1990≤y≤2015 ,月份满足 1≤m≤12 1≤m≤12 ,日满足 1≤d≤30

输入描述:

输入只有一行,出生日期,包括年月日,年月日之间的数字没有分隔符

输出描述:

三行,第一行为出生年份,第二行为出生月份,第三行为出生日期。输出时如果月份或天数为1位数,需要在1位数前面补0。

示例1

输入:

20130225

输出:year=2013

month=02

date=25

备注:

通过scanf函数的%m格式控制可以指定输入域宽,输入数据域宽(列数),按此宽度截取所需数据;通过 printf函数的%0格式控制符,输出数值时指定左面不使用的空位置自动填0。

参考代码:

#include <stdio.h>
int main()
{
  int year=0;
  int month=0;
  int date=0;
  scanf("%4d%02d%02d",&year,&month,&date);
  printf("year=%4d\n",year);
    printf("month=%02d\n",month);
    printf("date=%02d\n",date);

  return 0;
}

BC29 2的n次方计算


描述

不使用累计乘法的基础上,通过移位运算(<<)实现2的n次方的计算。

数据范围: 0≤n≤31

输入描述:

一行输入整数n(0 <= n < 31)。

输出描述:

输出对应的2的n次方的结果。

示例1

输入:2

输出:4

参考代码:

#include <stdio.h>
int main()
{
int n=0;
int a=1;
scanf("%d",&n);
int ret=a<<n
printf("%d",ret);
return 0;
}

答案解析:

<<为移位运算:二进制向左移

eg:

a为1的二进制在整形类型(32位)中存储的方式

向左移动几位及得到的结果为2的几次方。

BC15 按照格式输入并交换输出


描述

输入两个整数,范围-231~231-1,交换两个数并输出。

输入描述:

输入只有一行,按照格式输入两个整数,范围,中间用“,”分隔。

输出描述:

把两个整数按格式输出,中间用“,”分隔。

示例1

输入:a=1,b=2

输出:a=2,b=1

参考代码:

#include <stdio.h>
int main()
{
int a=0;
int b=0;
scanf("a=%d,b=%d",&a, &b);
printf("a=%d",b);
printf(",");
printf("b=%d",a); 
return 0;
}

答案解析: 输入和输出格式的控制,如果格式控制串中有非格式字符则输入时也要输入该非格式字符。

BC16 字符转ASCII码


描述

BoBo教KiKi字符常量或字符变量表示的字符在内存中以ASCII码形式存储。BoBo出了一个问题给KiKi,输入一个字符,输出该字符相应的ASCII码。

输入描述:

一行,一个字符。

输出描述:

一行,输出输入字符对应的ASCII码。

示例1

输入:c

输出:99

参考代码:

#include <stdio.h>
int main()
{ 
char a=0;
scanf("%c",&a);
printf("%d",a);  
return 0;
}

答案解析: 直接按照%d打印,就是字符对应的ascii码值

BC18 计算带余除法


描述

给定两个整数a和b (0 < a,b < 10,000),计算a除以b的整数商和余数。

输入描述:

一行,包括两个整数a和b,依次为被除数和除数(不为零),中间用空格隔开。

输出描述:

一行,包含两个整数,依次为整数商和余数,中间用一个空格隔开。

示例1

输入:15 2

输出:7 1

参考代码:

#include <stdio.h>
int main()
{
int a=0;
int b=0;
scanf("%d %d",&a ,&b);
if (b!=0) {
    int m=a/b;
    int n=a%b;
    
    printf("%d %d",m,n);
    }
return 0;
}

答案解析:

需要考虑分母不为零的情况下才能计算。

下一期 log in…………


  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cocobol0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值