记:疫情在家学习效率低,希望能通过写博客来找一点学习的感觉,以下题目是考研学校的学长分享给我的资料中的题目,我写了以下代码,然后分享到博客上,不对的地方请大家指正。
1. 由键盘输入的n个整数,输出其中最大和最小数。其中,n由用户通过键盘输入。
输入:n=10
92 756 43 32 45 78 67 82 99 65
输出:756 (最大)
32 (最小)
#include
#include
using namespace std;
int main()
{
int n=0,i=0;
int var[1000];
cin>>n;
int t=n;
while(n){
cin>>var[i];
i++;
n--;
}
sort(var,var+t);
cout<
2.求这样一个三位数,该三位数等于其中每位数字的的阶乘之和。
即; abc=a!+b!+c!
输出: 145
#include
using namespace std;
int main()
{
for(int i=100;i++;i<=999){
long int a=0,b=0,c=0;
long int d=1,e=1,f=1;//注意清零,否则会超出内存
a=i%10;
b=i%100/10;
c=i/100;
for(int j=1;j<=a;j++)
d=d*j;
for(int q=1;q<=b;q++)
e=e*q;
for(int w=1;w<=c;w++)
f=f*w
if(i==(d+e+f))
{
cout<
3.有一分数序列:2/1, 3/2, 5/3, 8/5, 13/8 ,21/13,
编程,求出这个数列的前20项之和。
输出: 32.660259
#include
using namespace std;
int main()
{
int n=20;
float fz=2,fm=1;
float sum=0;
while(n--)
{
float t=fz,y=fm;
cout<
4.编程,从键盘输入正整数n,求n!并输出。
输入: 10
输出: 3628800
#include
using namespace std;
int main()
{
int n,sum=1;
cin>>n;
for(int i=1;i<=n;i++)
{
sum=sum*i;
}
cout<
5.编程序,从键盘输入一整数,然后按反向输出。比如原数为12345,应输出54321.
输入:56832
输出:23865#
#include
using namespace std;
int main()
{
int n,var[100],i=0;
cin>>n;
while(n)
{
var[i]=n%10;
n=n/10;
i++;
}
for(int j=0;j
6.编程,统计输出整数100至100000之间所有数字之和为5的整数的总个数。
输出120
#include
using namespace std;
int main()
{
int count=0;
for(int i=100;i<=100000;i++)
{
int var[10];
int n=i;
int t=0,sum=0;
while(n)
{
var[t]=n%10;
sum+=var[t];
n=n/10;
t++;
}
if(sum==5)
count++;
}
cout<
6.1 写一个函数,输入一个四位数字,要求输出这四个数字字符,但每两个数字之间加一个下划线;并在主函数中进行测试。
输入:1990,
输出:1_9_9_0
#include
using namespace std;
int main()
{
int var[5],n=0,i=0;
cin>>n;
while(n)
{
var[i]=n%10;
n=n/10;
i++;
}
cout<
7.编程序,有键盘输入一个字符串,将字符串中除小写元音字母以外的字符打印出来。
输入:My name is Tom!
输出:My nm s Tm!
#include
#include
using namespace std;
int main()
{
char str1[100],str2[100];
gets(str1);
int len=strlen(str1);
int k=0;
for(int i=0;i
7.1连续输入一批以 # 结束的字符串(字符串的长度不超过80),遇 ## 则全部输入结束。对每个字符串做如下处理:滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。
例: 括号内是说明
输入:
10#Pf4+1#-+A## (连续输入3 个字符串)
输出:
16 (对应10)
3905 (对应f41)
10 (对应A)
#include
#include
using namespace std;
//0-9的ASCII码为48-57
//A-F的ASCII码为65-70
//a-f的ASCII码为97-102
int main()
{
char str[100];
int var[100],k=0;
gets(str);
int pow=1,sum=0;
int len=strlen(str);
for(int i=len-3;i>=0;)
{
if(str[i]=='#')
{
--i;
pow=1;
var[k++]=sum;
sum=0;
}
if((str[i]>=48&&str[i]<=57))//数字
{
sum+=(str[i]-'0')*pow;
pow=16*pow;
if(i==0)
{
var[k++]=sum;
}
i--;
}
else if((str[i]>=65&&str[i]<=70))//大写
{
sum+=((str[i]-0)-55)*pow;
pow=16*pow;
--i;
}
else if((str[i]>=97&&str[i]<=102))//小写
{
sum+=((str[i]-0)-87)*pow;
pow=16*pow;
--i;
}
else --i;
}
for(int t=k-1;t>=0;t--)
cout<
7.2、连续输入一批以 # 结束的字符串(字符串的长度不超过80),遇 ## 则全部输入结束。将每个字符串中的大写字母用下面列出的对应大写字母替换, 其余字符不变, 输出替换后的字符串.
原字母 对应字母
A ──→ Z
B ──→ Y
C ──→ X
D ──→ W
……
X ──→ C
Y ──→ B
Z ──→ A
例:括号内是说明
输入:
A flag of USA#IT12#oueiaba## (连续输入3 个字符串)
输出:
Z flag of FHZ
RG12
Oueiaba
#include
#include
using namespace std;
//A-Z的ASCII码为 65-90
//如果是A-M则对应为A+25 B+23 C+21...M+1
//如果是N-Z则对应为N-1 O-3.....Z-25
int main()
{
char str1[100],str2[100],var1[50],var2[50];
int t=65,u=78;
for(int j=1;j<=26;j+=2)
{
var1[j]=t;
var2[j]=u;
t++;
u++;
}
gets(str1);
int i=0,k=0;
while(!(str1[i]=='#'&&str1[i+1]=='#'))
{
if(str1[i]=='#')
{
++i;
k=0;
puts(str2);
memset(str2,0,sizeof(str2));
// continue;
}
else if(str1[i]>=65&&str1[i]<=77)//A-M
{
for(int x=1;x<=26;x++)
{
if(var1[x]==str1[i])
str2[k++]=var1[x]+(26-x);
}
i++;
}
else if(str1[i]>=78&&str1[i]<=90)//N-Z
{
for(int x=1;x<=26;x++)
{
if(var2[x]==str1[i])
str2[k++]=var2[x]-x;
}
i++;
}
else{
str2[k++]=str1[i];
i++;
}
}
puts(str2);
return 0;
}
7.3、输入一个字符并回车,再连续输入一批以 # 结束的字符串(字符串的长度不超过80),遇 ##则全部输入结束。在每个字符串中查找该字符,如果找到,则输出该字符在字符串中所对应的最大下标(下标从0 开始);否则输出“Not Found”。
例:括号内是说明
输入:
m (输入一个字符)
moon#programming#1234## (输入3 个字符串"moon","programming","1234")
输出:
0 (m在"moon"中对应的最大下标是0)
7 (m在"programming"中对应的最小下标是7)
Not Found ("1234"中没有m)
#include
#include
using namespace std;
int main()
{
char c,str[100];
cin>>c;
getchar();
gets(str);
int i=0,f=0,flag=0,k=0;
while(!(str[i]=='#'&&str[i+1]=='#'))
{
if(str[i]=='#')
{
if(flag==0)
cout<<"Not Found"<
例:括号内是说明
输入:
HELLO#IT12#uieiaba## (连续输入3 个字符串)
输出:
3 ("HELLO"中有3 个大写辅音字母)
1 ("IT12"中有1 个大写辅音字母)
0 ("uieiaba"中没有大写辅音字母)
#include
#include
using namespace std;
int main()
{
char str1[100];
gets(str1);
int i=0,count=0;
while(!(str1[i]=='#'&&str1[i+1]=='#'))
{
if(str1[i]=='#')
{
++i;
cout<=65&&str1[i]<=90)&&(str1[i]!='A'&&str1[i]!='E'&&str1[i]!='I'&&str1[i]!='O'&&str1[i]!='U'))
{
i++;
count++;
}
else
{
i++;
}
}
cout<
7. 5. 连续输入一批以 # 结束的字符串(字符串的长度不超过80),遇 ## 则全部输入结束。统计并输出每个字符串的有效长度。
例:括号内是说明
输入:
hello 12#abc+0## (连续输入2 个字符串"hello 12"和"abc+0")
输出:
8 ("hello 12"的有效长度是8)
5 ("abc+0"的有效长度是5)
?#hello 12#abc+0#1234567890iop##
1
8
5
13
#include
#include
using namespace std;
int main()
{
char str[100];
int count=0,i=0;
gets(str);
while(!(str[i]=='#'&&str[i+1]=='#'))
{
if(str[i]=='#')
{
cout<
7.6. 输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。
输入:My teachere’s address is “#123 beijing Road,shanghai”.
字母个数:38
数字个数:3
空格数:6
其他字符:6
#include
#include
using namespace std;
int main()
{
int y=0,k=0,s=0,q=0;
char str[100];
int i=0;
gets(str);
int len=strlen(str);
while(i=65&&str[i]<=90)||(str[i]>=97&&str[i]<=122))
y++;
else if(str[i]>=48&&str[i]<=57)
s++;
else if(str[i]==' ')
k++;
else q++;
i++;
}
cout<<"字母个数:"<
8.编程序,由键盘输入5个整数,计算这些整数的平均值,及其所有的偶数之和。
输入:12 35 46 4 13 8 72 25 61 82
偶数之和:224
偶数平均值; 37.333333
9.编程序:由键盘输入10个整数,输出奇数和奇数平均值。
输入: 12 35 46 4 13 8 72 25 61 82
奇数之和:134
奇数平均值;33.5
#include
using namespace std;
int main()
{
float sum1=0,sum2=0,x=0,y=0;
int a,k=10;
while(k--)
{
cin>>a;
if(a%2==0)
{
sum1+=a;
x++;
}
else
{
sum2+=a;
y++;
}
}
cout<<"偶数之和:"<
10.编程,求S=a+aa+aaa+…+aa…a的值,其中a是一个数字,最后一项a的个数为n,a和n均有键盘输入。
输入:a=2
n=5
输出:24690
#include
using namespace std;
int main()
{
int a,n,sum1=0,sum2=0;
cin>>a>>n;
while(n)
{
sum1=0;
for(int i=1;i<=n;i++)
{
sum1=sum1*10+a;
}
sum2=sum2+sum1;
n--;
}
cout<
11.编程序, 求1!+2!+3!+…+n!并输出结果,其中n由键盘输入。
输入: 10
输出: 4037913
#include
using namespace std;
int main()
{
long int n,sum=0,temp=1;
cin>>n;
for(int i=1;i<=n;i++)
{
temp=temp*i;
sum=sum+temp;
}
cout<
12.编程序,输出满足以下条件的最大的n:12+22+32+……n2<=1000
输出 :13
#include
using namespace std;
int main()
{
int n,sum=12,k=12;
while(1)
{
if(sum>1000) break;
else
{
k=k+10;
sum=sum+k;
}
}
cout<<(k-10)/10<
13. 编程打印输出求0~1000中同时能被7和13整除的那些数。
输出: 0 91 182 273 364 455 546 637 728 819 910
14.编程计算分数序列: 1/1, 1/3 1/5 1/7 1/9 1/11…….的前20项之和,并输出。
输出:2.479674
#include
using namespace std;
int main()
{
float fm=1,sum=0;
for(int i=1;i<=20;i++)
{
sum=sum+1/fm;
fm=fm+2;
}
printf("%f\n",sum);
return 0;
}
15.程序,求s=1-1/3+1/5-1/7+…..,直到最后一项的绝对值小于0.00001为止。
输出:0.78538447618
#include
#include
using namespace std;
int main()
{
float sum=0.0,fm=1,fs=1.0;
float f=1;
while(fabs(fs)>=0.00001)//注意最后一项有没有计算上
{
sum=sum+fs;
f=-f;
fm=fm+2.0;
fs=(1.0/fm)*f;
}
// cout<
16. 编程序,用公式e≈1+1/1!+1/2!+1/3!+…+1/n!,求e的近似值,直到1/n!<10-6负6次方为止。
输出:2.71828174591064453
#include
using namespace std;
int main()
{
float sum=1.0,n=1.0;
int i=1;
while(1.0/n>=1e-6)
{
n=n*i;
sum=sum+1.0/n;
i++;
}
printf("%.15f",sum+(1.0/n));
return 0;
}
17.编程序,用π/4=1-1/3+1/5-1/7+……公式请求π的近似值,直到某一项的绝对值小于10负6次方为止。
输出:3.141537904739
#include
#include
using namespace std;
int main()
{
float sum=0,fm=1,k=1,fs=1.0;
while(fabs(fs)>=1e-6)
{
sum=sum+fs;
k=-k;
fm=fm+2;
fs=(1.0/fm)*k;
}
printf("%.12f",(sum+fs)*4);
return 0;
}
18.编程序,输出1~10的阶乘值。
输出: 1!=1
2! =2
3! =6
4!=24
5!=120
6!=720
7!=5040
8!=40320
9!=362880
10!=3628800
#include
using namespace std;
int main()
{
long int n=1;
for(int i=1;i<=10;i++)
{
n=n*i;
cout<
19.在主函数输入一个整数,判断并输出是否为素数。
输入:13 输出: 是素数!
输入: 15 输出:不是素数!
#include
#include
using namespace std;
int isprimry(int n)
{
int flag=0;
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0)
{
flag=1;
break;
}
}
if(flag==1) return 0;
else return 1;
}
int main()
{
int n;
cin>>n;
int f=isprimry(n);
if(f==1) cout<<"是素数!"<
20.编程序,求1+(1+2)+(1+2+3)+……..+(1+2+3+….+n)的值。其中,n由键盘输入。
输入:20
输出:1540
#include
using namespace std;
int main()
{
int sum=0,n,temp=0;
cin>>n;
for(int i=1;i<=n;i++)
{
temp=temp+i;
sum=sum+temp;
}
cout<
20.1 求方程a2+bx+c=0的根,用三个函数分别求当b2-4ac大于0、等于0和小于0时的根,并输出结果。
要求:(1)编写函数void deltaZero(float a, float b, float c)求当b2-4ac等于0时的根;
(2)编写函数void deltaLargerZero(float a, float b, float c)求当b2-4ac大于0时的根;
(3)编写函数void deltaLessZero(float a, float b, float c)求当b2-4ac小于0时的根;
(4)另外,考虑当a=0时的情况,此时方程退化为一次方程。
测试:
输入: 0 1 1 输出: X=-1
输入:1 2 1 输出: X1=X2= -1
输入:1 3 2 输出: X1= -1 X2= -2
输入:1 2 2 输出: X1= -1+1i X2= -1-1i
#include
#include
using namespace std;
void deltaZero(float a,float b,float c,float q)
{
float x1=(-b+sqrt(q))/(2*a);
cout<<"X1=X2="<>a>>b>>c;
q=b*b-4*a*c;
if(a==0){
cout<<"X="<<-(c/b)<0){
deltaLargerZero(a,b,c,q);
}else if(q<0){
deltaLessZero(a,b,c,q);
}
return 0;
}
21.输入年份year和月month,求该月有多少天。(若年份year能被400整除,或能被4整除但不能被100整除,则为闰年;否则,为平年)
输入:1992 2 输出:29
输入:2007 2 输出:28
输入:2007 1 输出:31
输入:2006 11 输出:30
#include
using namespace std;
int isleap(int year){
int f=0;
if((year%400==0)||(year%4==0&&year%100!=0))
{
f=1;//为闰年
}
else f=0;
return f;
}
int main()
{
int m[2][12]={31,28,31,30,31,30,31,31,30,31,30,31,
31,29,31,30,31,30,31,31,30,31,30,31};
int year,month;
cin>>year>>month;
int f=isleap(year);
cout<
22.编写一个简单计算器程序,输入格式为:data1 op data2.其中data1和data2是参加运算的两个数,op为运算符,其取值只能是+、-、*、/。
输入:5+8 输出:13
输入:5-8 输出:-3
输入:5*8 输出:40
输入:5/8 输出:0.625
#include
using namespace std;
int main()
{
float a,b;
char c;
cin>>a>>c>>b;
switch(c){
case '+':
cout<
23.编写程序求出555555的约数中最大的三位数是多少。
输出:777
#include
using namespace std;
int main()
{
for(int i=999;i>=100;--i)
{
if(555555%i==0)
{
cout<
24.“韩信点兵”问题:韩信阅兵时,让一队士兵5人一行排队从他面前走过,他记下最后一行士兵的人数(1人);再让这对士兵6人一行排队从他面前走过,他记下最后一行士兵的人数(5人);再让这对士兵7人一行排队从他面前走过,他记下最后一行士兵的人数(4人);再让这对士兵11人一行排队从他面前走过,他记下最后一行士兵的人数(10人);然后韩信就凭这些数,可以求得这队士兵的总人数(>11)。编程,求解士兵总数n。
输出:2111
#include
using namespace std;
int main()
{
for(int i=11;;++i)
{
if(i%5==1&&i%6==5&&i%7==4&&i%11==10)
{
cout<
25.求解爱因斯坦数学题。有一条长阶梯,若每步跨2阶,则最后剩余1阶,若每步跨3阶,则最后剩2阶,若每步跨5阶,则最后剩余4阶,若每步跨6阶,则最后剩余5阶,若每步跨7阶,最后才刚好剩下一阶不剩。编程,求这条阶梯共有多少阶?
输出:119
#include
using namespace std;
int main()
{
for(int i=7;;i+=7)
{
if(i%2==1&&i%3==2&&i%5==4&&i%6==5&&i%7==0)
{
cout<
26.输入两个整数m和n,求他们的最小公倍数。要求不论m和n为何值(包括负整数),都能得到正确结果。
输入:12 8 输出:24
输入:24 16 输出:48
27.输入两个整数m和n,求他们的最大公约数。要求不论m和n为何值(包括负整数),都能得到正确结果。
输入:12 8 输出:4
输入:24 16 输出:8
#include
using namespace std;
int gy(int a,int b)//求最大公约数的函数,最大公倍数=a*b/最大公约数
{
if(b==0) return a;
else return gy(b,a%b);
}
int main()
{
int m,n;
cin>>m>>n;
int y=gy(m,n);
int b=m*n/y;
cout<
29.编程对10个由键盘输入的整数排序(升序)。
输入:6 90 45 56 1 15 44 78 58 101
输出:1 6 15 44 45 56 58 78 90 101
#include
#include
using namespace std;
int main()
{
int a[10];
for(int i=0;i<10;i++)
{
cin>>a[i];
}
sort(a,a+10);
for(int i=0;i<10;i++)
{
cout<
30.求100~200间的全部素数(要求:输出时每行10个数)。
输出:101 103 107 109 113 127 131 137 139 149
151 157 163 167 173 179 181 191 193 197
199
#include
#include
using namespace std;
int main()
{
int count=0;
for(int i=100;i<=200;i++)
{
int f=0;
for(int j=2;j<=sqrt(i);j++)
{
if(i%j==0)
{
f=1;
break;
}
}
if(f==0)
{
count++;
if(count==10)
{
cout<
31.搬砖问题。有36块砖,由成年男、女和小孩共36人来搬,男子每人搬4块,女子每人搬3块,两个小孩抬一块,要求一次全搬完,问需要男、女、小孩各几人?(成年男、女和小孩都必须参与搬砖工作
输出:3(男) 3(女) 30(小孩)
#include
int main()
{
int x,y,z,f=0;
for(x=1;x<9;x++)
{
for(y=1;y<12;y++)
{
for(z=2;z<=34;z=z+2)
{
if(x+y+z==36&&4*x+3*y+z/2==36)
{
f=1;
printf("%d(男)%d(女)%d(小孩)",x,y,z);
break;
}
}
if(f==1) break;
}
if(f==1) break;
}
return 0;
}
32.从键盘输入一行字符,以换行符结束,分别以正向和反向的次序输出。
输入:C Programming
输出:gnimmargorp C
#include
#include
int main()
{
char a[100];
gets(a);
int len=strlen(a);
for(int i=len-1;i>=0;i--)
printf("%c",a[i]);
return 0;
}
33.输入一行字符,统计其中以空格分开的单词的个数。
输入:The equation has distinct real roots.
输出:6
#include
#include
int main()
{
char a[100];
gets(a);
int len=strlen(a);
int count=1;
for(int i=0;i
34.输入一个十进制数,将其转换成二进制数,并输出转换后的结果。
输入:103
输出:1100111
#include
int main()
{
int n,var[100],i=0;
scanf("%d",&n);
while(n)
{
var[i]=n%2;
n=n/2;
++i;
}
for(i=i-1;i>=0;i--)
printf("%d",var[i]);
return 0;
}
35.输出所有的“水仙花数”,所谓的“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例:153=13+53+33,则153是水仙花数。
输出:153 370 371 407
#include
int main()
{
for(int i=100;i<=999;i++)
{
int sum=0,var[5],j=0,t=i;
while(t)
{
var[j]=t%10;
t=t/10;
++j;
}
sum=var[0]*var[0]*var[0]+var[1]*var[1]*var[1]+var[2]*var[2]*var[2];
if(sum==i)
printf("%d ",i);
}
return 0;
}
35.1.完全数问题:如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,则称之为完全数,例如6的因子为1、2、3,且1+2+3=6,即6为一个完数。
要求定义一个判断函数wanquan(n),判断数n是否为完全数,当n为完全数时返回1,否则返回0,并在主函数输入整数n中进行测试。
输入:6
输出:1
#include
int main()
{
int n,sum=0;
scanf("%d",&n);
for(int i=1,j=0;i
36.编程,显示从3开始小于100的所有双素数(双素数:如果p和q都是素数且q=p+2,则p/q称为双素数,例如3/5,5/7都是双素数)。
输出:3/5 5/7 11/13 17/19 29/31 41/43 59/61 71/73
#include
#include
int isprime(int n)
{
int f=0;
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0)
{
f=1;
return 0;
}
}
if(f==0) return 1;
}
int main()
{
int var[100],j=0;
for(int i=3;i<=100;i++)
{
int f=isprime(i);
if(f==1) var[j++]=i;
}
for(int k=0;k
37.一个素数,当她的数字位置对换以后仍为素数,这样的数称为绝对素数。
输出:11 13 17 31 37 71 73 79 97
#include
#include
int isprime(int n)
{
int f=0;
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0)
{
f=1;
return 0;
}
}
if(f==0) return 1;
}
int main()
{
for(int i=10;i<=99;i++)
{
int sum=0;
int t=i;
while(t)
{
sum=sum*10+t%10;
t=t/10;
}
int f1=isprime(i);
int f2=isprime(sum);
if(f1==1&&f2==1)
printf("%d ",i);
}
return 0;
}
37.1.亲密数对问题:如果整数M的因子(包括1但不包括自身)之和为N,且N的因子之和为M,则称M与N为一对亲密数。
要求定义一个判断函数qinmi(m,n),判断数m、n是否为亲密数对,当m、n为亲密数对时返回1,否则返回0。
编程调用该函数,输入一个正整数t,输出小于t内的所有亲密数对。
输入:500
输出:220-284
#include
int qinmi(int m,int n)
{
int f=0,sum2=0;
for(int j=2;j
38.把100~150之间的能被3整除的数输出(要求:输出时每行输出5个数)。
输出:102 105 108 111 114
117 120 123 126 129
132 135 138 141 144
147 150
#include
int main()
{
int cnt=0;
for(int i=100;i<=150;i++)
{
if(i%3==0)
{
cnt++;
if(cnt%5==0){
printf("%d\n",i);
cnt=0;
}else{
printf("%d ",i);
}
}
}
return 0;
}
39.编程对10个有键盘输入的整数排序(降序)。
输入:6 90 45 56 1 15 44 78 58 101
输出:101 90 78 58 56 45 44 15 6 1
#include
#include
#include
using namespace std;
int cmp(int a,int b)
{
return a>b;
}
int main()
{
int var[10];
for(int i=0;i<10;i++)
{
scanf("%d",&var[i]);
}
sort(var,var+10,cmp);
for(int i=0;i<10;i++)
{
printf("%d ",var[i]);
}
return 0;
}
/*冒泡排序
for(j=0;j<=9;j++)
for(i=0;i<9-j;i++)
if(a[i]
40.从键盘输入一个3*4的矩阵,要求:输出此矩阵,并求所有元素中的最大值。
输入:15 38 24 75
12 60 80 85
95 8 7 2
输出:15 38 24 75
12 60 80 85
95 8 7 2
最大值:95
#include
int main()
{
int var[10][10];
int max=-100000;
for(int i=0;i<3;i++)
{
for(int j=0;j<4;j++)
{
scanf("%d",&var[i][j]);
if(var[i][j]>max)
max=var[i][j];
}
}
for(int i=0;i<3;i++)
{
for(int j=0;j<4;j++)
{
if(j==3)
printf("%d\n",var[i][j]);
else
printf("%d ",var[i][j]);
}
}
printf("%d\n",max);
return 0;
}
41 从键盘输入一个3*3的矩阵,要求:输出此矩阵对应的转置矩阵(所谓转置,指的是对任意元素Pi,j和对应的Pj,i交换)。
输入:15 38 24
12 60 80
95 8 7
输出:15 12 95
38 60 8
24 80 7
#include
int main()
{
int a[10][10];
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
scanf("%d",&a[i][j]);
}
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
if(j==2) printf("%d\n",a[j][i]);
else printf("%d ",a[j][i]);
}
}
return 0;
}
42.100匹马驼100担货,大马一匹驼3担,中马一匹驼2担,小马两匹驼1担。试编写程序计算大、中、小马的数目。(要求大、中、小马必须参与驼货)
输出:2 30 68
5 25 70
8 20 72
11 30 68
14 10 76
17 5 78
#include
int main()
{
int a,b,c;
for(a=1;a<33;a++)
{
for(b=1;b<50;b++)
{
for(c=2;c<100;c=c+2)
{
if(a*3+b*2+c/2==100&&a+b+c==100)
{
printf("%d %d %d\n",a,b,c);
}
}
}
}
return 0;
}
43.编写程序,输出用一元人民币兑换成1分、2分和5分硬币共有多少种兑换方法。(只计算兑换方法总数,且兑换时,可不同时含有1分,2分或5分的硬币)
输出:541
#include
int main()
{
int cnt=0;
for(int i=0;i<=100;i++)
{
for(int j=0;j<=50;j++)
{
for(int k=0;k<=20;k++)
{
if(i+j*2+k*5==100)
cnt++;
}
}
}
printf("%d\n",cnt);
return 0;
}
44.设N是一个四位整数,它的9倍恰好是其反序数(例如:1234的反序数是4321),求N的值。
输出:1089
#include
#include
int main()
{
for(int i=1000;i<=9999;i++)
{
int b=i*9,a1[10],a2[10];
int t1=i,t2=b,j=0,k=0;
while(t2)//9081
{
a2[k]=t2%10;
t2=t2/10;
k++;//1089
}
int f=0;
if(k==5) f=1;
else
{
int s=a2[0]*1000+a2[1]*100+a2[2]*10+a2[3];
if(s!=i)
f=1;
}
if(f==0)
printf("%d\n",i);
}
return 0;
}
44.1编写一个递归函数来组合Cm的值,已知组合数的计算公式如下:
并在主函数中进行测试。
输入:m=4, n=2
输出:6
#include
int zuhe(int m,int n)
{
if(n>m-n) return zuhe(m,m-n);
else if(n>1) return zuhe(m-1,n-1)+zuhe(m-1,n);
else if(n==0) return 1;
else return m;
}
int main()
{
int m,n;
scanf("%d%d",&m,&n);
int s=zuhe(m,n);
printf("%d\n",s);
return 0;
}
45.已知Fibonacci数列:1,1,2,3,5,8,13,……。观察数列,可发现这样的规则:从第3项开始,每一项都是其前面两项之和。编程,求Fibonacci数列第N项的值。(其中N的值由键盘输入)
输入: 2 输出: 1
输入: 8 输出: 21
输入: 24 输出: 46368
输入: 38 输出: 39088169
#include
int fibonaci(int n)
{
if(n==1||n==2) return 1;
else return fibonaci(n-1)+fibonaci(n-2);
}
int main()
{
int n;
scanf("%d",&n);
int s=fibonaci(n);
printf("%d\n",s);
return 0;
}
46.任意输入一个偶数n(n>4),请将它分解为两个素数之和。
输入:88
输出:5+83或17+71或29+59或41+47
#include
int isprime(int n)
{
int f=0;
for(int i=2;i
47.编写程序,以字符形式输入一个十六进制数,将其变换为一个十进制整数后输出。(要求:十六进制允许的字符是从0~9和a~f或A~F)
输入:ffff或FFFF
输出:65535
#include
#include
int main()
{
char a[100];
gets(a);
int len=strlen(a);
int sum=0,f=1;
for(int i=len-1;i>=0;i--)
{
if(a[i]>=48&&a[i]<=57)
{
sum=sum+(a[i]-0)*f;
}
else if(a[i]>=65&&a[i]<=70)
{
sum=sum+(a[i]-0-55)*f;
}
else if(a[i]>=97&&a[i]<=102)
{
sum=sum+(a[i]-0-87)*f;
}
f=f*16;
}
printf("%d\n",sum);
return 0;
}
48.一辆卡车违反交通规则,撞人逃跑。现场三人目击事件,但都没记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的;丙是位数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索求出车号。
输出:7744
#include
#include
int main()
{
for(int i=1100;i<=9999;i++)
{
int t=i,var[4],j=0;
while(t)
{
var[j++]=t%10;
t=t/10;
}
int sq=sqrt(i);
if(var[0]==var[1]&&var[2]==var[3]&&sq*sq==i)
{
printf("%d\n",i);
}
}
return 0;
}
49.编程,计算输出Fibonacci数列的前n项。其中,n的值由键盘输入。(Fibonacci数列为:1,1,2,3,5,8,13,……)
输入:20
输出:1 1 2 3 5 8 13 21 34 55 89 144 377 610 987 1597 2584 4181 6765
#include
int fibonaic(int n)
{
if(n==1||n==2) return 1;
else return fibonaic(n-1)+fibonaic(n-2);
}
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
int f=fibonaic(i);
printf("%d ",f);
}
return 0;
}
50.编程,由键盘输入年、月、日,计算并输出该日是该年的第几天。
输入:2008-6-29
输出:181
#include
#include
int main()
{
int year,month,day;
char a[20];
gets(a);
int len=strlen(a),t=0,f=1;
for(int i=0;i