本文参考自苏嵌暑期实训----day5
查看原文: 原文地址
今日任务 | 五道作业题:整数算法训练 |
作业1:通过编程实现,统计1~n有多少个9 提示:n通过参数传入 | 1 #include<stdio.h> 2 3 int main() 4 { 5 int num; 6 7 printf("请输入一个数:\n"); 8 scanf("%d",&num); 9 10 int i,j,temp,count = 0; 11 12 for(i = 1; i <= num; i++) 13 { 14 temp = i; 15 while(temp != 0) 16 { 17 j = temp % 10; 18 19 if(j == 9) 20 { 21 count++; 22 } 23 24 temp = temp / 10; 25 26 } 27 } 28 29 printf("共有%d个九!\n",count); 30 31 return 0; 32 } |
2、有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数), 凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位. 提示:用数组完成 | 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 #define SIZE 50 5 6 7 int main() 8 { 9 int n,i,count,temp; 10 int a[SIZE] = {0}; 11 12 //输入人数 13 printf("请输入人数(1-50人):\n"); 14 scanf("%d",&n); 15 16 temp = n; 17 18 if(temp > 50 || temp < 1) 19 { 20 printf("输入错误!输入范围为1-50!\n"); 21 // scanf("%d",&n); 22 } 23 24 25 //给人从1到n编号 26 for(i = 0; i < n; i++) 27 { 28 29 a[i] = i + 1; 30 } 31 32 //把报到3的人编号置0 33 i = 0; 34 while(n > 1) 35 { 36 if(a[i] != 0) 37 { 38 count++; 39 } 40 41 if(count == 3) 42 { 43 a[i] = 0; 44 count = 0; 45 n--; 46 } 47 |
3、 题目:输入5个数(含负数、小数)将它们按由小到大的顺序排列起来 | 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 int main(int argc,char *argv[]) 5 { 6 int i,j,k = 1; 7 char *ch[100]; 8 char tmp; 9 float ato[10] = {0}; 10 11 //输入的初始值 12 printf("初始值:\n"); 13 for(i = 1; i < argc; i++) 14 { 15 printf("%s ",argv[i]); 16 // printf("\n"); 17 } 18 printf("\n"); 19 20 21 //把argv中的字符串转换成浮点型 22 for(i = 1; i < argc; i++) 23 { 24 ato[i] = atof(argv[i]); 25 // printf("%f ",ato[i]); 26 } 27 28 //printf("\n"); 29 30 31 32 //排序 33 for(i = 1; i <= 4; i++) 34 { 35 for(j = 1; j <= 5 - i; j++) 36 { 37 if(ato[j] > ato[j + 1]) 38 { 39 tmp = ato[j + 1]; 40 ato[j + 1] = ato[j]; 41 ato[j] = tmp; 42 ch[k] = argv[j + 1]; 43 argv[j + 1] = argv[j]; 44 argv[j] = ch[k]; 45 k++; 46 } 47 } |
4、 题目:求100以内的素数,全部打印出来 | 1 #include<stdio.h> 2 #include<math.h> 3 4 int main() 5 { 6 int i = 0; 7 int j = 0; 8 9 10 printf("2 "); 11 12 for(i = 3; i <= 100; i += 2) 13 { 14 for(j = 2; j < sqrt(i); j++) 15 { 16 if(i % j == 0) 17 { 18 break; 19 } 20 } 21 22 if(j > sqrt(i)) 23 { 24 printf("%d ",i); 25 } 26 } 27 28 printf("\n"); 29 30 return 0; 31 } |
5、题目: 一个数如果恰好等于它的因子之和,这个数被成为”完数”,例如:6=1+2+3.请编程找出1000以内的完数 | 1 #include<stdio.h> 2 3 int main() 4 { 5 int i,j; 6 int sum = 0; 7 8 for(i = 1; i <= 1000; i++) 9 { 10 for(j = 1; j < i; j++) 11 { 12 if(i % j ==0) 13 { 14 sum += j; 15 } 16 17 } 18 19 if(sum == i) 20 { 21 printf("%d ",i); 22 } 23 24 sum = 0; 25 } 26 27 printf("\n"); 28 29 return 0; 30 31 } |