小白学C语言的记录博。
最新:课程已经结束,不会再更新了,但会时不时更正错误。
题目都是实验课老师布置的,代码有参考其他大佬,特此致谢!
使用教材:C语言程序设计(第3版) 何钦铭、颜晖主编 高等教育出版社
一、C程序的编程环境和运行方法。
1
在屏幕上显示语句。
#include
int main()
{
printf("Welcome to You!\n");
return 0;
}
#include
int main()
{
int a,b;
scanf("%d%d",&a,&b);
printf("sum=%d\n",a+b);
return 0;
}
#include
int main(void)
{
int a,b,sum;
a=123;
b=456;
sum=a+b;
printf("sum is %d\n",sum);
return 0;
}
#include
int main()
{
float c,f;
scanf("%f",&f);
c=(5.00/9)*(f-32);
printf("c=%.2f\n",c,f);
return 0;
}
计算圆柱体体积。
#include
#define PI 3.1415926
int main(void)
{
float r,h,v;
scanf("%f%f",&r,&h);
printf("v=%.2f\n",PI*r*r*h);
return 0;
}
样例
3
计算一元二次方程ax²+bx+c=0的根x₁,x₂。
自编(if-else语句)
#include
#include
int main(void)
{
float a,b,c,delt,x1,x2;
scanf("a=%f,b=%f,c=%f",&a,&b,&c);
delt=b*b-4*a*c;
if(delt>=0){
x1=(-b+sqrt(delt))/(2*a),x2=(-b-sqrt(delt))/(2*a);
printf("x1=%.2f\nx2=%.2f",x1,x2);
return 0;
}
else{
printf("error\n");
return 0;
}
}
范例(顺序结构)
#include
#include
int main()
{
float a,b,c,delt,x1,x2;
scanf("a=%f,b=%f,c=%f",&a,&b,&c);
delt=b*b-4*a*c;
printf("x1=%.2f\n",(-b+sqrt(delt))/(2*a));
printf("x2=%.2f",(-b-sqrt(delt))/(2*a));
return 0;
}
样例
三、分支结构
1
输入月份1-12,输出其对应的季节。
#include
int main(void)
{
int n;
scanf("%d",&n);
if(n==2||n==3||n==4){
printf("Spring");
}
else if(n==5||n==6||n==7){
printf("Summer");
}
else if(n==8||n==9||n==10){
printf("Autumn");
}
else if(n==11||n==12||
n==1){
printf("Winter");
}
else{
printf("Error");
}
return 0;
}
样例
2
输入一个整数,判断它能否被3,5整除,并输出该数所属类型。A:能同时被3,5整除;B:能被3整除;C:能被5整除;D:不能被3,5任一个整除。
#include
int main(void)
{
int n;
scanf("%d",&n);
if(n%3==0&&n%5==0)
printf("A");
else if(n%3==0)
printf("B");
else if(n%5==0)
printf("C");
else
printf("D");
return 0;
}
#include
int main(void)
{
float x,y;
scanf("%f",&x);
if(x<1){
y=x;
printf("y=%.2f",y);
}
else if(x<10){
y=x-1;
printf("y=%.2f",y);
}
else{
y=3*x-11;
printf("y=%.2f",y);
}
return 0;
}
样例
4
输入三个点的坐标值,若该三点能构成三角形则输出周长和面积,否则输出Impossible。(三角形判断条件:任意两边之和大于第三遍)
#include
#include
int main(void)
{
float x1,x2,x3,y1,y2,y3;
float a,b,c,L,S;
scanf("%f,%f",&x1,&y1);
scanf("%f,%f",&x2,&y2);
scanf("%f,%f",&x3,&y3);
a=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
b=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
c=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3));
if(a+b>c&&a+c>b&&c+b>a){
L=a+b+c;
S=sqrt(0.5*L*(0.5*L-a)*(0.5*L-b)*(0.5*L-c));
printf("primeter=%.2f,area=%.2f\n",L,S);
}
else{
printf("Impossible\n");
}
return 0;
}
5
输入三个整数a、b、c,将它们由大到小依次显示出来。
#include
int main(void)
{
int a,b,c;
scanf("%d,%d,%d",&a,&b,&c);
if(a>b){
if(b>c){
printf("%d,%d,%d",a,b,c);
}
else if(a>c){
printf("%d,%d,%d",a,c,b);
}
else{
printf("%d,%d,%d",c,a,b);
}
}
else{
if(a>c){
printf("%d,%d,%d",b,a,c);
}
else if(b>c){
printf("%d,%d,%d",b,c,a);
}
else{
printf("%d,%d,%d",c,b,a);
}
}
return 0;
}
样例
第4题和第5题,scanf的格式控制字符串中我添加了逗号,运行时也输入了逗号,但是运行结果总是出错,想问是哪里出了问题?
隔天,我发现不是代码的问题,而是我的输入法的问题,我的输入法在不同软件上中英文切换是不同步的,在运行时输入我用的是中文标点所以导致出错。
6
输入一个大写字母,输出该字母及其对应的ASCII码值,同时输出其小写字母及其对应的ASCII码的值。
#include
int main(void)
{
char ch;
ch=getchar();
if(ch>='A'&&ch<='Z')
{
printf("upper:%c,%d\n",ch,ch);
printf("lower:%c,%d\n",ch+32,ch+32);
}
return 0;
}
样例
7
输入两个数字字符并分别存放在字符型变量a和b中(char a,b;),将这两个数字字符对应的数值相加并输出。
#include
int main(void)
{
char a,b;
int c;
scanf("a=%c,b=%c",&a,&b);
c=a-'0'+b-'0';
printf("%d+%d=%d",a-'0',b-'0',c);
return 0;
}
#include
int main(void)
{
int n;
scanf("%d",&n);
printf("%d",(n%10)*100+(n/10%10)*10+n/100);
return 0;
}
样例
9
输入1个字母后,输出该字母的前序字母、该字母、该字母的后序字母(例如:输入g,则输出fgh;输入a,则输出zab;输入M,则输出LMN;输入Z,则输出YZA),若不是字母则显示该字符本身。
#include
int main(void)
{
char b;
b=getchar();
if((b>='b'&&b<='y')||(b>='B'&&b<='Y'))
printf("%c%c%c",b-1,b,b+1);
else if(b=='A'||b=='a')
printf("%c%c%c",b+25,b,b+1);
else if(b=='Z'||b=='z')
printf("%c%c%c",b-1,b,b-25);
else
putchar(b);
return 0;
}
#include
int main(void)
{
float h,n,m;
int t;
scanf("%f,%d",&h,&t);
if(t<5)
n=0;
else
n=t/5*2;
if(h<=3){
m=10;
printf("money=%.0f",m+n+0.5);
}
else if(h<=13){
m=10+(h-3)*2;
printf("money=%.0f",m+n+0.5);
}
else{
m=10+(10-3)*2+(h-10)*3;
printf("money=%.0f",m+n+0.5);
}
return 0;
}
样例 样例 样例 样例 样例 样例 14
11
将人生按照年龄划分为童年[A](0#include
12
某年某月某日是当年的第几天(switch月份倒序)。#include
四、循环结构
1
输入多个字符(以回车作为输入的结束),统计其中大小写元音字母的个数。#include
2
编程按每行5个数来输出200以内所有能被7或17整除的偶数,并求出其和。#include
3
输入一个年份区间,例如[1900,2015],求该区间内的闰年的个数。#include
#include
#include
6
猴子吃桃问题:一只猴子第一天摘了一堆桃子,每天它都要吃掉一半,之后还要多吃一个,如此吃法,到第n天一早起来时,它发现只剩下一个桃子了,从键盘上输入n,求它第一天摘的桃子总数。#include
#include
8
菱形图像显示问题:输入一个正奇数([5,21]区间内),显示由*组成的菱形图像。#include
9
中国古代数学家张丘建提出的“百鸡问题”:一只大公鸡值五个钱,一只母鸡值三个钱,三个小鸡值一个钱。现有100个钱,要刚好买100只鸡,且三种鸡都有。#include
10
输入n,求[1,n]之间所有完数(一个数等于它的所有因子之和,这个数就称为完数,例如28的因子1+2+4+7+14=28,则28即为一个完数)。#include
#include
12
编程输出如下图形(要求以第30列为对称轴,即菱形的顶点在第30列)。#include
12
素数问题:输入正整数n,m,求不大于n的m个互不相同的最大的素数。
代码错误,待修正!#include
13
验证哥德巴赫猜想:任何一个大于或等于6的偶数均可表示为2个素数之和。如,6 = 3 + 3,8 = 3 + 5,10 = 3 + 7,10 = 5 + 5,….20 = 3 + 17,20 = 13 + 7等。编程将6~30之间的偶数都表示为2个素数之和。
代码错误,不放上来了。TAT
求水仙花数。(3-17,因为用了数学函数,从8开始运行速度就很慢了)#include
15
从键盘输入两个整型变量a和n的值,求a+aa+aaa+aa……a(n个a)之和。例如,若输入2和3,则输出序列和为246(2+22+222)。#include
16
教材P145:第6章课后习题题三(3)-使用函数显示给定范围内的完数。
代码错误,待修正!#include
17
教材P117:第5章课后习题题三(5)-使用函数统计指定数字(2)的个数。#include
18
编写一个闰年判断函数【int Isleap(int year)】、一个验证日期合法性的函数【int IsDate(int year,int month,int day)】和一个计算日期对应天数的函数【int Days(int year,int month,int day),要求计算前调用IsDate()函数判断日期的合法性,调用Isleap()判断闰年】,在main函数输入给定日期的年-月-日,调用Days函数求出这天是该年的第几天。#include
五、数组
1
从键盘输入一个十进制正整数n,将n转换成二进制并输出。#include
2
从键盘任意输入一个整数x,在数组a中顺序查找,如果找到,则给出该数所在的下标值。#include
#include
#include