8.1匹配问题
#include<stdio.h>
int a[1000];
int main()
{
int i,j,n,m,sum=0;
printf("请输入两个数:");
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)//数据的输入
scanf("%d",&a[i]);
for(i=0;i<n;i++)//把其中的一个数与后面的每一个数进行相加看看是否能够满足条件
{
for(j=i+1;j<n;j++)
{
if(a[i]+a[j]==m)
sum++;
}
}
printf("%d",sum);
return 0;
}
8.4找子串
//找子串
#include<stdio.h>
#include<string.h>
char a[1000],b[1000];
int main()
{
int i,j,sum=0;
printf("请输入一个母串,一个子串:");
gets(a);
gets(b);
for(i=0;i<strlen(a)-strlen(b);i++)//总要做几次循环
{
j=0;
while(j<strlen(b))//去比对是否一样
if(a[i+j]==b[j])
j++;
else//不一样,i进行累加,去找下一个
break;
if(j==strlen(b))//满足j=5的,进行统计一次
sum++;
}
printf("sum=%d\n",sum);
}
8.5密文
//密文
#include<stdio.h>
char a[1000];//
int main()
{
int i;
printf("请输入一个字母串:");
gets(a);
for(i=0;a[i];i++)
{
a[i]=(a[i]-'a'+3)%26+'a';//当a[i}为A到W为加3,x到z为减23;
}
puts(a);
return 0;
}
8.6数字矩阵
#include<stdio.h>
int a[9][9];
int main()
{
int n,i,j,k=1;
printf("输入一个n: ");//输入一个数,
scanf("%d",&n);
while(k<=n)//一共要做的循环n次
{
for(i=k;i<=2*n-k;i++)//将同一层的四边赋值
{
a[k][i]=k;
a[2*n-k][i]=k;
a[i][k]=k;
a[i][2*n-k]=k;
}
k++;
}
printf("打印数组\n");
for(i=1;i<=2*n-1;i++)//打印出来
{
for(j=1;j<=2*n-1;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}
8.7 讨厌osu
//讨厌ous,有去看课件,现在有点小明白
#include<stdio.h>
char s[1000],op[1000];//建立字符串
int main()
{
int i,top=0;
printf("输入一个字符串:");
gets(s);
for(i=0;s[i];i++)//去扫描字符s 当先两次top<2,s[i]给了op[top]
//然后去比是否有osu,如果有,
{
if(top>=2 && op[top-2]=='o' && op[top-1]=='s' && s[i]=='u')
{
top-=2;op[top]=0;//删除osu
}
else
op[top++]=s[i];//将s的字符串给op
}
puts(op);
return 0;
}
8.8距离和问题 这题好像做错了
//距离和问题
#include<stdio.h>
float a[1000];
int main()
{
int i,n,j,k;
float t,sum=0;
printf("请输入一个数:");
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%f",&a);
for(i=n-1;i>=1;i--)//将数组进行冒泡排序(我做是升序)
{
k=i;
for(j=0;j<=k;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(i=0;i<n;i++)//将中位数与第项相减,然后累加起来
{
k=n/2;
if(i<k)
{
sum=a[k]-a[i];
}
else
sum=a[i]-a[k];
}
printf("%.1f",sum);//输出结果
return 0;
}
9.4苹果
#include<stdio.h>
int f(int m,int n)//m是苹果n是篮子
{
if(m==0||n==1)//当苹果为0或篮子为1 时,分法只有一种
return 1;
if(m<n)//篮子比苹果多时,就有n-m是空的,相当于m个苹果放入m个篮子中
return f(m,m);
else//当苹果多于篮子,分两种,一种是至少有一个篮子为空,m个苹果放到n-1篮子中,
//另一种是每个篮子都有至少一个苹果,m-n个苹果分到n个篮子中
return (f(m-n,n)+f(m,n-1));
}
int main()
{
int i,t,m,n,sum;
printf("请输入t组数据:");
scanf("%d",&t);
for(i=1;i<=t;i++)
{
printf("第i组数据:");
scanf("%d%d",&m,&n);
sum=f(m,n);
printf(" sum=%d",sum);
}
}
9.6幸运数//这题不太懂,有错
//幸运数,第一不是素数,个个位之和不为4的位数
#include<stdio.h>
#include<math.h>
int main()
{
int i,j,n,sum,k=0;
printf("请输入一个数:");
scanf("%d",&n);
for(i=2;i<=n;i++)//从 2 开始找是否幸运数
{
for(j=2;j<=sqrt(n);j++)//素数的判断
{
sum=0;
if((i%j)==0) //不是素数
{
int n=i;
while(n!=0)//一个数个个位的之和不为4的位数
{
sum+=n%10;
n=n/10;
}
}
else if(j>sqrt(n))//是素数
{
break;
}
}
if((sum%4)!=0)
k++;
}
printf("%d\n",k);
return 0;
}