欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > c语言经典基础编程题

c语言经典基础编程题

2025/3/16 21:20:44 来源:https://blog.csdn.net/weixin_63003502/article/details/146235978  浏览:    关键词:c语言经典基础编程题

c语言经典基础编程题

  • 一、输出输出
    • 1.1温度输出
    • 1.2排齐数据
    • 1.3进制转换
  • 二、选择分支
    • 2.1求最大值
    • 2.2成绩评定
    • 2.3分段函数求值
    • 2.4 利润计算
    • 2.5判断闰年
    • 2.6二次方程根
  • 三、循环结构
    • 3.1倒数求和
    • 3.2最大数
    • 3.3判断素数
    • 3.4判断完全数
    • 3.5打印菱形🚀🚀🚀
    • 3.6复读机
    • 3.7算对了吗
    • 3.8 堵车问题

😍适合考研复试,期末考试,小白学习…超绝!!!(自用版)👍
在这里插入图片描述

一、输出输出

1.1温度输出

在这里插入图片描述
答案:

#include<stdio.h>
int main(){double c,F;scanf("%lf",&F);c=5*(F-32)/9;printf("c=%.2lf",c);return 0;
}

注意:注意:如果c,F是float类型,为了保证精度,中间运算编译器还是会隐含的转化为double类型进行运算。

1.2排齐数据

在这里插入图片描述
答案:

#include<stdio.h>
int main(){char love;int year,height;int age;scanf("%c,%d,%d",&love,&year,&height);age=2025-year;printf("love:%-8cage:%-8dheight:%-8d",love,age,height);return 0;
}

%-md:-代表左对齐,m是最少占用多少列。

1.3进制转换

在这里插入图片描述
答案:

#include<stdio.h>
int main(){int x;scanf("%d",&x);printf("十进制:%d 八进制:%o 十六进制:%x 指数形式:%e",x,x,x,(float)x);return 0;
}

注意:仅需制定相应的格式化输出符,编译器会自动完成进制准换。
指数形式是浮点数的表示形式之一,所以要进行强制类型转换成float类型。

二、选择分支

2.1求最大值

在这里插入图片描述
答案: 🎈前两项和后两项分别取大者,然后这两个大者再取更大者。

#include<stdio.h>
int main(){int a,b,c,d;int temp;scanf("%d%d%d%d",&a,&b,&c,&d);if(a<b){temp=a,a=b,b=temp;}if(c<d){temp=c,c=d,d=temp;}if(a<c){temp=a,a=c,c=temp;}printf("%d",a);return 0;	
}

2.2成绩评定

在这里插入图片描述
答案:

#include<stdio.h>
int main(){int grade;scanf("%d",&grade);if(grade<60){printf("E");}else{switch(grade/10){case 6: printf("D"); break;case 7: printf("C"); break;case 8: printf("B"); break;case 9: case 10:printf("A"); break;}}return 0;	
}

2.3分段函数求值

在这里插入图片描述
答案:

#include<stdio.h>
int main(){int x,y;scanf("%d",&x);if (x<1){y=x;}else if(x<=1&&x<10){y=2*x-1;}else{y=3*x-11;}printf("%d",y);return 0;
}

2.4 利润计算

在这里插入图片描述
答案:

#include <stdio.h>int main() {int profit;double bonus;scanf("%d", &profit);if (profit <= 100000) {bonus = profit * 0.1;} else if (profit <= 200000) {bonus = 100000 * 0.1 + (profit - 100000) * 0.075;} else if (profit <= 400000) {bonus = 100000 * 0.1 + 100000 * 0.075 + (profit - 200000) * 0.05;} else if (profit <= 600000) {bonus = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + (profit - 400000) * 0.03;} else if (profit <= 1000000) {bonus = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + (profit - 600000) * 0.015;} else {bonus = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + 400000 * 0.015 + (profit - 1000000) * 0.01;}printf("%d", (int)bonus);return 0;
}

2.5判断闰年

在这里插入图片描述
答案:

#include <stdio.h>int main() {int year;scanf("%d",&year);if((year%4==0&&year%100!=0)||(year%400==0)){printf("0");  //闰年}else{printf("1");}return 0;
}

2.6二次方程根

在这里插入图片描述

答案:

#include <stdio.h>
#include <math.h>
int main() {double a,b,c,delta;scanf("%lf%lf%lf",&a,&b,&c);delta=b*b-4*a*c;if(delta>1e-6){printf("x1=%.3lf x2=%.3lf",((-b+sqrt(delta))/2/a),((-b-sqrt(delta))/2/a));}else if(fabs(delta)<=1e-6){printf("x1=%.3lf x2=%.3lf",(-b/2/a), (-b/2/a));}else{printf("x1=%.3lf+%.3lfi x2=%.3lf-%.3lfi",(-b/2/a),(sqrt(-delta)/2/a),(-b/2/a),(sqrt(-delta)/2/a));}return 0;
}

在判断判别式与 0 的关系时,由于浮点数在计算机中存储存在精度问题,直接用 == 判断浮点数等于 0 可能不准确,所以有时会引入一个极小值(如 1e-6 )来进行近似判断。

三、循环结构

3.1倒数求和

在这里插入图片描述
答案:

#include <stdio.h>
int main() {int n;double sum=0.0;//不可以忘记赋初值scanf("%d",&n);for(int i=1;i<=n;i++){sum+=1/(double)i; //注意这里的类型转换}printf("%.4lf",sum);return 0;
}

3.2最大数

在这里插入图片描述
答案:

#include <stdio.h>
int main() {int x,max=0;scanf("%d",&x);while(x!=0){if(x>max){max=x;}scanf("%d",&x);}printf("%d",max);return 0;}

tips:我们键盘输入到控制台中的数据,并不会直接输出,一开始都放到键盘的缓冲区中,按回车后才会发送出去!🚗

3.3判断素数

在这里插入图片描述
答案:

#include <stdio.h>
int isPrime(int n) {if (n <= 1)return 0;  // 不是素数for (int i = 2; i * i <= n; i++)if (n % i == 0) {return 0;  // 不是素数}return 1;  // 是素数,注意是等到整个循环结束后
}int main() {int n;scanf("%d", &n);if (isPrime(n)) {printf("yes\n");} else {printf("no\n");}return 0;
}

3.4判断完全数

在这里插入图片描述
答案:

#include <stdio.h>
int main() {int n,sum=0;scanf("%d",&n);for(int i=1;i<=n;i++){sum=0;  //注意这个归0位置for(int j=1;j<=i/2;j++){ //注意边界=i/2 这个因子if(i%j==0){sum+=j;}	}if(sum==i){  //注意放在内层for循环的外部,不然这会使得在还没有遍历完所有因子时就进行判断printf("%d ",i);}}return 0;
}

3.5打印菱形🚀🚀🚀

在这里插入图片描述
在这里插入图片描述
答案:

#include <stdio.h>
int main() {int n;scanf("%d",&n);for(int i=1;i<=n/2+1;i++){ //打印高度n/2+1的上三角for(int j=i;j<=n/2;j++){ //前4行空格数 3 2 1 0printf(" ");}for(int j=1;j<=2*i-1;j++){ //前4行*数 1 3 5 7printf("*");}printf("\n");}for(int i=1;i<=n/2;i++){ //打印高度n/2的上三角for(int j=1;j<=i;j++){ //后3行空格数 1 2 3printf(" ");}for(int j=1;j<=n-2*i;j++){ //后3行*数 5 3 1printf("*");}printf("\n");}return 0;
}

先打印上三角,再打印下三角,结合具体情况弄清空格和*的个数关系,来处理边界情况。

3.6复读机

在这里插入图片描述
答案:

#include <stdio.h>
int main() {char c;while((c=getchar())!='#'){putchar(c);}return 0;
}

3.7算对了吗

在这里插入图片描述
答案:

#include <stdio.h>
#include <string.h>int main(){char input[100];int correct_answers = 0;while (1){gets(input);if (input[0] == '#')break;int a, b, c;char op;//从字符数组中解析字符sscanf(input, "%d%c%d=%c", &a, &op, &b, &c);if (op == '+'){if (c != '?' && c == (a + b))correct_answers++;}else if (op == '-'){if (c != '?' && c == (a - b))correct_answers++;}}printf("%d", correct_answers);return 0;
}

3.8 堵车问题

在这里插入图片描述
答案:

#include <stdio.h>
int main(){int n, count = 0;scanf("%d", &n);for (int small = 0; small <= n; small++)for (int middle = 0; middle <= n/2; middle++)for (int large = 0; large <= n/3; large++)if (small + 2*middle + 3*large == n)count++;printf("%d",count);return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com