#include<stdio.h>intmain(){int i =0;for(i =1; i <10; i++){//打印一行int j =0;for(j =1; j <=i; j++){printf("%d*%d = %-4d", j,i , i*j);}printf("\n");}return0;}
二、判断1000年—2000年之间的闰年
方法1:
#include<stdio.h>intmain(){int year =0;for(year =1000; year <=2000; year++){if(year %4==0){if(year %100!=0){printf("%d ",year);}}if(year %400==0)//不能用else if,因为year%4要是成立,程序就不会跑到else if这里{printf("%d ", year);}}return0;}
方法2:
#include<stdio.h>intmain(){int year =0;for(year =1000; year <=2000; year++){if(((year%4==0)&&(year%100!=0))||(year%400==0))printf("%d ", year);}return0;}
三、输出1~100之间的奇数
方法1:
#include<stdio.h>intmain(){int i =0;for(i =1; i <=100; i++){if(i %2==1){printf("%d ", i);}}return0;}
方法2:
#include<stdio.h>intmain(){int i =0;for(i =1; i <=100; i+=2)printf("%d ", i);return0;}
四、计算n的阶乘
#include<stdio.h>intmain(){int n =0;int i =0;int ret =0;scanf("%d",&n);for(i =1; i <= n; i++){
ret = ret*i;}printf("%d", ret);return0;}
五、计算1!+2!+3!+…+10!
方法1:
#include<stdio.h>intmain(){int n =0;int i =0;int ret =1;int sum =0;for(n =1; n <=10; n++){
ret =1;for(i =1; i <= n; i++){
ret = ret*i;}
sum = sum + ret;}printf("%d\n", sum);return0;}
方法2:
#include<stdio.h>intmain(){int n =0;int i =0;int ret =1;int sum =0;for(n =1; n <=10; n++){
ret = ret*n;
sum = sum + ret;}printf("%d\n", sum);return0;}
六、在一个有序数组中查找具体的某个数字n
#include<stdio.h>intmain(){int arr[]={1,2,3,4,5,6,7,8,9,10};int k =7;int left =0;int right =9;while(left <= right){int mid =(left + right)/2;if(arr[mid]> k){
right = mid -1;}elseif(arr[mid]< k){
left = mid -1;}else{printf("找到了,下标是:%d\n", mid);break;}if(left>right){printf("找不到\n");}}return0;}
七、编写代码,演示多个字符从两端移动,向中间汇聚
#include<stdio.h>#include<string.h>#include<windows.h>intmain(){char arr1[]="welcome to school!!!";char arr2[]="####################";int left =0;int right =strlen(arr1)-1;while(left <= right){
arr2[left]= arr1[left];
arr2[right]= arr1[right];printf("%s\n", arr2);Sleep(1000);system("cls");
left++;
right--;}return0;}
#include<stdio.h>intmain(){int i =0;char password[20]={0};for(i =0; i <3; i++){printf("请输入密码:");scanf("%s", password);if(strcmp(password,"123456")==0){printf("登陆成功\n");break;}else{printf("密码错误,请重新输入!\n");}if(i ==3){printf("三次密码错误,退出程序\n");}}return0;}
#include<stdio.h>intmain(){int a =3;int b =5;int c =0;printf("a = %d b = %d\n", a, b);
c = a;
a = b;
b = c;printf("a = %d b = %d\n", a, b);return0;}
十三、不允许创建临时变量,交换两个数的内容
方法1:
#include<stdio.h>intmain(){int a =3;int b =5;printf("a = %d b = %d\n", a, b);
a = a + b;
b = a-b;
a = a-b;printf("a = %d b = %d\n", a, b);return0;}
方法2:
#include<stdio.h>intmain(){int a =3;int b =5;printf("a = %d b = %d\n", a, b);
a = a^b;
b = a^b;
a = a^b;printf("a = %d b = %d\n", a, b);return0;}
十四、求10 个整数中最大值
#include<stdio.h>intmain(){int arr[]={1,2,3,4,5,6,7,8,9,0};int max = arr[0];int i =0;int sz =sizeof(arr)/sizeof(arr[0]);for(i =1; i < sz; i++){if(arr[i]>max){
max = arr[i];}}printf("max = %d\n", max);return0;}
十五、将三个数按从大到小输出
#include<stdio.h>intmain(){int a =2;int b =1;int c =3;if(a < b){int tmp = a;
a = b;
b = tmp;}if(a < c){int tmp = a;
a = c;
c = tmp;}if(b < c){int tmp = b;
b = c;
c = tmp;}printf("%d %d %d\n", a, b, c);return0;}
上述过程太过冗余,优化代码如下:
#include<stdio.h>voidSwap(int*px,int*py){int tmp =0;
tmp =*px;*px =*py;*py = tmp;}intmain(){int a =2;int b =1;int c =3;if(a < b){Swap(&a,&b);}if(a < c){Swap(&a,&c);}if(b < c){Swap(&b,&c);}printf("%d %d %d\n", a, b, c);return0;}
十六、求两个数的最大公约数
#include<stdio.h>intmain(){int a =24;int b =18;int c =0;while(c = a%b){
a = b;
b = c;}printf("%d\n", b);return0;}
#include<stdio.h>intmain(){int a =0;int n =0;int sum =0;int i =0;int k =0;scanf("%d%d",&a,&n);for(i =0; i < n; i++){
k = k *10+ a;
sum += k;}printf("%d\n", sum);return0;}
#include<stdio.h>voidInit(int arr[],int sz){int i =0;for(i =0; i < sz; i++){
arr[i]=0;}}voidPrint(int arr[],int sz){int i =0;for(i =0; i < sz; i++){printf("%d ", arr[i]);}printf("\n");}voidReverse(int arr[],int sz){int left =0;int right = sz -1;while(left < right){int tmp = arr[left];
arr[left]= arr[right];
arr[right]= tmp;
left++;
right--;}}intmain(){int arr[5]={1,2,3,4,5};int sz =sizeof(arr)/sizeof(arr[0]);//Print(arr, sz);//Init(arr, sz);Print(arr, sz);Reverse(arr, sz);Print(arr, sz);return0;}
二十六、编写一个函数实现n^k,使用递归实现
#include<stdio.h>doublePow(int n,int k){if(k >0)return n*Pow(n, k -1);elseif(k ==0)return1;elsereturn1.0/Pow(n,-k);}intmain(){int n =0;int k =0;double ret =0.0;scanf("%d%d",&n,&k);
ret =Pow(n,k);printf("ret = %lf\n", ret);return0;}