700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > C语言基础题集(课前:顺序结构 选择结构 while循环 for循环)

C语言基础题集(课前:顺序结构 选择结构 while循环 for循环)

时间:2021-03-29 01:39:52

相关推荐

C语言基础题集(课前:顺序结构 选择结构 while循环 for循环)

P (16). 某年某月的天数

题目描述:输入年和月,判断该月有几天?

输入描述:输入年和月,格式为年\月。

输出描述:输出该月的天数。

#include<iostream>#include<iomanip>#include<string>#include<cstdlib>#include<cmath>#include<cstdio>#include<queue>using namespace std;int main(){int year,month;scanf("%d\\%d",&year,&month); //此处要输入反斜杠,用'\\',或者%*c 来跳过一个字符switch(month){case 1:printf("31");break;case 3:printf("31");break;case 4:printf("30");break;case 5:printf("31");break;case 6:printf("30");break;case 7:printf("31");break;case 8:printf("31");break;case 9:printf("30");break;case 10:printf("31");break;case 11:printf("30");break;case 12:printf("31");break;default:if((year%4==0&&year%100!=0)||year%400==0){printf("29");}else{printf("28");}break; //不要漏掉default里的break}return 0;}

Q (17). 模拟计算器

题目描述:简单计算器模拟:输入两个整数和一个运算符,输出运算结果。

输入描述:第一行输入两个整数,用空格分开;第二行输入一个运算符(+、-、*、/)。所有运算均为整数运算,保证除数不包含0。

输出描述:输出对两个数运算后的结果。

输入:

30 50

*

输出:

1500

#include<iostream>#include<iomanip>#include<string>#include<cstdlib>#include<cmath>#include<cstdio>#include<queue>using namespace std;int main(){char ch;int a,b;scanf("%d%d %c",&a,&b,&ch); //用 %c前面的空格来跳过换行符switch(ch){case '+':printf("%d",a+b);break;case '-' :printf("%d",a-b);break;case '*':printf("%d",a*b);break;case '/':printf("%d",a/b);break;}return 0;}

C (3). 判断素数

题目描述:从键盘上输入任意一个正整数,然后判断该数是否为素数。如果是素数则输出"This is a prime." 否则输出“This is not a prime.”

输入描述:输入任意一个正整数n(1≤n≤1000000)。

输出描述:判断n是否为素数,并输出判断结果:如果n是素数则输出"This is a prime." 否则输出“This is not a prime.” 提醒:请注意对1的判定,1不是素数。

#include<iostream>#include<iomanip>#include<string>#include<cstdlib>#include<cmath>#include<cstdio>#include<queue>using namespace std;int main(){long long n;scanf("%lld",&n);int flag=1; // 一开始认为就是素数if(n==1){flag=0;}else{for(long long i=2;i<n;i++){ //若n为2,则不会进入循环,依然是素数if(n%i==0){ //只要出现整除的情况,就不是素数flag=0;break;}}}if(flag==0){printf("This is not a prime.");}else{printf("This is a prime.");}return 0;}

L (12). 平方数

题目描述:飞飞特别喜欢平方数,可是他数学并不好,你能帮他计算n与m之间所有平方数之和吗?

提示:若一个整数的开方还是整数,它就是平方数。例如:4、9、16、25是平方数。

输入描述:第一行T代表数据的组数。 接下来有T行,每行两个整数n,m(0≤n,m≤1000000000)

输出描述:输出一个整数,代表所求区间内平方数之和。

样例:

输入:

3

1 4

3 10

17 20

输出:

5

13

0

#include<iostream>#include<iomanip>#include<string>#include<cstdlib>#include<cmath>#include<cstdio>#include<queue>using namespace std;int main(){int n;scanf("%d",&n);while(n--){int a,b;scanf("%d%d",&a,&b);if(a>b){ //一定要记得保证前面一个数大于后面int temp=b;b=a;a=temp;}int sum=0;for(int k=a;k<=b;k++){int i=sqrt(k); //i是k的开方,因为是int型,如果不是平方数,就不能满足i*i==kif(i*i==k){sum+=k;}}printf("%d\n",sum);}return 0;}

A (1). 简单计算

题目描述:接受从键盘输入的NN个整数,输出其中的最大值、最小值和平均值(平均值为整除的商)

输入描述:第一行一个正整数N(N<=100);第二行有N个用空格隔开的整数Ti(1≤i≤N,0≤Ti≤100000000)

输出描述:三个有空格隔开的整数分别为最大值、最小值和平均值,其中平均值为整除的商。

输入:

5

1 2 3 5 4

输出:

5 1 3

//解法一#include<iostream>#include<iomanip>#include<string>#include<cstdlib>#include<cmath>#include<cstdio>#include<queue>using namespace std;int main(){int n;scanf("%d",&n);int a[100];for(int i=0;i<n;i++){scanf("%d",&a[i]);}int sum=0;int max=a[0];int min=a[0];for(int i=0;i<n;i++){if(a[i]>max){max=a[i];}if(a[i]<min){min=a[i];}sum=sum+a[i];}printf("%d %d %d",max,min,sum/n);return 0;}//解法二#include<iostream>#include<iomanip>#include<string>#include<cstdlib>#include<cmath>#include<cstdio>#include<queue>using namespace std;int main(){int n;scanf("%d",&n);int max,min; //max,min一定要放在for循环外面int sum=0;int average=0;for(int i=1;i<=n;i++){int num;if(i==1){scanf("%d",&num);max=num;min=num;sum=num;average=sum/n;}else{scanf("%d",&num);if(num>max){max=num;}if(num<min){min=num;}sum=sum+num;average=sum/n;}}printf("%d %d %d",max,min,average);return 0;}

D (4). 最大公约数与最小公倍数

题目描述:输入两个正整数,求它们的最大公约数与最小公倍数。

输入描述:输入两个正整数,两个整数之间用空格分开。数据保证在 int 范围内。

输出描述:第一行输出最大公约数;第二行输出最小公倍数。答案保证在int范围内。

输入

64 48

​​​​​​​输出

16

192

#include<iostream>#include<iomanip>#include<string>#include<cstdlib>#include<cmath>#include<cstdio>#include<queue>using namespace std;//40/25=1...15//25/15=1...10//15/10=1...5//10/5=2...0 此时 b==0 循环结束 int main(){int a,b;scanf("%d%d",&a,&b);int i=a;int j=b;while(b!=0){int temp=a%b; a=b; // 最后一次把b赋值给a, 余数temp赋值给b是0 b=temp;}int gcd=a;int lcm=i*j/gcd;printf("%d\n%d",gcd,lcm);return 0;}

M (13). 期末考试之分等级

题目描述:期末考试结束了,老师想要根据学生们的成绩划分出等级。共有5个等级A,B,C,D和E。划分方法如下,90分(含90)以上的为A,80~90(含80)间的为B,70~80(含70)间的为C,60~70(含60)的为D,不及格的为E。根据输入的成绩,编程输出各个级别段人数。

输入描述:输入第一行包含一个正整数N(N≤100N≤100)代表学生的数目,接下来有N行数据每行一个整数(0~100)代表一个学生的成绩。

输出描述:输出有五行格式如下:

A nA

B nB

C nC

D nD

E nE

其中A,B,C,D,E代表等级,nA,nB等代表个等级的人数,等级和人数之间有一个空格。

输入

6

66

73

85

99

100

59

输出

A 2

B 1

C 1

D 1

E 1

#include<iostream>#include<iomanip>#include<string>#include<cstdlib>#include<cmath>#include<cstdio>#include<queue>using namespace std;int main(){int n;scanf("%d",&n);int sum1=0;int sum2=0;int sum3=0;int sum4=0;int sum5=0;for(int i=1;i<=n;i++){int num;scanf("%d",&num);switch(num/10){case 10:sum1++;break;case 9 :sum1++;break;case 8:sum2++;break;case 7:sum3++;break;case 6:sum4++;break;default:sum5++;break;}}printf("A %d\n",sum1);printf("B %d\n",sum2);printf("C %d\n",sum3);printf("D %d\n",sum4);printf("E %d\n",sum5);return 0;}

N (14). C语言实验——分数序列

题目描述:有一个分数序列:2/1,3/2,5/3,8/5,13/8,…编写程序求出这个序列的前n项之和。

输入描述​​​​​​​:输入只有一个正整数n,1≤n≤10。

输出描述:输出该序列前n项和,结果保留小数后6位。

输入

3

输出

5.166667

#include<iostream>#include<iomanip>#include<string>#include<cstdlib>#include<cmath>#include<cstdio>#include<queue>using namespace std;int main(){int n;scanf("%d",&n);double num1=1.0;double num2=1.0;double sum=0.0;for(int i=1;i<=n;i++){double num3=num2; //这里num2分母应该先保存起来,因为后面分子num1会赋值给分母num2num2=num1;num1=num1+num3; //分子等于前一个数字的num1+num2sum=sum+num1/num2; //此时应该用更新后的num1除以更新后的num2}printf("%.6f",sum);return 0;}

O (15). 猜糖块

题目描述:小狗对小猫说:你猜猜我的口袋里有几块糖?小猫说:猜对了你给我吃吗?小狗点点头:嗯,猜对了两块都给你!小猫咽了咽口水说:我猜五块!然后,小狗笑着把糖放到小猫手里,说:我还欠你三块。既然小猫这么喜欢吃糖,小狗决定每天都给小猫几块糖,但是呢,不能每天都给相同块数的糖,那样就太单调了。于是,第一天小狗给小猫1*1=1块,第二天2*2=4块……第nn天给的糖数为n^2。现在已知小狗家共有N块糖,你需要帮他计算下这些糖最多可以给小猫几天?

输入描述:输入只有一个整数N(0≤N≤10000)

输出描述:输出对应的天数。

输入

15

输出

3

#include<iostream>#include<iomanip>#include<string>#include<cstdlib>#include<cmath>#include<cstdio>#include<queue>using namespace std;int main(){int n;scanf("%d",&n);int sum=0;int i=1;for(int i=1;i<=n;i++){sum=sum+i*i;if(sum>n){i=i-1;printf("%d",i);break; }if(sum==n){printf("%d",i);break;}}return 0;}

P (16). 小鑫の日常系列故事(五)——卡片游戏

题目描述:小鑫和健健喜欢在课间的时候玩游戏,今天他手里有n张卡片,每张卡片有一个数字。于是他就想和健健比一比更幸运。玩法是这样的:这n张卡片上的数字是没有规律的。他俩轮流取走最上面的一张卡片,最后谁取走卡片上的数字之和最大,谁就更幸运。(因为这个游戏是小鑫想出来的,总是小鑫拿第一张)你能帮他们判断谁更幸运么?

输入描述:第一行为一个数字n(0<n<100000)。第二行为n个数,是n张卡片上的数字,第一个数为最上面的卡片上的数,依次向下。n个数是在整型范围内。

输出描述:如果小鑫更幸运输出“Greater than”,如果健健更幸运输出“Less than”,否则“Equal”。(输出均不含引号)

输入

6

1 1 2 2 3 3

输出

Equal

#include<iostream>#include<iomanip>#include<string>#include<cstdlib>#include<cmath>#include<cstdio>#include<queue>using namespace std;int main(){int n;scanf("%d",&n);int sum1=0;int sum2=0;for(int i=1;i<=n;i++){int num;scanf("%d",&num);if(i%2!=0){sum1+=num;}elsesum2+=num;}if(sum1>sum2){//三条不互相包括的选择,一定是if elseif else结构,不能用if(if else)printf("Greater than\n");}else if(sum2>sum1){printf("Less than\n");}elseprintf("Equal\n");return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。