目录
3、编写一函数,该函数的功能是:计算两个自然数n和m(m<10000)之间所有数的和(n和m从键盘输入)。
4、(2014年)编程实现s(n)=(1-1/2)+(1/3-1/4)+.....+(1/(2n-1)-1/2n)。函数原型为double fun(int n)
5、编程实现S(n)=1+1/(1+2)+1/(1+2+3)+1/(1+2+3+...+n)
7、如果一个两位正整数是质数,将组成它的两个数字交换位置后,形成的整数仍然是质数,则称这样的数为绝对质数(如13,17),编写一个程序,找出所有的绝对质数。
8、判断一个正整数是否为回文数。回文数是这样的数:一个正整数从左往右读和从右往左读都是一样的数(如121,123321)。
9、求所有的水仙花数(对于一个3位整数,其各位数的立方和等于该数。如153=1^3+5^3+3^3,则153就是水仙花数)
10、取出一个无符号的十进制整数中所有偶数数字,按原来的顺序组成一个新的数。
11、请输入任意数a(1<=a<=9),请输出Sn=a+aa+aaa+aaaa+aaaaa的前五项之和的值。
19、写出一个程序,输入n,输出n行数字三角形(n不大于10),例如,输入n=7时,输出以下图形。
25、求字符串B在A中出现的次数,如A是abcabcabcdababc,B是abc。
26、有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课的成绩、平均分数)。
27、有N个学生,每个学生的信息包括学号、性别、姓名、四门课的成绩,从键盘上输入N个学生信息,要求输出总平均超级最高的学生信息,包括学号、性别、姓名和平均成绩。要求采用结构体表达学生基本信息。
28、输入任意个自然数,其中奇数从大到小输出,偶数从小到大输出,分别输出。
29、请用函数调用编写删除数组中相同的字符,只留下一个函数返回数组的个数(相当于输入数组1112334566删除1136,只留下123456返回个数)
30、请编写函数myfun( ),其功能是:从3个形参a,b,c中找出中间的那个数,作为函数值返回。
31、输入字符,按回车键结束。将其中的小写字母转换成大写字母,而其他字符不变。
32、编写主函数,该函数的功能是:分别统计字符串中大写字母和小写字母的个数。
34、定义3个整数及指向整数的指针,仅用指针的方法按由小到大的顺序输出。
1、定义一个长方体类:该类中定义的成员数据包括:长、宽、高,定义的成员函数包括:
2、编辑一个 C++ 设计一个程序,定义一个汽车类 Vehicle,它具有一个需要传递参数的构造函数,
3、设计二维坐标类 Coordinate 和三维坐标类 ThreeDCoord,其中 ThreeDCoord 类由Coordinate 类 public 派生,设计要求如下:
4、游泳池
C语言部分
1、用循环的方式打印出如下图案(菱形)
*
***
*****
*******
*****
***
*
答案:
#include <stdio.h>
int main()
{
int i;
for (i = 1; i <=4; i++)
{
for (int j = 1; j <=4-i ; j++)
printf(" ");
for (int k = 1; k <=(2*i)-1; k++)
printf("*");
printf("\n");
}
for(i = 3; i>=1; i--)
{
for (int j = 1; j <=4-i ; j++)
printf(" ");
for (int k = 1; k <=(2*i)-1; k++)
printf("*");
printf("\n");
}
return 0;
}
2、求1+2+3+...+20的和
#include <stdio.h>
int main()
{
int i,sum;
sum=0;
for(i=1;i<=20;i++)
sum=sum+i;
printf("sum=%d\n",sum);
return 0;
}
3、编写一函数,该函数的功能是:计算两个自然数n和m(m<10000)之间所有数的和(n和m从键盘输入)。
#include <stdio.h>
int fun(int n,int m)
{
int sum=0,i;
for(i=n;i<=m;i++)
sum+=i;
return sum;
}
int main()
{
int n,m;
scanf("%d %d",&n,&m);
printf("%d\n",fun(n,m));
return 0;
}
4、(2014年)编程实现s(n)=(1-1/2)+(1/3-1/4)+.....+(1/(2n-1)-1/2n)。函数原型为double fun(int n)
#include<stdio.h>
double fun(int n);
int main()
{
double s;
int a;
printf("请输入n的值:\n");
scanf("%d",&a);
s=fun(a);
printf("s(%d)=%lf\n",a,s);
return 0;
}
double fun(int n)
{
int i=0;
double sum=0.0;
double elem;
for(i=1;i<=n;i++)
{
elem=(double)(1.0/(2*i-1)-1.0/(2*i));
sum=sum+elem;
}
return sum;
}
5、编程实现S(n)=1+1/(1+2)+1/(1+2+3)+1/(1+2+3+...+n)
#include<stdio.h>
double fun(int n);
int main()
{
double s;
int a;
printf("请输入n的值:\n");
scanf("%d",&a);
s=fun(a);
printf("s(%d)=%lf\n",a,s);
return 0;
}
double fun(int n)
{
int i=0,e=0;
double sum=0.0;
double elem;
for(i=1;i<=n;i++)
{
e=e+i;
elem=(double)(1.0/e);
sum=sum+elem;
}
return sum;
}
6、给定一个正整数,判定是否为素数。
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main()
{
int i,m,n;
scanf("%d",&n);
if(n>0)
m=sqrt(n);
for(i=2;i<=m;i++)
if(n%i==0)
break;
if(i>m)
printf("%d是素数\n",n);
else
printf("%d不是素数\n",n);
return 0;
}
7、如果一个两位正整数是质数,将组成它的两个数字交换位置后,形成的整数仍然是质数,则称这样的数为绝对质数(如13,17),编写一个程序,找出所有的绝对质数。
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main()
{
int i,m,n;
int t,j,u,v;
scanf("%d",&n);
t=(n%10)*10+(n/10);
if(n>=10&&n<100)
{
m=sqrt(n);
u=sqrt(t);
}
else
exit(0);
for(i=2;i<=m;i++)
if(n%i==0)
break;
for(j=2;j<=u;j++)
if(t%i==0)
break;
if(i>m&&j>u)
printf("%d是绝对素数\n",n);
else
printf("%d不是绝对素数\n",n);
return 0;
}
8、判断一个正整数是否为回文数。回文数是这样的数:一个正整数从左往右读和从右往左读都是一样的数(如121,123321)。
#include<stdio.h>
int main()
{
int n,m=0,k;
do
{
scanf("%d",&n);
if(n<=0)
printf("数据输入错误,请重新输入!\n");
}while(n<=0);
k=n;
while(k!=0)
{
m=m*10+k%10;
k=k/10;
}
if(n==m)
printf("%d是回文数!\n",n);
else
printf("%d不是回文数!\n",n);
return 0;
}
9、求所有的水仙花数(对于一个3位整数,其各位数的立方和等于该数。如153=1^3+5^3+3^3,则153就是水仙花数)
#include<stdio.h>
int main()
{
int n,k,a,b,c;
printf("请输入一个三位正整数:\n");
do
{
scanf("%d",&n);
if(n<100||n>999)
printf("数据输入错误,请重新输入:\n");
}while(n<100||n>999);
a=n/100;
b=(n-a*100)/10;
c=n%10;
k=a*a*a+b*b*b+c*c*c;
if(k==n)
printf("%d为水仙花数!\n",n);
else
printf("%d不是水仙花数!\n",n);
return 0;
}
10、取出一个无符号的十进制整数中所有偶数数字,按原来的顺序组成一个新的数。
#include<stdio.h>
int main()
{
int num,t,u1,u2,i;
u1=0;
u2=0;
printf("Please enter one number:\n");
scanf("%d",&num);
while(num!=0)
{
t=num%10;
num=num/10;
if(t%2==0)
u1=10*u1+t;
}
while(u1!=0)
{
i=u1%10;
u1=u1/10;
u2=u2*10+i;
}
printf("\nNew number is %d\n",u2);
return 0;
}
11、请输入任意数a(1<=a<=9),请输出Sn=a+aa+aaa+aaaa+aaaaa的前五项之和的值。
#include<stdio.h>
int main()
{
int a;
int sum = 0;
int tmp = 0;
printf("输入一个数:");
scanf("%d", &a);
for (int i = 0; i<5; i++)
{
tmp = tmp * 10 + a;
sum += tmp;
}
printf("Sn=%d", sum);
return 0;
}
12、求斐波那契数列的前40项。(拓展)
#include<stdio.h>
int main()
{
int i,f1=1,f2=1;
for(i=1;i<=20;i++)
{
printf("%12d %12d",f1,f2);
if(i%2==0)
printf("\n");
f1=f1+f2;
f2=f2+f1;
}
return 0;
}
13、编写一个函数,实现斐波那契数列。
//递归方法
int Fib(int n)
{
int fac;
if(n==0||n==1)
fac=1;
else
fac=n*Fib(n-1);
return fac;
}
//非递归方法
int Fib(int n)
{
int fac=1;
for(int i=1;i<=n;i++)
fac=fac*i;
return fac;
}
14、求反位数。(拓展)
#include<stdio.h>
int main()
{
int n,m=0,k;
printf("请输入一个整数:\n");
scanf("%d",&n);
k=n;
while(k!=0)
{
m=m*10+k%10;
k=k/10;
}
printf("反位数是%d\n",m);
return 0;
}
15、设计一个程序,能让一个数组7849846倒序输出。
#include<stdio.h>
int main()
{
int i,j;
j=6;
int a[7]={7,8,4,9,8,4,6};
int b[7];
printf("a[7]的倒序输出是:\n");
for(i=0;i<7;i++)
{
b[i]=a[j];
printf("%d",b[i]);
j--;
}
return 0;
}
16、求最大公约数(拓展)
#include <stdio.h>
int main()
{
int a,b,r;
scanf("%d %d",&a,&b);
do
{
r=a%b;
a=b;
b=r;
}while(r!=0);
printf("最大公约数是:%d\n",a);
return 0;
}
17、求1000以内的所有完数(例如:第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。)。
#include <stdio.h>
void main()
{
int i,j;
printf("1000之内的所有完数:\n");
for(i=6;i<1000;i++)
{
int sum=0;
for(j=1;j<i;j++)
{
if(i%j==0)
sum = sum+j;
}
if(sum==i)
printf("%d,",i);
}
}
18、编写主函数,读取两个数字,交换后打印到屏幕。
#include <stdio.h>
int main()
{
int x,y,z;
printf("Enter 2 numbers : x,y\n");
scanf("%d%d",&x,&y);
z=x;
x=y;
y=z;
printf("x=%d,y=%d",x,y);
return 0;
}
19、写出一个程序,输入n,输出n行数字三角形(n不大于10),例如,输入n=7时,输出以下图形。
0 1 2 3 4 5 6
7 8 9 0 1 2
3 4 5 6 7
8 9 0 1
2 3 4
5 6
7
#include <stdio.h>
int main()
{
int n,i,j;
int cur;
printf("input n:");
scanf("%d",&n);
cur=0;
for(i=n;i>=1;--i)
{
for(j=1;j<=i;++j)
{
printf("%d",cur);
cur++;
if(cur>9)
cur=0;
}
printf("\n");
}
return 0;
}