目录
2.设int s = 100,要输出字符串"s的值是100"应使用下列哪个语句?A
3. if(n==8)和if(8== n)两种判断方式,哪一种更好,为什么?
4.if-elseif-else结构和switch-case结构,哪个效率高,为什么?
6.C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符:___C_______
7.若执行下面的程序时,从键盘上输入 5,则输出是 (C )
8.以下语句中,能够判断uiNum(unsigned int)可以被16整除的有(ABCD)
9.编写一个程序。实现输入一个小写字母,程序输出它对应的大写字母。(提示:小写字母的ASCII码值比大写宇母大32)
12.编写一个程序。实现输入一个三位数,判断是否是水仙花数。
16.编写一个程序。有 4 个变量 a,b,c,d,我们提前并不知道他们的值,请用你的方式将他们从大到小排序。算法任意。
一、 选择题
1.下面的一段程序的输出结果为( D)
#include <stdio.h>
int main()
{
if(-1)
printf("1"); 真 输出1
else
printf("2");
if(0) 假 输出4
printf("3");
else
printf("4");
return 0;
}
A. 23 B. 24 C. 13 D. 14
2.设int s = 100,要输出字符串"s的值是100"应使用下列哪个语句?A
A. printf("s 的值是%d", s); B. printf("s 的值是%s", s)
C. printf("s 的值是%x", s): D. printf("s 的值是%i", s)
s是int类型 B%s输出的是字符串且结尾缺少分号 C%x输出16进制数
D缺少分号
3. if(n==8)和if(8== n)两种判断方式,哪一种更好,为什么?
if(8==n)更好 n==8和8==n结果一样但当粗心少打一个等号时n=8是一个赋值语句不会报错 很难找出代码错误 8=n左侧是一个常量会报错
4.if-elseif-else结构和switch-case结构,哪个效率高,为什么?
stitch-case结构效率更高,if语句会多次进行判断而switch语句只会进行一次判断
5.结构化程序设计所规定的三种基本控制结构是:( C)
A. 输入、处理、输出 B. 形、网形、环形
C. 顺序、选择、循环 D. 主程序、子程序、函数
6.C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符:___C_______
A. 必须为字母 B. 必须为下划线
C. 必须为字母或下划线 D. 可以是字母,数字和下划线中任一字符
除数字外 子母和下划线都可以标识符的首字符
7.若执行下面的程序时,从键盘上输入 5,则输出是 (C )
int main(int argc, char **argv)
{
int x;
scanf("%d", &x);
if(x++ > 5) x=6
printf("%d\n", x);
else
printf("%d\n", x--); x-- 后进行自减
return 0;
}
A. 7 B. 4 C. 6 D. 5
8.以下语句中,能够判断uiNum(unsigned int)可以被16整除的有(ABCD)
A. if (((uiNum / 16) * 16) == uiNum)
B. if ((uiNum % 16) == 0)
C. if ((uiNum & 0x0F) == 0)
D. if (((uiNum >> 4) << 4) == uiNum)
二、编程题
9.编写一个程序。实现输入一个小写字母,程序输出它对应的大写字母。(提示:小写字母的ASCII码值比大写宇母大32)
int main(int argc, const char *argv[])
{
char ch;
printf("请输入一个字符:");
scanf("%c",&ch);
if(ch>='a'&&ch<='z')
//转大写
printf("%c\n",ch-32);
}
10.已知学生成绩(100分为满分)与等级的对应关系为:
成绩(grade) | 等级 |
90<=grade<=100 | A |
80<=grade<90 | B |
70<=grade<80 | C |
60<=grade<70 | D |
grade<60 | E |
请你编写一个程序,要求:输入学生成绩,输出学生成绩对应的等级。(提示:使用switch....case 语句)
int main(int argc, const char *argv[])
{
int score;
scanf("%d",&score);
if(score>100||score<0)
{
printf("输入有误,请重新输入");
}
switch(score/10){
case 10:
case 9: printf("A\n"); break;
case 8: printf("B\n"); break;
case 7: printf("C\n"); break;
case 6: printf("D\n"); break;
default: printf("E\n"); break;
}
return 0;
}
11.编写一个程序。a=3,b=5,对a和b的值进行交换。
int main(int argc, const char *argv[])
{
int a=3,b=5;
//第一种方法
int temp=a;
a=b;
b=temp;
printf("a=%d,b=%d\n",a,b);
//第二种方法
int m=3,n=5;
m=m^n;
n=m^n;
m=m^n;
printf("m=%d,n=%d\n",m,n);
//第三种方法
int x=3,y=5;
x=x+y;
y=x-y;
x=x-y;
printf("x=%d,y=%d\n",x,y);
return 0;
}
12.编写一个程序。实现输入一个三位数,判断是否是水仙花数。
水仙花数——各个位立方之和等于本身。
eg: 1*1*1 + 5*5*5 + 3*3*3 = 153,所以153是水仙花数
153由1个100 5个10 3个1
个位 = num%10
十位 = num/10%10
百位 = num/100%10
int main(int argc, const char *argv[])
{
int num;
scanf("%d",&num);
int a,b,c;
if(num>=100&&num<1000)
{
//百位上的数
a=num/100;
//十位上的数
b=num/10%10;
//个位上的数
c=num%10;
if(a*a*a+b*b*b+c*c*c==num)
{
printf("是水仙花数\n");
}else
printf("不是水仙花数\n");
}
else
printf("请重新输入\n");
return 0;
}
13.编写一个程序。实现输入一个年份,判断是不是闰年。
int main(int argc, const char *argv[])
{
int year;
scanf("%d",&year);
if(year%4==0&&year%100!=0||year%400==0)
{
printf("闰年\n");
}
else
printf("不是闰年\n");
return 0;
}
14.编写一个程序。请实现以下功能:
输入三个数,分别为年、月、日,输出此日是该年的第几天。
输入:
XXX XXX XXX
输出:
此日是该年的第XXX 天
示例:
输入 2020 2 20
程序输出 此日是该年的第51 天
int main(int argc, const char *argv[])
{
int year=0,month=0,day=0;
int count=0;
int m;
printf("请输入年月日:");
scanf("%d %d %d",&year,&month,&day);
//判断闰年
m=(year%4==0&&year%100!=0||year%400==0);
//判断月份输入是否正确
if(month>12||month<1)
{
printf("输入有误请重新输入");
}
//判断日期输入是否正确
if(day>31||day<1)
{
printf("输入有误请重新输入");
}
switch(month){
case 12:count+=30;
case 11:count+=31;
case 10:count+=30;
case 9:count+=31;
case 8:count+=31;
case 7:count+=30;
case 6:count+=31;
case 5:count+=30;
case 4:count+=31;
case 3:count+=m?29:28;
case 2:count+=31;
case 1:count+=day;
}
printf("%d年%d月%d日是该年的第%d天\n",year,month,day,count);
return 0;
}
15.编写一个程序。输入三角形的 三个边长
判断能否构成三角形,如果能
输出能构成三角形
再输出是什么三角形
等边 [a==b && a==c && b==c]
等腰 [a==b || a==c || b==c]
直角(勾股定理)[a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a]
普通
如果不能
输出不能构成三角形
int main(int argc, const char *argv[])
{
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a)
{
if(a==b&&b==c&&a==c){
printf("等边三角形\n");
return 0;
}
else if(a==b||b==c||a==c)
printf("等腰三角形\n");
else if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)
printf("直角三角形\n");
else
printf("普通三角形\n");
}
else
printf("不能构成三角形\n");
return 0;
}
16.编写一个程序。有 4 个变量 a,b,c,d,我们提前并不知道他们的值,请用你的方式将他们从大到小排序。算法任意。
int main(int argc, const char *argv[])
{
int a,b,c,d;
scanf("%d %d %d %d",&a,&b,&c,&d);
//定义一个数组存储a,b,c,d
int arr[4]={a,b,c,d};
for(int i=0;i<4;i++)
{
for(int j=0;j<4-1-i;j++)
{
//地址偏移取值
if(*(arr+j)<*(arr+j+1))
{
//数值交换
int temp=*(arr+j);
*(arr+j)=*(arr+j+1);
*(arr+j+1)=temp;
}
}
}
for(int i=0;i<4;i++){
printf("%d\n",*(arr+i));
}
return 0;
}