目录
例题6、计算int,float,double和char字节大小
例题1、两个整数相加
#include <stdio.h> int main(){ int n1,n2,sum; scanf("%d %d",&n1,&n2); sum = n1 + n2; printf("%d",sum); return 0; }
例题2、两个浮点数相乘
#include <stdio.h> int main(){ float n1,n2; scanf("%f%f",&n1,&n2); //输入的是浮点数 %f float sum = n1 * n2; printf("%.2f",sum); return 0; }
例题3、字符转ASCII码
#include <stdio.h> int main(){ char n = 'a'; printf("a的ASCII码为%d",n); return 0; }
例题4、两数相除
#include <stdio.h> int main(){ int n1,n2; scanf("%d %d",&n1,&n2); int avg = n1 / n2; int remainder = n1 % n2; printf("n1和n2的商为%d\n",avg); printf("n1和n2的除数为%d\n",remainder); return 0; }
例题5、数值比较
#include <stdio.h> int main(){ int a,b; printf("请输入ab的值"); scanf("%d%d",&a,&b); if(a > b){ printf("a大于b"); }else printf("a小于等于b"); return 0; }
例题6、计算int,float,double和char字节大小
#include <stdio.h> int main(){ printf("int类型字节大小为%d\n",sizeof(int)); printf("float类型字节大小为%d\n",sizeof(float)); printf("double类型字节大小为%d\n",sizeof(double)); printf("char类型字节大小为%d\n",sizeof(char)); return 0; }
sizeof函数计算的是字节大小。
例题7、交换两个数的值
#include <stdio.h> int main(){ int a,b; scanf("%d%d",&a,&b); printf("a和b的值为%d,%d\n",a,b); int temp = a; a = b; b = temp; printf("交换后的值为%d,%d",a,b); return 0; }
例题8、判断奇数/偶数
#include <stdio.h> int main(){ int n; printf("请输入n的值:"); scanf("%d",&n); if(n % 2){ printf("%d是奇数",n); }else{ printf("%d是偶数",n); } return 0; }
例题9、循环区间范围内的奇数/偶数
int arr1[100]; int arr2[100]; #include <stdio.h> int main(){ printf("请输入一个区间"); int a,b; scanf("%d%d",&a,&b); int flag1 = 0;//奇数 int flag2 = 0;//偶数 for(int i = a;i <= b; i++){ if(i % 2){ arr1[flag1] = i; flag1++; }else{ arr2[flag2] = i; flag2++; } } printf("区间范围内的奇数有:"); for(int i = flag1-1; i >= 0; i--){ printf("%d ",arr1[i]); } printf("区间范围内的偶数有:"); for(int i = flag2-1; i >= 0; i--){ printf("%d ",arr2[i]); } return 0; }
例题10、判断元音/辅音
#include <stdio.h> int main(){ char c; scanf("%c",&c); int islowercase = (c == 'a'||c == 'v'||c == 'i'||c == 'o'||c == 'u'); int isuppercase = (c == 'A'||c == 'V'||c == 'I'||c == 'O'||c == 'U'); if(islowercase || isuppercase){ printf("%c是元音",c); }else{ printf("%c是辅音",c); } return 0; }
例题11、判断三个数 中的最大数 三位运算符
#include <stdio.h> int main(){ int a,b,c; printf("请输入a,b,c的值:"); scanf("%d%d%d",&a,&b,&c); int max = a > b ? (a > c? a : c ):(b > c? b : c); printf("最大值为%d",max); return 0; }
例题12、一元二次方程
#include <stdio.h> #include <math.h> int main(){ float a,b,c,x1,x2,d; printf("输入方程的三个系数:"); scanf("%f %f %f",&a,&b,&c); if(a != 0){ d = sqrt( b*b - 4*a*c);//sqrt函数在math.h的头文件里面 x1 = (-b + d) / (2 * a); x2 = (-b -d) / (2 * a); if(x1 < x2) printf("%0.2f %0.2f\n",x2,x1); else printf("%0.2f %0.2f\n",x1,x2); } return 0; }
例题13、判断闰年
int main(){ int year; scanf("%d",&year); if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0){ printf("%d是闰年",year); }else{ printf("%d不是闰年",year); } return 0; }
例题14、判断正数/负数/零
#include <stdio.h> int main(){ int n; printf("请输入n的值:"); scanf("%d",&n); if(n > 0){ printf("%d是正数",n); }else if(n == 0){ printf("%d是零",n); }else{ printf("%d是负数",n); } return 0; }
例题15、判断字母
#include <stdio.h> int main(){ char c; printf("请输入一个字符:"); scanf("%c",&c); if((c >= 'a'&& c <= 'z')||(c >= 'A')&&(c <= 'Z')){ printf("%c是字母",c); }else{ printf("%c不是字母",c); } return 0; }
例题16、计算自然数的和
#include <stdio.h> int main(){ int n; printf("请输入一个自然数:"); scanf("%d",&n); int avg = n; int count = 0; while(n >= 0){ count += n; n--; } printf("%d的前n项和为%d",avg,count); return 0; }
例题17、输出九九乘法表
#include <stdio.h> int main(){ for(int i = 1;i <= 9;i++){ for(int j = 1;j <= i;j++){ printf("%d x %d = %d ",j,i,i*j); } printf("\n"); } return 0; }
例题18、斐波那契数列
#include <stdio.h> int fi(int n); int main(){ int n; printf("求斐波那契数列的前n项"); scanf("%d",&n); fi(n); return 0; } int fi(int n){ int t1 = 0,t2 = 1; int count = 0; for(int i = 1; i <= n; i++){ printf("%d ",t1); count = t1 + t2; t1 = t2; t2 = count; } }
例题19、求两数的最大公约数
#include <stdio.h> int main(){ int n1,n2,i,gcd; printf("请输入两个数:"); scanf("%d%d",&n1,&n2); for(i = 1; i <= n1 && i <= n2; ++i){ if(n1 % i == 0 && n2 % i == 0) gcd = i; } printf("%d 和 %d 的最大公约数是 %d",n1,n2,gcd); return 0; }
例题20、求两数的最小公倍数
#include <stdio.h> int main(){ int n1, n2, i, gcd, lcm; printf("输入两个正整数: "); scanf("%d %d",&n1,&n2); for(i = 1; i <= n1&& i <= n2; ++i) { // 判断最大公约数 if(n1 % i == 0 && n2 % i == 0) gcd = i; } lcm = (n1 * n2)/ gcd; printf("%d 和 %d 的最小公倍数为 %d", n1, n2, lcm); return 0; }
最小公倍数 = 两数之积 / 最大公约数
例题21、阶乘
#include <stdio.h> int main(){ int n; scanf("%d",&n); int avg = 1; int sag = n; while(n >= 1){ avg *= n; n--; } printf("%d的阶层是%d",sag,avg); return 0; }
例题22、循环输出26个字母
#include <stdio.h> int main(){ for(char i = 'a';i <= 'z';i++){ printf("%c ",i); } printf("\n"); for(char i = 'A';i <= 'Z'; i++){ printf("%c ",i); } return 0; }
例题23、判断数字为几位数
#include <stdio.h> int main(){ int n; printf("请输入一个数:"); scanf("%d",&n); int m = n; int flag; while(n){ n /= 10; flag++; } printf("%d是%d位数",m,flag); return 0; }
例题24、计算一个数的n次方
#include <stdio.h> int main(){ int n,m; printf("请输入一个数,以及n次方的大小:"); scanf("%d%d",&m,&n); int avg = 1; while(n > 0){ avg *= m; n--; } printf("%d的n次方是%d",m,avg); return 0; }
例题25、判断回文数
#include <stdio.h> int arr1[100]; int arr2[100]; int main(){ int n,remainder,integer,origininteger; printf("请输入一个数"); scanf("%d",&n); origininteger = n; while(n != 0){ remainder = n % 10; integer = integer * 10 + remainder; n /= 10; } if(origininteger == integer) printf("%d是回文数",origininteger); else printf("%d不是回文数",origininteger); return 0; }
把数翻转过来与原数进行比较,相同就是回文数
例题26、判断素数
#include <stdio.h> int main(){ int n; scanf(" %d",&n); for(int i = 2; i < n; i++){ if(n % i == 0){ printf("%d不是素数",n); return 0; } } printf("%d是素数",n); return 0; }
素数也就是质数,除了1和它本身没有可以整除的数,直接从2到n-1进行判断
例题27、判断阿姆斯壮数
#include <stdio.h> int main(){ int n,g,s,b; printf("请输入一个三位数:"); scanf("%d",&n); int avg = n; g = n % 10; s = n / 10 % 10; b = n / 100; printf("%d %d %d\n",g,s,b); if(n == g*g*g + s*s + b){ printf("%d是阿姆斯壮数",avg); }else{ printf("%d不是阿姆斯壮数",avg); } return 0; }
这个东西就跟水仙花数一个道理
例题28、求一个整数的所有因数
#include <stdio.h> int main(){ int n; printf("请输入一个整数:"); scanf("%d",&n); printf("它的因数有"); for(int i = 1; i <= n; i++){ if(n % i == 0){ printf("%d ",i); } } return 0; }
例题29、创建各类三角形图案
#include <stdio.h> int main(){ //等腰直角三角形 // 正 for(int i = 1; i <= 5; i++){ for(int j = 1;j <= i; j++){ printf("*"); } printf("\n"); } return 0; }
运行效果:
#include <stdio.h> int main(){ for(int i = 1;i <= 5; i++){ for(int j = 5-i;j >= 1; j--){ printf(" "); } for(int k = 1;k <= i; k++){ printf("*"); } printf("\n"); } return 0; }
运行效果:
#include <stdio.h> int main(){ //倒三角形 for(int i = 1;i <= 5; i++){ for(int j = 5;j >= i; j--){ printf("*"); } printf("\n"); } return 0; }
运行效果:
#include <stdio.h> int main(){ //倒三角形 for(int i = 0;i <= 5; i++){ for(int j = 0;j < i; j++){ printf(" "); } for(int k = 5-i;k >= 1; k--){ printf("*"); } printf("\n"); } return 0; }
运行效果:
#include <stdio.h> int main(){ // 金字塔 for(int i = 1;i <= 5; i++){ for(int j = 1;j <= 5-i; j++){ printf(" "); } for(int k = 1;k <= i*2-1; k++){ printf("*"); } printf("\n"); } return 0; }
运行效果:
#include <stdio.h> int main(){ // 倒金字塔 for(int i = 1;i <= 5; i++){ for(int j = 1;j < i; j++){ printf(" "); } for(int k = 2*(5-i)+1;k >= 1; k--){ printf("*"); } printf("\n"); } return 0; }
运行效果:
例题30、表格形式输出数据
#include <stdio.h> int main(){ for(int i = 1;i <= 10; i++){ for(int j = i;j <= 100; j+=10){ printf("%5d",j); } printf("\n"); } return 0; }
例题31、实现(加减乘除)简单计算器
#include <stdio.h> void add(double x,double y); void sub(double x,double y); void mul(double x,double y); void div(double x,double y); int main(){ char operator1; double firstnum,secondnum; printf("请输入操作符(+,-,*,/):"); scanf("%c",&operator1); printf("输入两个数字:"); scanf("%lf %lf",&firstnum,&secondnum); if(operator1 == '+'){ add(firstnum,secondnum); }else if(operator1 == '-'){ sub(firstnum,secondnum); }else if(operator1 == '*'){ mul(firstnum,secondnum); }else if(operator1 == '/'){ div(firstnum,secondnum); } return 0; } void add(double x,double y){ printf("%.1lf",x + y); } void sub(double x,double y){ printf("%.1lf",x - y); } void mul(double x,double y){ printf("%.1lf",x * y); } void div(double x,double y){ if(y == 0){ printf("0"); }else{ printf("%.1lf",x / y); } }
例题32、计算一个数是否可为两个素数之和
#include <stdio.h> int main(){ int n; scanf("%d",&n); if(n%2 == 0){ printf("%d可以为两个素数之和",n); }else{ printf("%d不能为两个素数之和",n); } return 0; }
例题33、二进制与十进制相互转换
#include <stdio.h> #include <math.h> //使用了math里面的pow函数 int arr[100]; int main(){ long long n,m; printf("请输入二进制数:"); scanf("%lld",&n); int i = 0; int res = 0; int avg = n; while(n != 0){ arr[i++] = n%10; //依次取出个位、十位、... n /= 10; } // for(int j = i-1;j >= 0; j--){ //存入的时候是正向存入数组 // if(arr[j] == 1){ // res += pow(2,j); // } // } for(int j = 0;j < i; j++){ //存入的时候是正向存入数组 if(arr[j] == 1){ res += pow(2,j); } } printf("%d的十进制数为%d",avg,res); return 0; }
法二
#include <stdio.h> #include <math.h> int convert(long long n); int main(){ long long n; printf("输入一个二进制数:"); scanf("%lld",&n); printf("二进制数%lld的十进制数为%d",n,convert(n)); return 0; } int convert(long long n){ int avg,i = 0,res = 0; while(n !=0 ){ avg = n%10; n /= 10; res += avg*pow(2,i++); } return res; }
十进制转二进制:
#include <stdio.h> #include <math.h> long long converts(int n); int main(){ int n; printf("请输入一个十进制数:"); scanf("%d",&n); printf("%d的二进制数为%lld",n,converts(n)); return 0; } long long converts(int n){ long long res = 0; int avg,i = 1; while(n != 0){ avg = n % 2; n /= 2; res += avg*i; i *= 10; } return res; }
例题34、八进制与十进制相互转换
#include <stdio.h> #include <math.h> int convert( long long n); int main(){ long long n; printf("请输入一个八进制数:"); scanf("%lld",&n); printf("%lld的十进制数为%d",n,convert(n)); return 0; } int convert( long long n){ int res,i=0; while( n != 0){ res += (n%10) * pow(8,i++); n /= 10; } return res; }
十进制转八进制
#include <stdio.h> #include <math.h> long long converts(int n); int main(){ int n; printf("请输入一个十进制数:"); scanf("%d",&n); printf("%d的八进制数为%lld",n,converts(n)); return 0; } long long converts(int n){ long long res=0; int i=1,avg=0; while(n != 0){ avg = n%8; res += avg * i; n /= 8; i *= 10; } return res; }
例题35、八进制与二进制相互转换
#include<stdio.h> #include<math.h> long long convert(int n); int main(){ int n; printf("请输入一个八进制数"); scanf("%d",&n); printf("%d的二进制数为%lld",n,convert(n)); return 0; } long long convert(int n){ long long res = 0; int avg,i = 0; while(n != 0){ avg += (n%10) * pow(8,i++); n /= 10; } i = 1; while(avg !=0 ){ res += (avg%2) * i; avg /= 2; i *= 10; } return res; }
二进制转八进制
#include<stdio.h> #include<math.h> int converts(long long n); int main(){ int n; printf("请输入一个二进制数"); scanf("%d",&n); printf("%lld的八进制数为%d",n,converts(n)); return 0; } int converts(long long n){ int res=0,avg=0,i=0; while(n != 0){ avg += (n%10) * pow(2,i++); n /= 10; } i = 1; while(avg != 0){ res += (avg%8)*i; avg /= 10; i *= 10; } return res; }
例题36、字符串翻转
#include <stdio.h> void reverseSentence(); int main() { printf("输入一个字符串: "); reverseSentence(); return 0; } void reverseSentence() { char c; scanf("%c", &c); if( c != '\n') { reverseSentence(); printf("%c",c); } }
例题37、计算数组元素平均值
#include <stdio.h> int arr[100]; int main(){ int n; int sum = 0; float avg = 0; scanf("%d",&n); for(int i = 0;i < n; i++){ scanf("%d",&arr[i]); sum += arr[i]; } avg = (float)sum / n; printf("平均值%.2f",avg); return 0; }
例题38、输出数组
#include<stdio.h> const int MAX = 100; int arr[MAX]; int main(){ int n; scanf("%d",&n); for(int i = 0; i < n; i++){ scanf("%d",&arr[i]); } for(int i = 0; i < n; i++){ printf("%d ",arr[i]); } return 0; }
例题39、计算数组元素之和
#include<stdio.h> const int MAX = 100; int arr[MAX]; long long sum; int main(){ int n; scanf("%d",&n); for(int i = 0; i < n; i++){ scanf("%d",&arr[i]); sum+=arr[i]; } printf("%d ",sum); return 0; }
例题40、查找数组中最大的元素值
#include<stdio.h> const int MAX = 100; int arr[MAX]; int max; int main(){ int n; scanf("%d",&n); max = arr[0]; int flag = 0; for(int i = 0; i < n; i++){ scanf("%d",&arr[i]); if(arr[i]>max){ max = arr[i]; flag = i; } } printf("最大元素值为%d最大元素下标为%d ",max,flag); return 0; }
例题41、数组拆分与合并
#include <stdio.h> int main(){ int arr[10]={0,1,2,3,4,5,6,7,8,9}; int arr1[10]; int arr2[10]; int res = 0,avg = 0; for(int i = 0; i < 10; i++){ if(arr[i] % 2 == 0){ arr1[res++]=arr[i]; }else{ arr2[avg++]=arr[i]; } } printf("原始数组:"); for(int i = 0 ;i < 10; i++){ printf(" %d ",arr[i]); } printf("\n偶数数组:"); for(int i = 0; i < res; i++){ printf("%d ",arr1[i]); } printf("\n奇数数组:"); for(int i = 0; i < avg; i++){ printf("%d ",arr2[i]); } return 0; }
例题42、数组拷贝
#include <stdio.h> int main(){ int origin[10]={0,1,2,3,4,5,6,7,8,9}; int copied[10]; for(int i = 0; i < 10 ; i++){ copied[i]=origin[i]; } for(int i = 0; i < 10 ; i++){ printf("%2d %2d \n",origin[i],copied[i]); } return 0; }
例题43、计算标准偏差
#include <stdio.h> #include <math.h> float averages(float arr); int main(){ float arr[10]; for(int i = 0; i < 10; i++){ scanf("%f",&arr[i]); } printf("%.6f",averages(arr)); return 0; } float averages(float arr[]){ float sum=0.0,avg; float res = 0.0; for(int i = 0; i < 10; i++){ sum += arr[i]; } avg = sum / 10; for(int i = 0; i < 10; i++){ res += pow(arr[i]-avg,2); } return sqrt(res/10); }
例题44、二维数组相加
#include <stdio.h> int main(){ int arr1[2][2]; int arr2[2][2]; int sum[2][2]; for(int i = 0; i < 2; i++){ for(int j = 0; j < 2; j++){ scanf("%d",&arr1[i][j]); } } for(int i = 0; i < 2; i++){ for(int j = 0; j < 2; j++){ scanf("%d",&arr2[i][j]); } } for(int i = 0; i < 2; i++){ for(int j = 0; j < 2; j++){ sum[i][j] = arr1[i][j] + arr2[i][j]; } } for(int i = 0; i < 2; i++){ for(int j = 0; j < 2; j++){ printf("%d\n",sum[i][j]); } } return 0; }
例题45、矩阵转换
#include <stdio.h> int main() { int a[10][10], transpose[10][10], r, c, i, j; printf("输入矩阵的行与列: "); scanf("%d %d", &r, &c); for(i = 0; i < r; i++){ for(j = 0; j < c; j++){ scanf("%d",&a[i][j]); } } printf("原数组为:\n"); for(int l = 0; l < r; l++){ for(int k = 0 ;k < c; k++){ printf("%2d",a[l][k]); if(k == c - 1) printf("\n\n"); } } // 转换 for(int k = 0; k < r; k++){ for(int l = 0; l < c; l++){ transpose[l][k]=a[k][l]; } } printf("转换后:\n"); for(int l = 0; l < c; l++){ for(int k = 0; k < r; k++){ printf("%2d",transpose[l][k]); if(k == r - 1) printf("\n\n"); } } return 0; }
例题46、使用指针访问数组元素
#include <stdio.h> int main(){ int arr[10] = {0,1,2,3,4,5,6,7,8,9}; int *p = &arr[0]; int i = 0; while(i < 10){ printf("%2d",*(p + i)); i++; } printf("\n"); for(int i = 0; i < 10; i++){ printf("%2d",*(arr + i)); } return 0; }
例题47、使用循环替换数值
#include <stdio.h> void swap(int *a,int *b,int *c); int main(){ int a,b,c; printf("输入a,b和c的值:"); scanf("%d %d %d",&a,&b,&c); printf("交换前:\n"); printf(" a = %d\n b = %d\n c = %d\n",a,b,c); swap(&a,&b,&c); printf("交换后:\n"); printf(" a = %d\n b = %d\n c = %d\n",a,b,c); return 0; } void swap(int *a, int *b, int *c){ int temp; temp = *b; *b = *a; *a = *c; *c = temp; }
例题48、判断最大值
#include <stdio.h> #include <stdlib.h> int main(){ int i,num; float *data; printf("输入元素(1~100):"); scanf("%d",&num); data = (float*) calloc(num,sizeof(float)); if(data == NULL) { printf("ERROR!没有分配内存"); exit(0); } printf("\n"); for(int i = 0; i < num ; i++){ printf("输入数字%d:",i+1); scanf("%f",data+i); } for(int i = 1; i < num; i++){ if(*data < *(data+i)) *data = *(data+i); } printf("最大元素 = %.2f",*data); return 0; }
例题49、删除字符串
#include <stdio.h> #include <string.h> int main(){ char line[100]; int len = 0; printf("请输入一个字符串:"); scanf("%s",line); char def[100]; int j = 0; len = strlen(line); for(int i = 0;i < len; i++){ if((line[i]>'a'&&line[i]<'z')||line[i]>'A'&&line[i]>'Z'){ def[j++] = line[i]; } } len = strlen(def); for(int i = 0; i < len; i++){ printf("%c",def[i]); } return 0; }
例题50、使用strcat()连接两个字符串
#include <stdio.h> #include <string.h> int main(){ char s1[100],s2[100]; printf("输入第一个字符串:"); scanf("%s",s1); printf("输入第二个字符串:"); scanf("%s",s2); printf("连接后:%s",strcat(s1,s2)); return 0; }
总结:个人感觉代码还是得多敲多用多想。如果有其他问题,欢迎私信我。