1 . 输出字符 ‘A’ 和 ‘a’ 的ASCII码值。
#include <iostream>
using namespace std;
int main()
{
int i,j;
i='A';
j='a';
cout<<"ASCII of 'A'="<<i<<endl<<"ASCII of 'a'="<<j<<endl;
return 0;
}
输出:
ASCII of ‘A’=65
ASCII of ‘a’=97
2 . 输入两个小写字符,将其转换为大写
#include <iostream>
using namespace std;
int main()
{
char c1,c2;
cout<<"input two char: ";
cin>>c1>>c2;
c1=c1-32;
c2=c2-32;
cout<<"c1="<<c1<<endl<<"c2="<<c2<<endl;
}
输入:input two char: lc
输出:
c1=L
c2=C
3.输入两个浮点型数字,但要求输出的是整型
#include <iostream>
using namespace std;
int main()
{
float c1,c2;
cout<<"input two float: ";
cin>>c1>>c2;
c1=(int)c1; //方法一
c2=int(c2); //方法二
cout<<"c1="<<c1<<endl<<"c2="<<c2<<endl;
}
输入:input two char: 3.97 7.56
输出:
c1=3
c2=7
4.【密码编译题】输入字符串”CHINA”, 每个字母往后加4个ASCII字符后
#include <iostream>
using namespace std;
int main()
{
char a[6]; //定义一个字符型数组
for(int i=1;i<6;i++)
{
cin>>a[i];
a[i]=a[i]+4;//字符型数组的加法是对其ASCII码进行加减
}
for(int i=1;i<6;i++)
cout<<a[i];
cout<<endl;
return 0;
}
输入:CHINA
输出:GLMRE
5 . 输出整数179的十六进制和八进制表达结果。
#include <iostream>
using namespace std;
int main()
{
int a=179;
cout<<"hex="<<hex<<a<<endl<<"oct="<<oct<<a<<endl;
}
输出:
hex=b3
oct=263
6 . 控制符下的输出
#include <iostream>
#include <iomanip> //使用控制符输出要加头文件
using namespace std;
int main()
{
int a=179;
cout<<setfill('+')<<setw(10)<<a<<endl;
//输出宽度为10位,空的位数用"+"填充
}
输出:+++++++179
7.单个字符的输入输出
#include <iostream>
using namespace std;
int main()
{
char a,c;
a=getchar();.//从终端输入一个字符
c=a-32;
putchar(c);
putchar(10);//输出一个换行符,与putchar('\n')同义,10是'\n'的ASCII码值
}
输入:b
输出:B
8 . if的嵌套
在if的嵌套中,也可以加花括号来表示层级匹配关系,特别是在if与else数目不一样的情况下:
if()
{if() 语句1}
else 语句2
9 . 判断某年是否为闰年
#include <iostream>
using namespace std;
int main()
{
int year;
cout<<"input the year:";
cin>>year;
if ((year%400==0)||(year%100!=0 && year%4==0))//核心代码就这一句话
cout<<year<<"is leap year"<<endl;
else cout<<year<<" is not leap year"<<endl;
return 0;
}
输入:input the year:1900
输出:1900 is not leap year
10.【递归】用递归方法求n阶勒让德多项式的值,递归公式见书p123,习题8。
#include <iostream>
using namespace std;
int main()
{
double Legendre(double x,int n);
double a;
int b;
cout<<"input the value of x: "; cin>>a;
cout<<"input the value of n: "; cin>>b;
cout<<"the value of "<<b<<"-class "<<"Legendre is: "<<Legendre(a,b)<<endl;
}
double Legendre(double x,int n)
{
double lgd;
if(n==0) lgd=1;
else if (n==1) lgd=x;
else lgd=((2*n-1)*x*Legendre(x,n-1)-(n-1)*Legendre(x,n-2))/n;
return lgd;
}
11.【函数嵌套】写一个函数验证哥德巴赫猜想:一个不小于6的偶数可以表示为两个素数之和,如10=3+7,在主函数中输入一个不小于6的偶数,然后调用函数gotbaha,在gotbaha函数中再调用prime函数,prime函数用于判断是否素数。
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int gotbaha(int );
int a;
cout<<"input the even number y: ";
cin>>a;
gotbaha(a);
return 0;
}
int gotbaha(int y)
{
int prime(int );
int j;
for (int i=2;i<=ceil(y/2);i++)
{
j=y-i;
if (prime(i) && prime(j))
{
cout<<y<<"="<<i<<"+"<<j<<endl;
break;//满足条件后跳出循环
}
}
return 0;
}
int prime(int x)
{
bool pr=true;
for (int i=2;i<x;i++)
if (x%i==0) pr=false;
return pr;
}
输入:input the even number y: 34
输出:34=3+31
12 . 【函数调用】
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int area(int ,int ,int );
int x,y,z;
cout<<"input the 3 edges: ";
cin>>x>>y>>z;
if (x+y>z && x+z>y && y+z>x)
cout<<"area="<<area(x,y,z)<<endl;//三角形判别条件
else cout<<"it is not a triangle"<<endl;
}
int area(int a,int b,int c)
{
int s;
int ar;
s=(a+b+c)/2;
ar=sqrt(s*(s-a)*(s-b)*(s-c));
return ar;//尤其注意被调用函数的返回值
}
13 . 【阶乘的递归实现】求a!+b!+c!的值,用一个函数fact(n)求n!。a,b,c的值由主函数输入,最终得到的值在主函数中输出。
#include <iostream>
using namespace std;
int main()
{
int fact(int n);
int a,b,c,sum;
cin>>a>>b>>c;
sum=fact(a)+fact(b)+fact(c);
cout<<sum;
}
int fact(int n)
{
int f;
if(n==1) f=1;
else f=fact(n-1)*n;
return f;
}
14 . 【while循环 · 迭代法】用牛顿迭代法求方程的根。方程为
ax^3+bx^2+cx+d=0,系数a,b,c,d的值依次为4,3,2,1,由主函数输入。求x在1附近个一个实根。求出根后由主函数输出。
注:牛顿迭代法公式:x2=x1-f1/f2
//心得:往往写while循环都在循环体外和循环体内把函数写两遍
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double newton(int a,int b,int c,int d);
cout<<newton(4,3,2,1)<<endl;
}
double newton(int a,int b,int c,int d)
{
double f1,f2,x,x1,x2,m;
f1=a*x1*x1*x1+b*x1*x1+c*x1+d;
f2=3*a*x1*x1+2*b*x1+c;//f2是f1的导数
x1=1; //赋一个初值,随便找一个值开始
x2=x1-f1/f2;//迭代关键
while(abs(x1-x2)>0.00001) //结束循环的条件
{
x1=x2;
f1=a*x1*x1*x1+b*x1*x1+c*x1+d;
f2=3*a*x1*x1+2*b*x1+c;
x2=x1-f1/f2;
}
return x2;
}
15.
#include <iostream>
using namespace std;
int main()
{
char c;
while((c=getchar())!='\n')
{
if(('z'>=c && c>='w') || ('Z'>=c && c>='W')) c=c-22;
if(('v'>=c && c>='a') || ('W'>=c && c>='A')) c=c+4;
cout<<c; //小心:在C++语言中没有连等的表达
}
cout<<endl;
}
输入:I am going to Beijing!
输出:M eq ksmrk xs Fimnmrk!
16 . 【循环应用题】猴子当天吃掉的桃子数为前一天剩下桃子数的一半再多一个,到第10天时,只剩下一个桃子了,求:第一天的桃子数
分析:写出通项公式是关键
S1-1/2*S2-1=S2,设S1为前一天所剩桃子数,S2为当天所剩桃子数
==>S1=2*S2+2
#include <iostream>
using namespace std;
int main()
{
int s=1,n=1;
while(n<10)
{
n++;
s=2*s+2;
}
cout<<s<<endl;
}
17 . 有3个国家名,要求找出按字母顺序排在最前面的国家。要求用函数调用。
#include <iostream>
#include <string>
using namespace std;
int main()
//step 1:输入三个国家的字符串
{
void stringcmp(char string[][]);
char str[4][20];
for(int i=1;i<4;i++)
cin>>str[i];
stringcmp(str);
}
// step 2:调用字符串比较函数
void stringcmp(char string[][])
{
char min[20];
strcpy(min,string[1]);//将min数组设为常数字符
for(int i=1;i<3;i++)
{
if(strcmp(string[i+1],min)<0)//strcmp()函数要求第二个参数为常数
strcpy(min,string[i+1]);//给数组赋值只能采用strcpy()函数
}
cout<<min<<endl;
}
输入:GERMANY FRANCH CHINA
输出:CHINA
18 . 逆序输出CHINA
#include <iostream>
#include <string>
using namespace std;
int main()
{
char word[6];
int n=5;//定义n变量,表示字符串长度,即该字符数组中含有多少个字符
for(int i=1;i<6;i++)
cin>>word[i];
while(n!=0)
{
cout<<word[len];
n--;
}
return 0;
}
输入:CHINA
输出:ANIHC
19 . 10个数选择排序法(从大到小)
原理:
1) 外循环执行n-1次,内循环每次比较和交换n-i次(i为第i次外循环)
2) 从数组第一位开始循环,后面从第二个元素开始直到访问完数组中最后一个元素为止,遇到最小值则与之交换;然后进行第二次循环,从数组第二个元素开始,从第三个元素开始访问之后的所有元素,遇到最小值则与之交换……
#include <iostream>
using namespace std;
int main()
{
void quicksort(int b[]);
int a[11];
cout<<"input 10 numbers: ";
for(int i=1;i<11;i++)
cin>>a[i];
quicksort(a);
for(int i=1;i<11;i++)
cout<<"sorted array: "<<a[i]<<endl;
return 0;
}
void quicksort(int b[])
{
for (int i=1;i<10;i++)
{
int max=b[i],m=i;//初始值很关键
for (int j=(i+1);j<11;j++)
{
if (b[j]>max)
{
max=b[j];
m=j;
}
}//最里面一层循环是把i之后元素的最大值及其脚标找到
b[m]=b[i];
b[i]=max;
}//最外层循环的作用是交换元素
}
20 . 折半查找(二分查找)
given:一个由大到小排好序的10个元素的数组
求:输入一个元素,查找该元素在数组中位置,即索引
· 思想:
step1: 每次从数组的中间元素开始找起
step2: 然后根据目标数字与中间元素的大小关系,锁定该中间元素的左区间或右区间
step3:重复步骤2,直至目标元素=中间元素
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
void binary_search(int t,int b[],int n);
int a[11]={0,20,19,17,15,9,6,5,3,2,1},len=10;
int target;//注意这里的处理技巧,10个数,使得a[1]~a[10]有意义,则第一个元素必须是0
cout<<"input a number that you want to search: ";
cin>>target;
binary_search(target,a,len);
return 0;
}
void binary_search(int t,int b[],int n)
{
int lb=1,ub=10,bn;
bn=ceil((lb+ub)/2);
while(b[bn]!=t)
{
if (t>b[bn])
{
ub=bn-1;
bn=ceil((lb+ub)/2);
}
else
{
lb=bn+1;
bn=ceil((lb+ub)/2);
}
}
cout<<"the index of this item is: "<<bn<<endl;
}
21 . 找一个五个元素数组中的第二大的值
#include <iostream>
using namespace std;
int main()
{
int a[6]={0,1,2,3,4,5};
//第一次循环先找最大值
int max=a[1],sec=a[1];
for (int i=2;i<6;i++)
if (max<a[i]) max=a[i];
//第二次循环找次大值
for (int i=2;i<6;i++)
if (sec<a[i] && a[i]<max) sec=a[i];
cout<<"max="<<max<<" , sec="<<sec<<endl;
return 0;
}
22 . 生成随机整数
//产生[1,10的随机整数]
#include <iostream>
using namespace std;
int main()
{
int x;
for (int i=1;i<11;i++)
{
x=(rand()%10)+1;
cout<<x<<" ";
}
}
//产生[0,10的随机整数]
#include <iostream>
using namespace std;
int main()
{
int x;
for (int i=1;i<11;i++)
{
x=(rand()%11);
cout<<x<<" ";
}
}
23 . 分解质因数
#include <iostream>
using namespace std;
int main()
{
void prime_factor(int b);
int a;
cout<<"input a number: ";
cin>>a;
prime_factor(a);
return 0;
}
void prime_factor(int b)
{
for (int i=2;i<=b;i++)
{
while (b%i==0)
{
b=b/i;
cout<<i<<" ";
}
}
}
24 . 最大公因数gcd和最小公倍数lcm
#include <iostream>
using namespace std;
int main()
{
void gcd_lcm(int m,int n);
int a,b;
cout<<"input two number: ";
cin>>a>>b;
gcd_lcm(a,b);
}
void gcd_lcm(int m,int n)
{
int de,gcd,lcm,mul;
mul=m*n;
while(m%n!=0)
{
de=m%n;
m=n;
n=de;
}
gcd=n;//辗转相除以后,最大公因数gcd为n
lcm=mul/gcd;
cout<<"gcd="<<gcd<<" lcm="<<lcm<<endl;
25 . 重载之复数加法
#include <iostream>
using namespace std;
class complex
{
public:
complex (int a=0,int b=0);
friend complex operator+(complex n1,complex n2);
void display();
private:
int real,imag;
};
complex::complex (int a,int b)
{
real=a;
imag=b;
}
complex operator+(complex n1,complex n2)
{
complex n3;
n3.real=n1.real+n2.real;
n3.imag=n1.imag+n2.imag;
return n3;
}
void complex::display()
{
cout<<"("<<real<<","<<imag<<"i"<<")"<<endl;
}
int main()
{
complex c1(3,4),c2(5,6),c3;
c3=c1+c2;
cout<<"c3=";
c3.display();
}
26 . 重载之复数乘法
#include <iostream>
using namespace std;
class complex
{
public:
complex(int a=0,int b=0); //第一个函数:构造函数,与类同名,参数为每个对象中的成员变量
friend complex operator*(complex n1,complex n2); //第二个函数:重载函数,参数为对象
void display(); //第三个函数:成员函数,功能是用以输出
private:
int real,imag;
};
// 1) 构造函数
complex::complex(int a,int b)
{
real=a;
imag=b;
}
// 2) 重载函数
complex operator*(complex n1,complex n2)
{
complex n3;
n3.real=n1.real*n2.real-n1.imag*n2.imag;
n3.imag=n1.real*n2.imag+n1.imag*n2.real;
return n3;
}
// 3) 输出成员函数
void complex::display()
{
cout<<"("<<real<<","<<imag<<"i)"<<endl;
}
int main()
{
complex c1(3,4),c2(5,6),c3;
c3=c1*c2;
cout<<"c3=";
c3.display();
}
27、定义一个具有26个下标变量的字符数组,初始值为”A”到”Z”的26个英文字母,用户从键盘输入 任意4个数(1到26之间,表示对应字符的位置),显示对应序号上的字符。例如输入1 3 2 4,显示 ACBD。
#include <iostream>
using namespace std;
int main()
{
int a[4];
char b[4];
cout<<"input 4 numbers: ";
for(int i=0;i<4;i++)
{
cin>>a[i];
b[i]=a[i]+64;
cout<<b[i]<<" ";
}
cout<<endl;
}
28 . 自定义一个函数(VB)或类的方法(JAVA、C++),功能:按两个参数(直角三角形的直角 边的长度)的值,计算并返回三角形的面积值。再定义一个程序,功能:从键盘输入两个数(直 角三角形的直角边的长度),调用上述自定义函数或方法,计算并输出三角形的面积值。
有一个小小的心得:如果想要用成员函数传递参数时,这时候就不要写成员函数了,直接写构造函数就好了,当然,如果不要传递参数,那么成员函数还是可以用的。
方法一:无参的成员函数,无构造函数
#include <iostream>
using namespace std;
class t
{
public:
void tr();
void area();
private:
int edge1,edge2;
};
void t::tr()
{
int a,b;
cout<<"input two edges: ";
cin>>a>>b;
edge1=a;edge2=b;
}
void t::area()
{
int ta;
ta=(edge1*edge2)/2;
cout<<"the area of the triangle is: "<<ta<<endl;
}
int main()
{
t t1;
t1.tr();
t1.area();
return 0;
}
方法二:定义构造函数,带参数
//说明:比起上面一段代码而言,就改动了如下地方:成员函数 --> 构造函数
#include <iostream>
using namespace std;
class t
{
public:
t(int a=0,int b=0);//声明成员函数的地方变成了构造函数
void area();
private:
int edge1,edge2;
};
t::t(int a,int b)//在类体外定义成员函数的代码变成了定义构造函数的代码
{
cout<<"input two edges: ";
cin>>a>>b;
edge1=a;edge2=b;
}
void t::area()
{
int ta;
ta=(edge1*edge2)/2;
cout<<"the area of the triangle is: "<<ta<<endl;
}
int main()
{
t t1;
t1.area();
return 0;
}
29 .
从键盘上输入任意6个整数,分别计算并显示出奇、偶数的和。
#include <iostream>
using namespace std;
int main()
{
int a[6],even=0,odd=0;
cout<<"input 6 integers: ";
for(int i=1;i<7;i++)
{
cin>>a[i];
if (a[i]%2==0) even=even+a[i];
else odd=odd+a[i];
}
cout<<"sum of even is: "<<even<<endl<<"sum of odd is: "<<odd<<endl;
}
30 . 找出并显示出1-200之间所有能被7整除但不能被5整除的整数。
代码一:什么格式都不控制
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
for(int i=1;i<200;i++)
if(i%7==0 && i%5!=0) cout<<i<<" ";
}
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int s=0;
for(int i=1;i<200;i++)
{
if(i%7==0 && i%5!=0)
{
cout<<i<<setw(2)<<" ";//每个数字占有2个单位长度
s++; //定义一个自加变量,用于控制没行输出个数
if (s%5==0) cout<<endl; //每行输出五个
}
}
}
31、用户从键盘上输入一组整数(a1,a2,…,a10)和另一组整数(b1,b2,…,b10),假设这两组整数中的每 一个整数的取值范围为0-30(包含0和30),计算并显示a1*b10+a2*b9+a3*b8+…+a10*b1和 a1*b1+a2*b2+a3*b3+…+a10*b10的值。
#include <iostream>
using namespace std;
int main()
{
int sum1(int m[],int n[],int len);
int sum2(int m[],int n[],int len);
int a[6],b[6];
cout<<"input array a[]: ";
for (int i=1;i<6;i++) cin>>a[i];
cout<<"input array b[]: ";
for (int i=1;i<6;i++) cin>>b[i];
cout<<"sum1="<<sum1(a,b,5)<<endl;
cout<<"sum2="<<sum2(a,b,5)<<endl;
}
int sum1(int m[],int n[],int len)
{
int ss1[len+1],s=0;
for(int i=1;i<(len+1);i++)
{
ss1[i]=m[i]*n[len-i+1];
s=s+ss1[i];
}
return s;
}
int sum2(int m[],int n[],int len)
{
int ss2[len+1],s=0;
for(int i=1;i<(len+1);i++)
{
ss2[i]=m[i]*n[i];
s=s+ss2[i];
}
return s;
}
32、计算并显示1-2-3+4-5-6+7-8-9+…n的值。其中n为程序运行时用户从键盘上输入的一个100-200 之间的整数。
#include <iostream>
using namespace std;
int main()
{
int n,s=0,j;
cout<<"input a number(100~200): ";
cin>>n;
for(int i=1;i<(n+1);i++)
{
if (i%3==0 || (i+1)%3==0) j=i*(-1);
else j=i;//小心:这里要用另一个变量保存i的值
s=s+j;
}
cout<<"the sum is: "<<s<<endl;
}
33 . 编写一个函数(或者是方法),其功能为:用户从键盘上输入一个字符串,输出该字符串的 第3个字符。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string word;
cout<<"input a string: ";
cin>>word;
cout<<"the third item of this string is:"<<word[2]<<endl;
}