蓝桥杯练习题笔记
前言
例如:随着嵌入式的不断发展,C语言变得十分重要,本文主要介绍了蓝桥杯的练习题,通过习题加深我们的熟练度。
提示:以下是本篇文章正文内容
一、1001~1015
1000
题目:输入两个整数a和b,计算a+b的和。
代码如下(C):
#include<stdio.h>
int main()
{
int a,b;
while(~scanf("%d%d", &a, &b))//可连续输入
printf("%d\n",a+b);
return 0;
}
代码如下(C++):
#include<iostream>
using namespace std;
int main()
{
int a,b;
while(cin>>a>>b) //可连续输入
cout<<(a+b)<<endl;
return 0;
}
1001
题目:请参照本章例题,编写一个C程序,输出以下信息:
Hello World!
代码如下(C):
#include<stdio.h>
int main()
{
printf("**************************\n");
printf("Hello World!\n");
printf("**************************\n");
return 0;
}
代码如下(C++):
#include<iostream>
using namespace std;
int main()
{
cout << "**************************" << endl;
cout << "Hello World!" << endl;
cout << "**************************" << endl;
return 0;
}
1002
题目:编写一个程序,输入a、b、c三个值,输出其中最大值。
代码如下(C):
#include<stdio.h>
int max(int x, int y)
{
return x > y ? x : y;//三目运算符
}
int main()
{
int a, b, c, m;
scanf("%d%d%d", &a, &b, &c);
printf("%d", max(max(a, b), c));
return 0;
}
代码如下(C++):
/*******************************************************************************
#include< algorithm >是C++的标准模版库(STL)中最重要的头文件之一,
提供了大量基于迭代器的非成员模板函数。以下将介绍几个常用的库函数:
一、max(),min()和swap()
max(x,y) //返回两个元素中值最大的元素
min(x,y) //返回两个元素中值最小的元素
swap(x,y) //用来交换x和y的值
二、reverse()
反转排序指定范围中的元素,reverse(a,b) 可以将数组指针在[a,b]之间的元素或容器的迭代器在[a,b]范围内的元素进行反转。
三、fill()
fill() 可以把数组或容器中的某一段区间赋为某个相同的值。
四 、 sort()
排序函数,默认为递增排序。
五、next_permutation()
返回给定范围中的元素组成的下一个按字典序的排列,即给出一个序列在全排列中的下一个序列。
********************************************************************************/
#include<iostream>
#include <algorithm>
using namespace std;
int main()
{
int a, b, c;
cin >> a >> b >> c;
int x1 = max(a, b); // 把 a,b 中大的值赋给 x1
int x2 = max(x1, c); // 把 x1,c 中大的值赋给 x2
cout << x2 << endl; // 输出最大值
return 0;
}
1003
题目:要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.
例如,字母"A"后面第4个字母是"E".“E"代替"A”。因此,“China"应译为"Glmre”。
代码如下(C):
#include <stdio.h>
int main()
{
char s[11]; //定义一个长度为10的字符串(注意有结尾符)
gets(s); //输入字符串
for (int i = 0; s[i] != '\0'; i++) //循环到结尾符'\0'时停止循环
{
if (s[i] >= 'A' && s[i] <= 'Z') //判断是否为大写字母
{
/*** 此处取余数26很巧妙 ***/
s[i] = (s[i] + 4 - 'A') % 26 + 'A'; //大写字母后移
}
if (s[i] >= 'a' && s[i] <= 'z') //判断是否为小写字母A
{
s[i] = (s[i] + 4 - 'a') % 26 + 'a'; //小写字母后移
}
}
puts(s); //输出字符串
return 0;
}
代码如下(C++):
#include<iostream>
using namespace std;
int main()
{
char c1, c2, c3, c4, c5;
cin >> c1 >> c2 >> c3 >> c4 >> c5;
c1 += 4;
c2 += 4;
c3 += 4;
c4 += 4;
c5 += 4;
cout << c1 << c2 << c3 << c4 << c5 << endl;
return 0;
}
1005
题目:输入一个华氏温度,要求输出摄氏温度。公式为 c=5(F-32)/9,取位2小数。
代码如下(C):
#include"stdio.h"
int main()
{
double f,c;
scanf("%lf", &f);
c=5 * (f - 32) / 9;
printf("c = %0.2lf", c);
return 0;
}
代码如下(C++):
#include<iostream>
#include<iomanip>
using namespace std ;
int main()
{
float f ;
cin >> f ;
float c = 5 * (f - 32) / 9 ;
cout << fixed << setprecision(2) << "c=" << c << endl ;
/******************************************************
fixed是小数点的意思,表示下面要对小数点后进行设置,
setprecision是设置精度,括号中的数表示保留几位精度输出,
如果不用fixed,直接使用setprecision(int)则表示保留几位有效数字
*******************************************************/
return 0 ;
}
1008
题目:给出一百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。 90分以及90分以上为A,80-89分为B,70-79分为C,60-69分为D,60分以下为E。
代码如下(C):
#include<stdio.h>
int main()
{
int score;
scanf("%d",&score);
switch(score/10)
{
/***************************************************************
C 库函数 int putchar(int char) 把参数 char 指定的字符(一个无符号字符)
写入到标准输出 stdout 中。
***************************************************************/
case 9:
putchar('A');
break;
case 8:
putchar('B');
break;
case 7:
putchar('C');
break;
case 6:
putchar('D');
break;
default:
putchar('E');
}
}
代码如下(C++):
#include<bits/stdc++.h>
using namespace std;
int main() {
int n;
cin>>n;
if(n>=90) cout<<"A"<<endl;
else if(n<90&&n>=80) cout<<"B"<<endl;
else if(n<80&&n>=70) cout<<"C"<<endl;
else if(n<70&&n>=60) cout<<"D"<<endl;
else cout<<"E"<<endl;
return 0;
}
1012
题目:输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。
代码如下(C):
#include<stdio.h>
int main()
{
int num=0,letter=0,space=0,other=0;
int c;
while((c=getchar())!='\n')
{
if(48<=c&&c<=57)
num++;
else if(65<=c&&c<=90||97<=c&&c<=122)
letter++;
else if(c==32)
space++;
else other++;
}
printf("%d %d %d %d",letter,num,space,other);
return 0;
}
代码如下(C++):
/*******************************************************
头文件:<ctype.h>
函数:
(1)int isalpha(int ch);
判断ch是否为字母,如果是返回非0,反之返回0;
(2)int isdigit(int ch);
判断ch是否为数字,如果是返回非0,反之返回0;
(3)int islower(int ch);
判断ch是否为小写字母,如果是返回非0,反之返回0;
(4)int isupper(int ch);
判断ch是否为大写字母,如果是返回非0,反之返回0;
*******************************************************/
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main ()
{
char str[100];
int alpha=0, digit=0, space=0, other=0;
gets(str); //字符串的输入
for(int i=0; i<strlen(str); i++)
{
if(isalpha(str[i]))
++alpha;
else if(isdigit(str[i]))
++digit;
else if(str[i]==32)
++space;
else
++other;
}
cout << alpha << " " << digit << " " << space << " " << other << endl;
return 0;
}
1013
题目:求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字,为2。 例如,n=5时=2+22+222+2222+22222,n由键盘输入。
代码如下(C):
#include <stdio.h>
#include <math.h>
int main()
{
int n;
scanf("%d", &n);
long count = 0;
for (int i = 1; i <= n; ++i)
count += (2 * (1 - pow(10, i)) / (1 - 10));
printf("%d", count);
return 0;
}
代码如下(C++):
#include<iostream>
using namespace std;
int main()
{
int n;
int t = 2;
int Sn = 0;
cin >> n;
for(int m=n; m>0; m--)
{
Sn += t*m;
t = t*10;
}
cout << Sn << endl;
return 0;
}
1015
题目:求以下三数的和,保留2位小数 1~a之和 1~b的平方和 1~c的倒数和
代码如下(C):
#include"stdio.h"
int main()
{
double a,b,c,sum1=0,sum2=0,sum3=0,i,sum=0;
scanf("%lf",&a);
scanf("%lf",&b);
scanf("%lf",&c);
for(i=1;i<=a;i++) //开始和结束非常重要
{
sum1+=i;
}
for(i=1;i<=b;i++)
{
sum2+=i*i;
}
for(i=1;i<=c;i++)
{
sum3+=1.0/i; //注意要用1.0/i
}
sum=sum1+sum2+sum3;
printf("%.2lf",sum);
return 0;
}
代码如下(C++):
#include<iostream>
#include<cstdio>
using namespace std ;
int main()
{
int a,b,c ;
cin>>a>>b>>c ;
int nSuma = 0,nSumb = 0 ;//a,b部分和
float fSum = 0,fSumc = 0 ;//总和,c部分和
for(int i = 1;i <= a;i++)
{
nSuma += i ;//直接累加
}
for(int i = 1;i <= b;i++)
{
nSumb += i * i ;//平方累加
}
for(float i = 1;i <= c;i++)
{
fSumc += 1 / i ;//倒数累加
}
fSum = nSuma + nSumb + fSumc ;
printf("%.2f\n",fSum) ;//printf更方便格式输出
//cout的输出方法:cout<<fixed<<setprecision(2)<<nSum<<endl ;
//fixed表示小数点,setprecision()为设置精度
return 0 ;
}
总结
以上就是今天学习的内容,C与C++头文件中提供了大量能使我们快速便捷地处理数据的库函数。