c语言基础题
- 1.输出倒三角图案
- 2.如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)×0.3048。现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等于12英寸。
- 3.算术入门之加减乘除
- 4.已知某位学生的数学、英语和计算机课程的成绩分别是87分、72分和93分,求该生3门课程的平均成绩(结果按整型输出)。
- 5.世界上不同国家有不同的写日期的习惯。比如美国人习惯写成“月-日-年”,而中国人习惯写成“年-月-日”。下面请你写个程序,自动把读入的美国格式的日期改写成中国习惯的日期。
- 6.如果今天是星期三,后天就是星期五;如果今天是星期六,后天就是星期一。我们用数字1到7对应星期一到星期日。给定某一天,请你输出那天的“后天”是星期几。
- 7.有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。
- 8.BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12。但是小明没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了。于是BCD的0x12被输出成了十进制的18了!
- 9.计算符号函数的值
- 10.成绩转换
1.输出倒三角图案
输出格式:
按照下列格式输出由“*”组成的倒三角图案。
#include<stdio.h>
int main(void){
printf("* * * *\n * * *\n * *\n *");
}
C语言scanf:读取从键盘输入的数据(含输入格式汇总表)
2.如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)×0.3048。现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等于12英寸。
输入格式:
输入在一行中给出1个正整数,单位是厘米。
输出格式:
在一行中输出这个厘米数对应英制长度的英尺和英寸的整数值,中间用空格分开。
输入样例:
170
输出样例:
5 6
#include<stdio.h>
int main(void)
{
int cm=0;
scanf("%d",&cm);
int foot=cm/30.48;
int inch=((cm/30.48)-foot)*12;
printf("%d %d",foot,inch);
return 0;
}
除法运算符" / ",如果是两个整数相除结果为整数 。
如果需要保留小数时 必须将其中一个除数转换为浮点数,(如运算q=a/b变成q=0.1a/b10把a先缩小10倍变成小数在运算后扩大10倍**
3.算术入门之加减乘除
对于输入的两个整数,按照要求输出其和差积商。
输入格式:
在一行内输入两个不超过100的非负整数a和b,中间以一个空格间隔,且保证b不为0。
输出格式:
共四行,格式是:
[a] + [b] = [a+b]
[a] - [b] = [a-b]
[a] * [b] = [a*b]
[a] / [b] = [a/b]
其中,带有方括号的内容(如[a]、[b]、[a+b]等)表示相应整数或运算结果的值,在输出时要用实际的值代替。
并且:如果a能够被b整除,那么a/b应输出为整数格式,否则a/b输出为带两位小数的格式。
提示:注意表达式中的空格。
输入样例1:
6 3
输出样例1:
6 + 3 = 9
6 - 3 = 3
6 * 3 = 18
6 / 3 = 2
输入样例2:
8 6
输出样例2:
8 + 6 = 14
8 - 6 = 2
8 * 6 = 48
8 / 6 = 1.33
#include<stdio.h>
int main()
{
int a,b;
double q;
scanf("%d %d",&a,&b);
printf("%d + %d = %d\n",a,b,a+b);
printf("%d - %d = %d\n",a,b,a-b);
printf("%d * %d = %d\n",a,b,a*b);
if(a%b ==0)
printf("%d / %d = %d\n",a,b,a/b);
else
{
q=0.1*a/b*10;
printf("%d / %d = %.2f\n",a,b,q);}
return 0;
}
4.已知某位学生的数学、英语和计算机课程的成绩分别是87分、72分和93分,求该生3门课程的平均成绩(结果按整型输出)。
输出格式:
按照下列格式输出结果:
math = 87, eng = 72, comp = 93, average = 计算所得的平均成绩
#include <stdio.h>
int main()
{
int math=87,eng=72,comp=93,average;
average=(87+72+93)/3;
printf("math = %d, eng = %d, comp = %d, average = %d",math,eng,comp,average);
return 0;
}
5.世界上不同国家有不同的写日期的习惯。比如美国人习惯写成“月-日-年”,而中国人习惯写成“年-月-日”。下面请你写个程序,自动把读入的美国格式的日期改写成中国习惯的日期。
输入格式:
输入在一行中按照“mm-dd-yyyy”的格式给出月、日、年。题目保证给出的日期是1900年元旦至今合法的日期。
输出格式:
在一行中按照“yyyy-mm-dd”的格式给出年、月、日。
输入样例:
03-15-2017
输出样例:
2017-03-15
#include<stdio.h>
int main(){
int year,month,data;
scanf("%d-%d-%d",&month,&data,&year);
printf("%04d-%02d-%02d",year,month,data);
return 0;
}
6.如果今天是星期三,后天就是星期五;如果今天是星期六,后天就是星期一。我们用数字1到7对应星期一到星期日。给定某一天,请你输出那天的“后天”是星期几。
输入格式:
输入第一行给出一个正整数D(1 ≤ D ≤ 7),代表星期里的某一天。
输出格式:
在一行中输出D天的后天是星期几。
输入样例:
3
输出样例:
5
方法一(来源于网络)
#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d",&a);
if(a+2>7)
{
b=a+2;
c=b%7;
printf("%d\n",c);
}
else
{
c=a+2;
printf("%d\n",c);
}
return 0;
}
方法2
#include<stdio.h>
int main(){
int D,H,N;
scanf("%d",&D);
if(1 <= D <= 5){
H = (D + 2) % 7;
if(H == 0){
N = H + 2;
printf("%d",N);
}
else{
printf("%d",H);
}
}
else if(D == 6){
printf("%d",1);
}
else if(D == 7){
printf("%d",2);
}
else{
printf("输入错误,请输入1到7之间的数:");
}
return 0;
}
7.有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。
读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,例如 5 点 30 分表示为 530;0 点 30 分表示为 030。注意,第二个数字表示的分钟数可能超过 60,也可能是负数。
输入格式:
输入在一行中给出 2 个整数,分别是四位数字表示的起始时间、以及流逝的分钟数,其间以空格分隔。注意:在起始时间中,当小时为个位数时,没有前导的零,即 5 点 30 分表示为 530;0 点 30 分表示为 030。流逝的分钟数可能超过 60,也可能是负数。
输出格式:
输出不多于四位数字表示的终止时间,当小时为个位数时,没有前导的零。题目保证起始时间和终止时间在同一天内。
输入样例:
1120 110
输出样例:
1310
方法一
#include<stdio.h>
int main()
{
int time,minute;//time是起始时间,minute是分钟
scanf("%d%d",&time,&minute);
int a=time/100*60;//取小时转化成分钟
int b=time%100;//取余就是分钟
int sum=a+b+minute;
int sum1=sum/60*100+sum%60;
printf("%d",sum1);
return 0;
}
方法二(来源于网络)
#include <stdio.h>
int main()
{
int hour, min;//时;分
int nowtime, passtime;//初始时间,流逝时间
scanf("%d %d", &nowtime, &passtime);
hour = nowtime / 100;//取整数部分,即小时
min = nowtime % 100;//取余,即分钟
//流逝时间为正数
if (passtime >= 0)
{
hour += (min + passtime) / 60;
min = (min + passtime) % 60;
}
//流逝时间为负数
else
{
min = min + passtime;
while (min < 0)
{
hour--;
min = min + 60;
}
}
printf("%d%02d", hour, min);
return 0;
}
8.BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12。但是小明没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了。于是BCD的0x12被输出成了十进制的18了!
现在,你的程序要读入这个错误的十进制数,然后输出正确的十进制数。提示:你可以把18转换回0x12,然后再转换回12。
输入格式:
输入在一行中给出一个[0, 153]范围内的正整数,保证能转换回有效的BCD数,也就是说这个整数转换成十六进制时不会出现A-F的数字。
输出格式:
输出对应的十进制数。
输入样例:
18
输出样例:
12
小明将16进制错误的转换成了10进制,但是原16进制数字没改变,所以本题直接将10进制转换成16进制就行了
#include <stdio.h>
int main(){
int num;
scanf("%d",&num);
printf("%x",num);//%x就是把10进制数转化成16进制数的符号
return 0;
}
9.计算符号函数的值
对于任一整数n,符号函数sign(n)的定义如下:
请编写程序计算该函数对任一输入整数的值。
输入格式:
输入在一行中给出整数n。
输出格式:
在一行中按照格式“sign(n) = 函数值”输出该整数n对应的函数值。
输入样例1:
10
输出样例1:
sign(10) = 1
输入样例2:
0
输出样例2:
sign(0) = 0
输入样例3:
-98
输出样例3:
sign(-98) = -1
#include<stdio.h>
int main(){
int n,sign;
scanf("%d",&n);
if(n < 0){
sign = -1;
printf("sign(%d) = %d",n,sign);
}
else if(n == 0){
sign = 0;
printf("sign(%d) = %d",n,sign);
}
else if(n > 0){
sign = 1;
printf("sign(%d) = %d",n,sign);
}
return 0;
}
10.成绩转换
本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:
大于等于90分为A;
小于90且大于等于80为B;
小于80且大于等于70为C;
小于70且大于等于60为D;
小于60为E。
输入格式:
输入在一行中给出一个整数的百分制成绩。
输出格式:
在一行中输出对应的五分制成绩。
输入样例:
90
输出样例:
A
#include<stdio.h>
int main(){
int score;
scanf("%d",&score);
if(score >= 90){
printf("A");
}
else if(score >= 80 && score <= 90){
printf("B");
}
else if(score >= 70 && score <= 80){
printf("C");
}
else if(score >= 60 && score <= 70){
printf("D");
}
else if( score < 60){
printf("E");
}
return 0;
}