c语言程序设计题 一.分支与跳转 (if else switch continue break case default goto)
1.利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include <stdio.h> int main () { int sc; scanf ("%d" , &sc); if (sc >= 90 ) { printf ("A\n" ); } else if (sc >= 60 && sc <= 89 ) { printf ("B\n" ); } else { printf ("C\n" ); } return 0 ; }
二.循环 (while for do…while)
1.计算下列表达式:s=1!+2!+3!+4!+……+10!
1 2 3 4 5 6 7 8 9 10 11 12 13 #include <stdio.h> int main () { int i; int t=1 , s=0 ; for (i = 1 ; i <= 10 ; i++) { t *= i; s += t; } printf ("%d" , s); return 0 ; }
2.九九乘法表(3种循环解决)
for循环:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include <stdio.h> int main () { int i; int j; for (i = 1 ; i <= 9 ; i++) { for (j = 1 ; j <= i; j++) { printf ("%d*%d=%2d " , j, i, i * j); } printf ("\n" ); } return 0 ; }
while:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include <stdio.h> int main () { int row = 1 ; while (row <= 9 ) { int col = 1 ; while (col <= row) { printf ("%d * %d = %d\t" , col, row, col * row); col += 1 ; } printf ("\n" ); row += 1 ; return 0 ; }
do while:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include <stdio.h> int main () { int i=1 ,j; do { j=1 ; do { printf ("%d*%d=%d " ,i,j,i*j); j++; }while (j<=i); i++; printf ("\n" ); }while (i<=9 ); }
三.数组 1.将一个一维数组{1,2,3,4,5,6,7,8,9,10}的成员逆序后输出
正确的结果为:10 9 8 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include <stdio.h> int main () { int a[10 ]={1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 }; int t,i; for (i=0 ;i<5 ;i++) { t=a[i]; a[i]=a[9 -i]; a[9 -i]=t; } for (i=0 ;i<10 ;i++) printf ("%d " ,a[i]); printf ("\n" ); return 0 ; }
2.打印杨辉三角前n行(二维数组)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 #include <stdio.h> int arr[31 ][31 ] = { 0 };void init (int n) { int i, j; for (i = 0 ; i < n; i++) { for (j = 0 ; j <= i; j++) { if (j == 0 || j == i) arr[i][j] = 1 ; else arr[i][j] = arr[i - 1 ][j] + arr[i - 1 ][j - 1 ]; } } }int main () { init(30 ); int n, i, j; scanf ("%d" , &n); for (i = 0 ; i < n; i++) { for (j = 0 ; j <= i; j++) { if (j != i) printf ("%d " , arr[i][j]); else printf ("%d" , arr[i][j]); } printf ("\n" ); } printf ("\n" ); return 0 ; } 1 1 2 1 1 3 3 1 1 4 6 4 1
四.经典题 1.输入两个正整数m和n,求其最大公约数。
(辗转相除法)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #include <stdio.h> int main () { int a, b , temp; scanf ("%d%d" ,&a, &b); if (a < b) { temp = a; a = b; b = temp; } while (b != 0 ) { temp = a % b; a = b; b = temp; } printf ("最大公约数:%d\n " , a); return 0 ; }int gcd (int a,int b) { return b > 0 ? gcd(b, a % b) : a; }
2.水仙花数:
打印出所有得“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身,例如,152是水仙花数,因为153=1×1×1+5×5×5+3×3×3。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include <stdio.h> int main () { int i,j,k,n; printf ("水仙花数是:" ); for (n=100 ;n<1000 ;n++) { i=n/100 ; j=n/10 %10 ; k=n%10 ; if (i*100 +j*10 +k==i*i*i+j*j*j+k*k*k) printf ("%d " ,n); } return 0 ; }
3.求素数(2–100之间)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 void FindPrime () { int i = 0 ; int j = 0 ; for (i = 1 ; i <= 100 ; i++) { for ( j = 2 ; j <= i; j++) { if (i % j == 0 ) break ; } if (i==j) printf ("%d " , i); } }int main () { FindPrime(); return 0 ; }
4.冒泡排序:(排序(冒泡排序,选择排序,插入排序,归并排序,快速排序,计数排序,基数排序) - VisuAlgo )
从键盘输入的10个整数按从小到大的顺序排序后输出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include <stdio.h> int main () { int n[10 ] = { 25 ,35 ,68 ,79 ,21 ,13 ,98 ,7 ,16 ,62 }; int i, j, temp; for (i = 1 ; i <= 9 ; i++) { for (j = 0 ; j <= 9 - i; j++) { if (n[j] > n[j + 1 ]) { temp = n[j]; n[j] = n[j + 1 ]; n[j + 1 ] = temp; } } } printf ("排序过后的数顺序:\n" ); for (i = 0 ; i < 10 ; i++) printf ("%d " , n[i]); printf ("\n" ); }
五.指针 1.使用指针方法,计算两个数组 中各元素对应位置的和,和的结果存入第三个数组中,然后输出。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include <stdio.h> void count (int *p1,int *p2,int *p3,int x) { int i; for (i=0 ;i<x;i++) { *(p3+i) = (*(p1+i))+ (*(p2+i)); } printf ("两个数组对应各元素和分别为:\n" ); for (i=0 ;i<x;i++) { printf ("%d " ,p3[i]); } }int main () { int arr01[4 ]={2 ,4 ,5 ,8 }; int arr02[4 ]={1 ,0 ,4 ,6 }; int arr03[4 ]; count(arr01,arr02,arr03,4 ); }
2.输出值为:at
(二级)
1 2 3 4 5 6 7 8 9 #include <stdio.h> int main () { char * a[] = { "work" ,"at" ,"alibaba" }; char ** pa = a; pa++; printf ("%s\n" , *pa); return 0 ; }
char* a[]为指针数组,是数组用来存放指针,该数组有三个元素,分别是三个字符串的地址。
pa = a;是将数组a的首元素的地址放入二级指针变量pa中。
pa++:即为a++,从数组首元素的地址变为第二个元素的地址。
*pa:此时pa为a[1],也就是第二个元素表示字符串的首地址,以%s的形式输出,依次打印字符串。
六.递归 1.用递归的方法求正整数N的阶乘
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include <stdio.h> long jiecheng (int n) { long p; if (n==0 ||n==1 ) p=1 ; else p=n*jiecheng(n-1 ); return p; }int main () { int n; scanf ("%d" ,&n); printf ("%d" ,jiecheng(n)); return 0 ; }
至此,面向考试的题就都讲完了,最后祝大家都能在考试中取得自己满意的成绩!