基础编程题目集

基础编程题目集 4

  1 //4-1   简单输出整数  
  2 void PrintN(int N) {
  3     int i;
  4     for(i=1;i<=N;i++) {
  5         printf("%d\n",i);
  6     }
  7 }
  8 
  9 //4-2   多项式求值   
 10 double f(int n, double a[], double x) {
 11     int i;
 12     double num=1;
 13     double sum=a[0];
 14     for(i=1;i<=n;i++) {
 15         num=num*x;
 16         sum=sum+num*a[i];
 17     }
 18     return sum;
 19 }
 20 
 21 //4-3   简单求和
 22 int Sum (int List[], int N) {
 23     int i,sunshine=0;
 24     for(i=0;i<N;i++) {
 25         sunshine+=List[i];
 26     }
 27     return sunshine;
 28 } 
 29 
 30 //4-4   求自定类型元素的平均
 31 ElementType Average(ElementType S[], int N) {
 32     ElementType average=0;
 33     int i;
 34     for(i=0;i<N;i++) {
 35         average+=S[i];
 36     }
 37     average/=N;
 38     return average;
 39  }
 40 
 41 //4-5   求自定类型元素的最大值 
 42 ElementType Max( ElementType S[], int N ) {
 43     ElementType max=S[0];
 44     int i;
 45     if(N>MAXN) {
 46         N=MAXN;
 47     }
 48     for(i=0;i<N;i++) {
 49         if(S[i]>max) {
 50             max=S[i];
 51         }
 52     }
 53     return max;
 54 }
 55 
 56 //4-6   求单链表结点的阶乘和  
 57 int FactorialSum(List L) {
 58     int i,Num;
 59     int Sum=0;
 60     while(L!=NULL) {
 61         Num=1;
 62         for(i=1;i<=L->Data;i++) {
 63             Num=Num*i;
 64         }
 65         Sum=Sum+Num;
 66         L=L->Next;
 67     }
 68     return Sum;
 69 }
 70 
 71 //4-7   统计某类完全平方数   
 72 int IsTheNumber (const int N) {
 73     int n,m;
 74     n=(int)sqrt(N);
 75     m=n*n;
 76     if(m==N) {
 77         int num[10]={0};
 78         int i;
 79         while(m>0) {
 80             for(i=0;i<=9;i++) {
 81                 if(m%10==i) {
 82                     num[i]+=1;
 83                     if(num[i]==2) {
 84                         return 1;
 85                     }
 86                 }
 87             }
 88             m=m/10;
 89         }
 90         return 0;
 91     }
 92     return 0;
 93 }
 94 
 95 //4-8   简单阶乘计算  
 96 int Factorial( const int N ) {
 97     if(N>0) {
 98         int i;
 99         int M=1;
100         for(i=2;i<=N;i++) {
101             M=M*i;
102         }
103         return M;
104     }
105     else if(N==0)
106         return 1;
107     else
108         return 0; 
109 }
110 
111 //4-9   统计个位数字  
112 int Count_Digit (const int N, const int D) {  
113     int M=0;
114     int S=N;
115     if(N<0) {  
116         S=-N;
117     }
118     if(N==0) {  
119         if(D==0) {  
120             M=1;
121         }
122         else {
123             M=0;
124         }
125     }
126     while(S>0) {
127         if(S%10==D) {
128             M++;
129         }
130         S=S/10;
131     }
132     return M;
133 }
134 
135 //4-10  阶乘计算升级版 
136 void Print_Factorial ( const int N )  
137 {     
138     if(N>0&&N<=12) {
139         int i;
140         long int M=1;
141         for(i=2;i<=N;i++) {
142             M=M*i;
143         }
144         printf("%ld\n",M);
145     }
146     else if(N>12&&N<=1000) {
147         int Num[3001]={0};
148         int i,j,k,n;
149         k=1;
150         n=0;
151         Num[0]=1;
152         int temp;
153         for(i=2;i<=N;i++) {
154             for(j=0;j<k;j++) {
155                 temp=Num[j]*i+n;
156                 Num[j]=temp%10;
157                 n=temp/10;
158             }
159             while(n!=0) {
160                 Num[k]=n%10;
161                 k++;
162                 n=n/10;
163             }
164         }
165         for(i=k-1;i>=0;i--) {
166             printf("%d",Num[i]);
167         }  
168     }  
169     else if(N==0)
170         printf("1\n");
171     else
172         printf("Invalid input\n");
173 }
174 
175 //4-11  求自定类型元素序列的中位数
176 #include <stdio.h>
177 #define MAXN 10
178 typedef float ElementType;
179 
180 ElementType Median( ElementType A[], int N );
181 
182 int main ()
183 {
184     ElementType A[MAXN];
185     int N, i;
186 
187     scanf("%d", &N);
188     for ( i=0; i<N; i++ )
189         scanf("%f", &A[i]);
190     printf("%.2f\n", Median(A, N));
191 
192     return 0;
193 }
194 
195 void Swap(ElementType *a, ElementType *b) {
196     ElementType temp = *a;
197     *a = *b;
198     *b = temp;
199 }
200 
201 ElementType Median3(ElementType A[], int Left, int Right) {
202     int Center = (Left + Right) / 2;
203     if(A[Left]>A[Center])
204         Swap(&A[Left], &A[Center]);
205     if(A[Left]>A[Right])
206         Swap(&A[Left], &A[Right]);
207     if(A[Center]>A[Right])
208         Swap(&A[Center], &A[Right]);
209     Swap(&A[Center], &A[Right-1]);
210     return A[Right-1];
211 }
212 
213 void QSort(ElementType A[], int Left, int Right) {
214     if(Left>=Right) return;
215     ElementType Pivot = Median3(A, Left, Right);
216     int i = Left, j = Right - 1;
217     while(1) {
218         while(A[++i] < Pivot) { }
219         while(A[--j] > Pivot) { }
220         if(i<j)
221             Swap(&A[i], &A[j]);
222         else break;
223     }
224     Swap(&A[i], &A[Right-1]);
225     QSort(A, Left, i-1);
226     QSort(A, i+1, Right);
227 }
228 
229 ElementType Median(ElementType A[], int N) {
230     QSort(A, 0, N-1);
231     return A[N/2];
232 }
233     
234 ElementType Median (ElementType A[], int N) {
235     qsort(A, N, sizeof(ElementType), compare);
236     return A[N/2];
237 }
238 
239 //4-12  判断奇偶性   
240 int even(int n)
241 {
242     if(n%2==0) {
243         return 1;
244     }
245     return 0;
246 }
247 
248 //4-13  折半查找
View Code

基础编程题目集 5

  1 //5-1    厘米换算英尺英寸
  2 #include <stdio.h>
  3 int main() {
  4     int cm;
  5     int foot, inch;
  6     scanf("%d", &cm);
  7     foot= cm / 30.48;
  8     inch= 12 * (cm / 30.48 - foot);
  9     printf("%d %d\n", foot, inch);
 10     return 0;
 11 }
 12 
 13 //5-2    然后是几点
 14 #include <stdio.h>
 15 int main(void) {
 16     int hour, min;
 17     int cnt=0, count=0;
 18     int a, b;
 19     scanf("%d %d", &hour, &min);
 20     a=hour%100;
 21     b=hour/100;
 22     //printf("a=%d b=%d\n",a,b);
 23     if(min>0) {
 24         if(min+a<60) {
 25             a=a+min;
 26         }
 27         else if(min+a>=60) {
 28             while(a+min>=60) {
 29                 min=min-60;
 30                 count++;
 31             }
 32             b=b+count;
 33             if(a+min>=0)
 34                 a=a+min;
 35             else {
 36                 b-=1;
 37                 a=a+min+60;
 38             }
 39         }
 40         if(a<10&&a>=0)
 41             printf("%d0%d\n", b, a);
 42         else
 43             printf("%d%d\n", b, a);
 44     }
 45     else if(min<0) {
 46         if(min+a>=0) {
 47             a=a+min;
 48         }
 49         else if(a+min<0) {
 50             while(a+min<0) {
 51                 min=min+60;
 52                 cnt++;
 53             }
 54             a=a+min;
 55             b=b-cnt;
 56         }
 57         //printf("%d%d\n",b,a);
 58         if(a<10&&a>=0)
 59             printf("%d0%d\n", b, a);
 60         else
 61             printf("%d%d\n", b, a);
 62     }
 63     else if(min==0) {
 64         if(a>=0&&a<10)
 65             printf("%d0%d\n", b, a);
 66         else
 67             printf("%d%d\n", b, a);
 68     }
 69     return 0;    
 70 }
 71 
 72 //5-3    逆序的三位数
 73 #include <stdio.h>
 74 #include <math.h>
 75 #include <string.h>
 76 int main() {
 77     int num,num1;
 78     int i;
 79     int str[3];
 80     scanf("%d",&num);
 81     for(i=0;i<3;i++) {
 82         num1=num%10;
 83         str[i]=num1;
 84         num=num/10;
 85     }
 86     num1=0;
 87     for(i=0;i<3;i++)
 88         num1+=str[i]*pow(10,2-i);
 89     printf("%d",num1);
 90     return 0;
 91 }
 92 
 93 //5-4    BCD解密
 94 #include <stdio.h>
 95 int main() {
 96     int x;
 97     int n, a;
 98     scanf("%d", &x);
 99     a = x % 16;
100     n = x / 16 * 10 + a;
101     printf("%d", n);
102     return 0;
103 }
104 
105 //5-5    表格输出
106 #include <stdio.h>
107 int main(void) {
108     printf("------------------------------------\n");
109     printf("Province      Area(km2)   Pop.(10K)\n");
110     printf("------------------------------------\n");
111     printf("Anhui         139600.00   6461.00\n");
112     printf("Beijing        16410.54   1180.70\n");
113     printf("Chongqing      82400.00   3144.23\n");
114     printf("Shanghai        6340.50   1360.26\n");
115     printf("Zhejiang      101800.00   4894.00\n");
116     printf("------------------------------------\n");
117     return 0;
118 }
119 
120 //5-6    混合类型数据格式化输入
121 #include <stdio.h>
122 int main() {
123     int a;
124     double b, c;
125     char d;
126     scanf("%lf %d %c %lf", &b, &a, &d, &c);
127     printf("%c %d %.2lf %.2lf", d, a, b, c);
128     return 0;
129 }
130 
131 //5-7    12-24小时制
132 #include <stdio.h>  
133 int main() {
134     char c; 
135     int a, b;
136     scanf("%d%c%d", &a, &c, &b);  
137     if (a >= 12)  
138     {  
139   
140         if (a >= 13) 
141         {  
142             if (a == 24)  
143                 printf("0:%d AM\n", b);  
144             else  
145             {  
146                 a = a - 12;  
147                 printf("%d:%d PM\n", a, b);  
148             }  
149         }  
150         else  
151             printf("%d:%d PM\n", a, b); 
152     }  
153     else
154         printf("%d:%d AM\n", a, b);  
155     return 0;  
156 } 
157 //5-8    超速判断
158 #include <stdio.h>   
159 int main() {
160     int a;
161     scanf("%d", &a);
162     if(a>=0&&a<=500) {
163         if(a>60) {
164             printf("Speed: %d - Speeding", a);
165         }
166         else {
167             printf("Speed: %d - OK", a);
168         }
169     }
170 } 
171 //5-9    用天平找小球
172 #include <stdio.h>
173 int main()
174 {
175     unsigned int a, b, c;
176     scanf("%d%d%d", &a, &b, &c);
177     if (a == b)
178         printf("C\n");
179     else if (a == c)
180         printf("B\n");
181     else if (b == c)
182         printf("A\n");
183     return 0;
184 }
185 
186 //5-10    计算工资
187 #include<stdio.h>  
188 int main() {
189     unsigned int year, time;
190     double money = 0;
191     scanf("%d%d", &year, &time);
192     if (year >= 5) {
193         if (time < 40) {
194             money = 50 * time;
195         }
196         else {
197             money = 2000 + 50 * 1.5*(time - 40);
198         }
199     }
200     else {
201         if (time < 40) {
202             money = 30 * time;
203         }
204         else {
205             money = 1200 + 30 * 1.5*(time - 40);
206         }
207     }
208     printf("%.2f", money);
209     return 0;
210 }
211 
212 //5-11    分段计算居民水费
213 #include <stdio.h>
214 int main() {  
215     double x, y;
216     scanf("%lf", &x);
217     if(x <= 15)
218         y = (4*x)/3;
219     else
220         y =2.5*x - 17.5;
221     printf("%.2f\n", y);
222     return 0;
223 }
224 
225 //5-12    两个数的简单计算器
226 
227 #include <iostream>
228 using namespace std;
229 int main() {
230     int p1,p2,q;
231     char m;
232     cin>>p1>>m>>p2;
233     switch(m) {
234         case'+': { q=p1+p2; cout<<q<<endl; break; }
235         case'-': { q=p1-p2; cout<<q<<endl; break; }
236         case'*': { q=p1*p2; cout<<q<<endl; break; }
237         case'/': { q=p1/p2; cout<<q<<endl; break; }
238         case'%': { q=p1%p2; cout<<q<<endl; break; }
239         default: cout<<"ERROR"<<endl;
240     }
241     system("pause");
242     return 0;
243 }
244 
245 //5-13    日K蜡烛图
246 #include <stdio.h>
247 #include <string.h>
248 int main() {
249     int num1,num2,sum;
250     char y;
251     scanf("%d %c %d",&num1,&y,&num2);
252     if(y=='+'||y=='-'||y=='*'||y=='/'||y=='%') {
253         if(y=='+') printf("%d",num1+num2);
254         if(y=='-') printf("%d",num1-num2);
255         if(y=='*') printf("%d",num1*num2);
256         if(y=='/') {
257             if(num2!=0) printf("%d",num1/num2);
258         }
259         if(y=='%')
260             if(num2!=0) printf("%d",num1%num2);
261     }
262     else
263         printf("ERROR");
264     return 0;
265 }
266 
267 //5-14    求整数段和
268 #include <stdio.h>
269 int main() {
270     int a, b, i, cot=0, sum=0;
271     scanf("%d %d", &a, &b);
272     for(i=a;i<=b;i++) {
273         printf("%5d", i);
274         cot++;
275         if(cot%5==0 && i!=b) printf("\n");
276     }
277     printf("\n");
278     for(i=a; i<=b; i++)
279         sum+=i;
280     printf("Sum = %d", sum);
281     return 0;
282 }
283 
284 //5-15    计算圆周率
285 #include <stdio.h>  
286 int main() {
287     double x;
288     double i = 2, d = 3;
289     double temp=1,n = 1, n1 = 2, sum = 1;
290     scanf("%lf", &x);
291     while (temp >= x) {
292         temp = n / d;
293         sum += temp;
294         n = n*n1;
295         n1++;
296         d = d*(2 * i + 1);
297         i++;
298     }
299     printf("%.6f\n", sum*2);
300     return 0;
301 }
302 
303 //5-16    求符合给定条件的整数集 
304 #include <stdio.h>
305 int main() {
306     int n, i;
307     scanf("%d", &n);  
308     printf("%d%d%d %d%d%d %d%d%d %d%d%d %d%d%d %d%d%d\n", n, n+1, n+2, n, n+1, n+3, n, n+2, n+1, n, n+2, n+3, n, n+3, n+1, n, n+3, n+2);
309     printf("%d%d%d %d%d%d %d%d%d %d%d%d %d%d%d %d%d%d\n", n+1, n, n+2, n+1, n, n+3, n+1, n+2, n, n+1, n+2, n+3, n+1, n+3, n, n+1, n+3, n+2);
310     printf("%d%d%d %d%d%d %d%d%d %d%d%d %d%d%d %d%d%d\n", n+2, n, n+1, n+2, n, n+3, n+2, n+1, n, n+2, n+1, n+3, n+2, n+3, n, n+2, n+3, n+1);
311     printf("%d%d%d %d%d%d %d%d%d %d%d%d %d%d%d %d%d%d\n", n+3, n, n+1, n+3, n, n+2, n+3, n+1, n, n+3, n+1, n+2, n+3, n+2, n, n+3, n+2, n+1);
312     return 0;
313 }
314 
315 //5-17    爬动的蠕虫
316 #include <stdio.h>
317 int main() {  
318     int n, u, d;  
319     int time = 0, distance = 0;
320     scanf("%d%d%d", &n, &u, &d);  
321     do {  
322         time++;  
323         if (time % 2 != 0) {  
324             distance += u;  
325         }  
326         else {  
327             distance -= d;  
328         }  
329     } while (distance < n);    
330     printf("%d\n", time);    
331     return 0;  
332 } 
333 
334 //5-18    二分法求多项式单根
335 #include <stdio.h>
336 float f(float x);
337 float a3, a2, a1, a0;
338 int main() {
339     float a, b;
340     scanf("%f %f %f %f", &a3, &a2, &a1, &a0);
341     scanf("%f %f", &a, &b);
342     float left, mid, right;
343     left = a;
344     right = b;
345     while (left <= right - 0.001 && f(left) * f(right) <= 0)
346     {
347         if (f(left) == 0) {
348             printf("%.2f", &left);
349             return 0;
350         }
351         if (f(right) == 0)
352         {
353             printf("%.2f", right);
354             return 0;
355         }
356         mid = (left + right) / 2;
357         if (f(mid) * f(left) > 0) {
358             left = mid;
359         }
360         else {
361             right = mid;
362         }
363     }
364     printf("%.2f", mid);
365     return 0;
366 } 
367 float f(float x) {
368     float result;
369     result = a3*x*x*x + a2*x*x + a1*x + a0;
370     return result;
371 }
372 
373 //5-19    支票面额
374 #include <stdio.h>    
375 int main() {
376     int n, f, y, isFound = 0;
377     scanf("%d", &n);
378     for(int f = 0; f <= 100 && !isFound; ++f) {
379         for(int y = 0; y <= 100; ++y) {
380             if(98 * f - 199 * y == n) {
381                 printf("%d.%d", y, f);
382                 isFound = 1;
383                 break;
384             }
385         }
386     }
387     if(!isFound) {
388         printf("No Solution");
389     }
390     return 0;
391 }
392 //5-20    打印九九口诀表
393 #include <stdio.h>
394 int main(void) {
395     int i, j, N;
396     scanf("%d", &N);
397     for (i = 1; i <= N; i++)
398         for (j = 1; j <= i; j++) {
399             printf("%d*%d=%-4d", j, i, j*i);
400             if (i == j) printf("\n");
401         }
402     return 0;
403 }
404 //5-21    求特殊方程的正整数解
405 #include <stdio.h>
406 #include <stdlib.h>
407 int main()
408 {
409     int n, x, y, count=0;
410     scanf("%d", &n);
411     for(x=1; x<=100; x++) {
412         for(y=x; y<=100; y++) {
413             if(x*x+y*y==n) {
414                 printf("%d %d\n", x, y);
415                 count=1;
416             }
417         }
418     }
419     if(count==0) printf("No Solution");
420     return 0;
421 }
422 
423 //5-22    龟兔赛跑
424 #include <stdio.h>    
425 int main() {
426     int T, i;
427     int rabbitT=0;
428     scanf("%d", &T);
429     if(T<10) {
430         printf("^_^ %d\n", T*9);
431         return 0;  
432     }
433     rabbitT=10;
434     for(i=10;i<=T;i++) {
435         if(i%10==0) {
436             if(rabbitT*9>i*3 && (T-i)>=30)
437                 i=i+29;
438             else if(rabbitT*9>i*3 && (T-i)<30) {
439                 i=T;
440                 break;
441             }
442             else if(T-i>=10) {
443                 rabbitT+=10;
444                 i=i+9;
445             }
446             else {
447                 rabbitT+=T-i;
448                 i=T;
449                 break;
450             }
451         }
452     }
453     if(i*3>rabbitT*9)
454         printf("@_@ %d\n", i*3);  
455     else if(i*3<rabbitT*9)
456         printf("^_^ %d\n", rabbitT*9);  
457     else
458         printf("-_- %d\n", rabbitT*9);  
459     return 0;  
460 } 
461 
462 
463 
464 //5-23    币值转换
465 #include <stdio.h>
466 #include <stdlib.h>
467 int main() {
468     int i, j, n;
469     char a[10];
470     char b[10]={'Y','Q','B','S','W','Q','B','S'};
471     scanf("%s", a);
472     for(i=8; i>=0; i--){
473         if(a[i]>='0' && a[i]<='9') {
474             n=i;
475             break;
476         }
477     }
478     for(i=0; i<=n; i++) {
479         j=8+i-n;
480         if(a[i]>'0' && a[i]<='9') {
481             if(i!=n)
482                 printf("%c%c", a[i]+49, b[j]);
483             else
484                 printf("%c", a[i]+49);
485         }
486         if(a[i]=='0') {
487         if(a[i+1]>'0' && a[i+1]<='9' && j!=4)
488             printf("%c", a[i]+49);
489         if(j==4)
490             printf("%c", b[j]);
491         }
492     }
493     if(n==0 && a[0]=='0') {
494         printf("a");
495     }
496     return 0;
497 }
498 
499 //5-24    约分最简分式
500 #include <stdio.h>
501 #include <stdlib.h>
502 int main() {
503     int zi, mu, i;
504     scanf("%d/%d", &zi, &mu);
505 
506         for(i=mu; i>=2; i--) {
507             if(zi%i==0 && mu%i==0) {
508                zi=zi/i;
509                mu=mu/i;
510             }
511         }
512       printf("%d/%d", zi, mu);
513     return 0;
514 }
515 
516 //5-25    念数字
517 #include <stdio.h>
518 #include <stdlib.h>
519 int main()
520 {
521     char a[11];
522     int i;
523     scanf("%s",a);
524     for(i=0;i<11;i++){
525         switch(a[i]){
526             case '0': printf("ling"); break;
527             case '1': printf("yi");   break;
528             case '2': printf("er");   break;
529             case '3': printf("san");  break;
530             case '4': printf("si");   break;
531             case '5': printf("wu");   break;
532             case '6': printf("liu");  break;
533             case '7': printf("qi");   break;
534             case '8': printf("ba");   break;
535             case '9': printf("jiu");  break;
536             case '-': printf("fu");   break;
537         }
538         if(a[i+1]>='0'&&a[i+1]<='9')printf(" ");
539     }
540     return 0;
541 }
542 
543 //5-26    单词长度
544 #include <stdio.h>
545 int main()
546 {
547     char c;
548     int count[100] = { 0 };
549     int a = 1;
550     int flag = 0;
551     int i = 0;
552     scanf("%c", &c);
553     while (c != '.') {
554         if (c == ' ') {
555             if (a == 0) {
556                 if (i == 0) printf("%d", count[i]);  
557                 else        printf(" %d", count[i]);
558                 a = 1;  
559                 i++;  
560             }  
561         }  
562         else if (c != ' '&&c != '.') {
563             count[i]++;  
564             a = 0;  
565         }  
566         scanf("%c", &c);  
567         flag = 1;  
568     }  
569     if (flag == 1 && i == 0)
570         printf("%d", count[i]);
571     else if (flag == 1 && i != 0&&count[i]!=0)
572         printf(" %d", count[i]);
573     return 0;
574 }
575 
576 //5-27    冒泡法排序
577 #include <stdio.h>
578 #include <stdlib.h>
579 int main() {
580     int i, j, n, k, a[100], cont=0, q;
581     scanf("%d%d", &n, &k);
582     for(i=0; i<n; i++){
583     scanf("%d", &a[i]);
584     }
585     while(cont!=k) {
586         for(j=0; j<n-1; j++) {
587             if(a[j]>a[j+1]) {
588                 q=a[j];
589                 a[j]=a[j+1];
590                 a[j+1]=q;
591             }
592         }
593         cont++;
594     }
595     for(i=0;i<n;i++) {
596         printf("%d",a[i]);
597         if(i<n-1) printf(" ");
598     }
599     return 0;
600 }
601 
602 //5-28    猴子选大王
603 #include <stdio.h> 
604 int main() {
605     int i, j, k, temp;
606     int monkey[1001];
607     unsigned int n;
608     scanf("%d", &n);
609     for (i = 0; i < n; i++) {
610         monkey[i] = i + 1;
611     }
612     for (i = n - 1; i >= 0; i--) {
613         for (k = 1; k <= 3; k++) {
614             temp = monkey[0];
615             for (j = 0; j < i; j++) {
616                 monkey[j] = monkey[j + 1];
617             }
618             monkey[i] = temp;
619         }
620     }
621     printf("%d", monkey[0]);
622     return 0;
623 }
624 //5-29    删除字符串中的子串
625 #include <stdio.h>
626 #include <stdlib.h>
627 int main() {
628     char s1[80], s2[80];
629     int i=0, j=0, n1=0, n2=0, cont;
630     for(i=0;;i++) {
631         scanf("%c", &s1[i]);
632         if(s1[i]=='\n') break;
633         n1++;
634     }
635     for(i=0;;i++) {
636         scanf("%c", &s2[i]);
637         if(s2[i]=='\n') break;
638         n2++;
639     }
640     for(i=0; i<n1; i++) {
641         if(s1[i]==s2[0]) {
642             cont=0;
643             for(j=0; j<n2; j++) {
644                 if(s1[i+j]!=s2[j])
645                     cont=1;
646             }
647             if(cont==0) {
648                 n1=n1-n2;
649                 for(j=i;j<n1;j++) {
650                     s1[j]=s1[j+n2];
651                 }
652                 i=-1;
653                 s1[n1]='\0';
654             }
655         }
656     }
657     for(i=0; i<n1; i++) { printf("%c", s1[i]); }
658     return 0;
659 }
660 
661 //5-30    字符串的冒泡排序
662 #include <stdio.h>
663 #include <string.h>
664 int main() {
665     int N, K;
666     scanf("%d %d", &N, &K);
667     char str[N][11];
668     for (int i = 0; i < N; i++) {
669         scanf("%s", str[i]);
670     }
671     int i, j;
672     for (j=N-1; j>N-1-K; j--) {
673         for (i=0; i<j; i++) {
674             if (strcmp(str[i], str[i + 1]) > 0) {
675                 char strTemp[11];
676                 strcpy(strTemp,     str[i]);
677                 strcpy(str[i],      str[i + 1]);
678                 strcpy(str[i + 1],  strTemp);
679             }
680         }
681     }
682     for (int i=0; i<N; i++) { printf("%s\n", str[i]); }
683     return 0;
684 }
685 
686 //5-31    字符串循环左移
687 #include <stdio.h>   
688 #include <string.h>  
689 #include <stdlib.h>   
690 int main() {
691     int n;
692     char a[101];
693     char b[101]={0};
694     gets(a);
695     int s=0;
696     s=strlen(a);
697     scanf("%d", &n);
698     n=n%s;  
699     for(int i=0; i<s; i++) { b[i]=a[i];     }
700     for(int i=n; i<s; i++) { b[i-n]=a[i];   }
701     for(int j=0; j<n; j++) { b[s-n+j]=a[j]; }
702     printf("%s", b);
703     return 0;
704 }
705 
706 //5-32    说反话-加强版
707 #include <stdio.h>
708 #define MAX 500000
709 int main () {
710     char s;
711     char t[MAX];
712     int i=0, count=0, flag=0;
713     while ((s=getchar()) != '\n') {
714         if (s != ' ') { flag = 1; t[i++] = s; count = 0; }
715         else if (count > 0) { continue; }
716         else if (flag) { t[i++] = s; count ++; }
717     }
718     count = 0;
719     int j;
720     for (i-=1; i>=0; i--) {
721         if (t[i] != ' ') { count ++; }
722         else if (t[i]==' ' && count > 0) {
723             for (j=i+1; j<=i+count; j++) {
724                 printf("%c", t[j]);
725             } 
726             printf(" ");
727             count = 0;
728         }
729     }
730     for (j=i+1; j<=i+count; j++) { printf("%c", t[j]); } 
731     return 0; 
732 }
733 //5-33    有理数加法
734 #include <stdio.h>
735 int gcd(int, int);
736 struct fraction { int a; int b; };
737 int main(void)
738 {
739     struct fraction f1, f2, f3;
740     int g;
741     scanf("%d/%d %d/%d", &f1.a, &f1.b, &f2.a, &f2.b);
742     f3.a = f1.a*f2.b + f2.a*f1.b;
743     f3.b = f1.b*f2.b;
744     g = gcd(f3.a, f3.b);
745     f3.a /= g;
746     f3.b /= g;
747     if (f3.b == 1) printf("%d", f3.a);
748     else printf("%d/%d", f3.a, f3.b);
749     return 0;
750 }
751 int gcd(int x, int y) {  
752     int r;
753     while (1) {
754         r = x%y;
755         if (r == 0) break;
756         x = y;
757         y = r;
758     }
759     return y;
760 }
761 
762 //5-34    通讯录的录入与显示
763 #include <stdio.h>  
764 #include <stdlib.h>  
765 #include <string.h>      
766 struct list { char name[11]; char num[17]; char phone[17]; char sex[2]; char birthday[11]; };  
767 struct list p[100];    
768 int main() {
769     int i=0, j=0, N, K;
770     scanf("%d", &N);
771     for(i=0; i<N; i++) { scanf("%s %s %c %s %s\n", &p[i].name, &p[i].birthday, &p[i].sex, &p[i].num, &p[i].phone); }
772     scanf ("%d", &K);
773     int number;
774     for (i=0; i<K; i++) {
775         scanf ("%d", &number);
776         if (number < N && number>=0) { printf("%s %s %s %s %s\n", p[number].name,p[number].num, p[number].phone, p[number].sex,p[number].birthday); }
777         else { printf ("Not Found\n"); }
778     }
779     return 0;
780 }
781 
782 //5-35    有理数均值
783 #include <stdio.h>
784 #include <stdlib.h>
785 int main() {
786     int a[201],j;
787     int i,n,a1,b1,a2,b2;
788     scanf("%d",&n);
789     for(i=0; i<2*n; i=i+2) {
790         scanf("%d/%d", &a[i], &a[i+1]);
791     }
792     a1=a[0];
793     b1=a[1];
794     for(i=2;i<2*n;i=i+2) {
795         a2=a[i];
796         b2=a[i+1];
797         a1=a1*b2+a2*b1;
798         b1=b1*b2;
799         if(b1<0){
800             b1=-b1;
801             a1=-a1;
802         }
803         if(b1==0)
804             return 0;
805         for(j=2; j<=b1; j++) {
806             if(a1%j==0 && b1%j==0) {
807                 a1=a1/j;
808                 b1=b1/j;
809                 j--;
810             }
811         }
812     }
813     b1=b1*n;
814     for(i=2;i<=b1;i++){
815         if(a1%i==0&&b1%i==0){
816             a1=a1/i;
817             b1=b1/i;
818             i--;
819         }
820     }
821     if(b1==1)   printf("%d", a1);
822     else        printf("%d/%d", a1, b1);
823     return 0;
824 }
825 //5-36    复数四则运算
826 #include <stdio.h>    
827 float a1,b1,a2,b2;  
828 char c[5]={'+','-','*','/'};
829 float one(float a);
830 int main() {
831     scanf("%f %f %f %f", &a1, &b1, &a2, &b2);
832     float a, b;
833     for(int i=0; i<=3; i++) {
834         if(i==0){ a=a1+a2; b=b1+b2; }
835         else if(i==1) { a=a1-a2; b=b1-b2; }
836         else if(i==2) { a=a1*a2-b1*b2; b=a1*b2+a2*b1; }
837         else if(i==3) { a=(a1*a2+b1*b2)/(a2*a2+b2*b2); b=(b1*a2-a1*b2)/(a2*a2+b2*b2); }  
838         float k,d,e,f;
839         a=one(a);
840         b=one(b);
841         k=one(a1);
842         d=one(b1);
843         e=one(a2);
844         f=one(b2);
845         if(b1 >= 0) { printf("(%.1f+%.1fi)",k,d); }
846         else if(b1<0) { printf("(%.1f%.1fi)",k,d); }
847         printf(" %c ", c[i]);
848         if(b2>=0) { printf("(%.1f+%.1fi) = ",e,f); }
849         else if(b2<0) { printf("(%.1f%.1fi) = ",e,f); }
850         if(a==0&&b==0){ printf("0.0\n"); }
851         else if(a!=0&&b==0) { printf("%.1f\n",a); }
852         else if(a==0&&b!=0) { printf("%.1fi\n", b); }
853         else if(a!=0&&b>0) { printf("%.1f+%.1fi\n",a,b); }
854         else if(a!=0&&b<0) { printf("%.1f%.1fi\n",a,b); }
855     }
856 }
857 float one(float a) {
858     if(a>=0) {
859         return (float)((int)(a*10+0.5))/10;  
860     }
861     else if(a<0){
862         return (float)((int)(a*10-0.5))/10;  
863     }
864 }
865 
866 //5-37    整数分解为若干项之和
867 #include <stdio.h>
868 int N;
869 int s[31]; 
870 int top = -1; 
871 int count = 0; 
872 int sum = 0; 
873 void division (int i);
874 int main () {
875     scanf ("%d", &N);    
876     division (1);    
877     return 0; 
878 }
879 void division (int i) {
880     if (sum == N) {
881         count ++;
882         printf("%d=", N);
883         int k;
884         for (k=0; k<top; k++) {
885             printf("%d+", s[k]);
886         }
887         if (count%4 == 0 || s[top] == N) {
888             printf("%d\n", s[top]);
889         }
890         else {
891             printf("%d;", s[top]);
892         }
893         return;
894     } 
895     if (sum > N) {
896         return;
897     }
898     for (int j=i; j<=N; j++) {
899         s[++top] = j;
900         sum += j; 
901         division (j);
902         sum -= j;
903         top --;
904     }
905 }
906 
907 //5-38    数列求和-加强版
908 #include <stdio.h> 
909 #include <string.h> 
910 #include <math.h> 
911 int num[1000000];
912 int main() {
913     int A;
914     int N;
915     int i; 
916     int j; 
917     int t; 
918     int flag; 
919     scanf("%d%d",&A,&N); 
920     if(N == 0) printf("0\n"); 
921     else {
922         flag = 0;
923         for(i=N, j=0; i>=1; i--, j++) { 
924             t = A*i + flag; 
925             flag = t / 10; 
926             num[j] = t % 10; 
927         }
928         if(flag > 0) { 
929            num[j] = flag; 
930            j++; 
931         } 
932         for(i=j-1; i>=0; i--) { 
933             printf("%d", num[i]); 
934         } 
935     }
936     return 0; 
937 }
View Code

 

转载于:https://www.cnblogs.com/binarization/p/6267148.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值