字符逆序
将一个字符串str的内容颠倒过来,并输出。str的长度不超过100个字符
#include<stdio.h>
#include<string.h>
int main()
{
char a[100];
gets(a);
int n,i;
n=strlen(a);
for(i=0;i<n;i++)
{
printf("%c",a[i]);
}
printf("\n");
for(i=n-1;i>=0;i--)
{
printf("%c",a[i]);
}
}
蛇形矩阵
蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。例如输入行数为5,输出
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
# include <stdio.h>
int main()
{
int N,i,j,m=1,k=0;// k和m 控制着 不同行元素的求解
scanf("%d",&N);
for(i=1;i<=N;i++)//控制行数
{
for(j=1;j<=N-k;j++,m++) //控制每一行元素
{
if(j==N-k+1) //最后不留空格
{
printf("%d",m*(m+1)/2-k);
break;
}
else
{
printf("%d ",m*(m+1)/2-k);
}
}
printf("\n");
k++;
m=i+1;
}
return 0;
}
第一行 m*(m+1)/2
第二行 m*(m+1)/2-1 m>=2
第三行 m*(m+1)/2-2 m>=3
校园的树
某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,…L,都种有一棵树。马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将树移走后,马路上还有多少棵树。
#include<stdio.h>
int main()
{
int L,M,i;
scanf("%d %d",&L,&M);
int a[L+1];
for(i=0;i<=L;i++)
{
a[i]=1;
}
int x1,x2,sum=0;
while(M--)
{
scanf("%d %d",&x1,&x2);
for(i=x1;i<=x2;i++)
{
a[i]=0;
}
getchar();
}
for(i=0;i<=L;i++)
{
if(a[i]!=0)
sum++;
}
printf("%d",sum);
}
做题的方法和报数的方法类似,把不需要的位置赋值为0。
采药(no)
辰辰是个天资聪颖的孩子,医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”
输入:输入第一行有两个整数T(1 <= T <= 1000)和M(1 <= M <= 100),用一个空格隔开,T代表总共能够用来采药的时间,M代表山洞里的草药的数目。接下来的M行每行包括两个在1到100之间(包括1和100)的整数,分别表示采摘某株草药的时间和这株草药的价值。
明明的随机数
明明做一项问卷调查,先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
#include<stdio.h>
int main()
{
int n,b,c,i,j,t,a[100];
scanf("%d",&n);
c=n;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);//输入10个数
}
for(i=0;i<n-1;i++)
{
b=a[i];
for(j=i+1;j<n;j++)
{
if(b==a[j]&&b!=0)
{
a[j]=0;//令后面重复的数字为0
c--;
}
}
}
for(i=0;i<n-1;i++)//冒泡排序
{
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
printf("%d\n",c);
for(i=0;i<n;i++)
{
if(a[i]!=0)
printf("%d ",a[i]);
}
return 0;
}