一、写这样的一个程序,它要求我们输入一个字符串,,然后程序对我们输入的数进行统计.比如说我们输入584515871 则输出 5 3 (表示有3个5)
8 2 (表示有2个8)
4 1 ( 表示有1个4)
1 2 (表示哟2个1)
7 1 ( 表示有1个7)
例如:
输入:
564hghsdfhgds56436gs
输出:
5 : 2
6 : 3
4 : 2
h : 3
g : 3
s : 3
d : 3
f : 1
3 : 1
注:此题要求只有一个读取字符串的语句,并且测试的字符串大小未知(未知代表可能没有,可能成千上百至百万,以下同);输出格式可以按自己认为美观的方式输出,只要结果正确,他人容易理解就可以。
二、已知一个已经从小到大排序的数组,这个数组中的一个平台(Plateau)就是连续的一串值相同的元素,并且这一串元素不能再延伸。
例如,在1,2,2,3,3,3,4,5,5,6中1 ;2.2 ;3.3.3 ;4 ;5.5 ;6都是平台。
试编写一个程序,接受一个数组,把这个数组中最长的平台找出来。
在上面的例子中3.3.3就是该数组中最长的平台。
例如:
输入: 3 4 4 7 7 7 7 7 8 9 9 9 9 10
输出: 5
注:此题要求只有一个输入语句,并且测试的输入平台大小未知,平台数值的大小未知;输出格式可以按自己认为美观的方式输出,只要结果正确,他人容易理解就可以。
三、已知f[ ]与g[ ]两个整数数组,它们的元素已经从小到大排列好,
而且两个数组中的元素都各不相同。例如,f[ ]中有1,3,4,7,9而g[ ]中有3,5,7,8,10。
试编写程序算出这两个数组之间有多少组相同的元素。
例如:
输入:
1 2 4 7 9 11 13
4 5 7 8 9 10 11
输出:
There are 4 equal numbers.
注:此题要求只有两个输入语句,分别输入f[]和g[],并且测试的输入的数组大小未知,两数组长度不一定相等,输入次数未知,以非数组输入结束;输出格式可以按自己认为美观的方式输出,只要结果正确,他人容易理解就可以。
四、把1 到 N*N 的整数填入N*N的方格中构成一个数字距阵,每行和每列以及对角线的数字之和必须是相等的。
请编写一个程序把任意奇数阶的这样的数字距阵找出来。
Input
输入包括多个测试集,每行为一个正奇数N(1 <= N < 1000),0作为输入的结束且不需要处理。
Output
对于输入的每一个N, 输出一个它所对应的N阶方阵,如果存在多个,任意一个即可。
每个方阵为N*N的矩阵,
对于每个方阵,每行输出方阵的一行,每行中的数字之间用一个或多个空格分开。
注:此题要求用in.txt文件输入,输入包括多个测试集,每行为一个正奇数N(1 <= N < 1000),0作为输入的结束且不需要处理;输出out+你的编号.txt文件,格式可以按自己认为美观的方式输出,只要结果正确,他人容易理解就可以(编号见附件)。
五、某个国家一共发行了a1,a2,a3,….,ak种不同面额的钞票,为了方便,假设a1<a2<a3<…<ak。现在手上有钱数n,请问要如何把钱数n换成a1,a2,a3,…,ak面额的钞票,使得所用钞票的数量最少。
例如:
输入:
1 2 5 10 20 50 100 256
输出:
Minimum = 5
注:此题要求只有一个输入语句,并且测试的输入前n-1个数字为a1,a2,a3,….,ak,第n个数字为被折换的钱数n;输出格式可以按自己认为美观的方式输出,只要结果正确,他人容易理解就可以。
#define M 10000
void main()
{
char s[M];
int flag[256]={0,};
int i;
printf("Please putin a string:\n");
gets(s);
for(i=0;s[i]!=0;i++)
flag[s[i]]++;
for(i=0;i<256;i++)
if(flag[i]!=0)
printf("%c:%d\n",i,flag[i]);
}
二
#include<stdio.h>
#define M 5
void main()
{
int d[M];
int flag[M]={0,};
int i,j;
printf("Please putin a digit string from small to big:\n");
for(i=0;i<M;i++)
scanf("%d",&d[i]);
for(i=0;i<M;i++)
for(j=i+1;j<M;j++)
if(d[i]==d[j]&&flag[j]!=0)
flag[i]++;
for(i=1;i<M;i++)
if(flag[i]>flag[0])
flag[0]=flag[i];
printf("%d",flag[0]);
}
三、
加点分吧,大哥
#include<stdio.h>
#define M 5
void main()
{
int d[M],d2[M];
int flag[M]={0,},Flag=0;
int i,j;
printf("Please putin two digit strings from small to big:\n");
for(i=0;i<M;i++)
scanf("%d",&d[i]);
for(i=0;i<M;i++)
scanf("%d",&d2[i]);
for(i=0;i<M;i++)
for(j=0;j<M;j++)
if(d[i]==d2[j]&&flag[j]!=0)
{
flag[i]++;
Flag++;
}
printf("There are %d number is same!\n",Flag);
}
四:
/*C_ban*
所谓的魔方距阵就是一种特殊的奇数阶方阵:它的行,列,对角线,上的数字之和都要相等,且方阵中的每一个数字都不相等,且数字的范围都在1到n*n之间.
我编的程序如下:
*/
#include<stdio.h>
#define N 15
main()
{
int i,j,row,cloum,size,square[N][N],count;
clrscr();
printf("please enter the square size(odd && <=15):\n");
scanf("%d",&size);
while(size%2==0||size>15||size<3)
{
printf("error due to the wrng input!please input it again!\n");
scanf("%d",&size);
}
for(i=0;i<size;i++)
for(j=0;j<size;j++)
square[i][j]=0;
i=0;j=(size-1)/2;
square[i][j]=1;
for(count=2;count<=size*size;count++)
{
row=i-1<0?(size-1):(i-1);
cloum=j-1<0?(size-1):(j-1);
if(square[row][cloum])
i=(++i)%size;
else
{i=row;
j=j-1<0?(size-1):(j-1);
}
square[i][j]=count;
}
printf("the %d square is:\n",size);
for(i=0;i<size;i++)
{
for(j=0;j<size;j++)
printf("%d",square[i][j]);
printf("\n");
}
}
只能求奇数的魔方阵
#define N 20
main()
{
int a[N][N];
int n,i,j,r;
scanf("%d",&n);
for(i=0;i<N;i++) for(j=0;j<N;j++) a[i][j]=0;
i=0;
j=n/2;
a[i][j]=1;
for (r=2;r<=n*n;r++)
if (a[(i+n-1)%n][(j+1)%n]==0)
{i=(i+n-1)%n;j=(j+1)%n;a[i][j]=r;}
else
{i=(i+1)%n;a[i][j]=r;}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++) printf("%4d",a[i][j]);
printf("\n");
}
}
五、
#include<stdio.h>
#define M 50
void main()
{
char Money[M];
int a[M],A;
int i,j,k,flag=0;
gets(Money);
j=A=0;
for(i=0;Money[i]!=0;i++)
{
if(Money[i]>='0'&&Money[i]<=9)
{
A=A+Money[i]-'0';
a[j]=A;
A=A*10;
}
else if(Money[i-1]>='0'&&Money[i-1<=9])
{
j++;
A=0;
}
if(Money[i+1]==0)
k=j;
}
for(i=j-1;i>=0;j--)
if(a[j]-a[i]>0)
flag=flag+a[j]/a[i];
printf("%d",flag);
}
main()
{
int i cnt=0um;
char ch[80],c;
gets(ch);
fscanf("%c",&c);
num=stlen(ch);
for(i=0;i<num;i++)
{
if(ch[i]=='c')
cnt++;
}
printf("%s %d",ch,cnt);
}