|   | 
              
                54楼                巨大八爪鱼
                2016-1-16 15:22
                                                  
			  【6】#include <stdio.h>
 
 int str2int(char *str)
 {
 int n = 0;
 while (*str != '\0')
 {
 if (*str >= '0' && *str <= '9')
 n = n * 10 + (*str - '0');
 str++;
 }
 return n;
 }
 
 void main()
 {
 char str[50];
 int n;
 gets(str);
 n = str2int(str);
 printf("%d\n", n);
 }
 
 | 
                
          |   | 
              
                55楼                巨大八爪鱼
                2016-1-16 15:28
                                                  
			  【7】#include <stdio.h>
 
 void _strcpy(char *target, char *src)
 {
 while (*src != '\0')
 *target++ = *src++;
 *target = '\0'; // 这句话非常重要
 }
 
 void main()
 {
 char str[256];
 char str2[256]/* = "there is a key, there is a hat"*/;
 gets(str);
 _strcpy(str2, str);
 puts(str2);
 }
 
 | 
                
          |   | 
              
                57楼                巨大八爪鱼
                2016-1-16 15:35
                                                  
			  【8】#include <stdio.h>
 #include <string.h>
 
 char *getFileExtName(char *filename)
 {
 int len = strlen(filename);
 int i;
 for (i = len - 1; i >= 0; i--) // 注意是i>=0,不是i>0
 {
 if (filename[i] == '.')
 return filename + i + 1;
 }
 return filename + len; // 获取最后一个\0的位置,无需加1
 }
 
 void main()
 {
 char filename[100];
 gets(filename);
 printf("Extension: %s\n", getFileExtName(filename));
 }
 
 | 
                
          |   | 
              
                58楼                巨大八爪鱼
                2016-1-16 15:59
                                                  
			  【9】#include <stdio.h>
 
 int _strcmp(char *str1, char *str2)
 {
 while (*str1 == *str2 && *str1 != '\0' && *str2 != '\0')
 {
 str1++;
 str2++;
 }
 if (*str1 > *str2)
 return 1;
 else if (*str1 < *str2)
 return -1;
 else
 return 0;
 }
 
 void main()
 {
 char str1[100];
 char str2[100];
 int rs;
 gets(str1);
 gets(str2);
 rs = _strcmp(str1, str2);
 if (rs == 1)
 printf("str1 > str2\n");
 else if (rs == -1)
 printf("str1 < str2\n");
 else if (rs == 0)
 printf("str1 == str2\n");
 }
 
 | 
                
          |   | 
              
                59楼                巨大八爪鱼
                2016-1-16 16:13
                                                  
			  【10】#include <stdio.h>
 
 void draw(int level)
 {
 int i, j;
 for (i = 0; i < level; i++)
 {
 for (j = 0; j < level - 1 - i; j++)
 putchar(' ');
 for (j = 0; j < 2 * i + 1; j++)
 putchar('*');
 putchar('\n');
 }
 }
 
 void main()
 {
 int i;
 scanf("%d", &i);
 draw(i);
 }
 
 | 
                
          |   | 
              
                60楼                巨大八爪鱼
                2016-1-16 16:25
                                                  
			  【11】#include <stdio.h>
 
 int prime(int a[])
 {
 int count = 0, i, j;
 int flag;
 for (i = 2; i < 1000; i++) // 必须以2开头
 {
 flag = 1;
 for (j = 2; j < i; j++)
 {
 if (i % j == 0)
 {
 flag = 0;
 break; // 注意break无法跳出两层循环,所以只能设置flag
 }
 }
 if (flag == 1)
 a[count++] = i;
 }
 return count;
 }
 
 void main()
 {
 int a[1000];
 int i;
 int count = prime(a);
 printf("共有%d个素数。\n", count);
 for (i = 0; i < count; i++)
 {
 printf("%4d", a[i]);
 if ((i + 1) % 10 == 0)
 printf("\n");
 }
 }
 
 | 
                
          |   | 
              
                61楼                巨大八爪鱼
                2016-1-16 16:26
                                                  
			  也可以不设置flag,直接判断内层循环结束后i是否等于j就行:int prime(int a[])
 {
 int count = 0, i, j;
 for (i = 2; i < 1000; i++) // 必须以2开头
 {
 for (j = 2; j < i; j++)
 {
 if (i % j == 0)
 break;
 }
 if (i == j)
 a[count++] = i;
 }
 return count;
 }
 
 | 
                
          |   | 
              
                62楼                巨大八爪鱼
                2016-1-16 16:39
                                                  
			  【12】#include <stdio.h>
 
 double H(int n, double x)
 {
 switch (n)
 {
 case 0:
 return 1;
 case 1:
 return 2 * x;
 default:
 return 2 * x * H(n - 1, x) - 2 * (n - 1) * H(n - 2, x);
 }
 }
 
 void main()
 {
 int n;
 double x;
 scanf("%d%f", &n, &x);
 printf("%.2f", H(n, x));
 }
 
 | 
                
          |   | 
              
                63楼                巨大八爪鱼
                2016-1-16 16:43
                                                  
			  【13】#include <stdio.h>
 
 int fibon(int n)
 {
 switch (n)
 {
 case 0:
 case 1:
 return n;
 default:
 return fibon(n - 1) + fibon(n - 2);
 }
 }
 
 void main()
 {
 int n;
 scanf("%d", &n);
 printf("fn = %d\n", fibon(n));
 }
 
 | 
                
          |   | 
              
                64楼                巨大八爪鱼
                2016-1-16 16:49
                                                  
			  【14】#include <stdio.h>
 
 int narcis(int m[])
 {
 int i, count = 0;
 int a, b, c;
 for (i = 100; i <= 999; i++)
 {
 a = i / 100;
 b = i % 100 / 10;
 c = i % 10;
 if (a * a * a + b * b * b + c * c * c == i)
 m[count++] = i;
 }
 return count;
 }
 
 void main()
 {
 int m[1000];
 int i;
 int count = narcis(m);
 for (i = 0; i < count; i++)
 {
 printf("%4d", m[i]);
 if ((i + 1) % 5 == 0)
 putchar('\n');
 }
 putchar('\n');
 }
 
 |