1、计算n的阶乘
代码如下:
#include<stdio.h> int main() { int n,i,s=1; printf("输入一个整数计算它的阶乘:"); scanf("%d",&n); for(i=1;i<=n;i++) { s*=i; } printf("%d!=%d\n",n,s); return 0; }
2、计算 1!+2!+3!+……+10!
代码如下:
#include <stdio.h> int main() { int n=0; int i=0; int s = 1; int sum = 0; for (n = 1; n <= 10; n++) { s *= n; sum += s; } printf("sum=%d\n",sum); return 0; }
3、九九乘法表
代码如下:
#include <stdio.h> int main() { int i = 0; //控制行数 for(i=1; i<=9; i++) { //打印每一行内容,每行有i个表达式 int j = 0; for(j=1; j<=i; j++) { printf("%d*%d=%2d ", i, j, i*j); } printf("\n"); } return 0; }
4、求10个数最大值
代码如下:
int main() { int arr[10] = {0}; int i = 0; int max = 0; for(i=0; i<10; i++) { scanf("%d", &arr[i]); } // max = arr[0]; for(i=1; i<10; i++) { if(arr[i]>max) max = arr[i]; } printf("max = %d\n", max); return 0; }
5、计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果
代码如下:
#include <stdio.h> int main() { int i = 0; double sum = 0.0; int flag = 1; for(i=1; i<=100; i++) { sum += flag*1.0/i; flag = -flag; } printf("%lf\n", sum); return 0; }
6、编写程序数一下 1到 100 的所有整数中出现多少个数字9
代码如下:
#include <stdio.h> int main() { int i = 0; int count = 0; for(i=1; i<=100; i++) { if(i%10==9) count++; if(i/10==9) count++; } printf("%d\n", count); return 0; }
7、二分查找
代码如下:
#include <stdio.h> int main() { int arr[] = {1,2,3,4,5,6,7,8,9,10}; int key = 3; int left = 0; int right = sizeof(arr)/sizeof(arr[0]); // right位置的数据取不到 while(left<right) // right位置没有数据,此处不需要添加= { int mid = left+(right-left)/2; if(arr[mid]>key) // key小于中间位置数据,说明key可能在左半侧,需要改变右边界 { right = mid; // right位置的数据取不到,因此right=mid,不需要减1 } else if(arr[mid]<key)// key大于中间位置数据,说明key可能在右半侧,需要改变左边界 { left = mid+1; // left位置的数据可以取到,因此left=mid+1 } else { printf("找到了,下标是:%d\n", mid); break; } } if(left>=right) printf("找不到\n"); return 0; }
8、编写代码,演示多个字符从两端移动,向中间汇聚。
代码如下:
#include <stdio.h> int main() { char arr1[] = "welcome world..."; char arr2[] = "################"; int left = 0; int right = strlen(arr1) - 1; printf("%s\n", arr2); //while循环实现 //while (left <= right) //{ // Sleep(1000); // arr2[left] = arr1[left]; // arr2[right] = arr1[right]; // left++; // right--; // printf("%s\n", arr2); //} //for循环实现 for (left = 0, right = strlen(arr1) - 1; left <= right; left++, right--) { Sleep(1000); arr2[left] = arr1[left]; arr2[right] = arr1[right]; printf("%s\n", arr2); } return 0; }
9、编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则提示登录成功,如果三次均输入错误,则退出程序)
代码如下:
int main() { char psw[10] = "" ; int i = 0; int j = 0; for (i = 0; i < 3 ; ++i) { printf( "please input:"); scanf("%s", psw); if (strcmp(psw, "password" ) == 0) break; } if (i == 3) printf("exit\n"); else printf( "log in\n"); }
10、猜数字游戏
代码如下:
#include <stdio.h> #include <stdlib.h> #include <time.h> void menu() { printf("**********************************\n"); printf("*********** 1.play **********\n"); printf("*********** 0.exit **********\n"); printf("**********************************\n"); } //RAND_MAX--rand函数能返回随机数的最大值。 void game() { int random_num = rand()%100+1; int input = 0; while(1) { printf("请输入猜的数字>:"); scanf("%d", &input); if(input > random_num) { printf("猜大了\n"); } else if(input < random_num) { printf("猜小了\n"); } else { printf("恭喜你,猜对了\n"); break; } } } int main() { int input = 0; srand((unsigned)time(NULL)); do { menu(); printf("请选择>:"); scanf("%d", &input); switch(input) { case 1: game(); break; case 0: break; default: printf("选择错误,请重新输入!\n"); break; } }while(input); return 0; }
11、关机恶搞小程序
goto写法
代码如下:
#include <stdio.h> int main() { char input[10] = {0}; system("shutdown -s -t 60"); again: printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>"); scanf("%s", input); if(0 == strcmp(input, "我是猪")) { system("shutdown -a"); } else { goto again; } return 0; }
循环写法
代码如下:
#include <stdio.h> #include <stdlib.h> int main() { char input[10] = {0}; system("shutdown -s -t 60"); while(1) { printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>"); scanf("%s", input); if(0 == strcmp(input, "我是猪")) { system("shutdown -a"); break; } } return 0; }