历年考研机试答案哈尔滨工业大学.docx
《历年考研机试答案哈尔滨工业大学.docx》由会员分享,可在线阅读,更多相关《历年考研机试答案哈尔滨工业大学.docx(21页珍藏版)》请在冰豆网上搜索。
历年考研机试答案哈尔滨工业大学
哈工大计算机院研究生入学考试机试编程题(09-12)
哈工大计算机专业机试编程题(2009)
题目描述:
用小于等于n元去买100只鸡,大鸡5元/只,小鸡3元/只,还有1/3元每只的一种小鸡,分别记为x只,y只,z只。
编程求解x,y,z所有可能解。
输入:
测试数据有多组,输入n。
输出:
对于每组输入,请输出x,y,z所有可行解,按照x,y,z依次增大的顺序输出。
样例输入:
40
样例输出:
x=0,y=0,z=100
x=0,y=1,z=99
x=0,y=2,z=98
x=1,y=0,z=99
参考答案:
#include
intmain()
{
intx,y,z;
floatn;
while(scanf("%f",&n)!
=EOF)
for(x=0;5*x<=n;x++)
for(y=0;3*y<=n;y++)
z=100-x-y;
if((5*x+3*y+(float)z/3)<=n)
printf("x=%d,y=%d,z=%d\n",x,y,z);
}
return0;
输入10个数,要求输出其中的最大值。
测试数据有多组,每组10个数。
对于每组输入,请输出其最大值(有回车)。
10222315265798596321
max=152
inti,a[10],maxn;
while(scanf("%d",&a[0])!
maxn=a[0];
for(i=1;i<10;i++)
scanf("%d",&a[i]);
if(maxn { maxn=a[i]; } } printf("max=%d\n",maxn); } return0;}题目描述:给定一个数n,要求判断其是否为素数(0,1,负数都是非素数)。输入:测试数据有多组,每组输入一个数n。输出:对于每组输入,若是素数则输出yes,否则输入no。样例输入:13样例输出:yes参考答案:#include#includeintjudge(intn){inti;if(n<=1)return0;else{for(i=2;i<=sqrt(n);i++){if(n%i==0)return0;}return1;}}intmain(){intn;while(scanf("%d",&n)!=EOF){if(judge(n))printf("yes\n");elseprintf("no\n");}return0;}题目描述:给定三角形的三条边,a,b,c。判断该三角形类型。输入:测试数据有多组,每组输入三角形的三条边。输出:对于每组输入,输出直角三角形、锐角三角形、或是钝角三角形。样例输入:345样例输出:直角三角形参考答案://判断直角、锐角、钝角三角形#include#includevoidexchange(int*a,int*b){inttemp=*a;*a=*b;*b=temp;}intmain(){inta,b,c;intx;while(scanf("%d%d%d",&a,&b,&c)!=EOF){if(aexchange(&a,&b);if(aexchange(&a,&c);x=a*a-b*b-c*c;if(x==0)printf("直角三角形\n");if(x<0)printf("锐角三角形\n");if(x>0)printf("钝角三角形\n");}return0;}题目描述:输入字符串s和字符c,要求去掉s中所有的c字符,并输出结果。输入:测试数据有多组,每组输入字符串s和字符c。输出:对于每组输入,输出去除c字符后的结果。样例输入:healloa样例输出:hello参考答案:#include#includeintmain(){chara[100],b;inti,j,l;while(scanf("%s%c",a,&b)!=EOF){j=0;l=strlen(a);for(i=0;i{if(a[i]!=b){a[j++]=a[i];}}a[j]=a[l];printf("%s\n",a);}return0;}哈工大计算机专业机试编程题(2010)题目描述:求1-n内的完数,所谓的完数是这样的数,它的所有因子相加等于它自身,比如6有3个因子1,2,3,1+2+3=6,那么6是完数。即完数是等于其所有因子相加和的数。输入:测试数据有多组,输入n,n数据范围不大。输出:对于每组输入,请输出1-n内所有的完数。如有案例输出有多个数字,用空格隔开,输出最后不要有多余的空格。样例输入:6样例输出:6参考答案:#includeintmain(){intn,i,j,k,a,b[20]={0};//b[20]存放小于n的完全数while(scanf("%d",&n)!=EOF)//输入一个n{k=0;//b[k]表示第k+1个完全数,每次输入n后,k清零for(i=2;i<=n;i++)//2~n,寻找完全数{a=0;//a存放所有约数的和for(j=1;j{if(i%j==0){a+=j;//判断是否为约数}}if(a==i)//判断约数和与原数是否相等{b[k++]=a;}}for(i=0;i<(k-1);i++)//输出前k-1个完全数{printf("%d",b[i]);}printf("%d\n",b[i]);//输出第k个}return0;}题目描述:给定a和n,计算a+aa+aaa+a...a(n个a)的和。输入:测试数据有多组,输入a,n(1<=a<=9,1<=n<=100)。输出:对于每组输入,请输出结果。样例输入:110样例输出:1234567900参考答案:/*----------------------------------------------------------------------1.本题是一大数求和问题,无法用已知类型表示,故采用数组进行存储。2.可用数组表示成为一个栈,结果取值从低位到高位依次入栈,然后依次出栈。即s[0]表示为结果中的个位数,s[1]为十位数,依次类推。3.s[i]的值可由((n-i)*a+temp)%10获得,其中temp为后一位向前的进位,temp可由((n-i)*a+temp)/10表示。temp初始值为0.4.注意结果如果为0时的情况,例输入02输出应为0而不应是00;-----------------------------------------------------------------------*/#includeintmain(){inti,a,n,b[50],temp=0,counter;while(scanf("%d%d",&a,&n)!=EOF){counter=0;temp=0;for(i=0;i{b[i]=((n-i)*a+temp)%10;temp=((n-i)*a+temp)/10;}b[i]=temp;for(i=n;i>=0;i--){if(b[i]==0){counter++;}}if(counter==(n+1))//结果全零,不能输出n个零printf("%d",b[0]);else//如果不全零,只能是n位或n+1位{if(b[n]!=0)printf("%d",b[n]);for(i=n-1;i>=0;i--){printf("%d",b[i]);}}printf("\n");}return0;}题目描述:输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。输入:测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。输出:对于每组输入,请输出结果。样例输入:2130样例输出:-1/*----------------------------------------------------------------------1.顺序查找问题;2.初始化下标为j=-1,顺序查找数组,若找到某个下标为i的数等于x,则j=i,查找完毕输出j,若查找过程中j未改变,输出结果就为-1;-----------------------------------------------------------------------*/#includeintmain(){inti,n,b[200],j,x;while(scanf("%d",&n)!=EOF){j=-1;for(i=0;i{scanf("%d",&b[i]);}scanf("%d",&x);for(i=0;i{if(x==b[i]){j=i;}}printf("%d\n",j);}return0;}题目描述:输入一个数n,然后输入n个数值各不相同,调换数组中最大和最小的两个数,然后输出。输入:测试数据有多组,输入n(1<=n<=20),接着输入n个数。输出:对于每组输入,输出交换后的结果。样例输入:213样例输出:31参考答案:/*----------------------------------------------------------------------1.顺序查找问题;2.初始化mini=maxi=1,maxn=minn=a[0],顺序查找数组,若找到某个下标为i的数大于maxn,则maxi=i,maxn=a[i],若找到某个下标为i的数小于minn,则mini=i,minn=a[i],查找完毕交换a[maxi],a[mini],顺序输出数组。-----------------------------------------------------------------------*/#includeintmain(){inti,n,a[50],maxi,mini,temp;while(scanf("%d",&n)!=EOF){maxi=mini=0;scanf("%d",&a[0]);for(i=1;i{scanf("%d",&a[i]);if(a[i]>a[maxi]){maxi=i;}if(a[i]{mini=i;}}temp=a[maxi];a[maxi]=a[mini];a[mini]=temp;for(i=0;i{printf("%d",a[i]);}printf("%d\n",a[i]);}return0;}题目描述:输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串。输入:测试数据有多组,输入字符串。输出:对于每组输入,输出处理后的结果。样例输入:bacd样例输出:abcd参考答案:/*----------------------------------------------------------------------1.统计a~z个数,存入c[26]中;2.根据c[i],打印c[i]个ASCII码为97+i的字符;-----------------------------------------------------------------------*/#include#includeintmain(){inti,j,k,c[26]={0};chara[202];while(scanf("%s",a)!=EOF){j=strlen(a);for(i=0;i{k=a[i];c[k-97]++;}for(i=0;i<26;i++){for(j=0;j{k=97+i;printf("%c",k);}}for(i=0;i<26;i++){c[i]=0;}printf("\n");}return0;}哈尔滨工业大学复试编程试题(2011)题目描述:输入一个字符串,长度小于等于200,然后将数组逆置输出。输入:测试数据有多组,每组输入一个字符串。输出:对于每组输入,请输出逆置后的结果。样例输入:hdssg样例输出:Gssdh参考答案:#include#includeintmain(){inti,j,l;chara[200],b[200];while(scanf("%s",a)!=EOF){l=strlen(a);for(i=0,j=l-1;i{b[i]=a[j];}b[i]=0;puts(b);}return0;}题目描述:输入两个正整数,求其最大公约数。输入:测试数据有多组,每组输入两个正整数。输出:对于每组输入,请输出其最大公约数。样例输入:4914样例输出:7参考答案:#includeintmain(){unsignedinta,b;while(scanf("%d%d",&a,&b)!=EOF){while(a!=b){if(a>b)a=a-b;elseb=b-a;}printf("%d\n",a);}return0;}题目描述:输入20个数,每个数都在1-10之间,求1-10中的众数(众数就是出现次数最多的数,如果存在一样多次数的众数,则输出权值较小的那一个)。输入:测试数据有多组,每组输入20个1-10之间的数。输出:对于每组输入,请输出1-10中的众数。样例输入:51510353486836510710262样例输出:5参考答案:#includeintmain(){inta[20],b[11];inti,c;while(scanf("%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5]&a[6],&a[7],&a[8],&a[9],&a[10],&a[11],&a[12],&a[13],&a[14],&a[15],&a[16],&a[17]&a[18],&a[19])!=EOF){c=1;for(i=1;i<11;i++)//数组b[i]记录i的出现次数,初始化为0,b[0]未用b[i]=0;for(i=0;i<20;i++)//统计各个数(1~10)的个数{b[a[i]]+=1;}for(i=1;i<11;i++)//求出现次数最多且最小的那个数{if(b[c]c=i;}printf("%d\n",c);}return0;}哈尔滨工业大学复试编程试题(2012)题目描述:一个百万富翁遇到一个陌生人,陌生人找他谈了一个换钱的计划。该计划如下:我每天给你10万元,你第一天给我1分钱,第二天2分钱,第三天4分钱……这样交换30天后,百万富翁交出了多少钱?陌生人交出了多少钱?(注意一个是万元,一个是分)输入:该题没有输入输出:输出两个整数,分别代表百万富翁交出的钱和陌生人交出的钱,富翁交出的钱以万元作单位,陌生人交出的钱以分作单位。参考答案:#include#includevoidmain(){intsum_a=0,per_day_1=10;//富人总共得到的moneylongsum_b=0,per_day_2=1;inti;for(i=0;i<30;i++){sum_a+=per_day_1;sum_b+=per_day_2;per_day_2*=2;}printf("%d%ld\n",sum_a,sum_b);}题目描述:不用strcat函数,自己编写一个字符串链接函数MyStrcat(chardstStr[],charsrcStr[])输入:两个字符串,字符串由小写字母组成。输出:链接后的字符串样例输入:helloworldgoodmorning样例输出:helloworldgoodmorning参考答案:#include#includevoidMyStrCat(chardstStr[],charsrcStr[]){inti,j;for(i=0;dstStr[i]!=0;i++);for(j=0;srcStr[j]!=0;j++){dstStr[i++]=srcStr[j];}dstStr[i]=0;}intmain(){chara[25],b[25];while(scanf("%s",a)!=EOF&&scanf("%s",b)!=EOF){MyStrCat(a,b);printf("%s\n",a);}return0;}题目描述:计算两个矩阵的乘积,第一个是2*3,第二个是3*2输入:输入为两个矩阵,其中一个为2*3的矩阵,另一个为3*2的矩阵输出:一个2*2的矩阵(每一个数字后都跟一个空格)样例输入:12334567891011样例输出:5258100112参考答案:#includeintmain(){inta1,b1,c1;intd1,e1,f1;inta2,b2;intc2,d2;inte2,f2;inta,b;intc,d;while(scanf("%d%d%d%d%d%d",&a1,&b1,&c1,&d1,&e1,&f1)!=EOF&&scanf("%d%d%d%d%d%d",&a2,&b2,&c2,&d2,&e2,&f2)!=EOF){a=a1*a2+b1*c2+c1*e2;b=a1*b2+b1*d2+c1*f2;c=d1*a2+e1*c2+f1*e2;d=d1*b2+e1*d2+f1*f2;printf("%d%d\n%d%d\n",a,b,c,d);}return0;}
maxn=a[i];
printf("max=%d\n",maxn);
给定一个数n,要求判断其是否为素数(0,1,负数都是非素数)。
测试数据有多组,每组输入一个数n。
对于每组输入,若是素数则输出yes,否则输入no。
13
yes
intjudge(intn)
inti;
if(n<=1)
else
for(i=2;i<=sqrt(n);i++)
if(n%i==0)
return1;
intn;
while(scanf("%d",&n)!
if(judge(n))
printf("yes\n");
printf("no\n");
给定三角形的三条边,a,b,c。
判断该三角形类型。
测试数据有多组,每组输入三角形的三条边。
对于每组输入,输出直角三角形、锐角三角形、或是钝角三角形。
345
直角三角形
参考答案:
//判断直角、锐角、钝角三角形
voidexchange(int*a,int*b)
inttemp=*a;
*a=*b;
*b=temp;
inta,b,c;
intx;
while(scanf("%d%d%d",&a,&b,&c)!
if(a
exchange(&a,&b);
if(aexchange(&a,&c);x=a*a-b*b-c*c;if(x==0)printf("直角三角形\n");if(x<0)printf("锐角三角形\n");if(x>0)printf("钝角三角形\n");}return0;}题目描述:输入字符串s和字符c,要求去掉s中所有的c字符,并输出结果。输入:测试数据有多组,每组输入字符串s和字符c。输出:对于每组输入,输出去除c字符后的结果。样例输入:healloa样例输出:hello参考答案:#include#includeintmain(){chara[100],b;inti,j,l;while(scanf("%s%c",a,&b)!=EOF){j=0;l=strlen(a);for(i=0;i{if(a[i]!=b){a[j++]=a[i];}}a[j]=a[l];printf("%s\n",a);}return0;}哈工大计算机专业机试编程题(2010)题目描述:求1-n内的完数,所谓的完数是这样的数,它的所有因子相加等于它自身,比如6有3个因子1,2,3,1+2+3=6,那么6是完数。即完数是等于其所有因子相加和的数。输入:测试数据有多组,输入n,n数据范围不大。输出:对于每组输入,请输出1-n内所有的完数。如有案例输出有多个数字,用空格隔开,输出最后不要有多余的空格。样例输入:6样例输出:6参考答案:#includeintmain(){intn,i,j,k,a,b[20]={0};//b[20]存放小于n的完全数while(scanf("%d",&n)!=EOF)//输入一个n{k=0;//b[k]表示第k+1个完全数,每次输入n后,k清零for(i=2;i<=n;i++)//2~n,寻找完全数{a=0;//a存放所有约数的和for(j=1;j{if(i%j==0){a+=j;//判断是否为约数}}if(a==i)//判断约数和与原数是否相等{b[k++]=a;}}for(i=0;i<(k-1);i++)//输出前k-1个完全数{printf("%d",b[i]);}printf("%d\n",b[i]);//输出第k个}return0;}题目描述:给定a和n,计算a+aa+aaa+a...a(n个a)的和。输入:测试数据有多组,输入a,n(1<=a<=9,1<=n<=100)。输出:对于每组输入,请输出结果。样例输入:110样例输出:1234567900参考答案:/*----------------------------------------------------------------------1.本题是一大数求和问题,无法用已知类型表示,故采用数组进行存储。2.可用数组表示成为一个栈,结果取值从低位到高位依次入栈,然后依次出栈。即s[0]表示为结果中的个位数,s[1]为十位数,依次类推。3.s[i]的值可由((n-i)*a+temp)%10获得,其中temp为后一位向前的进位,temp可由((n-i)*a+temp)/10表示。temp初始值为0.4.注意结果如果为0时的情况,例输入02输出应为0而不应是00;-----------------------------------------------------------------------*/#includeintmain(){inti,a,n,b[50],temp=0,counter;while(scanf("%d%d",&a,&n)!=EOF){counter=0;temp=0;for(i=0;i{b[i]=((n-i)*a+temp)%10;temp=((n-i)*a+temp)/10;}b[i]=temp;for(i=n;i>=0;i--){if(b[i]==0){counter++;}}if(counter==(n+1))//结果全零,不能输出n个零printf("%d",b[0]);else//如果不全零,只能是n位或n+1位{if(b[n]!=0)printf("%d",b[n]);for(i=n-1;i>=0;i--){printf("%d",b[i]);}}printf("\n");}return0;}题目描述:输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。输入:测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。输出:对于每组输入,请输出结果。样例输入:2130样例输出:-1/*----------------------------------------------------------------------1.顺序查找问题;2.初始化下标为j=-1,顺序查找数组,若找到某个下标为i的数等于x,则j=i,查找完毕输出j,若查找过程中j未改变,输出结果就为-1;-----------------------------------------------------------------------*/#includeintmain(){inti,n,b[200],j,x;while(scanf("%d",&n)!=EOF){j=-1;for(i=0;i{scanf("%d",&b[i]);}scanf("%d",&x);for(i=0;i{if(x==b[i]){j=i;}}printf("%d\n",j);}return0;}题目描述:输入一个数n,然后输入n个数值各不相同,调换数组中最大和最小的两个数,然后输出。输入:测试数据有多组,输入n(1<=n<=20),接着输入n个数。输出:对于每组输入,输出交换后的结果。样例输入:213样例输出:31参考答案:/*----------------------------------------------------------------------1.顺序查找问题;2.初始化mini=maxi=1,maxn=minn=a[0],顺序查找数组,若找到某个下标为i的数大于maxn,则maxi=i,maxn=a[i],若找到某个下标为i的数小于minn,则mini=i,minn=a[i],查找完毕交换a[maxi],a[mini],顺序输出数组。-----------------------------------------------------------------------*/#includeintmain(){inti,n,a[50],maxi,mini,temp;while(scanf("%d",&n)!=EOF){maxi=mini=0;scanf("%d",&a[0]);for(i=1;i{scanf("%d",&a[i]);if(a[i]>a[maxi]){maxi=i;}if(a[i]{mini=i;}}temp=a[maxi];a[maxi]=a[mini];a[mini]=temp;for(i=0;i{printf("%d",a[i]);}printf("%d\n",a[i]);}return0;}题目描述:输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串。输入:测试数据有多组,输入字符串。输出:对于每组输入,输出处理后的结果。样例输入:bacd样例输出:abcd参考答案:/*----------------------------------------------------------------------1.统计a~z个数,存入c[26]中;2.根据c[i],打印c[i]个ASCII码为97+i的字符;-----------------------------------------------------------------------*/#include#includeintmain(){inti,j,k,c[26]={0};chara[202];while(scanf("%s",a)!=EOF){j=strlen(a);for(i=0;i{k=a[i];c[k-97]++;}for(i=0;i<26;i++){for(j=0;j{k=97+i;printf("%c",k);}}for(i=0;i<26;i++){c[i]=0;}printf("\n");}return0;}哈尔滨工业大学复试编程试题(2011)题目描述:输入一个字符串,长度小于等于200,然后将数组逆置输出。输入:测试数据有多组,每组输入一个字符串。输出:对于每组输入,请输出逆置后的结果。样例输入:hdssg样例输出:Gssdh参考答案:#include#includeintmain(){inti,j,l;chara[200],b[200];while(scanf("%s",a)!=EOF){l=strlen(a);for(i=0,j=l-1;i{b[i]=a[j];}b[i]=0;puts(b);}return0;}题目描述:输入两个正整数,求其最大公约数。输入:测试数据有多组,每组输入两个正整数。输出:对于每组输入,请输出其最大公约数。样例输入:4914样例输出:7参考答案:#includeintmain(){unsignedinta,b;while(scanf("%d%d",&a,&b)!=EOF){while(a!=b){if(a>b)a=a-b;elseb=b-a;}printf("%d\n",a);}return0;}题目描述:输入20个数,每个数都在1-10之间,求1-10中的众数(众数就是出现次数最多的数,如果存在一样多次数的众数,则输出权值较小的那一个)。输入:测试数据有多组,每组输入20个1-10之间的数。输出:对于每组输入,请输出1-10中的众数。样例输入:51510353486836510710262样例输出:5参考答案:#includeintmain(){inta[20],b[11];inti,c;while(scanf("%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5]&a[6],&a[7],&a[8],&a[9],&a[10],&a[11],&a[12],&a[13],&a[14],&a[15],&a[16],&a[17]&a[18],&a[19])!=EOF){c=1;for(i=1;i<11;i++)//数组b[i]记录i的出现次数,初始化为0,b[0]未用b[i]=0;for(i=0;i<20;i++)//统计各个数(1~10)的个数{b[a[i]]+=1;}for(i=1;i<11;i++)//求出现次数最多且最小的那个数{if(b[c]c=i;}printf("%d\n",c);}return0;}哈尔滨工业大学复试编程试题(2012)题目描述:一个百万富翁遇到一个陌生人,陌生人找他谈了一个换钱的计划。该计划如下:我每天给你10万元,你第一天给我1分钱,第二天2分钱,第三天4分钱……这样交换30天后,百万富翁交出了多少钱?陌生人交出了多少钱?(注意一个是万元,一个是分)输入:该题没有输入输出:输出两个整数,分别代表百万富翁交出的钱和陌生人交出的钱,富翁交出的钱以万元作单位,陌生人交出的钱以分作单位。参考答案:#include#includevoidmain(){intsum_a=0,per_day_1=10;//富人总共得到的moneylongsum_b=0,per_day_2=1;inti;for(i=0;i<30;i++){sum_a+=per_day_1;sum_b+=per_day_2;per_day_2*=2;}printf("%d%ld\n",sum_a,sum_b);}题目描述:不用strcat函数,自己编写一个字符串链接函数MyStrcat(chardstStr[],charsrcStr[])输入:两个字符串,字符串由小写字母组成。输出:链接后的字符串样例输入:helloworldgoodmorning样例输出:helloworldgoodmorning参考答案:#include#includevoidMyStrCat(chardstStr[],charsrcStr[]){inti,j;for(i=0;dstStr[i]!=0;i++);for(j=0;srcStr[j]!=0;j++){dstStr[i++]=srcStr[j];}dstStr[i]=0;}intmain(){chara[25],b[25];while(scanf("%s",a)!=EOF&&scanf("%s",b)!=EOF){MyStrCat(a,b);printf("%s\n",a);}return0;}题目描述:计算两个矩阵的乘积,第一个是2*3,第二个是3*2输入:输入为两个矩阵,其中一个为2*3的矩阵,另一个为3*2的矩阵输出:一个2*2的矩阵(每一个数字后都跟一个空格)样例输入:12334567891011样例输出:5258100112参考答案:#includeintmain(){inta1,b1,c1;intd1,e1,f1;inta2,b2;intc2,d2;inte2,f2;inta,b;intc,d;while(scanf("%d%d%d%d%d%d",&a1,&b1,&c1,&d1,&e1,&f1)!=EOF&&scanf("%d%d%d%d%d%d",&a2,&b2,&c2,&d2,&e2,&f2)!=EOF){a=a1*a2+b1*c2+c1*e2;b=a1*b2+b1*d2+c1*f2;c=d1*a2+e1*c2+f1*e2;d=d1*b2+e1*d2+f1*f2;printf("%d%d\n%d%d\n",a,b,c,d);}return0;}
exchange(&a,&c);
x=a*a-b*b-c*c;
if(x==0)
printf("直角三角形\n");
if(x<0)
printf("锐角三角形\n");
if(x>0)
printf("钝角三角形\n");
输入字符串s和字符c,要求去掉s中所有的c字符,并输出结果。
测试数据有多组,每组输入字符串s和字符c。
对于每组输入,输出去除c字符后的结果。
heallo
a
hello
chara[100],b;
inti,j,l;
while(scanf("%s%c",a,&b)!
j=0;
l=strlen(a);
for(i=0;i{if(a[i]!=b){a[j++]=a[i];}}a[j]=a[l];printf("%s\n",a);}return0;}哈工大计算机专业机试编程题(2010)题目描述:求1-n内的完数,所谓的完数是这样的数,它的所有因子相加等于它自身,比如6有3个因子1,2,3,1+2+3=6,那么6是完数。即完数是等于其所有因子相加和的数。输入:测试数据有多组,输入n,n数据范围不大。输出:对于每组输入,请输出1-n内所有的完数。如有案例输出有多个数字,用空格隔开,输出最后不要有多余的空格。样例输入:6样例输出:6参考答案:#includeintmain(){intn,i,j,k,a,b[20]={0};//b[20]存放小于n的完全数while(scanf("%d",&n)!=EOF)//输入一个n{k=0;//b[k]表示第k+1个完全数,每次输入n后,k清零for(i=2;i<=n;i++)//2~n,寻找完全数{a=0;//a存放所有约数的和for(j=1;j{if(i%j==0){a+=j;//判断是否为约数}}if(a==i)//判断约数和与原数是否相等{b[k++]=a;}}for(i=0;i<(k-1);i++)//输出前k-1个完全数{printf("%d",b[i]);}printf("%d\n",b[i]);//输出第k个}return0;}题目描述:给定a和n,计算a+aa+aaa+a...a(n个a)的和。输入:测试数据有多组,输入a,n(1<=a<=9,1<=n<=100)。输出:对于每组输入,请输出结果。样例输入:110样例输出:1234567900参考答案:/*----------------------------------------------------------------------1.本题是一大数求和问题,无法用已知类型表示,故采用数组进行存储。2.可用数组表示成为一个栈,结果取值从低位到高位依次入栈,然后依次出栈。即s[0]表示为结果中的个位数,s[1]为十位数,依次类推。3.s[i]的值可由((n-i)*a+temp)%10获得,其中temp为后一位向前的进位,temp可由((n-i)*a+temp)/10表示。temp初始值为0.4.注意结果如果为0时的情况,例输入02输出应为0而不应是00;-----------------------------------------------------------------------*/#includeintmain(){inti,a,n,b[50],temp=0,counter;while(scanf("%d%d",&a,&n)!=EOF){counter=0;temp=0;for(i=0;i{b[i]=((n-i)*a+temp)%10;temp=((n-i)*a+temp)/10;}b[i]=temp;for(i=n;i>=0;i--){if(b[i]==0){counter++;}}if(counter==(n+1))//结果全零,不能输出n个零printf("%d",b[0]);else//如果不全零,只能是n位或n+1位{if(b[n]!=0)printf("%d",b[n]);for(i=n-1;i>=0;i--){printf("%d",b[i]);}}printf("\n");}return0;}题目描述:输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。输入:测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。输出:对于每组输入,请输出结果。样例输入:2130样例输出:-1/*----------------------------------------------------------------------1.顺序查找问题;2.初始化下标为j=-1,顺序查找数组,若找到某个下标为i的数等于x,则j=i,查找完毕输出j,若查找过程中j未改变,输出结果就为-1;-----------------------------------------------------------------------*/#includeintmain(){inti,n,b[200],j,x;while(scanf("%d",&n)!=EOF){j=-1;for(i=0;i{scanf("%d",&b[i]);}scanf("%d",&x);for(i=0;i{if(x==b[i]){j=i;}}printf("%d\n",j);}return0;}题目描述:输入一个数n,然后输入n个数值各不相同,调换数组中最大和最小的两个数,然后输出。输入:测试数据有多组,输入n(1<=n<=20),接着输入n个数。输出:对于每组输入,输出交换后的结果。样例输入:213样例输出:31参考答案:/*----------------------------------------------------------------------1.顺序查找问题;2.初始化mini=maxi=1,maxn=minn=a[0],顺序查找数组,若找到某个下标为i的数大于maxn,则maxi=i,maxn=a[i],若找到某个下标为i的数小于minn,则mini=i,minn=a[i],查找完毕交换a[maxi],a[mini],顺序输出数组。-----------------------------------------------------------------------*/#includeintmain(){inti,n,a[50],maxi,mini,temp;while(scanf("%d",&n)!=EOF){maxi=mini=0;scanf("%d",&a[0]);for(i=1;i{scanf("%d",&a[i]);if(a[i]>a[maxi]){maxi=i;}if(a[i]{mini=i;}}temp=a[maxi];a[maxi]=a[mini];a[mini]=temp;for(i=0;i{printf("%d",a[i]);}printf("%d\n",a[i]);}return0;}题目描述:输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串。输入:测试数据有多组,输入字符串。输出:对于每组输入,输出处理后的结果。样例输入:bacd样例输出:abcd参考答案:/*----------------------------------------------------------------------1.统计a~z个数,存入c[26]中;2.根据c[i],打印c[i]个ASCII码为97+i的字符;-----------------------------------------------------------------------*/#include#includeintmain(){inti,j,k,c[26]={0};chara[202];while(scanf("%s",a)!=EOF){j=strlen(a);for(i=0;i{k=a[i];c[k-97]++;}for(i=0;i<26;i++){for(j=0;j{k=97+i;printf("%c",k);}}for(i=0;i<26;i++){c[i]=0;}printf("\n");}return0;}哈尔滨工业大学复试编程试题(2011)题目描述:输入一个字符串,长度小于等于200,然后将数组逆置输出。输入:测试数据有多组,每组输入一个字符串。输出:对于每组输入,请输出逆置后的结果。样例输入:hdssg样例输出:Gssdh参考答案:#include#includeintmain(){inti,j,l;chara[200],b[200];while(scanf("%s",a)!=EOF){l=strlen(a);for(i=0,j=l-1;i{b[i]=a[j];}b[i]=0;puts(b);}return0;}题目描述:输入两个正整数,求其最大公约数。输入:测试数据有多组,每组输入两个正整数。输出:对于每组输入,请输出其最大公约数。样例输入:4914样例输出:7参考答案:#includeintmain(){unsignedinta,b;while(scanf("%d%d",&a,&b)!=EOF){while(a!=b){if(a>b)a=a-b;elseb=b-a;}printf("%d\n",a);}return0;}题目描述:输入20个数,每个数都在1-10之间,求1-10中的众数(众数就是出现次数最多的数,如果存在一样多次数的众数,则输出权值较小的那一个)。输入:测试数据有多组,每组输入20个1-10之间的数。输出:对于每组输入,请输出1-10中的众数。样例输入:51510353486836510710262样例输出:5参考答案:#includeintmain(){inta[20],b[11];inti,c;while(scanf("%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5]&a[6],&a[7],&a[8],&a[9],&a[10],&a[11],&a[12],&a[13],&a[14],&a[15],&a[16],&a[17]&a[18],&a[19])!=EOF){c=1;for(i=1;i<11;i++)//数组b[i]记录i的出现次数,初始化为0,b[0]未用b[i]=0;for(i=0;i<20;i++)//统计各个数(1~10)的个数{b[a[i]]+=1;}for(i=1;i<11;i++)//求出现次数最多且最小的那个数{if(b[c]c=i;}printf("%d\n",c);}return0;}哈尔滨工业大学复试编程试题(2012)题目描述:一个百万富翁遇到一个陌生人,陌生人找他谈了一个换钱的计划。该计划如下:我每天给你10万元,你第一天给我1分钱,第二天2分钱,第三天4分钱……这样交换30天后,百万富翁交出了多少钱?陌生人交出了多少钱?(注意一个是万元,一个是分)输入:该题没有输入输出:输出两个整数,分别代表百万富翁交出的钱和陌生人交出的钱,富翁交出的钱以万元作单位,陌生人交出的钱以分作单位。参考答案:#include#includevoidmain(){intsum_a=0,per_day_1=10;//富人总共得到的moneylongsum_b=0,per_day_2=1;inti;for(i=0;i<30;i++){sum_a+=per_day_1;sum_b+=per_day_2;per_day_2*=2;}printf("%d%ld\n",sum_a,sum_b);}题目描述:不用strcat函数,自己编写一个字符串链接函数MyStrcat(chardstStr[],charsrcStr[])输入:两个字符串,字符串由小写字母组成。输出:链接后的字符串样例输入:helloworldgoodmorning样例输出:helloworldgoodmorning参考答案:#include#includevoidMyStrCat(chardstStr[],charsrcStr[]){inti,j;for(i=0;dstStr[i]!=0;i++);for(j=0;srcStr[j]!=0;j++){dstStr[i++]=srcStr[j];}dstStr[i]=0;}intmain(){chara[25],b[25];while(scanf("%s",a)!=EOF&&scanf("%s",b)!=EOF){MyStrCat(a,b);printf("%s\n",a);}return0;}题目描述:计算两个矩阵的乘积,第一个是2*3,第二个是3*2输入:输入为两个矩阵,其中一个为2*3的矩阵,另一个为3*2的矩阵输出:一个2*2的矩阵(每一个数字后都跟一个空格)样例输入:12334567891011样例输出:5258100112参考答案:#includeintmain(){inta1,b1,c1;intd1,e1,f1;inta2,b2;intc2,d2;inte2,f2;inta,b;intc,d;while(scanf("%d%d%d%d%d%d",&a1,&b1,&c1,&d1,&e1,&f1)!=EOF&&scanf("%d%d%d%d%d%d",&a2,&b2,&c2,&d2,&e2,&f2)!=EOF){a=a1*a2+b1*c2+c1*e2;b=a1*b2+b1*d2+c1*f2;c=d1*a2+e1*c2+f1*e2;d=d1*b2+e1*d2+f1*f2;printf("%d%d\n%d%d\n",a,b,c,d);}return0;}
if(a[i]!
=b)
a[j++]=a[i];
a[j]=a[l];
printf("%s\n",a);
哈工大计算机专业机试编程题(2010)
求1-n内的完数,所谓的完数是这样的数,它的所有因子相加等于它自身,比如6有3个因子1,2,3,1+2+3=6,那么6是完数。
即完数是等于其所有因子相加和的数。
测试数据有多组,输入n,n数据范围不大。
对于每组输入,请输出1-n内所有的完数。
如有案例输出有多个数字,用空格隔开,输出最后不要有多余的空格。
6
intn,i,j,k,a,b[20]={0};//b[20]存放小于n的完全数
=EOF)//输入一个n
k=0;//b[k]表示第k+1个完全数,每次输入n后,k清零
for(i=2;i<=n;i++)//2~n,寻找完全数
a=0;//a存放所有约数的和
for(j=1;j
if(i%j==0)
a+=j;//判断是否为约数
if(a==i)//判断约数和与原数是否相等
b[k++]=a;
for(i=0;i<(k-1);i++)//输出前k-1个完全数
printf("%d",b[i]);
printf("%d\n",b[i]);//输出第k个
给定a和n,计算a+aa+aaa+a...a(n个a)的和。
测试数据有多组,输入a,n(1<=a<=9,1<=n<=100)。
对于每组输入,请输出结果。
110
1234567900
/*----------------------------------------------------------------------
1.本题是一大数求和问题,无法用已知类型表示,故采用数组进行存储。
2.可用数组表示成为一个栈,结果取值从低位到高位依次入栈,然后依次出栈。
即s[0]表示为结果中的个位数,s[1]为十位数,依次类推。
3.s[i]的值可由((n-i)*a+temp)%10获得,其中temp为后一位向前的进位,temp可由((n-i)*a+temp)/10表示。
temp初始值为0.
4.注意结果如果为0时的情况,例输入02输出应为0而不应是00;
-----------------------------------------------------------------------*/
inti,a,n,b[50],temp=0,counter;
while(scanf("%d%d",&a,&n)!
counter=0;
temp=0;
for(i=0;i{b[i]=((n-i)*a+temp)%10;temp=((n-i)*a+temp)/10;}b[i]=temp;for(i=n;i>=0;i--){if(b[i]==0){counter++;}}if(counter==(n+1))//结果全零,不能输出n个零printf("%d",b[0]);else//如果不全零,只能是n位或n+1位{if(b[n]!=0)printf("%d",b[n]);for(i=n-1;i>=0;i--){printf("%d",b[i]);}}printf("\n");}return0;}题目描述:输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。输入:测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。输出:对于每组输入,请输出结果。样例输入:2130样例输出:-1/*----------------------------------------------------------------------1.顺序查找问题;2.初始化下标为j=-1,顺序查找数组,若找到某个下标为i的数等于x,则j=i,查找完毕输出j,若查找过程中j未改变,输出结果就为-1;-----------------------------------------------------------------------*/#includeintmain(){inti,n,b[200],j,x;while(scanf("%d",&n)!=EOF){j=-1;for(i=0;i{scanf("%d",&b[i]);}scanf("%d",&x);for(i=0;i{if(x==b[i]){j=i;}}printf("%d\n",j);}return0;}题目描述:输入一个数n,然后输入n个数值各不相同,调换数组中最大和最小的两个数,然后输出。输入:测试数据有多组,输入n(1<=n<=20),接着输入n个数。输出:对于每组输入,输出交换后的结果。样例输入:213样例输出:31参考答案:/*----------------------------------------------------------------------1.顺序查找问题;2.初始化mini=maxi=1,maxn=minn=a[0],顺序查找数组,若找到某个下标为i的数大于maxn,则maxi=i,maxn=a[i],若找到某个下标为i的数小于minn,则mini=i,minn=a[i],查找完毕交换a[maxi],a[mini],顺序输出数组。-----------------------------------------------------------------------*/#includeintmain(){inti,n,a[50],maxi,mini,temp;while(scanf("%d",&n)!=EOF){maxi=mini=0;scanf("%d",&a[0]);for(i=1;i{scanf("%d",&a[i]);if(a[i]>a[maxi]){maxi=i;}if(a[i]{mini=i;}}temp=a[maxi];a[maxi]=a[mini];a[mini]=temp;for(i=0;i{printf("%d",a[i]);}printf("%d\n",a[i]);}return0;}题目描述:输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串。输入:测试数据有多组,输入字符串。输出:对于每组输入,输出处理后的结果。样例输入:bacd样例输出:abcd参考答案:/*----------------------------------------------------------------------1.统计a~z个数,存入c[26]中;2.根据c[i],打印c[i]个ASCII码为97+i的字符;-----------------------------------------------------------------------*/#include#includeintmain(){inti,j,k,c[26]={0};chara[202];while(scanf("%s",a)!=EOF){j=strlen(a);for(i=0;i{k=a[i];c[k-97]++;}for(i=0;i<26;i++){for(j=0;j{k=97+i;printf("%c",k);}}for(i=0;i<26;i++){c[i]=0;}printf("\n");}return0;}哈尔滨工业大学复试编程试题(2011)题目描述:输入一个字符串,长度小于等于200,然后将数组逆置输出。输入:测试数据有多组,每组输入一个字符串。输出:对于每组输入,请输出逆置后的结果。样例输入:hdssg样例输出:Gssdh参考答案:#include#includeintmain(){inti,j,l;chara[200],b[200];while(scanf("%s",a)!=EOF){l=strlen(a);for(i=0,j=l-1;i{b[i]=a[j];}b[i]=0;puts(b);}return0;}题目描述:输入两个正整数,求其最大公约数。输入:测试数据有多组,每组输入两个正整数。输出:对于每组输入,请输出其最大公约数。样例输入:4914样例输出:7参考答案:#includeintmain(){unsignedinta,b;while(scanf("%d%d",&a,&b)!=EOF){while(a!=b){if(a>b)a=a-b;elseb=b-a;}printf("%d\n",a);}return0;}题目描述:输入20个数,每个数都在1-10之间,求1-10中的众数(众数就是出现次数最多的数,如果存在一样多次数的众数,则输出权值较小的那一个)。输入:测试数据有多组,每组输入20个1-10之间的数。输出:对于每组输入,请输出1-10中的众数。样例输入:51510353486836510710262样例输出:5参考答案:#includeintmain(){inta[20],b[11];inti,c;while(scanf("%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5]&a[6],&a[7],&a[8],&a[9],&a[10],&a[11],&a[12],&a[13],&a[14],&a[15],&a[16],&a[17]&a[18],&a[19])!=EOF){c=1;for(i=1;i<11;i++)//数组b[i]记录i的出现次数,初始化为0,b[0]未用b[i]=0;for(i=0;i<20;i++)//统计各个数(1~10)的个数{b[a[i]]+=1;}for(i=1;i<11;i++)//求出现次数最多且最小的那个数{if(b[c]c=i;}printf("%d\n",c);}return0;}哈尔滨工业大学复试编程试题(2012)题目描述:一个百万富翁遇到一个陌生人,陌生人找他谈了一个换钱的计划。该计划如下:我每天给你10万元,你第一天给我1分钱,第二天2分钱,第三天4分钱……这样交换30天后,百万富翁交出了多少钱?陌生人交出了多少钱?(注意一个是万元,一个是分)输入:该题没有输入输出:输出两个整数,分别代表百万富翁交出的钱和陌生人交出的钱,富翁交出的钱以万元作单位,陌生人交出的钱以分作单位。参考答案:#include#includevoidmain(){intsum_a=0,per_day_1=10;//富人总共得到的moneylongsum_b=0,per_day_2=1;inti;for(i=0;i<30;i++){sum_a+=per_day_1;sum_b+=per_day_2;per_day_2*=2;}printf("%d%ld\n",sum_a,sum_b);}题目描述:不用strcat函数,自己编写一个字符串链接函数MyStrcat(chardstStr[],charsrcStr[])输入:两个字符串,字符串由小写字母组成。输出:链接后的字符串样例输入:helloworldgoodmorning样例输出:helloworldgoodmorning参考答案:#include#includevoidMyStrCat(chardstStr[],charsrcStr[]){inti,j;for(i=0;dstStr[i]!=0;i++);for(j=0;srcStr[j]!=0;j++){dstStr[i++]=srcStr[j];}dstStr[i]=0;}intmain(){chara[25],b[25];while(scanf("%s",a)!=EOF&&scanf("%s",b)!=EOF){MyStrCat(a,b);printf("%s\n",a);}return0;}题目描述:计算两个矩阵的乘积,第一个是2*3,第二个是3*2输入:输入为两个矩阵,其中一个为2*3的矩阵,另一个为3*2的矩阵输出:一个2*2的矩阵(每一个数字后都跟一个空格)样例输入:12334567891011样例输出:5258100112参考答案:#includeintmain(){inta1,b1,c1;intd1,e1,f1;inta2,b2;intc2,d2;inte2,f2;inta,b;intc,d;while(scanf("%d%d%d%d%d%d",&a1,&b1,&c1,&d1,&e1,&f1)!=EOF&&scanf("%d%d%d%d%d%d",&a2,&b2,&c2,&d2,&e2,&f2)!=EOF){a=a1*a2+b1*c2+c1*e2;b=a1*b2+b1*d2+c1*f2;c=d1*a2+e1*c2+f1*e2;d=d1*b2+e1*d2+f1*f2;printf("%d%d\n%d%d\n",a,b,c,d);}return0;}
b[i]=((n-i)*a+temp)%10;
temp=((n-i)*a+temp)/10;
b[i]=temp;
for(i=n;i>=0;i--)
if(b[i]==0)
counter++;
if(counter==(n+1))//结果全零,不能输出n个零
printf("%d",b[0]);
else//如果不全零,只能是n位或n+1位
if(b[n]!
=0)
printf("%d",b[n]);
for(i=n-1;i>=0;i--)
printf("\n");
输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。
测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。
2
0
-1
1.顺序查找问题;
2.初始化下标为j=-1,顺序查找数组,若找到某个下标为i的数等于x,则j=i,
查找完毕输出j,若查找过程中j未改变,输出结果就为-1;
inti,n,b[200],j,x;
j=-1;
for(i=0;i{scanf("%d",&b[i]);}scanf("%d",&x);for(i=0;i{if(x==b[i]){j=i;}}printf("%d\n",j);}return0;}题目描述:输入一个数n,然后输入n个数值各不相同,调换数组中最大和最小的两个数,然后输出。输入:测试数据有多组,输入n(1<=n<=20),接着输入n个数。输出:对于每组输入,输出交换后的结果。样例输入:213样例输出:31参考答案:/*----------------------------------------------------------------------1.顺序查找问题;2.初始化mini=maxi=1,maxn=minn=a[0],顺序查找数组,若找到某个下标为i的数大于maxn,则maxi=i,maxn=a[i],若找到某个下标为i的数小于minn,则mini=i,minn=a[i],查找完毕交换a[maxi],a[mini],顺序输出数组。-----------------------------------------------------------------------*/#includeintmain(){inti,n,a[50],maxi,mini,temp;while(scanf("%d",&n)!=EOF){maxi=mini=0;scanf("%d",&a[0]);for(i=1;i{scanf("%d",&a[i]);if(a[i]>a[maxi]){maxi=i;}if(a[i]{mini=i;}}temp=a[maxi];a[maxi]=a[mini];a[mini]=temp;for(i=0;i{printf("%d",a[i]);}printf("%d\n",a[i]);}return0;}题目描述:输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串。输入:测试数据有多组,输入字符串。输出:对于每组输入,输出处理后的结果。样例输入:bacd样例输出:abcd参考答案:/*----------------------------------------------------------------------1.统计a~z个数,存入c[26]中;2.根据c[i],打印c[i]个ASCII码为97+i的字符;-----------------------------------------------------------------------*/#include#includeintmain(){inti,j,k,c[26]={0};chara[202];while(scanf("%s",a)!=EOF){j=strlen(a);for(i=0;i{k=a[i];c[k-97]++;}for(i=0;i<26;i++){for(j=0;j{k=97+i;printf("%c",k);}}for(i=0;i<26;i++){c[i]=0;}printf("\n");}return0;}哈尔滨工业大学复试编程试题(2011)题目描述:输入一个字符串,长度小于等于200,然后将数组逆置输出。输入:测试数据有多组,每组输入一个字符串。输出:对于每组输入,请输出逆置后的结果。样例输入:hdssg样例输出:Gssdh参考答案:#include#includeintmain(){inti,j,l;chara[200],b[200];while(scanf("%s",a)!=EOF){l=strlen(a);for(i=0,j=l-1;i{b[i]=a[j];}b[i]=0;puts(b);}return0;}题目描述:输入两个正整数,求其最大公约数。输入:测试数据有多组,每组输入两个正整数。输出:对于每组输入,请输出其最大公约数。样例输入:4914样例输出:7参考答案:#includeintmain(){unsignedinta,b;while(scanf("%d%d",&a,&b)!=EOF){while(a!=b){if(a>b)a=a-b;elseb=b-a;}printf("%d\n",a);}return0;}题目描述:输入20个数,每个数都在1-10之间,求1-10中的众数(众数就是出现次数最多的数,如果存在一样多次数的众数,则输出权值较小的那一个)。输入:测试数据有多组,每组输入20个1-10之间的数。输出:对于每组输入,请输出1-10中的众数。样例输入:51510353486836510710262样例输出:5参考答案:#includeintmain(){inta[20],b[11];inti,c;while(scanf("%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5]&a[6],&a[7],&a[8],&a[9],&a[10],&a[11],&a[12],&a[13],&a[14],&a[15],&a[16],&a[17]&a[18],&a[19])!=EOF){c=1;for(i=1;i<11;i++)//数组b[i]记录i的出现次数,初始化为0,b[0]未用b[i]=0;for(i=0;i<20;i++)//统计各个数(1~10)的个数{b[a[i]]+=1;}for(i=1;i<11;i++)//求出现次数最多且最小的那个数{if(b[c]c=i;}printf("%d\n",c);}return0;}哈尔滨工业大学复试编程试题(2012)题目描述:一个百万富翁遇到一个陌生人,陌生人找他谈了一个换钱的计划。该计划如下:我每天给你10万元,你第一天给我1分钱,第二天2分钱,第三天4分钱……这样交换30天后,百万富翁交出了多少钱?陌生人交出了多少钱?(注意一个是万元,一个是分)输入:该题没有输入输出:输出两个整数,分别代表百万富翁交出的钱和陌生人交出的钱,富翁交出的钱以万元作单位,陌生人交出的钱以分作单位。参考答案:#include#includevoidmain(){intsum_a=0,per_day_1=10;//富人总共得到的moneylongsum_b=0,per_day_2=1;inti;for(i=0;i<30;i++){sum_a+=per_day_1;sum_b+=per_day_2;per_day_2*=2;}printf("%d%ld\n",sum_a,sum_b);}题目描述:不用strcat函数,自己编写一个字符串链接函数MyStrcat(chardstStr[],charsrcStr[])输入:两个字符串,字符串由小写字母组成。输出:链接后的字符串样例输入:helloworldgoodmorning样例输出:helloworldgoodmorning参考答案:#include#includevoidMyStrCat(chardstStr[],charsrcStr[]){inti,j;for(i=0;dstStr[i]!=0;i++);for(j=0;srcStr[j]!=0;j++){dstStr[i++]=srcStr[j];}dstStr[i]=0;}intmain(){chara[25],b[25];while(scanf("%s",a)!=EOF&&scanf("%s",b)!=EOF){MyStrCat(a,b);printf("%s\n",a);}return0;}题目描述:计算两个矩阵的乘积,第一个是2*3,第二个是3*2输入:输入为两个矩阵,其中一个为2*3的矩阵,另一个为3*2的矩阵输出:一个2*2的矩阵(每一个数字后都跟一个空格)样例输入:12334567891011样例输出:5258100112参考答案:#includeintmain(){inta1,b1,c1;intd1,e1,f1;inta2,b2;intc2,d2;inte2,f2;inta,b;intc,d;while(scanf("%d%d%d%d%d%d",&a1,&b1,&c1,&d1,&e1,&f1)!=EOF&&scanf("%d%d%d%d%d%d",&a2,&b2,&c2,&d2,&e2,&f2)!=EOF){a=a1*a2+b1*c2+c1*e2;b=a1*b2+b1*d2+c1*f2;c=d1*a2+e1*c2+f1*e2;d=d1*b2+e1*d2+f1*f2;printf("%d%d\n%d%d\n",a,b,c,d);}return0;}
scanf("%d",&b[i]);
scanf("%d",&x);
for(i=0;i{if(x==b[i]){j=i;}}printf("%d\n",j);}return0;}题目描述:输入一个数n,然后输入n个数值各不相同,调换数组中最大和最小的两个数,然后输出。输入:测试数据有多组,输入n(1<=n<=20),接着输入n个数。输出:对于每组输入,输出交换后的结果。样例输入:213样例输出:31参考答案:/*----------------------------------------------------------------------1.顺序查找问题;2.初始化mini=maxi=1,maxn=minn=a[0],顺序查找数组,若找到某个下标为i的数大于maxn,则maxi=i,maxn=a[i],若找到某个下标为i的数小于minn,则mini=i,minn=a[i],查找完毕交换a[maxi],a[mini],顺序输出数组。-----------------------------------------------------------------------*/#includeintmain(){inti,n,a[50],maxi,mini,temp;while(scanf("%d",&n)!=EOF){maxi=mini=0;scanf("%d",&a[0]);for(i=1;i{scanf("%d",&a[i]);if(a[i]>a[maxi]){maxi=i;}if(a[i]{mini=i;}}temp=a[maxi];a[maxi]=a[mini];a[mini]=temp;for(i=0;i{printf("%d",a[i]);}printf("%d\n",a[i]);}return0;}题目描述:输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串。输入:测试数据有多组,输入字符串。输出:对于每组输入,输出处理后的结果。样例输入:bacd样例输出:abcd参考答案:/*----------------------------------------------------------------------1.统计a~z个数,存入c[26]中;2.根据c[i],打印c[i]个ASCII码为97+i的字符;-----------------------------------------------------------------------*/#include#includeintmain(){inti,j,k,c[26]={0};chara[202];while(scanf("%s",a)!=EOF){j=strlen(a);for(i=0;i{k=a[i];c[k-97]++;}for(i=0;i<26;i++){for(j=0;j{k=97+i;printf("%c",k);}}for(i=0;i<26;i++){c[i]=0;}printf("\n");}return0;}哈尔滨工业大学复试编程试题(2011)题目描述:输入一个字符串,长度小于等于200,然后将数组逆置输出。输入:测试数据有多组,每组输入一个字符串。输出:对于每组输入,请输出逆置后的结果。样例输入:hdssg样例输出:Gssdh参考答案:#include#includeintmain(){inti,j,l;chara[200],b[200];while(scanf("%s",a)!=EOF){l=strlen(a);for(i=0,j=l-1;i{b[i]=a[j];}b[i]=0;puts(b);}return0;}题目描述:输入两个正整数,求其最大公约数。输入:测试数据有多组,每组输入两个正整数。输出:对于每组输入,请输出其最大公约数。样例输入:4914样例输出:7参考答案:#includeintmain(){unsignedinta,b;while(scanf("%d%d",&a,&b)!=EOF){while(a!=b){if(a>b)a=a-b;elseb=b-a;}printf("%d\n",a);}return0;}题目描述:输入20个数,每个数都在1-10之间,求1-10中的众数(众数就是出现次数最多的数,如果存在一样多次数的众数,则输出权值较小的那一个)。输入:测试数据有多组,每组输入20个1-10之间的数。输出:对于每组输入,请输出1-10中的众数。样例输入:51510353486836510710262样例输出:5参考答案:#includeintmain(){inta[20],b[11];inti,c;while(scanf("%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5]&a[6],&a[7],&a[8],&a[9],&a[10],&a[11],&a[12],&a[13],&a[14],&a[15],&a[16],&a[17]&a[18],&a[19])!=EOF){c=1;for(i=1;i<11;i++)//数组b[i]记录i的出现次数,初始化为0,b[0]未用b[i]=0;for(i=0;i<20;i++)//统计各个数(1~10)的个数{b[a[i]]+=1;}for(i=1;i<11;i++)//求出现次数最多且最小的那个数{if(b[c]c=i;}printf("%d\n",c);}return0;}哈尔滨工业大学复试编程试题(2012)题目描述:一个百万富翁遇到一个陌生人,陌生人找他谈了一个换钱的计划。该计划如下:我每天给你10万元,你第一天给我1分钱,第二天2分钱,第三天4分钱……这样交换30天后,百万富翁交出了多少钱?陌生人交出了多少钱?(注意一个是万元,一个是分)输入:该题没有输入输出:输出两个整数,分别代表百万富翁交出的钱和陌生人交出的钱,富翁交出的钱以万元作单位,陌生人交出的钱以分作单位。参考答案:#include#includevoidmain(){intsum_a=0,per_day_1=10;//富人总共得到的moneylongsum_b=0,per_day_2=1;inti;for(i=0;i<30;i++){sum_a+=per_day_1;sum_b+=per_day_2;per_day_2*=2;}printf("%d%ld\n",sum_a,sum_b);}题目描述:不用strcat函数,自己编写一个字符串链接函数MyStrcat(chardstStr[],charsrcStr[])输入:两个字符串,字符串由小写字母组成。输出:链接后的字符串样例输入:helloworldgoodmorning样例输出:helloworldgoodmorning参考答案:#include#includevoidMyStrCat(chardstStr[],charsrcStr[]){inti,j;for(i=0;dstStr[i]!=0;i++);for(j=0;srcStr[j]!=0;j++){dstStr[i++]=srcStr[j];}dstStr[i]=0;}intmain(){chara[25],b[25];while(scanf("%s",a)!=EOF&&scanf("%s",b)!=EOF){MyStrCat(a,b);printf("%s\n",a);}return0;}题目描述:计算两个矩阵的乘积,第一个是2*3,第二个是3*2输入:输入为两个矩阵,其中一个为2*3的矩阵,另一个为3*2的矩阵输出:一个2*2的矩阵(每一个数字后都跟一个空格)样例输入:12334567891011样例输出:5258100112参考答案:#includeintmain(){inta1,b1,c1;intd1,e1,f1;inta2,b2;intc2,d2;inte2,f2;inta,b;intc,d;while(scanf("%d%d%d%d%d%d",&a1,&b1,&c1,&d1,&e1,&f1)!=EOF&&scanf("%d%d%d%d%d%d",&a2,&b2,&c2,&d2,&e2,&f2)!=EOF){a=a1*a2+b1*c2+c1*e2;b=a1*b2+b1*d2+c1*f2;c=d1*a2+e1*c2+f1*e2;d=d1*b2+e1*d2+f1*f2;printf("%d%d\n%d%d\n",a,b,c,d);}return0;}
if(x==b[i])
j=i;
printf("%d\n",j);
输入一个数n,然后输入n个数值各不相同,调换数组中最大和最小的两个数,然后输出。
测试数据有多组,输入n(1<=n<=20),接着输入n个数。
对于每组输入,输出交换后的结果。
31
2.初始化mini=maxi=1,maxn=minn=a[0],顺序查找数组,
若找到某个下标为i的数大于maxn,则maxi=i,maxn=a[i],
若找到某个下标为i的数小于minn,则mini=i,minn=a[i],
查找完毕交换a[maxi],a[mini],顺序输出数组。
inti,n,a[50],maxi,mini,temp;
maxi=mini=0;
scanf("%d",&a[0]);
for(i=1;i{scanf("%d",&a[i]);if(a[i]>a[maxi]){maxi=i;}if(a[i]{mini=i;}}temp=a[maxi];a[maxi]=a[mini];a[mini]=temp;for(i=0;i{printf("%d",a[i]);}printf("%d\n",a[i]);}return0;}题目描述:输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串。输入:测试数据有多组,输入字符串。输出:对于每组输入,输出处理后的结果。样例输入:bacd样例输出:abcd参考答案:/*----------------------------------------------------------------------1.统计a~z个数,存入c[26]中;2.根据c[i],打印c[i]个ASCII码为97+i的字符;-----------------------------------------------------------------------*/#include#includeintmain(){inti,j,k,c[26]={0};chara[202];while(scanf("%s",a)!=EOF){j=strlen(a);for(i=0;i{k=a[i];c[k-97]++;}for(i=0;i<26;i++){for(j=0;j{k=97+i;printf("%c",k);}}for(i=0;i<26;i++){c[i]=0;}printf("\n");}return0;}哈尔滨工业大学复试编程试题(2011)题目描述:输入一个字符串,长度小于等于200,然后将数组逆置输出。输入:测试数据有多组,每组输入一个字符串。输出:对于每组输入,请输出逆置后的结果。样例输入:hdssg样例输出:Gssdh参考答案:#include#includeintmain(){inti,j,l;chara[200],b[200];while(scanf("%s",a)!=EOF){l=strlen(a);for(i=0,j=l-1;i{b[i]=a[j];}b[i]=0;puts(b);}return0;}题目描述:输入两个正整数,求其最大公约数。输入:测试数据有多组,每组输入两个正整数。输出:对于每组输入,请输出其最大公约数。样例输入:4914样例输出:7参考答案:#includeintmain(){unsignedinta,b;while(scanf("%d%d",&a,&b)!=EOF){while(a!=b){if(a>b)a=a-b;elseb=b-a;}printf("%d\n",a);}return0;}题目描述:输入20个数,每个数都在1-10之间,求1-10中的众数(众数就是出现次数最多的数,如果存在一样多次数的众数,则输出权值较小的那一个)。输入:测试数据有多组,每组输入20个1-10之间的数。输出:对于每组输入,请输出1-10中的众数。样例输入:51510353486836510710262样例输出:5参考答案:#includeintmain(){inta[20],b[11];inti,c;while(scanf("%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5]&a[6],&a[7],&a[8],&a[9],&a[10],&a[11],&a[12],&a[13],&a[14],&a[15],&a[16],&a[17]&a[18],&a[19])!=EOF){c=1;for(i=1;i<11;i++)//数组b[i]记录i的出现次数,初始化为0,b[0]未用b[i]=0;for(i=0;i<20;i++)//统计各个数(1~10)的个数{b[a[i]]+=1;}for(i=1;i<11;i++)//求出现次数最多且最小的那个数{if(b[c]c=i;}printf("%d\n",c);}return0;}哈尔滨工业大学复试编程试题(2012)题目描述:一个百万富翁遇到一个陌生人,陌生人找他谈了一个换钱的计划。该计划如下:我每天给你10万元,你第一天给我1分钱,第二天2分钱,第三天4分钱……这样交换30天后,百万富翁交出了多少钱?陌生人交出了多少钱?(注意一个是万元,一个是分)输入:该题没有输入输出:输出两个整数,分别代表百万富翁交出的钱和陌生人交出的钱,富翁交出的钱以万元作单位,陌生人交出的钱以分作单位。参考答案:#include#includevoidmain(){intsum_a=0,per_day_1=10;//富人总共得到的moneylongsum_b=0,per_day_2=1;inti;for(i=0;i<30;i++){sum_a+=per_day_1;sum_b+=per_day_2;per_day_2*=2;}printf("%d%ld\n",sum_a,sum_b);}题目描述:不用strcat函数,自己编写一个字符串链接函数MyStrcat(chardstStr[],charsrcStr[])输入:两个字符串,字符串由小写字母组成。输出:链接后的字符串样例输入:helloworldgoodmorning样例输出:helloworldgoodmorning参考答案:#include#includevoidMyStrCat(chardstStr[],charsrcStr[]){inti,j;for(i=0;dstStr[i]!=0;i++);for(j=0;srcStr[j]!=0;j++){dstStr[i++]=srcStr[j];}dstStr[i]=0;}intmain(){chara[25],b[25];while(scanf("%s",a)!=EOF&&scanf("%s",b)!=EOF){MyStrCat(a,b);printf("%s\n",a);}return0;}题目描述:计算两个矩阵的乘积,第一个是2*3,第二个是3*2输入:输入为两个矩阵,其中一个为2*3的矩阵,另一个为3*2的矩阵输出:一个2*2的矩阵(每一个数字后都跟一个空格)样例输入:12334567891011样例输出:5258100112参考答案:#includeintmain(){inta1,b1,c1;intd1,e1,f1;inta2,b2;intc2,d2;inte2,f2;inta,b;intc,d;while(scanf("%d%d%d%d%d%d",&a1,&b1,&c1,&d1,&e1,&f1)!=EOF&&scanf("%d%d%d%d%d%d",&a2,&b2,&c2,&d2,&e2,&f2)!=EOF){a=a1*a2+b1*c2+c1*e2;b=a1*b2+b1*d2+c1*f2;c=d1*a2+e1*c2+f1*e2;d=d1*b2+e1*d2+f1*f2;printf("%d%d\n%d%d\n",a,b,c,d);}return0;}
if(a[i]>a[maxi])
maxi=i;
if(a[i]{mini=i;}}temp=a[maxi];a[maxi]=a[mini];a[mini]=temp;for(i=0;i{printf("%d",a[i]);}printf("%d\n",a[i]);}return0;}题目描述:输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串。输入:测试数据有多组,输入字符串。输出:对于每组输入,输出处理后的结果。样例输入:bacd样例输出:abcd参考答案:/*----------------------------------------------------------------------1.统计a~z个数,存入c[26]中;2.根据c[i],打印c[i]个ASCII码为97+i的字符;-----------------------------------------------------------------------*/#include#includeintmain(){inti,j,k,c[26]={0};chara[202];while(scanf("%s",a)!=EOF){j=strlen(a);for(i=0;i{k=a[i];c[k-97]++;}for(i=0;i<26;i++){for(j=0;j{k=97+i;printf("%c",k);}}for(i=0;i<26;i++){c[i]=0;}printf("\n");}return0;}哈尔滨工业大学复试编程试题(2011)题目描述:输入一个字符串,长度小于等于200,然后将数组逆置输出。输入:测试数据有多组,每组输入一个字符串。输出:对于每组输入,请输出逆置后的结果。样例输入:hdssg样例输出:Gssdh参考答案:#include#includeintmain(){inti,j,l;chara[200],b[200];while(scanf("%s",a)!=EOF){l=strlen(a);for(i=0,j=l-1;i{b[i]=a[j];}b[i]=0;puts(b);}return0;}题目描述:输入两个正整数,求其最大公约数。输入:测试数据有多组,每组输入两个正整数。输出:对于每组输入,请输出其最大公约数。样例输入:4914样例输出:7参考答案:#includeintmain(){unsignedinta,b;while(scanf("%d%d",&a,&b)!=EOF){while(a!=b){if(a>b)a=a-b;elseb=b-a;}printf("%d\n",a);}return0;}题目描述:输入20个数,每个数都在1-10之间,求1-10中的众数(众数就是出现次数最多的数,如果存在一样多次数的众数,则输出权值较小的那一个)。输入:测试数据有多组,每组输入20个1-10之间的数。输出:对于每组输入,请输出1-10中的众数。样例输入:51510353486836510710262样例输出:5参考答案:#includeintmain(){inta[20],b[11];inti,c;while(scanf("%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5]&a[6],&a[7],&a[8],&a[9],&a[10],&a[11],&a[12],&a[13],&a[14],&a[15],&a[16],&a[17]&a[18],&a[19])!=EOF){c=1;for(i=1;i<11;i++)//数组b[i]记录i的出现次数,初始化为0,b[0]未用b[i]=0;for(i=0;i<20;i++)//统计各个数(1~10)的个数{b[a[i]]+=1;}for(i=1;i<11;i++)//求出现次数最多且最小的那个数{if(b[c]c=i;}printf("%d\n",c);}return0;}哈尔滨工业大学复试编程试题(2012)题目描述:一个百万富翁遇到一个陌生人,陌生人找他谈了一个换钱的计划。该计划如下:我每天给你10万元,你第一天给我1分钱,第二天2分钱,第三天4分钱……这样交换30天后,百万富翁交出了多少钱?陌生人交出了多少钱?(注意一个是万元,一个是分)输入:该题没有输入输出:输出两个整数,分别代表百万富翁交出的钱和陌生人交出的钱,富翁交出的钱以万元作单位,陌生人交出的钱以分作单位。参考答案:#include#includevoidmain(){intsum_a=0,per_day_1=10;//富人总共得到的moneylongsum_b=0,per_day_2=1;inti;for(i=0;i<30;i++){sum_a+=per_day_1;sum_b+=per_day_2;per_day_2*=2;}printf("%d%ld\n",sum_a,sum_b);}题目描述:不用strcat函数,自己编写一个字符串链接函数MyStrcat(chardstStr[],charsrcStr[])输入:两个字符串,字符串由小写字母组成。输出:链接后的字符串样例输入:helloworldgoodmorning样例输出:helloworldgoodmorning参考答案:#include#includevoidMyStrCat(chardstStr[],charsrcStr[]){inti,j;for(i=0;dstStr[i]!=0;i++);for(j=0;srcStr[j]!=0;j++){dstStr[i++]=srcStr[j];}dstStr[i]=0;}intmain(){chara[25],b[25];while(scanf("%s",a)!=EOF&&scanf("%s",b)!=EOF){MyStrCat(a,b);printf("%s\n",a);}return0;}题目描述:计算两个矩阵的乘积,第一个是2*3,第二个是3*2输入:输入为两个矩阵,其中一个为2*3的矩阵,另一个为3*2的矩阵输出:一个2*2的矩阵(每一个数字后都跟一个空格)样例输入:12334567891011样例输出:5258100112参考答案:#includeintmain(){inta1,b1,c1;intd1,e1,f1;inta2,b2;intc2,d2;inte2,f2;inta,b;intc,d;while(scanf("%d%d%d%d%d%d",&a1,&b1,&c1,&d1,&e1,&f1)!=EOF&&scanf("%d%d%d%d%d%d",&a2,&b2,&c2,&d2,&e2,&f2)!=EOF){a=a1*a2+b1*c2+c1*e2;b=a1*b2+b1*d2+c1*f2;c=d1*a2+e1*c2+f1*e2;d=d1*b2+e1*d2+f1*f2;printf("%d%d\n%d%d\n",a,b,c,d);}return0;}
mini=i;
temp=a[maxi];
a[maxi]=a[mini];
a[mini]=temp;
for(i=0;i{printf("%d",a[i]);}printf("%d\n",a[i]);}return0;}题目描述:输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串。输入:测试数据有多组,输入字符串。输出:对于每组输入,输出处理后的结果。样例输入:bacd样例输出:abcd参考答案:/*----------------------------------------------------------------------1.统计a~z个数,存入c[26]中;2.根据c[i],打印c[i]个ASCII码为97+i的字符;-----------------------------------------------------------------------*/#include#includeintmain(){inti,j,k,c[26]={0};chara[202];while(scanf("%s",a)!=EOF){j=strlen(a);for(i=0;i{k=a[i];c[k-97]++;}for(i=0;i<26;i++){for(j=0;j{k=97+i;printf("%c",k);}}for(i=0;i<26;i++){c[i]=0;}printf("\n");}return0;}哈尔滨工业大学复试编程试题(2011)题目描述:输入一个字符串,长度小于等于200,然后将数组逆置输出。输入:测试数据有多组,每组输入一个字符串。输出:对于每组输入,请输出逆置后的结果。样例输入:hdssg样例输出:Gssdh参考答案:#include#includeintmain(){inti,j,l;chara[200],b[200];while(scanf("%s",a)!=EOF){l=strlen(a);for(i=0,j=l-1;i{b[i]=a[j];}b[i]=0;puts(b);}return0;}题目描述:输入两个正整数,求其最大公约数。输入:测试数据有多组,每组输入两个正整数。输出:对于每组输入,请输出其最大公约数。样例输入:4914样例输出:7参考答案:#includeintmain(){unsignedinta,b;while(scanf("%d%d",&a,&b)!=EOF){while(a!=b){if(a>b)a=a-b;elseb=b-a;}printf("%d\n",a);}return0;}题目描述:输入20个数,每个数都在1-10之间,求1-10中的众数(众数就是出现次数最多的数,如果存在一样多次数的众数,则输出权值较小的那一个)。输入:测试数据有多组,每组输入20个1-10之间的数。输出:对于每组输入,请输出1-10中的众数。样例输入:51510353486836510710262样例输出:5参考答案:#includeintmain(){inta[20],b[11];inti,c;while(scanf("%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5]&a[6],&a[7],&a[8],&a[9],&a[10],&a[11],&a[12],&a[13],&a[14],&a[15],&a[16],&a[17]&a[18],&a[19])!=EOF){c=1;for(i=1;i<11;i++)//数组b[i]记录i的出现次数,初始化为0,b[0]未用b[i]=0;for(i=0;i<20;i++)//统计各个数(1~10)的个数{b[a[i]]+=1;}for(i=1;i<11;i++)//求出现次数最多且最小的那个数{if(b[c]c=i;}printf("%d\n",c);}return0;}哈尔滨工业大学复试编程试题(2012)题目描述:一个百万富翁遇到一个陌生人,陌生人找他谈了一个换钱的计划。该计划如下:我每天给你10万元,你第一天给我1分钱,第二天2分钱,第三天4分钱……这样交换30天后,百万富翁交出了多少钱?陌生人交出了多少钱?(注意一个是万元,一个是分)输入:该题没有输入输出:输出两个整数,分别代表百万富翁交出的钱和陌生人交出的钱,富翁交出的钱以万元作单位,陌生人交出的钱以分作单位。参考答案:#include#includevoidmain(){intsum_a=0,per_day_1=10;//富人总共得到的moneylongsum_b=0,per_day_2=1;inti;for(i=0;i<30;i++){sum_a+=per_day_1;sum_b+=per_day_2;per_day_2*=2;}printf("%d%ld\n",sum_a,sum_b);}题目描述:不用strcat函数,自己编写一个字符串链接函数MyStrcat(chardstStr[],charsrcStr[])输入:两个字符串,字符串由小写字母组成。输出:链接后的字符串样例输入:helloworldgoodmorning样例输出:helloworldgoodmorning参考答案:#include#includevoidMyStrCat(chardstStr[],charsrcStr[]){inti,j;for(i=0;dstStr[i]!=0;i++);for(j=0;srcStr[j]!=0;j++){dstStr[i++]=srcStr[j];}dstStr[i]=0;}intmain(){chara[25],b[25];while(scanf("%s",a)!=EOF&&scanf("%s",b)!=EOF){MyStrCat(a,b);printf("%s\n",a);}return0;}题目描述:计算两个矩阵的乘积,第一个是2*3,第二个是3*2输入:输入为两个矩阵,其中一个为2*3的矩阵,另一个为3*2的矩阵输出:一个2*2的矩阵(每一个数字后都跟一个空格)样例输入:12334567891011样例输出:5258100112参考答案:#includeintmain(){inta1,b1,c1;intd1,e1,f1;inta2,b2;intc2,d2;inte2,f2;inta,b;intc,d;while(scanf("%d%d%d%d%d%d",&a1,&b1,&c1,&d1,&e1,&f1)!=EOF&&scanf("%d%d%d%d%d%d",&a2,&b2,&c2,&d2,&e2,&f2)!=EOF){a=a1*a2+b1*c2+c1*e2;b=a1*b2+b1*d2+c1*f2;c=d1*a2+e1*c2+f1*e2;d=d1*b2+e1*d2+f1*f2;printf("%d%d\n%d%d\n",a,b,c,d);}return0;}
printf("%d",a[i]);
printf("%d\n",a[i]);
输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串。
测试数据有多组,输入字符串。
对于每组输入,输出处理后的结果。
bacd
abcd
1.统计a~z个数,存入c[26]中;
2.根据c[i],打印c[i]个ASCII码为97+i的字符;
inti,j,k,c[26]={0};
chara[202];
while(scanf("%s",a)!
j=strlen(a);
for(i=0;i{k=a[i];c[k-97]++;}for(i=0;i<26;i++){for(j=0;j{k=97+i;printf("%c",k);}}for(i=0;i<26;i++){c[i]=0;}printf("\n");}return0;}哈尔滨工业大学复试编程试题(2011)题目描述:输入一个字符串,长度小于等于200,然后将数组逆置输出。输入:测试数据有多组,每组输入一个字符串。输出:对于每组输入,请输出逆置后的结果。样例输入:hdssg样例输出:Gssdh参考答案:#include#includeintmain(){inti,j,l;chara[200],b[200];while(scanf("%s",a)!=EOF){l=strlen(a);for(i=0,j=l-1;i{b[i]=a[j];}b[i]=0;puts(b);}return0;}题目描述:输入两个正整数,求其最大公约数。输入:测试数据有多组,每组输入两个正整数。输出:对于每组输入,请输出其最大公约数。样例输入:4914样例输出:7参考答案:#includeintmain(){unsignedinta,b;while(scanf("%d%d",&a,&b)!=EOF){while(a!=b){if(a>b)a=a-b;elseb=b-a;}printf("%d\n",a);}return0;}题目描述:输入20个数,每个数都在1-10之间,求1-10中的众数(众数就是出现次数最多的数,如果存在一样多次数的众数,则输出权值较小的那一个)。输入:测试数据有多组,每组输入20个1-10之间的数。输出:对于每组输入,请输出1-10中的众数。样例输入:51510353486836510710262样例输出:5参考答案:#includeintmain(){inta[20],b[11];inti,c;while(scanf("%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5]&a[6],&a[7],&a[8],&a[9],&a[10],&a[11],&a[12],&a[13],&a[14],&a[15],&a[16],&a[17]&a[18],&a[19])!=EOF){c=1;for(i=1;i<11;i++)//数组b[i]记录i的出现次数,初始化为0,b[0]未用b[i]=0;for(i=0;i<20;i++)//统计各个数(1~10)的个数{b[a[i]]+=1;}for(i=1;i<11;i++)//求出现次数最多且最小的那个数{if(b[c]c=i;}printf("%d\n",c);}return0;}哈尔滨工业大学复试编程试题(2012)题目描述:一个百万富翁遇到一个陌生人,陌生人找他谈了一个换钱的计划。该计划如下:我每天给你10万元,你第一天给我1分钱,第二天2分钱,第三天4分钱……这样交换30天后,百万富翁交出了多少钱?陌生人交出了多少钱?(注意一个是万元,一个是分)输入:该题没有输入输出:输出两个整数,分别代表百万富翁交出的钱和陌生人交出的钱,富翁交出的钱以万元作单位,陌生人交出的钱以分作单位。参考答案:#include#includevoidmain(){intsum_a=0,per_day_1=10;//富人总共得到的moneylongsum_b=0,per_day_2=1;inti;for(i=0;i<30;i++){sum_a+=per_day_1;sum_b+=per_day_2;per_day_2*=2;}printf("%d%ld\n",sum_a,sum_b);}题目描述:不用strcat函数,自己编写一个字符串链接函数MyStrcat(chardstStr[],charsrcStr[])输入:两个字符串,字符串由小写字母组成。输出:链接后的字符串样例输入:helloworldgoodmorning样例输出:helloworldgoodmorning参考答案:#include#includevoidMyStrCat(chardstStr[],charsrcStr[]){inti,j;for(i=0;dstStr[i]!=0;i++);for(j=0;srcStr[j]!=0;j++){dstStr[i++]=srcStr[j];}dstStr[i]=0;}intmain(){chara[25],b[25];while(scanf("%s",a)!=EOF&&scanf("%s",b)!=EOF){MyStrCat(a,b);printf("%s\n",a);}return0;}题目描述:计算两个矩阵的乘积,第一个是2*3,第二个是3*2输入:输入为两个矩阵,其中一个为2*3的矩阵,另一个为3*2的矩阵输出:一个2*2的矩阵(每一个数字后都跟一个空格)样例输入:12334567891011样例输出:5258100112参考答案:#includeintmain(){inta1,b1,c1;intd1,e1,f1;inta2,b2;intc2,d2;inte2,f2;inta,b;intc,d;while(scanf("%d%d%d%d%d%d",&a1,&b1,&c1,&d1,&e1,&f1)!=EOF&&scanf("%d%d%d%d%d%d",&a2,&b2,&c2,&d2,&e2,&f2)!=EOF){a=a1*a2+b1*c2+c1*e2;b=a1*b2+b1*d2+c1*f2;c=d1*a2+e1*c2+f1*e2;d=d1*b2+e1*d2+f1*f2;printf("%d%d\n%d%d\n",a,b,c,d);}return0;}
k=a[i];
c[k-97]++;
for(i=0;i<26;i++)
for(j=0;j{k=97+i;printf("%c",k);}}for(i=0;i<26;i++){c[i]=0;}printf("\n");}return0;}哈尔滨工业大学复试编程试题(2011)题目描述:输入一个字符串,长度小于等于200,然后将数组逆置输出。输入:测试数据有多组,每组输入一个字符串。输出:对于每组输入,请输出逆置后的结果。样例输入:hdssg样例输出:Gssdh参考答案:#include#includeintmain(){inti,j,l;chara[200],b[200];while(scanf("%s",a)!=EOF){l=strlen(a);for(i=0,j=l-1;i{b[i]=a[j];}b[i]=0;puts(b);}return0;}题目描述:输入两个正整数,求其最大公约数。输入:测试数据有多组,每组输入两个正整数。输出:对于每组输入,请输出其最大公约数。样例输入:4914样例输出:7参考答案:#includeintmain(){unsignedinta,b;while(scanf("%d%d",&a,&b)!=EOF){while(a!=b){if(a>b)a=a-b;elseb=b-a;}printf("%d\n",a);}return0;}题目描述:输入20个数,每个数都在1-10之间,求1-10中的众数(众数就是出现次数最多的数,如果存在一样多次数的众数,则输出权值较小的那一个)。输入:测试数据有多组,每组输入20个1-10之间的数。输出:对于每组输入,请输出1-10中的众数。样例输入:51510353486836510710262样例输出:5参考答案:#includeintmain(){inta[20],b[11];inti,c;while(scanf("%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5]&a[6],&a[7],&a[8],&a[9],&a[10],&a[11],&a[12],&a[13],&a[14],&a[15],&a[16],&a[17]&a[18],&a[19])!=EOF){c=1;for(i=1;i<11;i++)//数组b[i]记录i的出现次数,初始化为0,b[0]未用b[i]=0;for(i=0;i<20;i++)//统计各个数(1~10)的个数{b[a[i]]+=1;}for(i=1;i<11;i++)//求出现次数最多且最小的那个数{if(b[c]c=i;}printf("%d\n",c);}return0;}哈尔滨工业大学复试编程试题(2012)题目描述:一个百万富翁遇到一个陌生人,陌生人找他谈了一个换钱的计划。该计划如下:我每天给你10万元,你第一天给我1分钱,第二天2分钱,第三天4分钱……这样交换30天后,百万富翁交出了多少钱?陌生人交出了多少钱?(注意一个是万元,一个是分)输入:该题没有输入输出:输出两个整数,分别代表百万富翁交出的钱和陌生人交出的钱,富翁交出的钱以万元作单位,陌生人交出的钱以分作单位。参考答案:#include#includevoidmain(){intsum_a=0,per_day_1=10;//富人总共得到的moneylongsum_b=0,per_day_2=1;inti;for(i=0;i<30;i++){sum_a+=per_day_1;sum_b+=per_day_2;per_day_2*=2;}printf("%d%ld\n",sum_a,sum_b);}题目描述:不用strcat函数,自己编写一个字符串链接函数MyStrcat(chardstStr[],charsrcStr[])输入:两个字符串,字符串由小写字母组成。输出:链接后的字符串样例输入:helloworldgoodmorning样例输出:helloworldgoodmorning参考答案:#include#includevoidMyStrCat(chardstStr[],charsrcStr[]){inti,j;for(i=0;dstStr[i]!=0;i++);for(j=0;srcStr[j]!=0;j++){dstStr[i++]=srcStr[j];}dstStr[i]=0;}intmain(){chara[25],b[25];while(scanf("%s",a)!=EOF&&scanf("%s",b)!=EOF){MyStrCat(a,b);printf("%s\n",a);}return0;}题目描述:计算两个矩阵的乘积,第一个是2*3,第二个是3*2输入:输入为两个矩阵,其中一个为2*3的矩阵,另一个为3*2的矩阵输出:一个2*2的矩阵(每一个数字后都跟一个空格)样例输入:12334567891011样例输出:5258100112参考答案:#includeintmain(){inta1,b1,c1;intd1,e1,f1;inta2,b2;intc2,d2;inte2,f2;inta,b;intc,d;while(scanf("%d%d%d%d%d%d",&a1,&b1,&c1,&d1,&e1,&f1)!=EOF&&scanf("%d%d%d%d%d%d",&a2,&b2,&c2,&d2,&e2,&f2)!=EOF){a=a1*a2+b1*c2+c1*e2;b=a1*b2+b1*d2+c1*f2;c=d1*a2+e1*c2+f1*e2;d=d1*b2+e1*d2+f1*f2;printf("%d%d\n%d%d\n",a,b,c,d);}return0;}
k=97+i;
printf("%c",k);
c[i]=0;
哈尔滨工业大学复试编程试题(2011)
输入一个字符串,长度小于等于200,然后将数组逆置输出。
测试数据有多组,每组输入一个字符串。
对于每组输入,请输出逆置后的结果。
hdssg
Gssdh
chara[200],b[200];
for(i=0,j=l-1;i{b[i]=a[j];}b[i]=0;puts(b);}return0;}题目描述:输入两个正整数,求其最大公约数。输入:测试数据有多组,每组输入两个正整数。输出:对于每组输入,请输出其最大公约数。样例输入:4914样例输出:7参考答案:#includeintmain(){unsignedinta,b;while(scanf("%d%d",&a,&b)!=EOF){while(a!=b){if(a>b)a=a-b;elseb=b-a;}printf("%d\n",a);}return0;}题目描述:输入20个数,每个数都在1-10之间,求1-10中的众数(众数就是出现次数最多的数,如果存在一样多次数的众数,则输出权值较小的那一个)。输入:测试数据有多组,每组输入20个1-10之间的数。输出:对于每组输入,请输出1-10中的众数。样例输入:51510353486836510710262样例输出:5参考答案:#includeintmain(){inta[20],b[11];inti,c;while(scanf("%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5]&a[6],&a[7],&a[8],&a[9],&a[10],&a[11],&a[12],&a[13],&a[14],&a[15],&a[16],&a[17]&a[18],&a[19])!=EOF){c=1;for(i=1;i<11;i++)//数组b[i]记录i的出现次数,初始化为0,b[0]未用b[i]=0;for(i=0;i<20;i++)//统计各个数(1~10)的个数{b[a[i]]+=1;}for(i=1;i<11;i++)//求出现次数最多且最小的那个数{if(b[c]c=i;}printf("%d\n",c);}return0;}哈尔滨工业大学复试编程试题(2012)题目描述:一个百万富翁遇到一个陌生人,陌生人找他谈了一个换钱的计划。该计划如下:我每天给你10万元,你第一天给我1分钱,第二天2分钱,第三天4分钱……这样交换30天后,百万富翁交出了多少钱?陌生人交出了多少钱?(注意一个是万元,一个是分)输入:该题没有输入输出:输出两个整数,分别代表百万富翁交出的钱和陌生人交出的钱,富翁交出的钱以万元作单位,陌生人交出的钱以分作单位。参考答案:#include#includevoidmain(){intsum_a=0,per_day_1=10;//富人总共得到的moneylongsum_b=0,per_day_2=1;inti;for(i=0;i<30;i++){sum_a+=per_day_1;sum_b+=per_day_2;per_day_2*=2;}printf("%d%ld\n",sum_a,sum_b);}题目描述:不用strcat函数,自己编写一个字符串链接函数MyStrcat(chardstStr[],charsrcStr[])输入:两个字符串,字符串由小写字母组成。输出:链接后的字符串样例输入:helloworldgoodmorning样例输出:helloworldgoodmorning参考答案:#include#includevoidMyStrCat(chardstStr[],charsrcStr[]){inti,j;for(i=0;dstStr[i]!=0;i++);for(j=0;srcStr[j]!=0;j++){dstStr[i++]=srcStr[j];}dstStr[i]=0;}intmain(){chara[25],b[25];while(scanf("%s",a)!=EOF&&scanf("%s",b)!=EOF){MyStrCat(a,b);printf("%s\n",a);}return0;}题目描述:计算两个矩阵的乘积,第一个是2*3,第二个是3*2输入:输入为两个矩阵,其中一个为2*3的矩阵,另一个为3*2的矩阵输出:一个2*2的矩阵(每一个数字后都跟一个空格)样例输入:12334567891011样例输出:5258100112参考答案:#includeintmain(){inta1,b1,c1;intd1,e1,f1;inta2,b2;intc2,d2;inte2,f2;inta,b;intc,d;while(scanf("%d%d%d%d%d%d",&a1,&b1,&c1,&d1,&e1,&f1)!=EOF&&scanf("%d%d%d%d%d%d",&a2,&b2,&c2,&d2,&e2,&f2)!=EOF){a=a1*a2+b1*c2+c1*e2;b=a1*b2+b1*d2+c1*f2;c=d1*a2+e1*c2+f1*e2;d=d1*b2+e1*d2+f1*f2;printf("%d%d\n%d%d\n",a,b,c,d);}return0;}
b[i]=a[j];
b[i]=0;
puts(b);
输入两个正整数,求其最大公约数。
测试数据有多组,每组输入两个正整数。
对于每组输入,请输出其最大公约数。
4914
7
unsignedinta,b;
while(scanf("%d%d",&a,&b)!
while(a!
if(a>b)
a=a-b;
b=b-a;
printf("%d\n",a);
输入20个数,每个数都在1-10之间,求1-10中的众数(众数就是出现次数最多的数,如果存在一样多次数的众数,则输出权值较小的那一个)。
测试数据有多组,每组输入20个1-10之间的数。
对于每组输入,请输出1-10中的众数。
51510353486836510710262
5
inta[20],b[11];
inti,c;
while(scanf("%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5]
&a[6],&a[7],&a[8],&a[9],&a[10],&a[11],&a[12],&a[13],&a[14],&a[15],&a[16],&a[17]
&a[18],&a[19])!
c=1;
for(i=1;i<11;i++)//数组b[i]记录i的出现次数,初始化为0,b[0]未用
for(i=0;i<20;i++)//统计各个数(1~10)的个数
b[a[i]]+=1;
for(i=1;i<11;i++)//求出现次数最多且最小的那个数
if(b[c]
c=i;
printf("%d\n",c);
哈尔滨工业大学复试编程试题(2012)
一个百万富翁遇到一个陌生人,陌生人找他谈了一个换钱的计划。
该计划如下:
我每天给你10万元,你第一天给我1分钱,第二天2分钱,
第三天4分钱……
这样交换30天后,百万富翁交出了多少钱?
陌生人交出了多少钱?
(注意一个是万元,一个是分)
该题没有输入
输出两个整数,分别代表百万富翁交出的钱和陌生人交出的钱,富翁交出的钱以万元作单位,陌生人交出的钱以分作单位。
voidmain()
intsum_a=0,per_day_1=10;//富人总共得到的money
longsum_b=0,per_day_2=1;
for(i=0;i<30;i++)
sum_a+=per_day_1;
sum_b+=per_day_2;
per_day_2*=2;
printf("%d%ld\n",sum_a,sum_b);
不用strcat函数,自己编写一个字符串链接函数MyStrcat(chardstStr[],charsrcStr[])
两个字符串,字符串由小写字母组成。
链接后的字符串
helloworld
goodmorning
voidMyStrCat(chardstStr[],charsrcStr[])
inti,j;
for(i=0;dstStr[i]!
=0;i++);
for(j=0;srcStr[j]!
=0;j++)
dstStr[i++]=srcStr[j];
dstStr[i]=0;
chara[25],b[25];
=EOF&&scanf("%s",b)!
MyStrCat(a,b);
计算两个矩阵的乘积,第一个是2*3,第二个是3*2
输入为两个矩阵,其中一个为2*3的矩阵,另一个为3*2的矩阵
一个2*2的矩阵(每一个数字后都跟一个空格)
123
67
89
1011
5258
100112
inta1,b1,c1;
intd1,e1,f1;
inta2,b2;
intc2,d2;
inte2,f2;
inta,b;
intc,d;
while(scanf("%d%d%d%d%d%d",&a1,&b1,&c1,&d1,&e1,&f1)!
=EOF&&
scanf("%d%d%d%d%d%d",&a2,&b2,&c2,&d2,&e2,&f2)!
a=a1*a2+b1*c2+c1*e2;
b=a1*b2+b1*d2+c1*f2;
c=d1*a2+e1*c2+f1*e2;
d=d1*b2+e1*d2+f1*f2;
printf("%d%d\n%d%d\n",a,b,c,d);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1