在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
注:编译环境 VC2010,系统WIN7 64位,其他编译环境和系统未测试
1-1. 编程,输入n,输出如下例(n=5)所示的图形: ***** ***** ***** ***** ***** # include <stdio.h> int main() { int length; void print_parallelogram(int length); scanf("%d", &length); print_parallelogram(length); return 0; } /** * 打印平行四边形 * @param int length 边长 */ void print_parallelogram(int length) { char element = '*';//元素 char space =' ';//空格 int i,j,k; for(i=0; i<length; i++) { /** 打印空格 */ for(j=length-(i+1); j>0; j--) { printf("%c", space); } /** 打印元素 */ for(k=0; k<length; k++) { printf("%c",element); } printf("\n"); } }
1-2. 编程,输入n值,输出如下例(n=4)所示的高和上底均为n的等腰梯形: **** ****** ******** ********** # include <stdio.h> int main() { int length; void print_isosceles_trapezoid(int length_of_side);
scanf("%d", &length); print_isosceles_trapezoid(length); return 0; } /** * 打印等腰梯形 * @param int length_of_side 边长 * @turn void */ void print_isosceles_trapezoid(int length_of_side) { char element = '*';//元素 char space =' ';//空格 int i,j,k; for(i=0; i<length_of_side; i++) { /** 打印空格 */ for(j=length_of_side-(i+1); j>0; j--) { printf("%c", space); } /** 打印元素 */ for(k=0; k<length_of_side+(i*2); k++) { printf("%c",element); } printf("\n"); } }
1-3. 编程,输入n,输出如下例(n=3)所示的边长为n的菱形: * *** ***** *** * # include <stdio.h> int main() { int length; void print_rhombus(int length_of_side); scanf("%d", &length); print_rhombus(length); return 0; } /** * 打印菱形 * @param int length_of_side 边长 * @turn void */ void print_rhombus(int length_of_side) { char element = '*';//元素 char space =' ';//空格 int times = length_of_side*2-1;//循环次数 int i,j,k,n,m; for(i=0; i<times; i++) { /** 计算 空格的数量 */ n = length_of_side-(i+1); n = n < 0 ? -n : n; /** 打印空格 */ for(j=n; j>0; j--){ printf("%c", space); } /** 计算 棱形上边点 和下边点的数量 */ m = i<length_of_side ? 1+(i*2) : (times-i) * 2 -1 ; /** 打印元素 */ for(k=m; k>0; k--){ printf("%c",element); } printf("\n"); } }
1-4. 编程, 输入顶行字符和图形的高。输出如下例(顶行字符为'A',图形的高为5)所示的图形, A B C D E F G H I J K L M N O P Q R S T U V W X Y # include <stdio.h> int main() { char letter; int height; void letter_pyramid(char letter, int height); printf("请输入金字塔塔顶字母"); scanf("%c", &letter); printf("请输入金字塔塔高"); scanf("%d", &height); letter_pyramid(letter, height); return 0; } /** * 打印字母金字塔 * @param char word 塔顶字母 * @param int height 塔高 * @return void */ void letter_pyramid(char letter, int height) { int i,j,k; /** @TODO 对字符越界做简单处理 */ if(letter+height*height > 256) { printf("塔高超出限制,拜拜!!!\n"); return ; } for ( i = 0; i < height; i++) { /** 打印空格 */ for(k=height-(i+1); k>0; k--) printf("%c", ' '); /** 打印字母 */ for ( j = 0; j < (i*2)+1; j++) { printf("%c", letter++); } printf("\n"); } }
1-5. 编程,打印下列上三角形式的乘法九九表。 1 2 3 4 5 6 7 8 9 ---------------------------- 1 2 3 4 5 6 7 8 9 4 6 8 10 12 14 16 18 9 14 15 18 21 24 27 16 20 24 28 32 36 25 30 35 40 45 36 42 48 54 49 56 63 86 72 81 # include <stdio.h> int main() { void multiplication_table(); multiplication_table(); return 0; } /** * @desc 打印 99乘法表 */ void multiplication_table() { int n = 9,i,j,k; for (i = 1; i <= n; i++) printf("%3d", i); printf("\n"); for (j = 1; j <= n; j++) printf("---"); printf("\n"); for ( i = 1; i <= n; i++) { for ( j = 1; j <= n; j++) { if (j<i){ printf(" "); }else{ printf("%3d", i*j); } } printf("\n"); } }
2-1. 编程,输出200以内(含200)所有完全平方数C(满足C2=A2+B2)及其个数。 # include <stdio.h> int main() { void pythagorean_theorem(); pythagorean_theorem(); return 0; } /** * @desc 求 200以内构成勾股数的个数 * 勾股数公式(a²+ 1)²=(a²-1)²+(2a)² */ void pythagorean_theorem() { int n=200,i,a,b,c; int square[200];//用于存放符合勾股数的数 int num=0;// 计算 勾股数的个数
for (i = 1; i*i+1 <= n; i++) { /** 套用勾股数定理 */ a = (i*i+1); b = (i*i-1); c = 2*i; if ( a*a == b*b + c*c && b>0) { square[num] = a; ++num; } } if (!num) { printf("没有找到符合要求的");return; } printf("200内能组成勾股数的个数%d\n",num); printf("分别是:\n"); while (num) { printf("%d\n",square[--num]); } }
2-2. 中国古代数学家张丘建在他的《算经》中提出了著名的“百钱百鸡问题”:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,翁、母、雏各几何? 编程,输出所有可能的购买方案。
# include <stdio.h>
int main() { void money100_chickens100(); money100_chickens100(); return 0; }
/** * @desc 《算经》的“百钱百鸡问题” * 分析得出公式:5x+3y+z/3=100, x+y+z=100; */ void money100_chickens100() { int max_x = 100/5;//鸡翁最大数 int max_y = 100/3;//鸡母最大数,取整 int x,y,z;//各种鸡个数
for (x = 0; x <= max_x; x++) { for (y = 0; y <= max_y; y++) { z = 100 - x - y; if (x *5 + y*3 + z/3.0 == 100) { printf("x=%d,y=%d,z=%d\n",x,y,z); } } } }
2-3. 设N是一个四位数,它的9倍恰好是其反序数(例如:123的反序数是321),编程,输出所有满足条件的N。 # include <stdio.h> int main() { /** 4位数9倍恰好是其反序数,所以其反序也是4位数*/ int max = 10000 /9 ;//最大的反序之前的数 int i; int antitone(int n); for ( i= 1001; i < max; i++){ if(i*9 == antitone(i)){ printf("%d\n", i); } } return 0; } int antitone(int n){ int i=0; while (n>0){ i = (n%10)+i*10; n /=10; } return i; } 2-4. 编程,求全部水仙花数。所谓水仙花数是指一个三位数,其各位数字立方的和等于该数。如:153 = 13 + 53+ 33 # include <stdio.h> int main() { int i,j,k,n,cube; for ( i = 1; i <= 9; i++) { for ( j = 0; j <= 9; j++) { for ( k = 0; k<= 9; k++){ n = i*100+j*10+k; cube = i*i*i + j*j*j + k*k*k; if (n==cube) { printf("%d\n", n); } } } } }
2-5. 编程,输出555555的约数中最大的三位数。 # include <stdio.h> int main() { int i ; for ( i = 999; i >0 ; i--) { if (555555 % i == 0) { printf("%d\n", i); break; } } } 2-6. 编程,输出1000到100000之间所有满足下列条件的所有整数及其个数:整数的各位数字之和等于5。 # include <stdio.h> void main() { int min_i=1000; /** 因为各位位数之和等于5,所以大于50000的数位数之和也大于5 */ unsigned int max_i=50000; unsigned int n,num=0; int figure(long number);
for(n=min_i;n<=max_i;n++){ if(figure(n)==5){ printf("%d\n",n); num++; } } printf("个数:%d\n",num); } int figure(long number){ int result=0; while(number>0){ result += number%10; number = number/10; } return result; }
2-7.输出1000以内的全部“完全数”。 # include <stdio.h> void main() { int n=1000; int num=0,i,j,r; for (i = 1; i <= n; i++){ r = 0; for (j = 1; j < i; j++){ if (i%j==0){ r +=j; } } if (r==i){ num++; printf("%d\n",i); } } printf("完全数的个数:%d", num); } 3-1. 编程,输入10个整数,然后进行查找。输入要查找的整数,若找到,则输出该数在数组中的下标位置,否则输出“can not found!”。 # include <stdio.h> void main() { int num[10],i,find,flag=0; printf("请输入10个数\n"); for (i = 0; i < 10; i++){ scanf("%d", &num[i]); } printf("请输入要查找的数"); scanf("%d", &find); for (i = 0; i < 10; i++){ if (num[i] == find) { flag=1; printf("下标为%d\n", i); } } if (flag==0) { printf("can not found!\n", i); } }
3-2.编程,输入一个字符串并删除其中的指定字符。例如,对于字符串abcdcf,指定删除c,则结果为:abdf。 #include <stdio.h> void main() { char str[80],str2[80],letter; int i=0, j=0;
printf("请输入一个字符串\n"); gets(str); printf("请输入字符串中要删除的字符\n"); scanf("%c",&letter); while (str[i]!='\0'){ if (str[i] != letter) { str2[j++] = str[i]; } i++; } str2[j]= '\0'; puts(str2); getch(); } 3-3. 编程,输入一行字符,将其反序后再输出。 #include <stdio.h> void main() { char str[80],letter,str2[80], *p=str, *q=str2; int len=0; printf("请输入一个字符串\n"); gets(str); while (*p){ p++; } len = p-str; while (--len>=0){ *q++ = str[len]; } *q = '\0'; puts(str2); }
3-4. 编程,输入一行字符,将其中的每个字符从小到大排列后输出。 #include <stdio.h> void main() { char str[80],*s=str,temp; int i,j,len; scanf("%s",str); while (*s){ s++; } len = s - str; for (i = 0; i < len; i++) { for ( j = i+1; j < len; j++){ if (str[i]>str[j]){ temp = str[i]; str[i] = str[j]; str[j] = temp; } } } printf("%s",str); getch(); } 3-5. 编程,输入两个已经按从小到大顺序排列好的字符串,将两个字符串合并为一个新的从小到大排列字符串并输出。 #include <stdio.h> void main() { char str[80],str2[80],str3[80],*p=str,*q=str2,*r=str3, *temp_p; printf("请输入第一个顺序字符串\n"); gets(str); printf("请输入第二个顺序字符串\n"); gets(str2); while (*p!='\0' && *q!='\0'){ *r++ = *p <*q ? *p++ : *q++; } temp_p = *p=='\0' ? q :p; while (*r ++ = *temp_p ++ ); *r= '\0'; puts(str3); getch(); }
3-6. 输入一行文字,判断该行文字是否是回文。是输出:YES。否输出:NO #include <stdio.h> void main() { char input[80],*p,*q; p=q=input; printf("input string:\n"); gets(input); while(*p!='\0')p++; p--; while (p>=input) { if (*p != *q) { printf("NO"); getch(); return; } p--;q++; } printf("YES"); getch(); return; }
3-7. 编程,输入若干个字符串,当输入字符串的长度为0时停止输入。输出最长的字符串。 #include <stdio.h> int strlen(char str[]){ char *p=str; while (*p!='\0' && p++); return p-str; } //把第二个字符串的值复制给第一个 void strcpy(char str1[], char str2[]){ char *p=str2, *q=str1; while (*q++ = *p++); }
//求最短字符串 void main() { char str[80],str2[80]; int len=0, max_len; gets(str); max_len= strlen(str); strcpy(str2, str);
gets(str); do{ len = strlen(str); if (len>max_len){ max_len = len; strcpy(str2, str); } gets(str); } while (str[0]!='\0'); printf("%s", str2); getch(); }
3-8. 输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。 #include <stdio.h> void main() { char str[80], *p=str; int num=0,flag=1; gets(str); while (*p != '\0'){ printf("%d,",*p == ' '); if (*p == ' '){ flag=1; }else{ if(flag)num++; flag=0; } p++ ; } printf("total %d words", num); |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论