循环练习
// // main.c // 循环练习 // // Created by zhangxueming on 15/5/29. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #include <stdio.h> //4.循环(计算某个数的位数) 输入一个正整数, 计算这个正整数的位数 //int main(int argc, const char * argv[]) { // // insert code here... // //printf("Hello, World!\n"); // //num = 12345; // //12345 / 10 cnt++; // //1234 / 10 cnt++; // //123 / 10 cnt++; // //12 / 10 cnt++; // //1 / 10 cnt++; // //0 // int num; // scanf("%d", &num); // int cnt=0; // while (num) { // cnt++; // num/=10; // } // printf("cnt = %d\n", cnt); // return 0; //} //9.流程控制(数值序列3) 输出数字序列 1,2,3,5,8,13,21...,输出个数由键盘输入。注意输入使用scanf输入 // a = 1, b=2; a+b = 3; // a = 2, b=3; a+b = 5; // a = 3, b=5; a+b = 8; //\ //比如: //\ //输入 3输出为 //1 //2 //3 //输入 4 输出为 //1 //2 //3 //5 //int main(int argc, const char *argv[]) //{ // int n; // int a=0,b=1; // scanf("%d", &n); // for (int i=0; i<n; i++) { // int temp = a+b; // printf("%d ", temp); // a = b; // b = temp; // } // printf("\n"); // return 0; //} //int a=1, b=1; // a = 2 b=1; // a= 3 b=2 //10.流程控制(数值序列2) 输出数字序列2/1,3/2,5/3,8/5,13/8,21/13...,输出个数由键盘输入。注意输入使用scanf输入 feibonaqi //\ //比如: //输入 3输出为 //2/1 //3/2 //5/3 //输入 4 输出为 //2/1 //3/2 //5/3 //8/5 //int main(int argc, const char *argv[]) //{ // int n; // scanf("%d", &n); // int a=1, b=1; // for (int i=0; i<n; i++) { // printf("%d/%d ", a+b, a); // int temp = a+b; // b = a; // a = temp; // } // printf("\n"); // return 0; //} //11. 输入一个数a,求 s=a+aa+aaa+aaaa+aa...a 的值,其中 a 是一个数字(1-9 之间)计算的数据的个数是5。例如 2+22+222+2222+22222。 //a = 3; int temp = a; //a = a*10+temp a = 33 //a = a*10 +temp 333; //a = a*10 + temp 3333; //int main(int argc,const char *argv[]) //{ // int a; // int sum = 0; // scanf("%d", &a); // int temp = a; // // for (int i=0; i<5; i++) { // sum+=a; // a= a*10+temp; // } // printf("sum = %d\n", sum); // return 0; //} //12. 输入年月日, 判断是一年中的第多少天 //2015 3 1 //31 + 28 + 1 = 60 //2012 3 1 //31 + 29 + 1 = 61 //int main(int argc,const char *argv[]) //{ // int year, month, day; // int sum = 0; // scanf("%d %d %d", &year, &month, &day); // for (int i=1; i<month; i++) { // switch (i) { // case 1: // case 3: // case 5: // case 7: // case 8: // case 10: // case 12: // sum+=31; // break; // case 4: // case 6: // case 9: // case 11: // sum+=30; // break; // case 2: // if ((!(year%4)&&year%100)||!(year%400)) { // sum+=29; // } // else // { // sum+=28; // } // break; // default: // break; // } // } // printf("sum = %d", sum+=day); // return 0; //} //int main(int argc,const char *argv[]) //{ // int i; // scanf("%d",&i); // // switch (i) { // case 1: // printf("hello world%d\n", i); // case 2: // printf("hello world%d\n", i); // case 3: // printf("hello world%d\n", i); // case 4: // printf("hello world%d\n", i); // case 5: // printf("hello world%d\n", i); // break; // default: // break; // } // return 0; //} //13.一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第 //10 次落地时,共经过多少米? //int main(int argc,const char *argv[]) //{ // float s = 100; // float temp = 100; // for (int i=0; i<9; i++) { // s+=temp; // temp/=2; // } // printf("s = %.2f\n", s); // return 0; //} //14. 求最大公约数 (辗转相除法) //a b a%b //319 / 377 --- 319 //377 / 319 --- 58 //319 / 58 --- 29 //58 / 29 --- 0 //29 / 0 //int main(int argc,const char *argv[]) //{ // int a, b; // scanf("%d %d", &a, &b); // while (b) { // int temp = a%b; // a = b; // b = temp; // } // printf("最大公约数 = %d\n",a); // return 0; //} //17. 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数 //sdfghjkl;\n //int main(int argc,const char *argv[]) //{ // int cnt1=0,cnt2=0,cnt3=0,cnt4=0; // char ch; // while (scanf("%c",&ch), ch!='\n') { // if ((ch>='a' && ch<='z') || (ch>='A'&&ch<='Z')) { // cnt1++; // } // else if(ch == ' ') // { // cnt2++; // } // else if(ch>='0' && ch<='9') // { // cnt3++; // } // else // { // cnt4++; // } // } // printf("英文字母:%d 空格:%d 数字:%d 其它字符:%d\n", cnt1, cnt2, cnt3, cnt4); // return 0; //} //19. 循环(输出图案) 打印以下图案, 该图案的行数由输入的数n来控制 // //A //AA //AAA //int main(int argc,const char *argv[]) //{ // int n; // scanf("%d", &n); // for (int i=0; i<n; i++) { // for (int j=0; j<=i; j++) { // printf("A"); // } // printf("\n"); // } // return 0; //} //20.使用嵌套循环产生下列图案: // * j=3 i=0 // *** j=2 j=3 i=1 j=4 // ***** j=1 j=2 j=3 i=2 j=4 j=5 //*******j=0 j=1 j=2 j=3 i=3 j=4 j=5 j=6 //int main(int argc,const char *argv[]) //{ // int n; // scanf("%d", &n); // for (int i=0; i<n; i++) { // for (int j=0; j<(n-1)*2+1; j++) { // if (i+j>=n-1 && j-i<=n-1) { // printf("*"); // } // else // { // printf(" "); // } // } // printf("\n"); // } // return 0; //} //24. 将一个正整数分解质因数(用for 循环)。例如:输入90,打印出90=2*3*3*5。//%d* %d //n //90 //90 / 2 --- 0 //45 / 2 --- //45 / 3 --- 0 //15 / 3 --- 0 //5 / 3 --- //5 / 4 --- //5 / 5 --- 0 //1 //int main(int argc,const char *argv[]) //{ // int n; // scanf("%d", &n); // printf("%d=",n); // for (int i=2; n!=1; i++) { // if(!(n%i)) // { // n==i?printf("%d", i):printf("%d*",i); // n /= i; // i--; // } // } // return 0; //} //30. 输入一个自然数n, 统计 n! 末尾有多少个0? //5! 1 5*4*3*2*1 //10! 2 2*5*9*8*7*6*5*4*3*2*1 //15! 3 3*5...2*5...5*... //20! 4 4*5...3*5...2*5...5... //25! 6 5*5...4*5...3*5...2*5...5... //125! 5*5*5 25%5 5%5 //25%5 cnt++ 5%5 cnt++; 1%5 //int main(int argc,const char *argv[]) //{ // int n; // int cnt=0; // scanf("%d", &n); // for (int i=1; i<=n; i++) { // int temp = i; // while (!(temp%5)) { // cnt++; // temp/=5; // } // } // printf("cnt = %d\n", cnt); // return 0; //} //31. 编写程序,找到1000以内的所有”完数”,所谓完数是指一个数是其所有因子之和 如: 6 = 1+2+3; 6 28 496 //int main(int argc, const char *argv[]) //{ // for (int i=1; i<=1000; i++) { // int sum=0; // for (int j=1; j<i; j++) { // if (!(i%j)) { // sum+=j; // } // } // if (sum==i) { // printf("%d ", i); // } // } // return 0; //} //25.流程控制(for循环) 输入一个大写字母,如F //\ //比如: //\ //输入:F //\ //输出: // // A // AB A // ABC BA // ABCD CBA // ABCDE DCBA //ABCDEF EDCBA //int main(int argc, const char *argv[]) //{ // char ch; // scanf("%c", &ch); // for (int i=0; i<ch-'A'+1; i++) { // for (int j=0; j<ch-'A'-i; j++) { // printf(" "); // } // for (int j=0; j<=i; j++) { // printf("%c",'A'+j); // } // for (int j=i; j>0; j--) { // printf("%c", 'A'+j-1); // } // printf("\n"); // // } // return 0; //} //26. 流程控制(for循环) 输入一个大写字母,如 F,输出 //\ //比如: //\ //输入:F //\ //输出: // F // EFE // DEFED // CDEFEDC // BCDEFEDCB //ABCDEFEDCBA //27. 流程控制(for循环) 输入一个大写字符,如F //\ //比如: // //输入:F // //输出: // //FEDCBA // EDCBA B // DCBA BC // CBA BCD // BA BCDE // A BCDEF int main(int argc,const char *argv[]) { char ch; scanf("%c",&ch); for (int i=0; i<ch-'A'+1; i++) { for (int j=0; j<i; j++) { printf(" "); } for (int j=ch-'A'-i; j>=0; j--) { printf("%c",'A'+j); } for (int j=0; j<i; j++) { printf("%c", 'A'+1+j); } printf("\n"); } return 0; }