1.设计程序,计算1的平方根,2的平方根......10的平方根之和。
#include<iostream>
using namespace std;
#include<cmath>
void main (void) //直接写void main()也行,我习惯这样写,别鄙视我...
{
float sum=0;
for(int i=1;i<=10;i++)
sum+=sqrt(i);
cout<<"sum="<<sum<<endl;
//如果开始是int main()的话,这里要加return 0,不然会有警告
}u
2.数列第一项为81,此后各项均为她前一项的正平方根,统计该数列前10项之和。
#include<iostream>
using namespace std;
#include<cmath>
void main (void)
{
float a=81,sum=81; //我把第一项已经放sum里了
for(int i=1;i<=9;i++) //所以这里只要循环9次就可以了
{
a=sqrt(a);
sum+=a;
}
cout<<"sum="<<sum<<endl;
}
3.将10个数存入数组,计算这些元素的平均值并出其中最大值和最小值。
#include<iostream>
using namespace std;
void main(void)
{
int num[10];
for(int i=0;i<10;i++)
cin>>num[i]; //输入10个数
int max=num[0],min=num[0],sum=num[0];
for(i=1;i<10;i++)
{
if(max<num[i]) max=num[i];
if(min>num[i]) min=num[i];
sum+=num[i]; //平均分=总分/10,所以要算出总分
}
cout<<"average="<<sum/10.0<<endl;
cout<<"max="<<max<<endl;
cout<<"min="<<min<<endl;
}
4.设计程序:数列各项为1,1,2,3,5,8,13,21......,求其前20项之和。
//书上有的,我这是用数组法,用递归或直接算也行
#include<iostream>
using namespace std;
void main(void)
{
int num[20]={1,1},sum=2;
for(int i=2;i<20;i++)
{
num[i]=num[i-1]+num[i-2];
sum+=num[i];
}
cout<<"sum="<<sum<<endl;
}
5.设计程序:计算表达式1!+2!+3!+...+10!的值。
#include<iostream>
using namespace std;
void main(void)
{
int fac(int n); //函数声明
int sum=0;
for(int i=1;i<=10;i++)
sum+=fac(i); //调用函数,并把值加到sum里
cout<<"sum="<<sum<<endl;
}
int fac(int n)
{
int a=1;
for(int i=2;i<=n;i++)
a*=i;
return(a);
}
6.设计程序:根据以下的对应关系,对输入的每个X值,求Y的值。
y=x*(x+2) 2<=x<=10
y=2*x -1<x<=2
y=x-1 x<=-1
小程序 字符串转数组#include<iostream>
using namespace std;
void main(void)
{
int x,y;
cin>>x;
if(x<=10) //这里修改了当X>10时,输出"Error."后,还会输出y的值的Bug.
{
if(x>=2&&x<=10) y=x*(x+2);
else if(x>-1&&x<=2) y=2*x;
else if(x<=-1) y=x-1;
cout<<"x="<<x<<endl;
cout<<"y="<<y<<endl;
}
else cout<<"Error."<<endl;
}
7.某运输公司对用户就算运费。标准如下:
s<250km 没有折扣
250<=x<500 2%
500<=x<1000 5%
1000<=x<2000 8%
2000<=x<3000 10%
3000<=x 15%
设每公里每吨的基本运费是P,货物重量W,距离S,折扣d,总运费是f=p*w*s*(1-d),编程实现。
#include<iostream>
using namespace std;
void main(void)
{
int p,w,s,d;
cin>>p>>w>>s;
if(s<250) d=0;
else if(s>=250&&s<500) d=0.02;
else if(s>=500&&s<1000) d=0.05;
else if(s>=1000
&&s<2000) d=0.08;
else if(s>=2000&&s<3000) d=0.1;
else if(s>=3000) d=0.15;
cout<<"f="<<p*w*s*(1-d)<<endl;
}
8.输入一行字符分别统计出其中的英文字母,空格,数字和其他字符的个数。
#include<iostream>
using namespace std;
void main(void)
{
char c;
int letter=0,space=0,number=0,other=0;
c=getchar();
while(c!='\n')
{
if(c>='A'&&c<='Z'||c>='a'&&c<='z') letter++;
else if(c==' ') space++;
else if(c>='0'&&c<='9') number++;
else other++;
c=getchar();
}
cout<<"letter="<<letter<<endl;
cout<<"space="<<space<<endl;
cout<<"number="<<number<<endl;
cout<<"other="<<other<<endl;
}
9.求系数为a,b,c的二元一次方程的解。
#include<iostream>
using namespace std;
#include<cmath>
void main(void)
{
float a,b,c,m;
cin>>a>>b>>c;
m=b*b-4*a*c; //这个公式还记得吧....
if(m<0) cout<<"Error."<<endl;
else if(m==0) cout<<"x="<<-b/(2*a)<<endl;
else cout<<"x="<<(-b+sqrt(m))/(2*a)<<"or"<<(-b-sqrt(m))/(2*a)<<endl; //求根公式
}
10.求数列之和,a,N(最后一项a的个数)从键盘输入s=a+aa+aaa+aaaa+....+aa..a(N个a)
#include<iostream>
using namespace std;
void main(void)
{
int a,n,sum=0,t=0;
cin>>a>>n;
for(int i=1;i<=n;i++)
{
t=t*10+1; //1,11,就是这样变化的
sum+=t*a; //t乘上a,就是a,aa,
}
cout<<"sum="<<sum<<endl;
}
11.输出100-200间的素数。
#include<iostream>
using namespace std;
void main(void)
{
int i,n=0;
for(int m=100;m<=200;m++)
{
for(i=2;i<m;i++)
if(m%i==0) break; // 如果m%i==0,就结束循环,此时i<m
if(i==m)
{
cout<<m<<" "; //上循环中如果break;这个语句一次都没有被执行,那么当i=m时结束循环
n++;
if(n%4==0) cout<<endl; //输出4个数后换行
}
}
}
12.从键盘输入两个数求其最大公约数和最小公倍数。
#include<iostream>
using namespace std;
void main(void)
{
int max_y(int a,int b);
int min_b(int a,int b);
int m, n;
cin>>m>>n;
cout<<"max_y="<<max_y(m,n)<<endl;
cout<<"min_b="<<min_b(m,n)<<endl;
}
int max_y(int a,int b) //最大公约数
{
int min;
if(a<b) min=a;
else min=b;
for(int i=min;;i--)
if(a%i==0&&b%i==0) break;
return i;
}
int min_b(int a,int b) //最小公倍数
{
int max;
if(a>b) max=a;
else max=b;
for(int i=max;;i++)
if(i%a==0&&i%b==0) break;
return i;
}
13.用冒泡法对10个数排序,使其从小到大排列。
#include<iostream>
using namespace std;
void main(void)
{
int num[10],t,j;
for(int i=0;i<10;i++)
cin>>num[i];
for(i=0;i<10;i++)
for(j=0;j<9-i;j++)
if(num[j]>num[j+1])
{
t=num[j];
num[j]=num[j+1];
num[j+1]=t;
}
for(i=0;i<10;i++)
cout<<num[i]<<' ';
}
14.用简单选择法对10个数排序,使其从小到大排列。
#include<iostream>
using namespace std;
void main(void)
{
int num[10],t,j;
for(int i=0;i<10;i++)
cin>>num[i];
for(i=0;i<
9;i++)
for(j=i+1;j<10;j++)
if(num[i]>num[j])
{
t=num[i];
num[i]=num[j];
num[j]=t;
}
for(i=0;i<10;i++)
cout<<num[i]<<" ";
}
15.求一给定3×4的二维数组中最大元素值及其所在行列号。
#include<iostream>
using namespace std;
void main(void)
{
int num[3][4],j;
for(int i=0;i<3;i++)
for(j=0;j<4;j++)
cin>>num[i][j];
int max=num[0][0],row=0,col=0;
for(i=0;i<3;i++)
for(j=1;j<4;j++) //因为我已经将num[0][0]赋值给了max,所以从num[0][1]开始比大小
if(num[i][j]>max)
{
max=num[i][j]; //把大的放在max里
row=i; //行
col=j; //列
}
cout<<"max="<<max<<endl;
cout<<"row="<<row<<endl;
cout<<"col="<<col<<endl;
}
16.输入三个字符串,出其中最大字符串。
//这个是我自己写的,感觉没老师那个好...老师那个我忘记了....
#include <iostream>
using namespace std;
#include <string>
void main(void)
{
void compare(char a[],char b[],char max[]);
char str[4][10]; //其实就是定义4个一维数组,
cin>>str[1]>>str[2]>>str[3];
compare(str[1],str[2],str[0]); //str[1],str[2]比较,大的复制到str[0]里
compare(str[0],str[3],str[0]); //str[0],str[2]比较,大的复制到str[0]里
cout<<str[0]; //然后把str[0]输出就可以了
}
void compare(char a[],char b[],char max[]) //将a,b两个数组比较,把大的复制到max里
{
if(strcmp(a,b)>0) strcpy(max,a);
else strcpy(max,b);
}
17打印以下图案:
*********
*******
*****
***
*
#include<iostream>
using namespace std;
void main(void)
{
int j,n;
for(int i=1;i<=5;i++) //i控制行号
{
for(j=1;j<i;j++) //j控制空格
cout<<' ';
for(n=9;n>=2*i-1;n--) //n控制星号
cout<<"*";
cout<<endl;
}
}
18编一程序,将两个字符串连接起来,不要用strcat()函数。
#include<iostream>
using namespace std;
void main(void)
{
char str1[20],str2[20];
cin>>str1>>str2;
for(int i=0;str1[i]!='\0';i++)
; //注意,这里有个分号,这是一个空语句,什么都不执行,因为我们要做的是出str1数组的结束位置
for(int j=0;str2[j]!='\0';j++)
{
str1[i]=str2[j]; //i是结束位置,j是str2的开始位置,正好对应,哈哈~~
i++;
}
str1[i]='\0'; //结束的时候要放个结束标志哦,因为这个时候系统不会自动给你添加上去的
cout<<str1<<endl;
}
19编写一程序,将字符数组s2中的全部字符拷贝到字符数组s1中。不用strcpy()函数。
拷贝时,'\0'也要拷贝过去,'\0'后面的字符不拷贝。
//这个程序其实和上一个差不多的,上面的那个多了判断str1的结束位置这一步
#include<iostream>
using namespace std;
void main(void)
{
char s1[20],s2[20];
cin>>s1>>s2;
for(int i=0;i<20&&s2[i]!='\0';i++)
s1[i]=s2[i];
s1[i]='\0';
cout<<s1<<endl;
}
20任意输入10个同学的成绩,计算其平均成绩。要求用
函数average()计算平均成绩。
主函数输入数据并输出结果。
#include<iostream>
using namespace std;
void main(void)
{
float average(float a[]);
float score[10];
for(int i=0;i<10;i++)
cin>>score[i];
cout<<"average:"<<average(score)<<endl;
}
float average(float a[])
{
float sum=0;
for(int i=0;i<10;i++)
sum+=a[i];
return (sum/10);
}
21编一个函数to_lower(),实现将字符串中的大写字母转换成相应小写字母。主函数输入数据并输出结果。
#include<iostream>
using namespace std;
void main(void)
{
void to_lower(char a[]);
char str[10];
cin>>str;
to_lower(str);
cout<<str<<endl;
}
void to_lower(char a[])
{
for(int i=0;i<10&&a[i]!='\0';i++)
if(a[i]>='A'&&a[i]<='Z')
a[i]+=32;
}
22编一个函数to_bigger(),实现将字符串中的小写字母转换成相应大写字母。主函数输入数据并输出结果。
//如果上一题看懂了,这题看不懂的话,我也没办法了....
#include<iostream>
using namespace std;
void main(void)
{
void to_bigger(char a[]);
char str[10];
cin>>str;
to_bigger(str);
cout<<str<<endl;
}
void to_bigger(char a[])
{
for(int i=0;i<10&&a[i]!='\0';i++)
if(a[i]>='a'&&a[i]<='z') a[i]-=32;
}
23编一个函数sum(),统计3×3矩阵中的左右对角线上元素之和。主函数输入数据并输出结果。
#include<iostream>
using namespace std;
void main(void)
{
int sum(int num[][3]);
int num[3][3],j;
for(int i=0;i<3;i++)
for(j=0;j<3;j++)
cin>>num[i][j];
cout<<"sum="<<sum(num)<<endl;
}
int sum(int num[][3])
{
int j,s=0;
for(int i=0;i<3;i++)
for(j=0;j<3;j++)
if(i==j||i+j==2) s+=num[i][j]; //对角线的规律:i=j或i+j=2
return s;
}
24编一个函数sort(),能够对10个同学成绩进行从高到低排序,由主函数输入10个同学数据并输出排序结果。
//就是书上的例题,对10个同学的成绩排序就是对数组中的10个数排序(当我没说.....)
#include<iostream>
using namespace std;
void main(void)
{
void sort(int s[]);
int score[10];
for(int i=0;i<10;i++)
cin>>score[i];
sort(score);
for(i=0;i<10;i++)
cout<<score[i]<<" ";
}
void sort(int s[])
{
int t;
for(int i=0;i<9;i++)
for(int j=i+1;j<10;j++)
if(s[i]<s[j])
{
t=s[i];
s[i]=s[j];
s[j]=t;
}
}
25编一个函数count(),统计3×3矩阵中偶数的和,主函数输入数据并输出结果。
//其实跟23题是一样的,只是if里的条件换了下而已
#include<iostream>
using namespace std;
void main(void)
{
int sum(int a[][3]);
int num[3][3];
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
cin>>num[i][j];
cout<<"sum="<<sum(num)<<endl;
}
int sum(int a[][3])
{
int n=0;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
if(a[i][j]%2==0) n+=a[i][j];
return n;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论