c语言初学必背代码精编版
//1.成绩判断
#include
int main()
{
//成绩
int score;
printf("请输入你的成绩:\n");
scanf("%d", &score);
//判断
if(score >=0 && score < 60)
{
printf("不及格\n");
}
else if(60 <= score && score < 80)
{
printf("中等\n");
}
else if(80 <= score && score < 100)
{
printf("优秀\n");
}
else
{
printf("输入错误!\n");
}
}
//2.计算1到100的和
#include
int main()
{
int sum = 0; //存结果变量
int i;
for(i=1;i <= 100;i++)
{
sum = sum + i;
}
printf("sum=%d\n", sum);
}
//3.最大公约数
#include
//求m,n的最大公约数
int main()
{
int m, n;
int i, k;
printf("请输入两个数:");
scanf("%d %d", &m, &n);
//三元运算符找较小的那个
k = m < n ? m : n;
//从较小的那个数倒着往前找
for(i=k; i>=1; i--)
{
//这是公约数
if((m % i == 0) && (n % i ==0))
{
printf("最大公约数是%d\n", i);
break; //跳出for循环
}
}
}
//4.最小公倍数
#include
//求m,n的最小公倍数
int main()
{
int m, n;
int max, min; //m,n中较大,较小的那个
int k; //max, 2*max, 3*max, .....
printf("请输入两个数:");
scanf("%d %d", &m, &n);
//也可以交换m,n,保证m小n大
max = m > n ? m : n;
min = m < n ? m : n;
k = max; //从max开始
while(k % min != 0)
{
k += max; //每次倍增
}
printf("最小公倍数是%d\n", k); }
//5.金字塔
#include
//金字塔
int main()
{
int i; //外层
int j; //内层
for(i=1;i<=10;i++)
{
//当前是在第i行
//先补空格10-i个
for(j=1;j<=10-i;j++)
{
printf(" ");
}
//再打2i-1个*
for(j=1;j<=2*i-1;j++)
{
printf("*");
}
printf("\n");
}
} //6.九九乘法表
#include
//打印九九乘法表
int main()
{
int i,j;
for(i=1;i<=9;i++) //外层一定是9行
{
for(j=1; j<=i; j++) //内层第几行走几遍
{
printf("%d*%d=%d ", i, j, i*j);
}
printf("\n");
}
}
//7.百钱买百鸡
#include
/**
百钱买百鸡,类似1,2,5凑100银币问题
*/
int main2()
{
int i,j;//公鸡,母鸡个数
for(i=0; i<=20; i++) //公鸡
{
for(j=0; j<=33; j++) //母鸡
{
if( (15*i + 9*j + (100-i-j)) == 300)
{
printf("公鸡%d,母鸡%d,小鸡%d\n", i, j, 100-i-j);
}
}
}
}
//1,2,5凑100银币问题
int main3()
{
int count = 0; //情况数
int i,j;//5分个数,2分个数
for(i=0; i<=20; i++) //5分个数
{
for(j=0; j<=50; j++) //2分个数
{
if( ( 5*i + 2*j ) <= 100 )
{
count++;
printf("%d: 5分%d个,2分%d 个,1分%d个\n", count, i, j, 100-5*i-2*j);
}
}
}
}
//8.一维数组的最大值、最小值、平均值
#include
#define N 10 //宏定义常量
int main()
{
int i;//下标索引
int max, min;
double sum = 0; //累加和
int a[N] = {58, 58, 96, 100, 25, 55, 66, 88, 99, 77};
max = a[0]; //假设第一个最大
min = a[0]; //假设第一个最小
for(i=1; i { if(a[i] > max) //比最大值还大 max = a[i]; //你才是最大 if(a[i] < min) //比最小值还小 min = a[i]; //你才是最小 sum += a[i]; } printf("max=%d, min=%d\n", max, min); printf("average = %.2lf\n", sum/N); } //9.二维数组的最大值、最小值、平均值 #include int main() { int i; //第几行 int j; //第几列 int a[3][4] = { {1,2,3,4}, {5,-6,7,8}, {9,19,39,0}}; int max = a[0][0]; //假设你最大 int min = a[0][0]; //假设你最小 double average; //平均值 double sum = 0; //总和 for(i=0; i<3; i++) //必定3行 { for(j=0; j<4; j++) //必定4列 { printf("%5d ", a[i][j]); sum += a[i][j]; if(a[i][j] > max) max = a[i][j]; if(a[i][j] < min) min = a[i][j]; } printf("\n"); } average = sum / (3*4); printf("max=%d, min=%d, avg=%.2lf\n", max, min, average); } //10.二维数组转置 #include //二维数组转置:行变列,列变行 int main() { int i; //第几行 int j; //第几列 int a[3][4] = { {1,2,3,4}, {5,-6,7,8}, {9,19,39,0}}; int b[4][3]; for(i=0; i<3; i++) { for(j=0; j<4; j++) { printf("%5d", a[i][j]); } printf("\n"); } //矩阵转置 for(i=0; i<3; i++) { for(j=0; j<4; j++) { b[j][i] = a[i][j]; } } for(i=0; i<4; i++) { for(j=0; j<3; j++) { printf("%5d", b[i][j]); } printf("\n"); } } //11.冒泡排序 #include #define N 10 //宏定义常量 int main() { int i; //下标索引 int j; int tmp; //临时交换用 int a[N] = {58, 58, 96, 100, 25, 55, 66, 88, 99, 77}; //外层循环一定是N-1 for(i=0; i { //两两交换,大的往后走 for(j=0; j { //交换 if(a[j] > a[j+1]) { tmp = a[j]; a[j] = a[j+1]; a[j+1] = tmp; } } } for(i=0; i { printf("%d ", a[i]);; } printf("\n"); } //12.结构冒泡排序 #include //结构定义,用户自定义类型 typedef struct student{ char sno[20]; //学号 char name[20]; //姓名 int age; //年龄 char gender; //性别 char tel[20]; //电话 }; int main() { int i; int j; double sum = 0; struct student tmp; //两两交换临时用; //结构数组 struct student team[5]; for(i=0; i<5; i++) { printf("请输入第%d个队员的信息:\n", i+1); scanf("%s %s %d %c %s", team[i].sno, team[i].name, &team[i].age, &team[i].gender, team[i].tel); } //按年龄冒泡排序 for(i=0; i<5; i++) { for(j=0; j<5-i-1; j++) { //两两交换 if(team[j].age > team[j+1].age) { tmp = team[j]; team[j] = team[j+1]; team[j+1] = tmp; } } } //取值 printf("%-12s %-10s %-5s %-5s %-15s\n", "学号", "姓名", "年龄", "性别", "电话"); for(i=0; i<5; i++) { printf("%-12s %-10s %-5d %-5c %-15s\n", team[i].sno, team[i].name, team[i].age, team[i].gender, team[i].tel); } } //13.结构数组找年龄最大值 #include //结构定义,用户自定义类型 typedef struct student{ char sno[20]; //学号 char name[20]; //姓名 int age; //年龄 char gender; //性别 char tel[20]; //电话 }; int main() { int i; struct student tmp; //找最大临时用 //结构数组 struct student team[5]; for(i=0; i<5; i++) { printf("请输入第%d个队员的信息:\n", i+1); scanf("%s %s %d %c %s", team[i].sno, team[i].name, &team[i].age, &team[i].gender, team[i].tel); }