问题:1.下面的一段程序的输出结果为( ) (鲁科安全)
#include <stdio.h>
int main()
{
if(-1)
printf("1");
else
printf("2");
if(0)
printf("3");
else
printf("4");
return 0;
}
A. 23 B. 24 C. 13 D. 14
答案:D
分析:-1不为0,输出1;0,输出4
问题:2.( )设int s = 100,要输出字符串"s的值是100"应使用下列哪个语句?(山东精电电气)
A. printf("s 的值是%d", s); B. printf("s 的值是%s", s)
C. printf("s 的值是%x", s): D. printf("s 的值是%i", s)
答案:A
分析:100为整数,用%d或%i
问题:3.if(n==8)和if(8== n)两种判断方式,哪一种更好,为什么?(泰华智)
答案:if(8==n)更好
分析:右边若少打个=会报错,左边会正常赋值
问题:4.if-elseif-else结构和switch-case结构,哪个效率高,为什么?(泰华智慧)
答案:switch-case效率更高
分析:当可能性的种类较多时,if_else会非常冗长,且需要挨个遍历所有可能,类似于穷举法。而switch-case只会找到对应case。
问题:5.结构化程序设计所规定的三种基本控制结构是:( ) (易购软件)
A. 输入、处理、输出 B. 形、网形、环形
C. 顺序、选择、循环 D. 主程序、子程序、函数
答案:C
问题:6.C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符:__________ (智洋)
A. 必须为字母 B. 必须为下划线
C. 必须为字母或下划线 D. 可以是字母,数字和下划线中任一字符
答案:C
问题:7.若执行下面的程序时,从键盘上输入 5,则输出是 ( ) (智洋创新)
int main(int argc, char **argv)
{
int x;
scanf("%d", &x);
if(x++ > 5)
printf("%d\n", x);
else
printf("%d\n", x--);
return 0;
}
A. 7 B. 4 C. 6 D. 5
答案:C
分析:输入5后,先判断再++,所以为否,先输出6再--
问题:8.以下语句中,能够判断uiNum(unsigned int)可以被16整除的有()(H3C)
A. if (((uiNum / 16) * 16) == uiNum)
B. if ((uiNum % 16) == 0)
C. if ((uiNum & 0x0F) == 0)
D. if (((uiNum >> 4) << 4) == uiNum)
答案:A,B ,C ,D
分析:A中除以16后的整数再乘以16为本身,这个数一定是16的倍数
B余数为0,既是整除的定义
C中该数&0000 1111 = 0000 0000,意味着该数右四位为0,左四位皆为16倍数
D中该数右移4位再左移4位为本身,意味着该数右四位为0,左四位皆为16倍数
问题:9.编写一个程序。实现输入一个小写字母,程序输出它对应的大写字母。(提示:小写字母的ASCII码值比大写宇母大32) (中科四平)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
char ch;
printf("请输入一个字符");
scanf("%c",&ch);
if(ch>='A'&&ch<='Z'){
printf("%c\n",ch+32); //转大写
}
default:printf("输入有误\n");
return 0;
}
问题:10.已知学生成绩(100分为满分)与等级的对应关系为: (中科四平)
成绩(grade) | 等级 |
90<=grade<=100 | A |
80<=grade<90 | B |
70<=grade<80 | C |
60<=grade<70 | D |
grade<60 | E |
请你编写一个程序,要求:输入学生成绩,输出学生成绩对应的等级。(提示:使用switch....case 语句)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int score;
printf("请输入成绩");
scanf("%d" , &score);
switch(score/10){
case 1: case 2: case 3: case 4: case 5:
printf("E"); break;
case 6: printf("D"); break;
case 7: printf("C"); break;
case 8: printf("B"); break;
case 9: printf("A"); break;
default:printf("输入成绩不合法\n");
}
return 0;
}
问题:11.编写一个程序。a=3,b=5,对a和b的值进行交换。 (北京君正集成电路)
- t=a , a=b , b=t;
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int a=3, b=5;
a=a+b;
b=a-b;
a=a-b;
printf("%d %d", a , b);
return 0;
}
- a=a+b; b=a-b; a=a-b;
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int a=3, b=5;
a=a+b;
b=a-b;
a=a-b;
printf("%d %d", a , b);
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
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int num;
printf("请输入一个数\n");
scanf("%d", &num);
int g, s, b;
g=num%10;
s=num/10%10;
b=num/100%10;
if(g*g*g+s*s*s+b*b*b==num){
printf( "是水仙花数\n");
}else{
printf( "不是水仙花数\n");
}
return 0;
}
问题:13.编写一个程序。实现输入一个年份,判断是不是闰年。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int year;
printf("输入年份\n");
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 天
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int m1=31, m2=28, m3=31, m4=30, m5=31, m6=30;
int m7=31, m8=31, m9=30, m10=31, m11=30, m12=31;
int year, month, day, sum=0;
printf("请输入年 月 日\n");
scanf("%d%d%d\n", &year, &month, &day);
if((year%4==0&&year%100!=0) || year%400==0) m2=29;
if((month>0 && month<=12) && (day>0 && day<=30)) {
switch(month){
case 12: sum=sum+m11;
case 11: sum=sum+m10;
case 10: sum=sum+m9;
case 9: sum=sum+m8;
case 8: sum=sum+m7;
case 7: sum=sum+m6;
case 6: sum=sum+m5;
case 5: sum=sum+m4;
case 4: sum=sum+m3;
case 3: sum=sum+m2;
case 2: sum=sum+m1;
case 1: sum=sum+day;
printf("这天是一年里的第");
printf("%d", sum);
printf("天\n");
}
}else {
printf("输入的日期不合法\n");
}
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]
普通
如果不能
输出不能构成三角形
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int a, b, c;
printf("输入三角形的三个边长\n");
scanf("%d %d %d", &a, &b, &c);
if (a==b && a==c && b==c) {
printf("等边三角形\n");
}else if ((a*a==b*b+c*c) || (b*b==a*a+c*c) || (c*c==a*a+b*b)){
printf("直角三角形\n");
}else if ((a==b || a==c || b==c) && (a+b>c && a+c>b && b+c>a)){
printf("等腰三角形\n");
}else if (a+b>c && a+c>b && b+c>a) {
printf("普通三角形\n");
}
return 0;
}
问题:16.编写一个程序。有 4 个变量 a,b,c,d,我们提前并不知道他们的值,请用你的方式将他们从大到小排序。算法任意。(山东丁一)
lude <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int a, b, c, d, t;
printf("请输入四个数\n");
scanf("%d%d%d%d", &a,&b,&c,&d);
if (a<b) t=a, a=b, b=t;
if (b<c) t=b, b=c, c=t;
if (c<d) t=c, c=d, d=t;
if (a<b) t=a, a=b, b=t;
if (b<c) t=b, b=c, c=t;
if (a<b) t=a, a=b, b=t;
printf("这四个数由大到小排列为:");
printf("%d%d%d%d\n" , a,b,c,d);
return 0;
}