西北工业大学POJ答案
绝对是史上最全版(不止100题哦……按首字母排序)
1.“1“的传奇
2.A+B
3.A+BⅡ
4.AB
5.ACKERMAN
6.Arithmetic Progressions
7.Bee
8.Checksum algorithm
9.Coin Test
10.Dexter need help
11.Double
12.Easy problem
13.Favorite number
14.Graveyard
15.Hailstone
16.Hanoi Ⅱ
17.Houseboat
18.Music Composer
19.Redistribute wealth
20.Road trip
21.Scoring
22.Specialized Numbers
23.Sticks
24.Sum of Consecutive
25.Symmetric Sort
26.The Clock
27.The Ratio of gainers to losers
28.VOL大学乒乓球比赛
29.毕业设计论文打印
30.边沿与内芯的差
31.不会吧,又是A+B
32.不屈的小蜗
33.操场训练
34.插入链表节点
35.插入排序
36.插入字符
37.成绩表计算
38.成绩转换
39.出租车费
40.除法
41.创建与遍历职工链表
42.大数乘法
43.大数除法
44.大数加法
45.单词频次
46.迭代求根
47.多项式的猜想
48.二分查找
49.二分求根
50.发工资的日子
51.方差
52.分离单词
53.分数拆分
54.分数化小数
55.分数加减法
56.复数
57.高低交换
58.公园喷水器
59.韩信点兵
60.行程编码压缩算法
61.合并字符串
62.猴子分桃
63.火车站
64.获取指定二进制位
65.积分计算
66.级数和
67.计算A+B
68.计算PI
69.计算π
70.计算成绩
71.计算完全数
72.检测位图长宽
73.检查图像文件格式
74.奖金发放
75.阶乘合计
76.解不等式
77.精确幂乘
78.恐怖水母
79.快速排序
80.粒子裂变
81.链表动态增长或缩短
82.链表节点删除
83.两个整数之间所有的素数
84.路痴
85.冒泡排序
86.你会存钱吗
87.逆序整数
88.排列
89.排列分析
90.平均值函数
91.奇特的分数数列
92.求建筑高度
93.区间内素数
94.三点顺序
95.山迪的麻烦
96.删除字符
97.是该年的第几天
98.是该年的第几天?
99.数据加密
100.搜索字符
101.所有素数
102.探索合数世纪
103.特殊要求的字符串
104.特殊整数
105.完全数
106.王的对抗
107.危险的组合
108.文件比较
109.文章统计
110.五猴分桃
111.小型数据库
112.幸运儿
113.幸运数字”7“
114.选择排序
115.寻找规律
116.循环移位
117.延伸的卡片
118.羊羊聚会
119.一维数组”赋值“
120.一维数组”加法“
121.勇闯天涯
122.右上角
123.右下角
124.圆及圆球等的相关计算
125.圆及圆球等相关计算
126.程序员添加行号
127.找出数字
128.找幸运数
129.找最大数
130.整数位数
131.重组字符串
132.子序列的和
133.子字符串替换
134.自然数立方的乐趣
135.字符串比较
136.字符串复制
137.字符串加密编码
138.字符串逆序
139.字符串排序
140.字符串替换
141.字符串左中右
142.组合数
143.最次方数
144.最大乘积
145.最大整数
146.最小整数
147.最长回文子串
148.左上角
149.左下角
1.“1“的传奇
#include
#include
#include
int main()
{
int n,i,j,k=0,x=1,y,z,m,p,q,a,s=0;
scanf("%d",&n);
m=n;
for(i=1;i<12;i++)
{
m=m/10;
k++;
if(m==0)
break;
}
q=n;
k=k-1;
for(a=1;a<=k;a++)
{
x=x*10;
}
y=q%x;
z=q/x;
p=q-y;
if(z>=2)
s=s+x+z*k*(x/10);
else
s=s+z*k*(x/10);
for(j=p;j<=n;j++)
{
m=j;
for(i=1;i<12;i++)
{
x=m%10;
if(x==1)
s++;
m=m/10;
if(m==0)
break;
}
}
printf("%d",s);
return 0;
}
2.A+B
#include
int doubi(int n,int m)
{
n=n+m;
n=n%100;
return n;
}
int main()
{
int t,i,a[100],n,m;
scanf("%d",&t);
for (i=0;i<=(t-1);i++){
scanf("%d%d",&n,&m);
a[i]=doubi(n,m);
}
for (i=0;i<=(t-1);i++)
printf("%d\n",a[i]);
return 0;
}
3.A+BⅡ
#include
int main()
{
int A,B,sum;
scanf("%d%d",&A,&B);
sum=A+B;
printf("%d\n",sum);
return 0;
}
4.AB
#include
#include
#include
int main()
{
char s[100],q[100];
double a,b,c;
int n=0,i;
scanf("%lf%lf",&a,&b);
c=a*b;
sprintf(s,"%.0lf",c);
for(i=0;i
n=n+s[i]-48;}
while(n>=10){
sprintf(q,"%d",n);
n=0;
for(i=0;i
n=n+q[i]-48;
}
printf("%d",n);
return 0;
}
5.ACKERMAN
#include
#include
#include
int ack(int x,int y)
{
int n;
if (x==0) {n=y+1;
return n;}
else if (y==0) n=ack(x-1,1);
else n=ack(x-1,ack(x,y-1));
return n;
}
int main()
{
int m,b;
scanf("%d%d",&m,&b);
m=ack(m,b);
printf("%d",m);
return 0;
}
6.Arithmetic Progressions
#include
#include
#include
int g(int n)
{
int i;
if(n==1) return 0;
if(n==2) return 1;
if(n==3) return 1;
for(i=2;i<=sqrt(n);i++) if(n%i==0) return 0;
return 1;
}
int f(int a,int b,int c)
{
int i=0,s=a-b;
if(c==1&&g(a)==1) return a;
if(b==0&&g(a)!=1) return -1;
while(1){
s=s+b;
if(g(s)) i++;
if(i>=c) break;
}
return s;
}
int main()
{
int a,b,c,d[100],i=0,n;
while(1){
scanf("%d%d%d",&a,&b,&c);
if(a==0&&b==0&&c==0) break;
d[i]=f(a,b,c);
i++;
}
n=i;
for(i=0;i
printf("%d\n",d[i]);
return 0;
}
7.Bee
#include
#include
int main()
{
int A[100],i=0,j,k,female=0,male=1,x;
for(;;i++)
{
scanf("%d",&A[i]);
if(A[i]==-1)
break;
}
for(j=0;j
{
female=0,male=1;
{
x=female;
female=male;
male=x+male+1;
}
printf("%d %d\n",male,female+male+1);
}
return 0;
}
8.Checksum algorithm
#include
#include
#include
int main()
{
int i,n,t,j;
char s[100][100];
for(i=0;;i++){
gets(s[i]);
if(s[i][0]=='#') break;
}
n=i;
for(i=0;i
t=0;
for(j=0;j
if(s[i][j]==32) t=t;
else t=t+(j+1)*(s[i][j]-64);
printf("%d\n",t);
}
return 0;
}
9.Coin Test
#include
#include
int main()
{
char A[100000];
int n,i=0,a=0,b=0,j;
double x;
while(1)
{
scanf("%c",&A[i]);
if(A[i]=='\n')
break;
i++;
}
for(j=0;j
{
if(A[j]=='S')
{
printf("WA");
goto OH;
}
if(A[j]=='U')
a++;
if(A[j]=='D')
b++;
}
x=a*1.0/(a+b)*1.0;
if(x-0.5>0.003||x-0.5<-0.003)
printf("Fail");
else
printf("%d/%d",a,a+b);
OH:return 0;
}
10.Dexter need help
#include
int fun(int a)
{
if(a==1) return 1;
else
return fun(a/2)+1;
}
int main()
{
int a,b[100],i=0,j;
while(1)
{
scanf("%d",&a);
if(a==0)break;
b[i]=fun(a);
i++;
}
for(j=0;j
printf("%d\n",b[j]);
}
return 0;
}
11.Double
#include
#include
#include
int main()
{
int a[100],b[100],i,j,n,t=0;
for(i=0;;i++){
scanf("%d",&a[i]);
if(a[i]==0) break;
}
n=i;
for(i=0;i
b[i]=2*a[i];
for(i=0;i
for(j=0;j
if(a[i]==b[j]) t++;
printf("%d",t);
return 0;
}
12.Easy problem
#include
#include
#include
int main()
{
int N,i,n,j=0;
scanf("%d",&N);
for(i=2;i
if((N+1)%i==0)j++;
}
printf("%d",j/2);
return 0;
}
13.Favorite number
#include
#include
#define MAXNUM 100000
int prime_number = 0;
int prime_list[MAXNUM];
bool is_prime[MAXNUM];
int ans[MAXNUM + 2];
int dp[MAXNUM + 2];
void set_prime() {
int i, j;
memset(is_prime, 0, sizeof(is_prime));
for (i = 2; i < MAXNUM; i++) {
if (is_prime[i] == 0) {
prime_list[prime_number++] = i;
if (i >= MAXNUM / i) continue;
for (j = i * i; j < MAXNUM; j+=i) {
is_prime[j] = 1;
}
}
}
}
int main() {
int i, j, k,o=0,d[100];
memset(dp, -1, sizeof(dp));
set_prime();
ans[0] = 0;
dp[1] = 0;
for (i = 1; i <= MAXNUM; i++) {
ans[i] = ans[i - 1] + dp[i];
if (dp[i + 1] == -1 || dp[i + 1] > dp[i] + 1) {
dp[i + 1] = dp[i] + 1;
}
for (j = 0; j < prime_number; j++) {
if (i > MAXNUM / prime_list[j]) break;
k = i * prime_list[j];
if (dp[k] == -1 || dp[k] > dp[i] + 1) {
dp[k] = dp[i] + 1;
}
}
}
while (scanf("%d%d", &i, &j) == 2 && (i || j)) {
d[o]=ans[j] - ans[i - 1];
o++;
}
for(i=0;i
printf("%d\n",d[i]);
}
14.Graveyard
#include
#include
#include
int main()
{
int a[100],b[100],n,i,j;
double s,p,l,t;
for(i=0;;i++){
scanf("%d%d",&a[i],&b[i]);
if(a[i]==0&&b[i]==0) break;
}
n=i;
for(i=0;i
p=10000;
if(b[i]%a[i]==0){printf("0.0000\n");continue;};
t=10000/((double)a[i]);
l=10000/((double)(a[i]+b[i]));
l=t-j*l;
l=fabs(l);
if(l } s=(a[i]-1)*p; printf("%.4lf\n",s); } return 0; } 15.Hailstone #include #include #include int f(int n) { int s=1; while(1){ if(n==1) return s; else if(n%2==0) n=n/2,s++; else n=3*n+1,s++; } } int main() { int n,m,i,j=0,t; scanf("%d%d",&m,&n); printf("%d %d",m,n); if(m>n) t=m,m=n,n=t; for(i=m;i<=n;i++) if(f(i)>j) j=f(i); printf(" %d",j); return 0; } 16.Hanoi Ⅱ #include #include #define M 70 int start[M], targe[M]; long long f(int *p, int k, int fina) { if(k==0) return 0; if(p[k]==fina) return f(p,k-1,fina); return f(p,k-1,6-fina-p[k])+(1LL<<(k-1)); } int main () { long long ans; int n; while(scanf("%d",&n),n) { int i; for(i=1;i<=n;i++) scanf("%d",&start[i]); for(i=1;i<=n;i++) scanf("%d",&targe[i]); int c=n; for(;c>=1&&start[c]==targe[c];c--); if(c==0) { printf("0\n"); continue; } int other=6-start[c]-targe[c]; ans=f(start,c-1,other)+f(targe,c-1,other)+1; printf("%lld\n",ans); } return 0; } 17.Houseboat #include #include #include #define pi 3.1415926 int f(float x,float y) { int i; for(i=0;;i++) if(50*i>sqrt(x*x+y*y)*sqrt(x*x+y*y)*pi/2) break; return i; } int main() { int n,i,a[100]; float x,y; scanf("%d",&n); for(i=0;i scanf("%f%f",&x,&y); a[i]=f(x,y); } for(i=0;i printf("%d %d\n",i+1,a[i]); return 0; } 18.Music Composer 19.Redistribute wealth #include #include #include int main() { int a[1000],b[1000],n,i,j,s,sum,t,m,mid,c[100],k=0; while(1){ scanf("%d",&n); if(n==0) break; { s=0; for(i=1;i<=n;i++){ scanf("%d",&a[i]); s=s+a[i];} m=s/n; b[1]=a[1]-m; b[0]=0; for(i=2;i b[i]=b[i-1]+a[i]-m; for(i=0;i for(j=0;j if(b[j]>b[j+1]) t=b[j],b[j]=b[j+1],b[j+1]=t; mid=b[n/2]; sum=0; for(i=0;i<=n-1;++i) sum=sum+fabs(mid-b[i]); c[k]=sum;k++; }} for(i=0;i return 0; } 20.Road trip #include #include #include int f(int n) { int a[100],b[100],i,s; for(i=0;i scanf("%d%d",&a[i],&b[i]); s=a[0]*b[0]; for(i=1;i s=s+a[i]*(b[i]-b[i-1]); return s; } int main() { int n,c[100],i=0; while(1){ scanf("%d",&n); if(n==-1) break; c[i]=f(n); i++; } n=i; for(i=0;i printf("%d\n",c[i]); return 0; } 21.Scoring #include #include #include int main() { int i,j,sum,min,c,count,n,a,b; char s1[50],s2[50]; scanf("%d",&n); for(i=0;i { count=sum=0; scanf("%s",s2); for(j=0;j<4;j++) { scanf("%d%d",&a,&b); if(b!=0) { sum+=(a-1)*20+b; count++; } } if(i==0) { c=count,min=sum; strcpy(s1,s2); } else if(count>c||(count==c&&sum { min=sum; c=count; strcpy(s1,s2); } } printf("%s %d %d\n",s1,c,min); return 0; } 22.Specialized Numbers #include #include int main() { int i,n,sum10,sum12,sum16; for(i=2992;i<3000;i++){ n=i; sum10=0; while(n){ sum10+=n%10; n/=10; } n=i; sum12=0; while(n){ sum12+=n%12; n/=12; } n=i; sum16=0; while(n){ sum16+=n%16; n/=16; } if(sum10==sum12&&sum12==sum16) printf("%d\n",i); } return 0; } 23.Sticks #include #include #include int len[64], n, minlen, get; bool b[64]; int cmp(const void *a, const void *b) { return *(int *)a < *(int *)b ? 1 : -1; } bool dfs(int nowlen, int nowget, int cnt) { if(cnt >= n) return false; if(get == nowget) return true; int i; bool f = false; if(nowlen == 0) f = true; for(i = cnt; i < n; i++) { if(!b[i]) { if(len[i] + nowlen == minlen) { b[i] = true; if(dfs(0, nowget+1, nowget)) return true; b[i] = false; return false; } else if(len[i] + nowlen < minlen) { b[i] = true; if(dfs(nowlen+len[i], nowget, i+1)) return true; b[i] = false; if(f) return false; while(i + 1 < n && len[i] == len[i+1]) i++; } } } return false; } int main() { int i, tollen; while(scanf("%d", &n), n) { tollen = 0; int j = 0, p; for(i = 0; i < n; i++) { scanf("%d", &p); if(p <= 50) { len[j] = p; tollen += len[j]; j++; } } n = j; if(n == 0) { printf("0\n"); continue; } qsort(len, n, sizeof(int), cmp); for(minlen = len[0]; ; minlen++) { if(tollen % minlen) continue; memset(b, 0, sizeof(b)); get = tollen / minlen; if(dfs(0, 0, 0)) { printf("%d\n", minlen); break; } } } return 0; } 24.Sum of Consecutive #include #include #include int len[64],n,minlen,get; int b[64]; int cmp(const void *a,const void *b) { return *(int *)a<*(int *)b?1:-1; } int dfs(int nowlen,int nowget,int cnt) { if(cnt>=n) return 0; if(get==nowget) return 1; int i,f=0; if(nowlen==0) f=1; for(i=cnt;i if(len[i]+nowlen==minlen){ b[i]=1; if(dfs(0,nowget+1,nowget)) return 1; b[i]=0; return 0; } else if(len[i]+nowlen b[i]=1; if(dfs(nowlen+len[i],nowget,i+1)) return 1; b[i]=0; if(f) return 0; while(i+1 } } return 0; } int main() { int i,tollen,q=0,c[100]; while(scanf("%d",&n),n){ tollen=0; int j=0,p; for(i=0;i scanf("%d",&p); if(p<=50){ len[j]=p; tollen+=len[j]; j++; } } n=j; if(n==0){printf("0\n"); continue;} qsort(len,n,sizeof(int),cmp); for(minlen=len[0];;minlen++){ if(tollen%minlen) continue; memset(b,0,sizeof(b)); get=tollen/minlen; if(dfs(0,0,0)){ c[q]=minlen; q++; break; } } } for(i=0;i printf("%d\n",c[i]); return 0; } 25.Symmetric Sort #include #include #include int main() { double A[100]; int i=0,j=0,k=0,l=0,sum=0; while(1) { scanf("%lf",&A[i]); if(A[i]==0) break; i++; } for(j=0;j { if(A[j]==2)printf("1\n"); else{ int B[10000],m=1,number=0; double n; B[0]=2; for(k=3;k<=A[j];k+=2) { n=(double)k; for(l=2;l<=sqrt(n);l++) { if(k%l==0) goto ai; } B[m]=k; m++; ai:; } for(k=0;k { sum=0; for(l=k;l { sum+=B[l]; if(sum==A[j]) { number++; break; } } } printf("%d\n",number); } } return 0; } 26.The Clock #include #include #include int main() { char s[100][100],a[100]; int i,j,n; scanf("%d",&n); for(i=0;i for(i=0;i for(j=0;j if(strlen(s[i])>strlen(s[i+1])) strcpy(a,s[i]),strcpy(s[i],s[i+1]),strcpy(s[i+1],a); if(n%2==0){ for(i=0;i printf("%s ",s[n-1]); for(i=i-3;i>0;i=i-2) printf("%s ",s[i]); } else{ for(i=0;i printf("%s ",s[n-1]); for(i=i-1;i>0;i=i-2) printf("%s ",s[i]); } return 0; } 27.The Ratio of gainers to losers #include int main() { char s[5]; int i,sum=0; gets(s); for(i=0;s[i]!='\0';i++) { switch(s[i]) { case'I': sum+=1;break; case'V': sum=5-sum;break; case'X':sum=10-sum;break; } } printf("%d\n",sum); return 0; } 28.VOL大学乒乓球比赛 #include #include int main() { printf("A=Z\nB=X\nC=Y\n"); return 0; } 29.毕业设计论文打印 #include #include int main() { int a[100],j=1,i,n,m; scanf("%d%d",&n,&m); for(i=0;i scanf("%d",&a[i]); for(i=0;i if(a[i]>a[m]) j++; printf("%d",j++); return 0; } 30.边沿与内芯的差 #include #include int main() { int A[100][100],i,j,m,n,s=0,t=0; scanf("%d%d",&n,&m); for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { scanf("%d",&A[i][j]); } } for(i=2;i s=s+A[1][i]; for(i=2;i s=s+A[n][i]; for(i=1;i<=n;i++) s=s+A[i][1]; for(i=1;i<=n;i++) s=s+A[i][m]; for(i=2;i { for(j=2;j { t=t+A[i][j]; } } s=s-t; printf("%d",s); return 0; } 31.不会吧,又是A+B #include #include int main() { int AH,AM,AS,BH,BM,BS; scanf("%d%d%d%d%d%d",&AH,&AM,&AS,&BH,&BM,&BS); AH=AH+BH; AM=AM+BM; AS=AS+BS; if(AS>=60){ AM=AM+1; AS=AS-60; } if(AM>=60){ AH=AH+1; AM=AM-60; } printf("%d %d %d",AH,AM,AS); return 0; } 32.不屈的小蜗 #include #include int main() { int n,i,s=0; scanf("%d",&n); for(i=0;;i++){ s=s+10; if(s>=n) break; s=s-5; } printf("%d",i+1); return 0; } 33.操场训练 #include #include #include void BubbleSort(double A[],int s,int m) { int i,j; double k; for(j=s;j for(i=s;i if(A[i]>A[i+1]) { k=A[i]; A[i]=A[i+1]; A[i+1]=k; } } int main() { int n,i; double X[10000],Y[10000],s1=0,s2=0,s=0; scanf("%d",&n); for(i=0;i { scanf("%lf%lf",&X[i],&Y[i]); s2+=X[i]; } BubbleSort(X,0,n); for(i=0;i s1+=X[i]-i*1.0; s1=(int)((s1/n) + 0.5); s2=(int)((s2/n) + 0.5); for(i=0;i s=s+abs(X[i]-i-s1)+abs(Y[i]-s2); printf("%.0lf",s); return 0; } 34.插入链表节点 #include #include typedef struct tagLNode{ int data; struct tagLNode *next; }LNode,*LinkList; void create(LinkList *l,int n) { LinkList p,s; p=*l=(LinkList)malloc(sizeof(LNode)); for(;n>0;n--){ s=(LinkList)malloc(sizeof(LNode)); scanf("%d",&s->data); p->next=s,p=s; } p->next=NULL; } void list(LinkList l) { LinkList p=l->next; while(p!=NULL){ printf("%d ",p->data); p=p->next; } } void chazhao(LinkList l,int n) { LinkList p=l->next,s,q; int i,j,k; for(i=0;i<100;i++){ j=p->data; q=p->next; k=q->data; if(j p=p->next;} s=(LinkList)malloc(sizeof(LNode)); s->data=n; s->next=p->next,p->next=s; } int main() { LinkList q; int n,m; q=(LinkList)malloc(sizeof(LNode)); scanf("%d",&n); create(&q,n); scanf("%d",&m); chazhao(q,m); list(q); return 0; } 35.插入排序 #include #include void charu(int a[],int s,int m) { int i,k,t; for(i=s+1;i<=s+m-1;i++){ t=a[i];k=i-1; while(t>a[k]){ a[k+1]=a[k]; k--; if(k==s-1)break; } a[k+1]=t; } } int main() { int a[100],n,i,s,m; scanf("%d",&n); m=n; for(i=0;i scanf("%d",&a[i]); scanf("%d%d",&s,&m); charu(a,s,m); for(i=0;i printf("%d ",a[i]); return 0; } 36.插入字符 #include #include int main() { char A[80]={0},*p,x; int i; p=A; gets(A); scanf("%c%d",&x,&i); for(;*p!='\0';p++); for(;p>A+i;p--) *p=*(p-1); *(A+i)=x; puts(A); return 0; } 37.成绩表计算 #include #include struct tag{ long int no; char name[21]; int age; double yy,sx,yw,zz,wl,hx,xx,s,jun; }; int main() { struct tag a[10],t,q; int i,j; for(i=0;i<10;i++) scanf("%ld%s%d%lf%lf%lf%lf%lf%lf%lf",&a[i].no,a[i].name,&a[i].age,&a[i].yy,&a[i].sx,&a[i].yw,&a[i].zz,&a[i].wl,&a[i].hx,&a[i].xx); for(i=0;i<10;i++){ a[i].s=a[i].yy+a[i].sx+a[i].yw+a[i].zz+a[i].wl+a[i].hx+a[i].xx; a[i].jun=a[i].s/7; } t.s=a[0].s; for(i=1;i<10;i++) if(a[i].s>t.s){ t.s=a[i].s; j=i;} q=a[j]; printf("%ld %s %d %.2lf %.2lf %.2lf %.2lf %.2lf %.2lf %.2lf",q.no,q.name,q.age,q.yy,q.sx,q.yw,q.zz,q.wl,q.hx,q.xx); return 0; } 38.成绩转换 #include #include int main() { int a; scanf("%d",&a); if(a>=90)printf("A\n"); else if(a>=80)printf("B\n"); else if(a>=70)printf("C\n"); else if(a>=60)printf("D\n"); else printf("E\n"); return 0; } 39.出租车费 #include #include #include int main() { double a,b,c; scanf("%lf",&a); if(a>2) { if(a>15) { c=ceil(a-15); b=26.5+2.1*c; printf("%.6lf",b); } else { c=ceil(a-2); b=7+1.5*c; printf("%.6lf",b); } } else printf("7.000000"); return 0; } 40.除法 #include #include #include int main() { int a,n,i,j,x,y,z,A[10000],B[10],m=1; scanf("%d",&n); for(i=10000;i<100000;i++) { a=i%n; if(a==0) { A[m]=i; m++; } } for(j=1;j<=m;j++) { x=A[j]/n; if(x<1000) a:continue; else { B[1]=A[j]%10; B[2]=(A[j]/10)%10; B[3]=(A[j]/100)%10; B[4]=(A[j]/1000)%10; B[5]=(A[j]/10000)%10; B[6]=x%10; B[7]=(x/10)%10; B[8]=(x/100)%10; B[9]=(x/1000)%10; B[10]=(x/10000)%10; for(y=1;y<11;y++) { for(z=y+1;z<11;z++) { if(B[y]-B[z]==0) goto a; } } } if(x<10000) printf("%d/0%d=%d\n",A[j],x,n); else printf("%d/%d=%d\n",A[j],x,n); } return 0; } 41.创建与遍历职工链表 #include #include #include typedef struct tagLNode{ int data; struct tagLNode *next; }LNode,*LinkList; void create(LinkList *l,int n) { LinkList p,s; p=*l=(LinkList)malloc(sizeof(LNode)); for(;n>0;n--){ s=(LinkList)malloc(sizeof(LNode)); scanf("%d",&s->data); p->next=s,p=s; } p->next=NULL; } void list(LinkList l) { LinkList p=l->next; while(p!=NULL){ printf("%d ",p->data); p=p->next; } } int main() { LinkList q; int n; q=(LinkList)malloc(sizeof(LNode)); scanf("%d",&n); create(&q,n); list(q); return 0; } 42.大数乘法 #include #include #include void cheng(char a[],char b[]) { int i,j,ca,cb,*s; ca=strlen(a); cb=strlen(b); s=(int *)malloc(sizeof(int)*(ca+cb)); for (i=0;i for (i=0;i for (j=0;j s[i+j+1]+=(a[i]-'0')*(b[j]-'0'); for (i=ca+cb-1;i>=0;i--) if (s[i]>=10) { s[i-1]+=s[i]/10; s[i]%=10; } i=0; while(s[i]==0) i++; for (;i printf("\n"); free(s); } int main() { char a[100],b[100]; gets(a),gets(b); if(a[0]=='-'&&b[0]!='-') { printf("-"); cheng(&a[1],b); } else if(a[0]=='-'&&b[0]=='-') { cheng(&a[1],&b[1]); } else if(a[0]!='-'&&b[0]=='-') { printf("-"); cheng(a,&b[1]); } else cheng(a,b); return 0; } 43.大数除法 #include #include #define MAXSIZE 1025 void Div(char *str1, char *str2, char *str3) { int i1, i2, i, j, jj, tag, carry, cf, c[MAXSIZE]; int len1 = strlen(str1), len2 = strlen(str2), lend; char d[MAXSIZE]; memset(c, 0, sizeof(c)); memcpy(d, str1, len2); lend = len2; j = 0; for( i1=len2-1; i1 < len1; ++i1 ) { if( lend < len2 ) { d[lend] = str1[i1+1]; c[j] = 0; ++j; ++lend; } else if( lend == len2 ) { jj = 1; for( i=0; i < lend; ++i ) { if( d[i] > str2[i] ) break; else if( d[i] < str2[i] ) { jj = 0; break; } } if( jj == 0 ) { d[lend] = str1[i1+1]; c[j] = 0; ++j; ++lend; continue; } } if( jj==1 || lend > len2 ) { cf = jj=0; while( d[jj] <= '0' && jj < lend ) ++jj; if( lend-jj > len2 ) cf = 1; else if( lend-jj < len2 ) cf = 0; else { i2 = 0; cf = 1; for( i=jj; i < lend; ++i ) { if( d[i] < str2[i2] ) { cf = 0; break; } else if( d[i] > str2[i2] ) { break; } ++i2; } } while( cf ) { i2 = len2-1; cf = 0; for( i=lend-1; i >= lend-len2; --i ) { d[i] = d[i]-str2[i2]+'0'; if( d[i] < '0' ) { d[i] = d[i]+10; carry = 1; --d[i-1]; } else carry = 0; --i2; } ++c[j]; jj=0; while( d[jj] <= '0' && jj < lend ) ++jj; if( lend-jj > len2 ) cf = 1; else if( lend-jj < len2 ) cf = 0; else { i2 = 0; cf = 1; for( i=jj; i < lend; ++i ) { if( d[i] < str2[i2] ) { cf = 0; break; } else if( d[i] > str2[i2] ) { break; } ++i2; } } } jj = 0; while( d[jj] <= '0' && jj < lend ) ++jj; for( i=0;i < lend-jj; ++i ) d[i] = d[i+jj]; d[i] = str1[i1+1]; lend = i+1; ++j; } } i = tag = 0; while( c[i] == 0 ) ++i; for( ; i < j; ++i, ++tag ) str3[tag] = c[i]+'0'; str3[tag] = '\0'; } int main() { char a[110], b[110], c[110]; scanf( "%s%s", a, b ); if(a[0]=='-'&&b[0]!='-') printf("-"); if(b[0]=='-'&&a[0]!='-') printf("-"); Div( a, b, c ); printf( "%s\n", c ); return 0; } 44.大数加法 #include #include #include #include void add(const char *num1, const char *num2, char *result) { if(!result) return; if(!num1) { strcpy(result, num2); return; } if(!num2) { strcpy(result, num1); return; } char mark; int bits1, bits2; char *temp_str = NULL; char *temp_str2 = NULL; int temp, max, min, a; if(num1[0] == '-' && num2[0] != '-') { bits1 = strlen(num1) - 1; bits2 = strlen(num2); max = bits1 > bits2 ? bits1 : bits2; min = bits1 < bits2 ? bits1 : bits2; if(bits1 > bits2) mark = 1; else if(bits1 < bits2) mark = 0; else{ temp = strcmp(num1+1, num2); if(temp > 0) mark = 1; else if(temp < 0) mark = 0; else { result = "0"; return; } } if(mark == 1) { max++; temp_str = (char *) malloc(max+1); assert(temp_str != NULL); memset(temp_str, '0', max+1); strcpy(temp_str, num1); while(min-- > 0) { a = temp_str[--max] - num2[--bits2]; if(a < 0) { temp_str[max - 1]--; a += 10; } temp_str[max] = a + '0'; } temp_str2 = temp_str; while(*(++temp_str) == '0') ; if(*temp_str == '\0') result = "0"; else{ strcpy(result+1, temp_str); result[0] = '-'; } temp_str = temp_str2; }else{ temp_str = (char *) malloc(max+1); assert(temp_str != NULL); memset(temp_str, '0', max+1); strcpy(temp_str, num2); while(min-- > 0) { a = temp_str[--max] - num1[bits1--]; if(a < 0) { temp_str[max - 1]--; a += 10; } temp_str[max] = a + '0'; } temp_str2 = temp_str; while(*temp_str == '0') temp_str++; if(*temp_str == '\0') result = "0"; else strcpy(result, temp_str); temp_str = temp_str2; } if(temp_str) free(temp_str); return ; } else if(num1[0] != '-' && num2[0] == '-') { bits1 = strlen(num1); bits2 = strlen(num2) - 1; max = bits1 > bits2 ? bits1 : bits2; min = bits1 < bits2 ? bits1 : bits2; if(bits1 > bits2) mark = 0; else if(bits1 < bits2) mark = 1; else{ temp = strcmp(num1, num2+1); if(temp > 0) mark = 0; else if(temp < 0) mark = 1; else { result = "0"; return; } } if(mark == 1) { max++; temp_str = (char *) malloc(max+1); assert(temp_str != NULL); memset(temp_str, '0', max+1); strcpy(temp_str, num2); while(min-- > 0) { a = temp_str[--max] - num1[--bits1]; if(a < 0) { temp_str[max - 1]--; a += 10; } temp_str[max] = a + '0'; } temp_str2 = temp_str; while(*(++temp_str) == '0') ; if(*temp_str == '\0') result = "0"; else{ strcpy(result+1, temp_str); result[0] = '-'; } temp_str = temp_str2; } else{ temp_str = (char *) malloc(max+1); assert(temp_str != NULL); memset(temp_str, '0', max+1); strcpy(temp_str, num1); while(min-- > 0) { a = temp_str[--max] - num2[bits2--]; if(a < 0) { temp_str[max - 1]--; a += 10; } temp_str[max] = a + '0'; } temp_str2 = temp_str; while(*temp_str == '0') temp_str++; if(*temp_str == '\0') result = "0"; else strcpy(result, temp_str); temp_str = temp_str2; } if(temp_str) free(temp_str); return ; } else if(num1[0] == '-' && num2[0] == '-') { bits1 = strlen(num1) - 1; bits2 = strlen(num2) - 1; max = bits1 > bits2 ? bits1 : bits2; min = bits1 < bits2 ? bits1 : bits2; max += 2; temp_str = (char *) malloc(max+1); assert(temp_str != NULL); memset(temp_str, '0', max+1); if(bits1 > bits2) { strcpy(temp_str+2, num1+1); while(min-- > 0) { a = (temp_str[--max] - '0') + (num2[bits2--] - '0'); if(a >= 10) { temp_str[max - 1]++; a -= 10; } temp_str[max] = a + '0'; } }else{ strcpy(temp_str+2, num2+1); while(min-- > 0) { a = (temp_str[--max] - '0') + (num1[bits1--] - '0'); if(a >= 10) { temp_str[max - 1]++; a -= 10; } temp_str[max] = a + '0'; } } temp_str2 = temp_str; while(*(++temp_str) == '0') ; if(*temp_str == '\0') result = "0"; else{ strcpy(result+1, temp_str); result[0] = '-'; } if(temp_str2) free(temp_str2); return ; } else{ bits1 = strlen(num1); bits2 = strlen(num2); max = bits1 > bits2 ? bits1 : bits2; min = bits1 < bits2 ? bits1 : bits2; max++; temp_str = (char *) malloc(max+1); assert(temp_str != NULL); memset(temp_str, '0', max+1); if(bits1 > bits2) { strcpy(temp_str+1, num1); while(min-- > 0) { a = (temp_str[--max] - '0') + (num2[--bits2] - '0'); if(a >= 10) { temp_str[max - 1]++; a -= 10; } temp_str[max] = a + '0'; } }else{ strcpy(temp_str+1, num2); while(min-- > 0) { a = (temp_str[--max] - '0') + (num1[--bits1] - '0'); if(a >= 10) { temp_str[max - 1]++; a -= 10; } temp_str[max] = a + '0'; } } temp_str2 = temp_str; while(*temp_str == '0') temp_str++; if(*temp_str == '\0') result = "0"; else strcpy(result, temp_str); if(temp_str2) free(temp_str2); return ; } } int main() { char a[100],b[100],c[100]; gets(b); gets(c); add(b,c,a); printf("%s",a); return 0; } 45.单词频次 #include #include int main() { char s[1000][1000]; FILE *p; int i,j=0,k=0,h=0,q=0,e; p=fopen("DATA5610.TXT","r"); while(!feof(p)){ if(fgets(s[q],999,p)==NULL) continue; q++; } e=q; for(q=0;q for(i=0;i<1000;i++){ if(s[q][i]=='i'&&s[q][i+1]=='f') h++; if(s[q][i]=='w'&&s[q][i+1]=='h'&&s[q][i+2]=='i'&&s[q][i+3]=='l'&&s[q][i+4]=='e') j++; if(s[q][i]=='f'&&s[q][i+1]=='o'&&s[q][i+2]=='r') k++; } printf("%d %d %d",h,j,k); return 0; } 46.迭代求根 #include #include #include int main() { double a,b,c,d; scanf("%lf",&a); b=a; c=1; while ((fabs(b-c))>0.000001) { d=(b+(a/b))/2; c=b; b=d; }; printf("%.5lf",b); return 0; } 47.多项式的猜想 #include #include int main() { printf("6\n9\n11\n"); return 0; } 48.二分查找 #include #include int BinarySearch(int A[],int n,int find){ int low,upper,mid; low=0,upper=n-1; while(low<=upper){ mid=low+(upper-low)/2; if(A[mid] else if(A[mid]>find)upper=mid-1; else return mid; }return -1; } int main() { int A[100000],n,m,i,j; scanf("%d",&n); for(i=0;i scanf("%d",&A[i]); } scanf("%d",&j); i=BinarySearch(A,n,j); if(i>=0)printf("%d",i); else printf("null"); return 0; } 49.二分求根 #include #include int main() { double m,n,a,b,c,x; scanf("%lf%lf",&m,&n); while(c!=0) { x=(m+n)/2; a=2*m*m*m-4*m*m+3*m-6; b=2*n*n*n-4*n*n+3*n-6; c=2*x*x*x-4*x*x+3*x-6; if(a*c>0) m=x; else n=x; } printf("%.2lf\n",x); return 0; } 50.发工资的日子 #include "stdio.h" int main() { int i,j,m,s=0; scanf("%d",&j); for(m=0;m scanf("%d",&i); if(i==0){ break; } if(i>=100){ s=s+i/100; i=i%100; } if(i>=50){ s=s+i/50; i=i%50; } if(i>=10){ s=s+i/10; i=i%10; } if(i>=5){ s=s+i/5; i=i%5; } if(i>=2){ s=s+i/2; i=i%2; } if(i>=1){ s++; } } printf("%d",s); return 0; } 51.方差 #include #include int main() { int n; double x,s=0,m=0,i; scanf("%d",&n); for(i=0;i { scanf("%lf",&x); s=s+x; m=m+x*x; } m=m-(2*s*s)/n*1.0+s*(s/n*1.0); printf("%.6lf",m); return 0; } 52.分离单词 #include #include #include int main() { char s[1000],b[1000][1000]; int i,n,j,h=0,m; gets(s); n=strlen(s); for(i=0;i if((s[i]>64&&s[i]<91)||(s[i]>96&&s[i]<123)){ m=0; for(j=i;;j++) {if((s[j]>64&&s[j]<91)||(s[j]>96&&s[j]<123)) { b[h][m]=s[j];m++;i++; } else { b[h][m]=' '; h++; break; } } h++; } } for(i=h-2;i>=0;i--) printf("%s",b[i]); return 0; } 53.分数拆分 #include #include int main() { int x,y,k,a,b; scanf("%d",&k); a=k*(k+1); x=a; while (x<=a&&x>k){ y=x; while ((y<=x)&&(y>k)){ b=k*x+k*y; if (x*y==b) printf("1/%d=1/%d+1/%d\n",k,x,y); y=y-1; }; x=x-1; }; return 0; } 54.分数化小数 #include int main() { int a,b,c,d,i; scanf("%d%d%d",&a,&b,&c); d=a%b; printf("%d.",a/b); for(i=0;i { d=10*d; printf("%d",d/b); d=d%b; } printf("\n"); return 0; } 55.分数加减法 #include #include int main() { int a,b,c,d,e,f,n,h=0; char s; scanf("%d/%d%c%d/%d",&a,&b,&s,&c,&d); if(s=='+'){ e=a*d+b*c; f=b*d; n=f; if(e==0) {printf("0"); return 0;} if(e<0) e=-e,h=1; if(f%e==0){ f=f/e; e=e/(f/n); } if(h==0) printf("%d/%d",e,f); else printf("-%d/%d",e,f); } if(s=='-'){ e=a*d-b*c; f=b*d; n=f; if(e==0) {printf("0"); return 0;} if(e<0) e=-e,h=1; if(f%e==0){ f=f/e; e=e/(f/n); } if(h==0) printf("%d/%d",e,f); else printf("-%d/%d",e,f); } return 0; } 56.复数 #include #include #include int main() { double a,b,c,d; char x1,x2,x3,x4,x5,x6; scanf("%lf%lf%lf%lf",&a,&b,&c,&d); if(b>0)x1='+'; else x1='-'; if(d>0)x2='+'; else x2='-'; if(b+d>0)x3='+'; else x3='-'; if(b-d>0)x4='+'; else x4='-'; if(a*d+b*c>0)x5='+'; else x5='-'; if((b*c-a*d)/(c*c+d*d)>0)x6='+'; else x6='-'; printf("(%.2lf%c%.2lfi)+(%.2lf%c%.2lfi)=(%.2lf%c%.2lfi)\n",a,x1,fabs(b),c,x2,fabs(d),a+c,x3,fabs(b+d)); printf("(%.2lf%c%.2lfi)-(%.2lf%c%.2lfi)=(%.2lf%c%.2lfi)\n",a,x1,fabs(b),c,x2,fabs(d),a-c,x4,fabs(b-d)); printf("(%.2lf%c%.2lfi)*(%.2lf%c%.2lfi)=(%.2lf%c%.2lfi)\n",a,x1,fabs(b),c,x2,fabs(d),a*c-b*d,x5,fabs(a*d+b*c)); printf("(%.2lf%c%.2lfi)/(%.2lf%c%.2lfi)=(%.2lf%c%.2lfi)",a,x1,fabs(b),c,x2,fabs(d),(a*c+b*d)/(c*c+d*d),x6,fabs((b*c-a*d)/(c*c+d*d))); return 0; } 57.高低交换 #include #include inline int xchg(unsigned char n) { return 16*(n-((n>>4)*16))+(n>>4); } int main() { int x; scanf("%d",&x); printf("%d",xchg(x)); return 0; } 58.公园喷水器 #include #include #include void BubbleSort(double A[],int s,int m) { int i,j; double k; for(j=s;j { for(i=s;i { { k=A[i]; A[i]=A[i+1]; A[i+1]=k; } } } } int main() { int n,z=0,i; double A[60],s=0; scanf("%d",&n); for(i=0;i scanf("%lf",&A[i]); BubbleSort(A,0,n); for(i=0;i { z++; s=s+2*sqrt(A[i]*A[i]-1); if(s>=20) break; } printf("%d",z); return 0; } 59.韩信点兵 #include #include int main() { int a,b,c,s; scanf("%d%d%d",&a,&b,&c); for (s=10;s<=100;s++){ if ((s-a)%3==0&&(s-b)%5==0&&(s-c)%7==0) { printf("%d",s); break; }; }; if (s==101) printf("-1"); return 0; } 60.行程编码压缩算法 #include #include #include int main() { char a[100]; int i,n,h,j; gets(a); for(i=0;i h=0; for(j=i;j if(a[j]==a[i]) h++; else break; printf("%d%c",h,a[i]); i=i+h-1;} return 0; } 61.合并字符串 #include #include #include int main() { char a[100],b[100]; gets(a); gets(b); strncat(a,b,100); puts(a); return 0; } 62.猴子分桃 #include #include int main() { int n,m,b,c,d,e; while (n>1){ if ((n-1)%5==0) { b=(n-1)/5*4 ;if ((b-1)%5==0){ c=(b-1)/5*4;if ((c-1)%5==0){ d=(c-1)/5*4 ;if ((d-1)%5==0){ e=(d-1)/5*4;if ((e-1)%5==0) break; } } } }; n=n+1; } m=(e-1)/5*4; printf("%d %d",n,m); return 0; } 63.火车站 #include #include int main() { int A[100],n,a,b,j=1,i; scanf("%d",&n); for(i=0;i scanf("%d",&A[i]); for(i=0;i { a=A[i]; for(j=i;j { if(a-A[j]==1) a=A[j]; else { printf("No"); goto ai; } } } printf("Yes"); ai:return 0; } 64.获取指定二进制位 #include void getbit(int n,int k) { int i; for(i=2;i<=k;i++) n=n/2; printf("%d",n%2); } int main() { int n,k; scanf("%d%d",&n,&k); getbit(n,k); return 0; } 65.积分计算 #include double f(double x) { return 1.0/(1.0+x*x); } double jf(double a,double b) { double h,s=0;; int i; h=(b-a)/5000000; for(i=1;i<5000000;i++) { s+=(f(a)+f(a+h))*0.5*h; a+=h; } return s; } int main() { double a,b,s; scanf("%lf%lf",&a,&b); s=jf(a,b); printf("%lf",s); return 0; } 66.级数和 #include #include #include int main() { int n,x,y; double sum=0,i; scanf("%d",&n); for(i=1;i<=n;i++) { x=pow((-1),i); y=pow(2,i); sum=sum-(x*y*1.0)/((x+y)*(2*y-x)); } printf("%.6lf",sum); return 0; } 67.计算A+B #include #include int main() { int A,B,sum; scanf("%d%d",&A,&B); sum=A+B; printf("%d\n",sum); return 0; } 68.计算PI #include #include int main() { double n=3.0,b=-1; double a=1.0; while ((1/n)>=1e-6) { a=a+(b/n); b=b*(-1); n=n+2; } a=a*4; printf("%.6lf",a); return 0; } 69.计算π #include #include #include int main() { int i; long double n,s=0.0,x,m=-1.0; double PI; for(i=0;i<100000000000;i++) { m=(-1.0)*m; n=m/(2*i+1); s=s+n; x=fabs(n); if(x<0.0000001) break; } PI=4.0*s; printf("%.6lf",PI-0.000002); return 0; } 70.计算成绩 #include #include #include int main() { double a,b,c,sum,avg; scanf("%lf%lf%lf",&a,&b,&c); sum=a+b+c; avg=sum/3.0; printf("%.6lf\n%.6lf\n",sum,avg); return 0; } 71.计算完全数 #include #include int main() { int a,b,n,c; a=2; while (a<1000){ b=a-1; n=0; while (b>0){ if (a%b==0) n=n+b; b=b-1; }; if (a==n) { b=0; n=0; do{ b=b+1; c=a%b; }while (c!=0); printf("%d=%d",a,b); b=b+1; if (a%b==0) printf("+%d",b); b=b+1; }; printf("\n"); }; a=a+1; }; return 0; } 72.检测位图长宽 #include #include int main() { FILE *p; long biWidth,biHeight; p=fopen("DATA5611.BMP","rb"); if(p!=NULL) { fseek(p,18,SEEK_SET); fread(&biWidth,sizeof(long),1,p); fread(&biHeight,sizeof(long),1,p); printf("%ld %ld",biWidth,biHeight); fclose(p); } return 0; } 73.检查图像文件格式 #include #include #include int main(int argc, char *argv[]) { FILE *fp = fopen("DATA5609.DAT", "rb"); if (fp==NULL)return -1; char buf[11] = ""; fread(buf, sizeof(buf), 1, fp); if (strncmp("JFIF", buf + 6, strlen("JFIF")) == 0){ printf("JPEG"); } else if (strncmp("GIF89a", buf, strlen("GIF89a")) == 0){ printf("GIF"); } else if (strncmp("PNG", buf + 1, strlen("PNG")) == 0){ printf("PNG"); } else{ printf("UNKNOW"); } return 0; } 74.奖金发放 #include #include int main() { double a,b; scanf("%lf",&a); if(a>10) { if(a>20) { if(a>40) { if(a>60) { if(a>100) { b=3.95+(a-100)*0.01; } else b=3.35+(a-60)*0.015; } else b=2.75+(a-40)*0.03; } else b=1.75+(a-20)*0.05; } else b=1+(a-10)*0.075; } else b=a*0.1; printf("%.6lf",b); return 0; } 75.阶乘合计 #include #include #include int f(int n) { int s=1; while(n>1){ s=s*n; n--; } return s; } int main() { int i,j,k,s,n,t,p,q,y,x; scanf("%d",&n); if(n%2==1) n--; for(i=1;;i++) if(f(i)>n) break; s=i; for(i=2;i for(i=2;i for(j=i+1;j if(f(i)+f(j)==n) {printf("YES");return 0;} for(i=2;i for(j=i+1;j for(k=j+1;k if(f(i)+f(j)+f(k)==n) {printf("YES");return 0;} for(i=2;i for(j=i+1;j for(k=j+1;k for(t=k+1;t if(f(i)+f(j)+f(k)+f(t)==n) {printf("YES");return 0;} for(i=2;i for(j=i+1;j for(k=j+1;k for(t=k+1;t for(p=t+1;p if(f(i)+f(j)+f(k)+f(t)+f(p)==n) {printf("YES");return 0;} for(i=2;i for(j=i+1;j for(k=j+1;k for(t=k+1;t for(p=t+1;p for(q=p+1;q if(f(i)+f(j)+f(k)+f(t)+f(p)+f(q)==n) {printf("YES");return 0;} for(i=2;i for(j=i+1;j for(k=j+1;k for(t=k+1;t for(p=t+1;p for(q=p+1;q for(y=q+1;y if(f(i)+f(j)+f(k)+f(t)+f(p)+f(q)+f(y)==n) {printf("YES");return 0;} for(i=2;i for(j=i+1;j for(k=j+1;k for(t=k+1;t for(p=t+1;p for(q=p+1;q for(y=q+1;y for(x=y+1;x if(f(i)+f(j)+f(k)+f(t)+f(p)+f(q)+f(y)+f(x)==n) {printf("YES");return 0;} printf("NO"); return 0; } 76.解不等式 #include #include int main() { int a,b,j,x,y; double s=0,n=0,i; scanf("%d%d",&a,&b); for(i=1;i<100000;i=i+1) { n=n*1.0+(1/i); s=s*1.0+(1/n); x=i; if(s>a) break; } printf("%d ",x); for(j=x;j<100000;j++) { n=n*1.0+(1/j); s=s*1.0+(1/n); y=j; if(s>b) break; } printf("%d",y); return 0; } 77.精确幂乘 #include #include int main() { char a[10]; int n,b=0,c[250]={0},i,j,x,flag=0; c[249]=1; scanf("%s%d",a,&n); for(i=0;a[i]!='\0';i++) { if(a[i]=='.') { x=i; flag=1; continue; } b=b*10+a[i]-'0'; } x=i-x-1; for(i=1;i { for(j=0;j<250;j++) c[j]*=b; for(j=249;j>=0;j--) if(c[j]>=10) { c[j-1]+=c[j]/10; c[j]%=10; } } if(flag==0) { for(i=0;c[i]==0;i++); for(;i<250;i++) printf("%d",c[i]); } else if(a[0]=='0') { flag=0; printf("0"); for(j=i;j<250;j++) if(c[j]!=0) { flag=1; break; } if(flag==1) { printf("."); for(j=249;c[j]==0&&j>=i;j--); for(i=250-n*x;i<=j;i++) printf("%d",c[i]); } } else { flag=0; for(i=0;c[i]==0;i++); for(;i<250-n*x;i++) printf("%d",c[i]); for(j=i;j<250;j++) if(c[j]!=0) { flag=1; break; } if(flag==1) { printf("."); for(j=249;c[j]==0&&j>=i;j--); for(;i<=j;i++) printf("%d",c[i]); } } printf("\n"); return 0; } 78.恐怖水母 #include #include void paixu(int a[],int n) { int i,k,t; for (i=1;i t=a[i];k=i-1; a[k+1]=a[k]; k--; if(k==-1)break; } a[k+1]=t; } } int main() { int a[100],b[100],n,m,i,j,s,h,q; scanf("%d%d",&n,&m); for(i=0;i scanf("%d",&a[i]); for(i=0;i scanf("%d",&b[i]); paixu(a,n); paixu(b,m); s=0; for(i=0,h=-1;i for(j=h+1;j if(b[j]>=a[i]) { s=s+b[j]; h=j; q=2; break; } } if(q!=2) q=1; } if(q==1)printf("NULL"); else printf("%d",s); return 0; } 79.快速排序 #include #include void QuickSort(int a[],int numsize) { int i=0,j=numsize-1; int val=a[0]; if(numsize>1) { while(i { for(;j>i;j--) if(a[j]>val) { a[i++]=a[j]; break; } for(;i if(a[i] { a[j--]=a[i]; break; } } a[i]=val; QuickSort(a,i); QuickSort(a+i+1,numsize-i-1); } } int main() { int n,b[99],a[99],s,m,i,l; scanf("%d",&n); for(i=0;i scanf("%d",&b[i]); scanf("%d%d",&s,&m); for(i=s;i<=m;i++) a[i-s]=b[i]; l=m-s+1; QuickSort(a,l); for(i=s;i<=m;i++) b[i]=a[i-s]; for(i=0;i printf("%d ",b[i]); return 0; } 80.粒子裂变 #include #include int main() { int t,n=1,m=0,a; scanf("%d",&t); while (t>0){ a=m; m=3*n+2*m; n=a; t=t-1; } printf("%d %d",n,m); return 0; } 81.链表动态增长或缩短 #include #include int main() { int a[100],j,i,n; scanf("%d",&n); for(i=0;i scanf("%d",&a[i]); for(i=0;i for(j=i+1;j if(a[i]==a[j]) {a[i]=0;a[j]=0;} for(i=0;i if(a[i]!=0) printf("%d ",a[i]); return 0; } 82.链表节点删除 #include #include #include int f=0; struct tagxue{ int no,age; char name; }; typedef struct tagLNode{ struct tagxue data; struct tagLNode *next; }LNode,*LinkList; int input(struct tagxue *l) { int n,m; char a[11]; scanf("%d",&n); if(n==0) {f=1;return 0;}; scanf("%s%d",a,&m); l->age=m; strcpy(&l->name,a); l->no=n; return 0; } void create(LinkList *l) { LinkList p,s; int n; p=*l=(LinkList)malloc(sizeof(LNode)); for(n=0;;n++){ s=(LinkList)malloc(sizeof(LNode)); input(&s->data); if(f==1) break; p->next=s,p=s; } p->next=NULL; } void list(LinkList l) { LinkList p=l->next; while(p!=NULL){ printf("%d ",p->data.no); p=p->next; } } void shanchu(LinkList l,int n) { LinkList p=l->next; while(p!=NULL){ if(p->next->data.no==n) break; p=p->next;} p->next=p->next->next; } int main() { LinkList q; int m; q=(LinkList)malloc(sizeof(LNode)); create(&q); scanf("%d",&m); list(q); printf("\n"); shanchu(q,m); list(q); return 0; } 83.两个整数之间所有的素数 #include #include int main() { int a,b,c,i,j,m; scanf("%d%d",&a,&b); if(a>b) { c=b; b=a; a=c; } for(i=a;i<=b;i++) { if(i==2) printf("2"); else { for(j=2;j { m=i%j; if(m==0) goto E; } printf("%d ",i); } E:continue; } return 0; } 84.路痴 #include #include #include int main() { int a[100],i,n,left=0,right=0; char c[5]; scanf("%s%d",c,&n); for(i=0;i scanf("%d",&a[i]); for(i=0;i if(a[i]==0) left++; right=n-left; n=right-left; if(n>=0) n=n%4; else n=4-(-n)%4; if(c[0]=='E'){ if(n==0) printf("East"); if(n==1) printf("South"); if(n==2) printf("West"); if(n==3) printf("North"); } if(c[0]=='S'){ if(n==3) printf("East"); if(n==0) printf("South"); if(n==1) printf("West"); if(n==2) printf("North"); } if(c[0]=='W'){ if(n==2) printf("East"); if(n==3) printf("South"); if(n==0) printf("West"); if(n==1) printf("North"); } if(c[0]=='N'){ if(n==1) printf("East"); if(n==2) printf("South"); if(n==3) printf("West"); if(n==0) printf("North"); } return 0; } 85.冒泡排序 #include #include void BubbleSort(int A[],int s,int m) { int i,j,k; for(j=s;j { for(i=s;i { { k=A[i]; A[i]=A[i+1]; A[i+1]=k; } } } } int main() { int a,b,c,A[100],d; scanf("%d",&c); for(d=0;d scanf("%d",&A[d]); scanf("%d%d",&a,&b); BubbleSort(A,a,b); for(d=0;d printf("%d ",A[d]); return 0; } 86.你会存钱吗 #include #include int main() { int i8,i5,i3,i2,i1,n8,n5,n3,n2,n1; float max=0,term; for(i8=0;i8<3;i8++) for(i5=0;i5<=(20-8*i8)/5;i5++) for(i3=0;i3<=(20-8*i8-5*i5)/3;i3++) for(i2=0;i2<=(20-8*i8-5*i5-3*i3)/2;i2++) { i1=20-8*i8-5*i5-3*i3-2*i2; term=2000.0*pow((double)(1+0.0063*12), (double)i1)*pow((double)(1+2*0.0063*12), (double)i2)*pow((double)(1+3*0.0069*12),(double)i3)*pow((double)(1+5*0.0075*12),(double)i5)*pow((double)(1+8*0.0084*12),(double)i8); if(term>max){ max=term; n1=i1; n2=i2; n3=i3; n5=i5; n8=i8; }; }; printf("%d %d %d %d %d\n",n8,n5,n3,n2,n1); printf("%.2f",max); return 0; } 87.逆序整数 #include int nixu(int n) { if(n>10) { printf("%d",n%10); nixu(n/10); } else{ printf("%d",n); return 0;} } int main() { int n; scanf("%d",&n); nixu(n); return 0; } 88.排列 #include #include int main() { int a[9],n,b[3],s; for(a[0]=1;a[0]<4;a[0]++) for(a[1]=1;a[1]<10;a[1]++) for(a[2]=2;a[2]<10;a[2]++) for(a[3]=3;a[3]<7;a[3]++) for(a[4]=3;a[4]<9;a[4]++) for(a[5]=4;a[5]<9;a[5]++) for(a[6]=5;a[6]<10;a[6]++) for(a[7]=1;a[7]<9;a[7]++) for(a[8]=1;a[8]<10;a[8]++){ s=0; for (n=1;n<10;n++) if (a[0]==a[n]) {s=s+1;break;}; for (n=2;n<10;n++) {if(s>0) break; if (a[1]==a[n]) {s=s+1;break;};}; for (n=3;n<10;n++) {if(s>0) break; if (a[2]==a[n]) {s=s+1;break;};}; for (n=4;n<10;n++) {if(s>0) break; if (a[3]==a[n]) {s=s+1;break;};}; for (n=5;n<10;n++) {if(s>0) break; if (a[4]==a[n]) {s=s+1;break;};}; for (n=6;n<10;n++) {if(s>0) break; if (a[5]==a[n]) {s=s+1;break;};}; for (n=7;n<10;n++) {if(s>0) break; if (a[6]==a[n]) {s=s+1;break;};}; for (n=8;n<10;n++) {if(s>0) break; if (a[7]==a[n]) {s=s+1;break;};}; if (s==0) { b[0]=100*a[0]+10*a[1]+a[2]; b[1]=100*a[3]+10*a[4]+a[5]; b[2]=100*a[6]+10*a[7]+a[8]; if ((b[2]==3*b[0])&&(b[1]==2*b[0])) printf("%d %d %d\n",b[0],b[1],b[2]); }; }; return 0; } 89.排列分析 #include #include int main() { int n,i,j,k=0,t,A[100]; scanf("%d",&n); for(i=0;i scanf("%d",&A[i]); for(i=0;i { for(j=0;j if(A[j]>A[j+1]) { t=A[j]; A[j]=A[j+1]; A[j+1]=t; k++; } } printf("%d",k); return 0; } 90.平均值函数 #include #include double avg(double A[99],double s,double e) { int i; double f=0.0; for(i=s;i<=e;i++) f=f+A[i]; s=f/(e-s+1); return s; } int main() { double A[99]; int n,s,e,i; scanf("%d",&n); for(i=0;i<=(n-1);i++) scanf("%lf",&A[i]); scanf("%d%d",&s,&e); printf("%lf",avg(A,s,e)); return 0; } 91.奇特的分数数列 #include #include int main() { double s,n,m,a,b; n=1; s=0; m=2; a=1; while (a<=20) { s=s+m/n; b=m; m=n+m; n=b; a=a+1; } printf("%.6lf",s); return 0; } 92.求建筑高度 #include #include int main() { double a,b,c,d,e,f; scanf("%lf,%lf",&a,&b); c=(a-2)*(a-2)+(b-2)*(b-2); d=(a+2)*(a+2)+(b-2)*(b-2); e=(a-2)*(a-2)+(b+2)*(b+2); f=(a+2)*(a+2)+(b+2)*(b+2); if(c<=1||d<=1||e<=1||f<=1)printf("10"); else printf("0"); return 0; } 93.区间内素数 #include #include int main() { int a,b,c,n,m,d; a=799; d=1; m=0; n=0; while (a>500&&a<800){ c=0; b=a-1; while (b>1){ if (a%b==0) c=c+1; b=b-1; }; if (c==0) {n=1+n; m=m+d*a; d=-1*d; }; a=a-1; } printf("%d %d",n,m); return 0; } 94.三点顺序 #include int main() { int x1,y1,x2,y2,x3,y3; while(~scanf("%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3)&&(x1+y1+x2+y2+x3+y3)) { if((x2-x1)*(y3-y1)-(x3-x1)*(y2-y1)>0){ printf("0\n"); return 0;} else{ printf("1\n"); return 0;} } return 0; } 95.山迪的麻烦 #include #include int main() { int n,s=0,a[100],i,j,k; scanf("%d",&n); for(i=0;i scanf("%d",&a[i]); for(i=1;i k=a[i]; s++; a[j+1]=a[j]; } a[j+1]=k; } printf("%d",s); return 0; } 96.删除字符 #include #include #include char b[1000]; void deletechar(char s[],char a) { int n,i,j=0,k; n=strlen(s); for(i=0;i if(s[i]!=a) b[j]=s[i],j++; else { for(k=0;;k++) if(s[i+k]!=a) break; b[j]=s[i+k]; i=i+k; j++; } } } int main() { char s[1000],a; int i,n; gets(s); n=strlen(s); scanf("%c",&a); deletechar(s,a); for(i=0;i printf("%c",b[i]); return 0; } 97.是该年的第几天 #include #include int main() { int y,m,d,days,i,sum=0; scanf("%d-%d-%d",&y,&m,&d); for(i=1;i switch(i){ case 2: days=28; if((y%4==0&&y%100!=0)||(y%400==0))days++; break; case 4:case 6:case 9:case 11:days=30;break; default:days=31; } sum+=days; } sum=sum+d; printf("%d\n",sum); return 0; } 98.是该年的第几天? #include #include int main() { int y,m,d; scanf("%d-%d-%d",&y,&m,&d); switch(m) { case 12:d=30+d; case 11:d=31+d; case 10:d=30+d; case 9:d=31+d; case 8:d=31+d; case 7:d=30+d; case 6:d=31+d; case 5:d=30+d; case 4:d=31+d; case 3:d=28+d; case 2:d=31+d; default:d=d; } printf("%d",d); return 0; } 99.数据加密 #include int main() { int n,a,b,c,d,m; scanf("%d",&n); a=n%10; b=(n/10)%10; c=(n/100)%10; d=n/1000; a=(a+5)%10; b=(b+5)%10; c=(c+5)%10; d=(d+5)%10; m=1000*a+100*b+10*c+d; printf("%d",m); return 0; } 100.搜索字符 #include #include #include int main() { char a[1000],c; int i,j,k=0,h,n; gets(a); scanf("%c",&c); n=strlen(a); for(i=0;i h=0; if (a[i]==c){ for(j=i;;j++) {if(a[j]==c) h++,i++; else break;} }; if(h>k) k=h; } for(i=0;i return 0; } 101.所有素数 #include #include int main() { int a,b,c,d,n; scanf("%d%d",&a,&b); if (b>a) { c=a; a=b; b=c; } ; n=b+1; d=n-1; int e=0; while (d>1) { if ((n%d)==0) e=e+1; d=d-1; } ; if (e==0) printf("%d ",n); n=n+1; }; return 0; } 102.探索合数世纪 #include #include int main() { int n,s,j=0,w,h,k,u=0,c=0; scanf("%d",&n); for(k=u;;k++){ for(s=k*100,h=1;s<=k*100+99;s++){ for(j=2,w=1;j<=sqrt(s);j++){ w=s%j; if(w==0) break; } if(w!=0) { h=0; break;} } if(h==1) { c=c+1; if(c==n){ u=k; break;}}; } printf("%d %d\n",u*100,u*100+99); return 0; } 103.特殊要求的字符串 #include #include void paixu(char s[], int n) { int i,t,k; for(i=1;i t=s[i];k=i-1; while(t>s[k]){ s[k+1]=s[k];k--; if(k==-1)break; } s[k+1]=t; } } void paixu2(char s[], int n) { int i,t,k; for(i=n+1;i<2*n;i++){ t=s[i];k=i-1; while(t s[k+1]=s[k];k--; if(k==n-1)break; } s[k+1]=t; } } int main() { char s[100],a; int n,i,k; gets(s); n=strlen(s); if(n%2==0){ n=n/2; paixu(s,n); paixu2(s,n); for(i=n;i<2*n;i++) printf("%c",s[i]); for(i=0;i printf("%c",s[i]); } else{ k=(n-1)/2; a=s[k]; for(i=k;i s[i]=s[i+1]; n=k; paixu(s,n); paixu2(s,n); for(i=n;i<2*n;i++) printf("%c",s[i]); printf("%c",a); for(i=0;i printf("%c",s[i]); } return 0; } 104.特殊整数 #include #include #include int main() { int m,n,x=1,y,i,j,a,b,c; double s=0,g=0; scanf("%d%d",&m,&n); for(b=1;b { x=x*10; } y=10*x; for(i=x;i { if(i%m==0) continue; for(j=0;j { int k=1; for(c=1;c<=j;c++) { k=k*10; } a=(i/k)%10; if(a==m) goto love; } continue; love: {s=s+i; g++;} } printf("%.0lf %.0lf",g,s); return 0; } 105.完全数 #include #include #include int main() { int i,j; for(i=1;i<=1000;i++) { int F[1000],m=0,n,a,X=0; for(j=1;j { if(i%j==0) { m=m+1; F[m]=j; } } for(n=1;n<=m;n++) X=X+F[n]; if(X==i) { printf("%d=",i); for(a=1;a printf("%d+",F[a]); printf("%d\n",F[m]); } } return 0; } 106.王的对抗 #include #include void BubbleSort(int A[],int s,int m) { int i,j,k; for(j=s;j { for(i=s;i { { k=A[i]; A[i]=A[i+1]; A[i+1]=k; } } } } int main() { int n,A[100],B[100],i,x=0,y=0; scanf("%d",&n); for(i=0;i scanf("%d",&A[i]); for(i=0;i scanf("%d",&B[i]); BubbleSort(A,0,n); BubbleSort(B,0,n); for(i=0;i { if(A[i]>B[i]) x+=2; if(A[i]==B[i]) x++,y++; if(A[i] y+=2; } if(x>y){ printf("A"); return 0;} if(x==y){ printf("="); return 0;} if(x printf("B"); return 0;} return 0; } 107.危险的组合 #include #include int main() { int n,m,b,c,d; scanf("%d",&n); m=3; b=0; while (m<=n){ if((n-m)==1) b=b+2; if((n-m)==2) b=b+1; if(n==m) b=b+1; c=n-m-1; d=0; if (c>0){d=1; while(c>0){ d=d*2; c=c-1; }; }; b=b+2*d; c=n-m-2; d=0; if(c>0){d=1; while(c>0){ d=d*2; c=c-1; }; }; b=b+(n-m-1)*d; m=m+1; }; printf("%d",b); return 0; } 108.文件比较 #include #include #include int main() { char a[100][1000],b[100][1000]; FILE *p1,*p2; int i=0,j=0,n; p1=fopen("DATA5613.TXT","r"); p2=fopen("DATA5613.CPP","rb"); while(!feof(p1)){ if(fgets(a[i],99,p1)==NULL)continue; i++; } i=0; while(!feof(p2)){ if(fgets(b[i],99,p2)==NULL)continue; i++; } n=i; for(i=0;i for(j=0;j break;}; return 0; } 109.文章统计 #include #include int main() { char a[80],b[80],c[80]; int i,d=0,x=0,s=0,k=0,q=0,n; gets(a); gets(b); gets(c); n=strlen(a); for(i=0;i if(a[i]<91&&a[i]>64) d++; else if(a[i]>96&&a[i]<123) x++; else if(a[i]>47&&a[i]<58) s++; else if(a[i]==32) k++; else q++; n=strlen(b); for(i=0;i if(b[i]<91&&b[i]>64) d++; else if(b[i]>96&&b[i]<123) x++; else if(b[i]>47&&b[i]<58) s++; else if(b[i]==32) k++; else q++; n=strlen(c); for(i=0;i if(c[i]<91&&c[i]>64) d++; else if(c[i]>96&&c[i]<123) x++; else if(c[i]>47&&c[i]<58) s++; else if(c[i]==32) k++; else q++; printf("%d %d %d %d %d",d,x,s,k,q); return 0; } 110.五猴分桃 #include #include int main() { int a,i,n,f1,f2,f3,f4,f5,f6,m1,m2,m3,m4,m5,m6; double F[6]; for(a=0;a<10000;a++) { F[1]=a; for(i=2;i<7;i++) { n=i-1; F[i]=(5*F[n])/4+1; } m1=F[1]*10; m2=F[2]*10; m3=F[3]*10; m4=F[4]*10; m5=F[5]*10; m6=F[6]*10; if(m1%10==0&&m2%10==0&&m3%10==0&&m4%10==0&&m5%10==0&&m6%10==0) { f1=F[1]; f2=F[2]; f3=F[3]; f4=F[4]; f5=F[5]; f6=F[6]; if(f1%4==0&&f2%4==0&&f3%4==0&&f4%4==0&&f5%4==0) { printf("%d %d",f6,a); break; } } else continue; } return 0; } 111.小型数据库 #include #include #include struct student { int id; char name[12]; int sco; }; int main() { int n; struct student stu, max; FILE *fp; scanf("%d", &n); fp = fopen( "DATA5614.DB", "wb+" ); if( !fp ) printf("No!!!"); while( n-- ) { scanf("%d%s%d", &stu.id, stu.name, &stu.sco ); fwrite( &stu, sizeof( struct student ), 1, fp ); } rewind( fp ); max.sco = 0; while( !feof(fp) ) { fread( &stu, sizeof( struct student ), 1, fp ); if( stu.sco > max.sco ) { max.id = stu.id; max.sco = stu.sco; strcpy( max.name, stu.name ); } } fclose( fp ); printf("%d %s %d", max.id, max.name, max.sco); } 112.幸运儿 #include #include int cardNum[20] = {0}; int isLucky[51] = {0}; int childLeft,count; void pickChild(int n,int x){ int i,j; while(1){ for(i = 0;i < 20;++i){ count = 0; for(j = 1;j <= n;++j){ count+=isLucky[j]; if(count==cardNum[i]){ isLucky[j] = 0; if(x==--childLeft)return; count = 0; }}}}} int main(){ int n,x,i; scanf("%d%d",&n,&x); for(i = 0; i < 20; ++i){ scanf("%d",cardNum + i); } for(i=1;i<=n;++i)isLucky[i]=1; childLeft = n; pickChild(n,x); for(i=1;i<=n;i++) if(isLucky[i]==1) printf("%d ",i); return 0; } 113.幸运数字”7“ #include #include int main() { int n,m=7,b; scanf("%d",&n); while (m<=n){ if ((m%7!=0)&&((m-7)%10!=0)) b=b+1; else printf("%d ",m); m=m+1; }; return 0; } 114.选择排序 #include #include void SectionSort(int a[],int s,int m) { int i,j,k,t; for (i=s;i<=m;i++){ k=i; for(j=i+1;j<=m;j++) if(a[j]>a[k])k=j; if(i!=k){ t=a[i]; a[i]=a[k]; a[k]=t; } } } int main() { int n,a[100],i,s,m; scanf("%d",&n); for(i=0;i scanf("%d",&a[i]); scanf("%d%d",&s,&m); m=m+s-1; SectionSort(a,s,m); for(i=0;i printf("%d ",a[i]); return 0; } 115.寻找规律 #include #include int main() { int a[100],i,j,n,k; for(i=0;i<5;i++) scanf("%d",&a[i]); if(a[1]+a[0]==a[2]&&a[2]+a[3]==a[4]){ for(i=5;i<10;i++) a[i]=a[i-1]+a[i-2]; for(i=5;i<10;i++) printf("%d ",a[i]); return 0; } if(a[1]-a[0]==a[2]-a[1]&&a[4]-a[3]==a[2]-a[1]){ k=a[1]-a[0]; n=a[4]; for(i=0;i<5;i++) n=n+k,printf("%d ",n); return 0; } if(a[1]/a[0]==a[2]/a[1]&&a[4]/a[3]==a[2]/a[1]){ k=a[1]/a[0]; n=a[4]; for(i=0;i<5;i++) n=n*k,printf("%d ",n); return 0; } return 0; } 116.循环移位 #include int move(int value,int n) { if(n==0) return value; else if(n<0) { n=-n; value=(value< } else value=(value>>n)|(value<<(32-n)); return value; } int main() { int value,n; scanf("%d %d",&value,&n); value=move(value,n); printf("%d",value); return 0; } 117.延伸的卡片 #include #include int main() { float c,n=0; double i=1; scanf("%f",&c); while(n n=n+1/(i+1); i++; } printf("%.0lf",i-1); return 0; } 118.羊羊聚会 #include #include #include int main() { int x,y,a,b,l,m; scanf("%d%d%d%d%d",&x,&y,&a,&b,&l); a=fabs(a-b); x=l-fabs(x-y); for(m=0;;m++) if ((x+m*l)%a==0) {printf("%d",((x+m*l)/a)); break; }; return 0; } 119.一维数组”赋值“ #include #include int main() { int a[100],b[100],n,i; scanf("%d",&n); for(i=0;i scanf("%d",&a[i]); for(i=0;i b[i]=a[i]; for(i=1;i printf("%d ",b[i]); return 0; } 120.一维数组”加法“ #include #include int main() { int A[100],B[100],i,n; scanf("%d",&n); for(i=0;i scanf("%d",&A[i]); for(i=0;i scanf("%d",&B[i]); for(i=0;i printf("%d ",A[i]+B[i]); return 0; } 121.勇闯天涯 #include int main() { int i,j,k=0,h,n,m,a[100],t,o=0,q; scanf("%d",&m); scanf("%d",&n); for(i=0;i for(i=0;i for(j=0;j for(i=0;i q=0; for(j=i+1;j if(a[i]+a[j]<=m) {k++;o++;q++; for(h=j;h break; }; if(q==0) k++; } printf("%d",k); return 0; } 122.右上角 #include #include int main() { int n,i,j; scanf("%d",&n); int a[n][n]; for(i=0;i for(j=0;j scanf("%d",&a[i][j]); for(i=0;i for(j=0;j printf(" "); for(j=i;j printf("%d ",a[i][j]); printf("\n"); } return 0; } 123.右下角 #include #include int main() { int n,i,j; scanf("%d",&n); int a[n][n]; for(i=0;i for(j=0;j scanf("%d",&a[i][j]); for(i=0;i for(j=i;j printf(" "); for(j=n-i-1;j printf("%d ",a[i][j]); printf("\n"); } return 0; } 124.圆及圆球等的相关计算 #include #include #include #define PI 3.1415926 int main() { double r,h,l,s,sq,vq,vz; scanf("%lf%lf",&r,&h); l=2.0*PI*r; s=PI*r*r; sq=4.0*PI*r*r; vq=(4.0*PI*r*r*r)/3.0; vz=PI*r*r*h; printf("%.2lf\n%.2lf\n%.2lf\n%.2lf\n%.2lf\n",l,s,sq,vq,vz); return 0; } 125.圆及圆球等相关计算 #include #include #define PI 3.1415927 int main() { double r,h,l,s,sq,vq,vz; scanf("%lf%lf",&r,&h); l=2.0*PI*r; s=PI*r*r; sq=4.0*PI*r*r; vq=(4.0/3.0)*PI*r*r*r; vz=PI*r*r*h; printf("%.2lf\n%.2lf\n%.2lf\n%.2lf\n%.2lf\n",l,s,sq,vq,vz); return 0; } 126.程序员添加行号 #include #include #include int main() { FILE *fp = fopen("DATA5612.CPP", "r"),*out; int i=0; char s1[100],s2[100]; if(fp!=NULL){ out=fopen("DATA5612.TXT","w"); while(!feof(fp)){ if(fgets(s1,sizeof(s1)-1,fp)==NULL) continue; sprintf(s2,"%04d %s",++i,s1); fputs(s2,out); } fclose(out); fclose(fp); } return 0; } 127.找出数字 #include #include #include int main() { char c[80],b[80]; int n,i,s=0,k,h=0; gets(c); n=strlen(c); for(i=0;i if (c[i]<=57&&c[i]>=48) { s++; for(k=i;;k++){ if(c[k]<=57&&c[k]>=48){ i++; b[h]=c[k]; h++; } else { b[h]=32; h++; break;} } } } printf("%d\n",s); for(i=0;i return 0; } 128.找幸运数 #include #include int main() { int a,b,c,d,e,m,n; scanf("%d",&m); a=m%10; b=((m-a)%100)/10; c=((m-a-10*b)%1000)/100; d=((m-a-10*b-100*c)%10000)/1000; e=((m-a-10*b-100*c-1000*d)%100000)/10000; if(e==0) { if(d==0) { if(c==0) { if(b==0) { if(a==0) n=0; else n=a; } else n=10*a+b; } else n=100*a+10*b+c; } else n=1000*a+100*b+10*c+d; } else { n=10000*a+1000*b+100*c+10*d+e; } if(m==n) { printf("yes"); } else { printf("no"); } return 0; } 129.找最大数 #include #include #include int main() { int a,b,c; scanf("%d%d%d",&a,&b,&c); if(a { a=b; if(a { a=c; } } else { if(a { a=c; } } printf("%d",a); return 0; } 130.整数位数 #include #include #include int main() { double a; int m,d,c,n; scanf("%lf",&a); a=fabs(a); n=(int)a; m=0; d=1; if (n<1) {printf("0"); return 0;}; do{ d=d*10; c=n-d; m=m+1; }while(c>0); printf("%d",m); return 0; } 131.重组字符串 #include #include #include int h; void fun(char s[],char *p) { int i,j=0,t; for(i=1;i t=s[i]; if(t%2!=0) { p[j]=s[i];j++; }} h=j; } int main() { char s[100],p[100],*a; int i; a=p; gets(s); fun(s,a); for(i=0;i printf("%c",p[i]); return 0; } 132.子序列的和 #include #include #include int main() { int n,m,i; double sum=0; scanf("%d %d",&n,&m); for(i=n;i<=m;i++){ sum=sum+1/pow(i,2.0); } printf("%.5lf",sum); return 0; } 133.子字符串替换 #include #include #include int main() { char s[100],a[100],b[100],t[100]; int m,i,j,k,h=0,o=0; gets(s); gets(a); gets(b); for(i=0;i m=0; k=0; for(j=0;j if(s[i]==a[j]) {i++;m++;} i=i-m; if(m==strlen(a)){ for(h=i+o;h k++;} i=i+m-1; o++;} else {t[h]=s[i];h++;}; } for(i=0;i printf("%c",t[i]); return 0; } 134.自然数立方的乐趣 #include #include int main() { int n,m,i,j,k; scanf("%d",&n); j=n*n*n; printf("%d*%d*%d=%d=",n,n,n,j); if(n%2==0) { m=n*n; k=n/2; m=m-(2*k)+1; for(i=1;i { printf("%d+",m); m=m+2; } printf("%d",m); } else { m=n*n; k=n/2; m=m-(2*k); for(i=1;i { printf("%d+",m); m=m+2; } printf("%d",m); } return 0; } 135.字符串比较 #include #include void bijiao(char *a,char *b) { int i; for(i=0;i<=80;i++) if (a[i]!=b[i]){ printf("%d",a[i]-b[i]); break; } } int main() { char a[80],b[80]; gets(a); gets(b); bijiao(a,b); return 0; } 136.字符串复制 #include #include int main() { char A[99]; int i=0,j,a; while((A[i]=getchar())!='\n')i++; scanf("%d",&a); for(j=a;j printf("%c",A[j]); return 0; } 137.字符串加密编码 #include #include #include void jiami(char s[100]) { int i; for(i=0;i if(s[i]>='A'&&s[i]<='Z') s[i]=s[i]+3; if(s[i]>='a'&&s[i]<='z') s[i]=s[i]-3; } } int main() { char s[100]; gets(s); jiami(s); puts(s); return 0; } 138.字符串逆序 #include #include #include int main() { char A[100],B[100]; int i=0,j; while((A[i]=getchar())!='=')i++; for(j=i-1;j>-1;j--) printf("%c",A[j]); return 0; } 139.字符串排序 #include #include #include int main() { char s[10][80],b[10][80]; int i,k,j; for(i=0;i<10;i++) scanf("%s",s[i]); for(i=0;i<10;i++){ k=0; for(j=0;j<10;j++) if (strcmp(s[i],s[j])>0) k++; strcpy(b[k],s[i]);} for(i=0;i<10;i++) printf("%s ",b[i]); return 0; } 140.字符串替换 #include #include #include int main() { char s[1000],b[1000]; int i,n,h=0; gets(s); n=strlen(s); for(i=0;i if(s[i]==121&&s[i+1]==111&&s[i+2]==117){ b[h]=119;b[h+1]=101;h=h+2;i=i+2; } else { b[h]=s[i];h++; }; } for(i=0;i return 0; } 141.字符串左中右 #include #include void Left(char str[],int n,char dest[]) { int i; for(i=0;i dest[i]=str[i]; } void Right(char str[],int n,char dest[]) { int i,m,j=0; m=strlen(str); for(i=m-n;i<=m;i++){ dest[j]=str[i]; j++; } } void Mid(char str[],int loc,int n,char dest[]) { int i,j=0; for(i=loc;i dest[j]=str[i]; j++; } } int main() { int n,i,loc; char str[81],dest[81]; gets(str); scanf("%d%d",&n,&loc); Left(str,n,dest); for(i=0;i printf("%c",dest[i]); printf("\n"); Right(str,n,dest); puts(dest); Mid(str,loc,n,dest); puts(dest); return 0; } 142.组合数 #include int jie(int n) { if(n>1) return jie(n-1)*n; return 1; } int zuhe(int n,int m) { int i; i=jie(n-m); n=jie(n); m=jie(m); n=n/(m*i); return n; } int main() { int n,m; scanf("%d%d",&n,&m); printf("%d",zuhe(n,m)); return 0; } 143.最次方数 #include #include int main() { int a,b,c; scanf("%d%d",&a,&b); c=1; while (b>0){ c=c*a; c=c%1000; b=b-1; }; printf("%d",c); return 0; } 144.最大乘积 #include #include int main() { int a[20],s=1,n,m,i=1,j=1,b,e,f; scanf("%d",&n); m=n; for(n=0;n scanf("%d",&a[n]); if (m==1) { if (a[0]<0) printf("-1"); else printf("%d",a[0]); return 0; }; if (m==2) { if ((a[0]<0)&&(a[1]<0)) printf("%d",(a[0]*a[1])); else if ((a[0]>0)&&a[1]>0) printf("%d",(a[0]*a[1])); else if (a[0]>a[1]) printf("%d",a[0]); else printf("%d",a[1]); return 0; }; b=0; for (n=0;n if (a[n]<0) b=b+1; if (b%2==0) { for (n=0;n s=s*a[n]; printf("%d",s); return 0; } else { for (n=0;n if (a[n]<0) { e=n; break; }; for (n=m-1;n>=0;n--) if (a[n]<0) { f=n; break; }; for (n=e+1;n i=i*a[n]; for (n=f-1;n>=0;n--) j=j*a[n]; if (i>j) s=i; else s=j; printf("%d",s); }; return 0; } 145.最大整数 #include #include int n; double getfloor(double m) { n=m; if(n!=m&&n<0) n--; return n; } int main() { int a; double x; scanf("%lf",&x); a=getfloor(x); printf("%d",a); return 0; } 146.最小整数 #include #include #include int fceil(double x) { if (x>0) x=((int)x)+1; else x=(int)x; return x; } int main() { double x; int n; scanf("%lf",&x); n=fceil(x); printf("%d",n); return 0; } 147.最长回文子串 #include #include #include #include int main() { char a[5000],b[5000],i,j=0,c[5000],p=0,h,s; gets(a); for(i=0;i if(a[i]>=48&&a[i]<=57) b[j]=a[i],j++; if(a[i]>=65&&a[i]<=90) b[j]=a[i],j++; if(a[i]>=97&&a[i]<=122) b[j]=a[i],j++; } for(i=1;i h=0; if(b[i]==b[i+1]){ for(j=1;i-j+1>=0&&i+j else break; } if(h>p) {p=h;for(s=i-j+2;s h=0; if(b[i-1]==b[i+1]) { for(j=1;i-j>=0&&i+j else break; } if(h>p) {p=h;for(s=i-j+1;s } for(i=0;i if(a[i]==c[0]) break; for(j=strlen(a);j>0;j--) if(a[j]==c[strlen(c)-1]) break; for(s=i;s<=j;s++) printf("%c",a[s]); return 0; } 148.左上角 #include #include int main() { int A[100][100],n,i,j; scanf("%d",&n); for(i=0;i { for(j=0;j scanf("%d",&A[i][j]); } int x=0; for(j=0;j { for(i=0;i printf("%d ",A[j][i]); for(i=0;i printf(" "); printf("\n"); x++; } return 0; } 149.左下角 #include #include int main() { int n,i,j; scanf("%d",&n); int a[n][n]; for(i=0;i for(j=0;j scanf("%d",&a[i][j]); for(i=0;i for(j=0;j<=i;j++) printf("%d ",a[i][j]); for(j=i+1;j printf(" "); printf("\n"); } return 0; } 本文来源:https://www.2haoxitong.net/k/doc/d5ff97bc87c24028905fc304.html
文档为doc格式