1、编程题,输入一个数字和字母,输出字母加上数字对应的字母。(注意不要输入太大的数字,防止越界) #include一、控制语句 1、顺序语句int main(int argc, char *argv[]) { int a = 0; char b; scanf("%d %c",&a,&b); printf("%cn",a + b); return 0; } 2、编程题,从键盘输入a、b、c的值,求一元二次方程 ax^2+bx+c=0的根。 Sqrt(); #include -lm (制定库名) B*b – 4ac >=0 #include #include int main(int argc, char *argv[]) { float a = 0.0,b = 0.0,c = 0.0; while(scanf("%f %f %f",&a,&b,&c) != EOF) { if(a != 0) { float disc = b * b - 4 * a * c; if(disc > 0.0) printf("x1 = %f,x2 = %fn",(-b + sqrt(disc))/(2*a),(-b - sqrt(disc))/(2 * a)); else if(disc < 0.0) printf("errorn"); else printf("x1 = x2 = %fn",(-b)/(2 * a)); } else printf("NOTn"); } return 0; }
C语言所有语句都是顺序执行的
2、分支语句(1)单分支
if(表达式)
{
语句块1;
}
else
{
语句块2;
}
如果表达式为真,则执行语句块1
如果为假,则执行语句块2
三目运算符 (表达式1)?(表达式2):(表达式3)
(2)多分支
if(表达式1)
{
语句块1;
}
else if(表达式2)
{
语句块2;
}
...
else
{
语句块n;
}
如果表达式1为真,则执行语句块1
如果为假,则判断表达式2,如果表达式2为真,则执行语句块2
...
如果前面的表达式都为假,则执行语句块n
练习:
1、输入一个学生的成绩,判断他的成绩等级
90 - 100 A
80 - 90 B
70 - 80 C
60 - 70 D
60以下 不及格
#include
int main(int argc, char *argv[])
{
float s = 0;
while(1)
{
printf("Please input your score:n");
scanf("%f",&s);
if(s >= 0 && s <= 100)
{
if(s >= 90 && s <= 100)
printf("An");
else if(s >= 80 && s < 90)
printf("Bn");
else if(s >= 70 && s < 80)
printf("Cn");
else if(s >= 60 && s < 70)
printf("Dn");
else
printf("Fn");
}
else
printf("errorn");
}
return 0;
}
2、输入a b c 三个数 比较它们的大小
#include
int main(int argc, char *argv[])
{
int a,b,c;
printf("Please input three numbers:n");
scanf("%d %d %d",&a,&b,&c);
if(a != b && a != c && b != c)
{
if(a > b && a > c)
{
if(b > c)
printf("a > b > cn");
else
printf("a > c > bn");
}
else if(b > a && b > c)
{
if(a > c)
printf("b > a > cn");
else
printf("b > c > an");
}
else if(c > b && c > a)
{
if(a > b)
printf("c > a > bn");
else
printf("c > b > an");
}
}
else if(a == b)
{
if(a > c)
printf("a = b > cn");
else if(a < c)
printf("c > a = bn");
else
printf("a = b = cn");
}
else if(a == c)
{
if(a > b)
printf("a = c > bn");
else if(a < b)
printf("b > a = cn");
else
printf("a = b = cn");
}
else if(b == c)
{
if(b > a)
printf("b = c > an");
else if(b < a)
printf("a > b = cn");
else
printf("a = b = cn");
}
return 0;
}
3、选择语句
switch(表达式) //整型 或 字符型
{
case 选项的值:
语句块;
break;
case 选项的值:
语句块;
break;
...
default:
语句块;
}
先执行表达式,通过case的值选择相对应的选项,执行对应的语句块
如果没有对应的选项,会寻找default接口,然后执行default后面的语句块
如果没有找到default,则跳出switch
break -- 跳出整个循环
continue -- 跳出本次循环
eg:
int main()
{
int c = 0, k = 0;
for(k = 1; k < 4; k++)
{
switch(k)
{
default:c += k;
case 2:c++;break;
case 4:c += 2;break;
}
}
printf("c = %dn",c);
printf("k = %dn",k);
}
输出c=7,k=4
练习:1、输入年月日,判断它是这一年的第几天
步骤:(1)输入年月日
(2)用switch case罗列出每一个月份前面的天数
(3)计算在非特殊情况下,某月某日是第几天
(4)判断特殊情况+1天
(5)打印
#include
int main(int argc, char *argv[])
{
int day,month,year,sum,flag;// flag标志位
printf("Please input year,month,day:n");
scanf("%d %d %d",&year,&month,&day);
switch(month)
{
case 1:sum = 0;break;
case 2:sum = 31;break;
case 3:sum = 59;break;
case 4:sum = 90;break;
case 5:sum = 120;break;
case 6:sum = 151;break;
case 7:sum = 181;break;
case 8:sum = 212;break;
case 9:sum = 243;break;
case 10:sum = 273;break;
case 11:sum = 304;break;
case 12:sum = 334;break;
default:
printf("errorn");
}
sum += day;
if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
flag =1;
else
flag = 0;
if(flag == 1 && month > 2)
sum ++;
printf("It is the %dth day in this yearn",sum);
return 0;
}
4、循环语句 – 多次去执行同一段代码
1、for循环
for(表达式1;表达式2;表达式3)
{
循环体;
}
表达式1:赋值语句
表达式2:循环判断条件
表达式3:改变循环判断条件变量的值
执行步骤:
1、执行表达式1
2、判断表达式2,如果为真则执行循环体
如果为假,则跳出循环
3、执行完循环体,执行表达式3
4、重复跳到步骤2
练习:
1、实现n!
#include
int main(int argc, char *argv[])
{
long long sum = 1;
int i,value;
printf("Please input a number:n");
scanf("%d",&value);
if(value < 0)
printf("errorn");
else if( value == 0)
printf("0! = 1n");
else
{
for(i = 1; i <= value; i++)
{
sum *= i;
}
printf("%d! = %lldn",value,sum);
}
return 0;
}
2、求3 - 300 之间的素数,并打印到终端(素数:只能整除1 和 本身)
#include
int main(int argc, char *argv[])
{
int i,j,flag;
for(i = 3; i <= 300 ;i++)
{
for(j = 2; j < i; j++)
{
flag = 1;
if(i % j == 0)
{
flag = 0;
break;
}
}
if(flag == 1)
printf("%dn",i);
}
return 0;
}
3、打印一个倒直角三角形
#include
int main(int argc, char *argv[])
{
int i,j,n;
scanf("%d",&n);
for(i = 0; i < n; i++)
{
for(j = 0; j < i; j++)
printf(" ");
for(j = 0; j < n - i ; j++)
printf("*");
printf("n");
}
return 0;
}
2、while -- 先判断再循环
while(表达式)
{
循环体;
}
先判断表达式是否为真,如果为真则执行循环体
如果为假,则跳出循环
3、do ... while -- 先循环再判断
do{
循环体;
}while(表达式);
先执行一次循环体,再判断表达式
如果表达式为真,则继续执行循环体
如果为假,则跳出循环
练习:输入几个数,一直到0结束输入,求总和 平均值
#include
int main(int argc, char *argv[])
{
int number = 0;
double sum = 0.0;
int count = 0;
while(1)
{
printf("Please input a number:n");
scanf("%d",&number);
if(number == 0)
break;
count++;
sum += number;
}
printf("sum = %lf,aver = %lf,count = %dn",sum,sum/count,count);
return 0;
}
#include
int main(int argc, char *argv[])
{
int number = 0;
double sum = 0.0;
int count = 0;
scanf("%d",&number);
while(number)
{
count++;
sum += number;
scanf("%d",&number);
}
printf("sum = %lf,aver = %lf,count = %dn",sum,sum/count,count);
return 0;
}
#include
int main(int argc, char *argv[])
{
int number = 0;
double sum = 0.0;
int count = 0;
do{
printf("Please input a number:n");
scanf("%d",&number);
count++;
sum += number;
}while(number);
count--;
printf("sum = %lf,aver = %lf,count = %dn",sum,sum/count,count);
return 0;
}
实现求一个非负十进制数里面包含的二进制1 有几个
#include
int main(int argc, char *argv[])
{
int value,count = 0;
scanf("%d",&value);
while(value)
{
value &= (value - 1);
count ++;
}
printf("%dn",count);
return 0;
}
#include
int main(int argc, char *argv[])
{
int t,value,count = 0;
scanf("%d",&value);
if(value)
{
do{
t = value % 2;
if(t)
count++;
}while(value /= 2);
printf("%dn",count);
}
return 0;
}
暑期编程PK赛
得CSDN机械键盘等精美礼品!


