C语言编程题
目录
目录
下面程序的功能是:从键盘上输入一个字符,判断它是否为小写字母,如果是,将它转换为大写字母;如果不是则不转换
以下程序从键盘接收一个小写字母(不考虑输入错误的情况) ,将其循环更改为其后第5个位置的字符。如'a'变为'f', 'w'变为'b'。请填空
【例2019】以下程序的功能是判断年份year是否闰年。(若某年份能被4整除但不能被100整除,或者能被400整除,则该年份是闰年)。请填空。
输入三门课的成绩,将成绩求和,并把三门课的平均值计算出
#include <stdio.h>
void main(){
int a,b,c,sum,avg;
printf("请输入语文成绩");
scanf("%d",&a);
printf("请输入数学成绩");
scanf("%d",&b);
printf("请输入英语成绩");
scanf("%d",&c);
sum=(a+b+c);
printf("总成绩为%d",sum);
avg=(sum/3);
printf("平均成绩为%d",avg);
}
运行结果 请输入语文成绩30
请输入数学成绩40
请输入英语成绩50
总成绩为120平均成绩为40
理解和掌握%10,/10:前者为截取个位,后者为截掉个位)
#include <stdio.h>
void main(){
int a,b,c,e,d;
a=789; //原始数据
e=a/10; //截掉个位
b=a%10; //截取个位
c=a/10%10; //截掉十位
d=a/100; //截掉百位
printf("%d,%d,%d,%d,%d",a,e,b,c,d);
}
运行结果 789,78,9,8,7
三天打鱼两天晒网
#include <stdio.h>
void main(){
int n;
scanf("%d",&n);
if(n%5==1||n%5==2||n%5==3)
printf("打鱼");
else printf("晒网");
}
运行结果 输入10 输出晒网
输入11 输出打鱼
从键盘上输入三角形的三个边长(实数) ,判断这个边能否构成三角形(构成三角形的条件为:任意两边之和第三边),如果能构成三角形,则计算三角形的面积并输出留2位小数),;如果不能构成三角形,则输出"False"字符意。假设三角形的边长分别为a、b、c,则三角形的面积为:
#include <math.h>
#include <stdio.h>
void main(){
float a,b,c,s,area;
scanf("%f%f%f",&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a){ //任意两边只和,大于第三边
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("%.2f\n",area);
} else
printf("False\n");
}
运行结果 输入1.1
2.2
3.3
返回0.0
输入 3.0
4.0
5.0
返回 False
编写程序,从键盘上接收一个百分制成绩(整数) ,判断数据的合理性。如果不是正确的成绩(<0或>100 ) ,则输出"Error data!" ,否则输出其相应的等级,成绩在90分及以上为'A', 80-89分为'B', 70-79分为'C',60~69分为'D',60分以下为'E'。例如:(1)输入成绩为120时,输出Error data!(2)输入信息为85时,输出B【要求:用switch语句实现。】
#include <stdio.h>
void main(){
int n;
printf("请输入你的成绩\n");
scanf("%d",&n);
if(n>0&&n>100)
printf("Error data");
else
switch (n/10) {
case 10:
printf("A");
break;
case 9:
printf("B");
break;
case 8:
printf("B");
break;
case 7:
printf("D");
default:
printf("E");
}
}
用if else 嵌套循环
#include <stdio.h>
void main(){
int n;
printf("请输入你的成绩\n");
scanf("%d",&n);
if(n>0&&n>100)
printf("Error data");
else
if (n>=90)
printf("优秀");
else if(n>=80)
printf("良好");
else if(n>=70)
printf("正常");
else if(n>=60)
printf("及格");
else
printf("不及格");
}
下面程序的功能是:从键盘上输入一个字符,判断它是否为小写字母,如果是,将它转换为大写字母;如果不是则不转换
#include <stdio.h>
void main(){
char ch;
ch=getchar();
ch=(ch>='a'&&ch<='z')?ch-32:ch;
putchar(ch);
}
以下程序从键盘接收一个小写字母(不考虑输入错误的情况) ,将其循环更改为其后第5个位置的字符。如'a'变为'f', 'w'变为'b'。请填空
#include <stdio.h>
void main(){
char ch;
ch=getchar();
if((ch>='a')&&(ch<='u'))
ch=ch+5;
else
ch=ch-21;
putchar(ch);
}
【例2019】以下程序的功能是判断年份year是否闰年。(若某年份能被4整除但不能被100整除,或者能被400整除,则该年份是闰年)。请填空。
#include <stdio.h>
void main(){
int year;
printf("请输入年份:\n");
scanf("%d",&year);
if(year%4==0&&year%100!=0||year%400==0)
printf("你输入的是闰年");
else
printf("你输入的是平年");
}
循环典型算法
1循环程序的实现要点:归纳出哪些操作需要反复执行?循环体
这些操作在什么情况下重复执行?循环条件
选用合适的循环语句
for while do-while
循环具体实现时考虑(循环条件):
事先给定循环次数,首选for
通过其他条件控制循环,考虑while或do-while
循环基本算法
一、穷举法:基本思想——对问题所涉及的所有可能情况一一列举。
鸡兔同笼
#include <stdio.h>
int main() {
int x,y;
for(x=0;x<=35;x++){ //鸡兔总数35
y=35-x;
if(2*x+4*y==94) printf("鸡%d,兔%d",x,y);
}
}
输入一个数,判断是否为素数
#include <stdio.h> #include "math.h" void main(){ int i,n; scanf("%d",&n); for(i=2;i<=n;i++){ if(n%i==0) break; } if(i>=n) printf("%d是素数",n); else printf("%d不是素数",n); }
输出100到200之间所有的素数
#include <stdio.h>
void main(){
int i,n;
for(i=100;i<=200;i++){
for(i=2;i<=n;i++){
if(n%i==0) break;
}
if(i>=n){
printf("%d",i);
}
}
}
求阶乘
#include "stdio.h" void main() { int i,n; double p=1; printf("输入一个整数,求其阶乘:"); scanf("%d",&n); for ( i = 1; i <=n ; ++i) { p=p*i; printf("%d!=%f",n,p); } }
求相同数的积
#include "stdio.h" #define B 3 void main() { int p=1; for (int i = 1; i <6 ; ++i) { p=p*B; printf("%d\n",p); } }
1000个人捐款20000元
#include "stdio.h"
#define M 20000
int main(){
float x,sum=0;
int i;
for (int i = 0; i <= 1000 ; i++) {
scanf("%f",&x);
sum+=x;
if(sum>M)break;
}
printf("捐款人数=%d,总捐款人数=%.1f\n",i,sum);
return 0;
}
从第三行输出斐波那契数列20行的和
#include "stdio.h"
int main(){
int i,n;
long a,b,next,s=0;
a=b+1;
s=a+b;
for (int i = 3; i <=20 ; i++) {
next=a+b;
a=b;
b=next;
s+=next;
}
printf("%ld",s);
return 0;
}
用数组解决斐波那契的问题
#include "stdio.h"
void main(){
int i;
int f[20]={1,1};
for (int i = 2; i < 20; i++) {
f[i]=f[i-2]+f[i-1];
for (int i = 0; i < 20; i++) {
if(i%5==0) printf("\n");
printf("%12d",f[i]);
}
printf("\n");
}
}
输入10个成绩计算出平均值和小于平均值的数
#include "stdio.h"
void main(){
int i;
float aver=0,score[10];
printf("请输入10个成绩");
for (int i = 0; i < 10; i++)
scanf("%f",&score[i]);
aver/=10;
printf("ave=%6.2f\n",aver);
for(i=0;i<10;i++)
if(score[i]<aver)
printf("%8.2f",score[i]);
}