初识C语言刷题记录
记录知识点考点及相关延伸
下面代码题均出自于牛客网
1. 下面哪个不是C语言内置数据类型:
选C
C、 struct Stu结构体,属于自定义类型
自定义类型:自己创造出来的;内置类型:C语言本身携带。
2. 局部变量的作用:
选D
对选项A的解释:C语言不止main函数一种主函数
int ADD(int x,int y)
{
int z=x+y;
return z;
}
int main()
{
int a=10;
return 0;
}
//不能说z函数的作用域在main函数内部
3. 对全局变量与局部变量的理解:
选B
“局部变量优先原则”。
小技巧:课本上问程序结果的题不会做,可以放到编译器里进行运行和思考,以巩固所学。
4. 代码打印
#include <stdio.h>
int main()
{
printf("I lost my cellphone!\n");
return 0;
}
建议:牛客网刷题时可以复制题目要求,避免出错。如本题输出内容“I lost my cellphone!”。
5. 输出小飞机
#include <stdio.h>
int main()
{
printf(" ** \n");
printf(" ** \n");
printf("************\n");
printf("************\n");
printf(" * * \n");
printf(" * * \n");
return 0;
}
注:没什么特别规律,不必要写成循环。
6. 字符串的结束标志是:
选C
0的含义
0——数字0 |
---|
‘0’——字符0,ASCII码值 48 |
‘\0’——转义字符,字符串结束标志,ASCII码值是0 |
EOF——end of file 文件的结束标志 |
NULL——空指针,本质是0 |
#define EOF (-1)
//scanf、getchar读取失败的时候会返回EOF
#define NULL((void*)0)//强制类型转换
#define NULL 0
int*p=NULL
//右击转到定义
7. 关于数组描述错误的是:
选B(定义)
8.下面哪个不是转义字符:
选C(详细表格请阅读笔者上篇文章)
9. 对strlen的理解:
选C
strlen查找的是‘\0’。若’\0’未定义,strlen查找的则是随机值。
10. C语言中哪个数组的创建是错误的:
选B
C99 标准之前,数组的大小是不能使用变量
C99 标准中增加:变长数组,数组的大小可以是变量,但是这样的数组是不能直接初始化的。
VS Code环境下:
#include <stdio.h>
//linux 的环境下
//gcc编译器是支持C99变长数组的
int main()
{
int n=10;
int arr[n];
return 0;
}
11.下面程序的结果是:
选A
\7、\121分别是一个字符
12. 写一个函数求两个整数的较大值
int MAX(int x,int y)
{
if(x>y)
return x;
else
return y;
}
//或者写成三目操作符
int MAX(int x,int y)
{
return (x > y ? x : y);
}
int main()
{
int a=0;
int b=0;
scanf("%d %d",&a,&b);
//求较大值
int m=MAX(a,b);
printf("%d\n",m);
return 0;
}
13. 计算表达式的值
请计算表达式“(-8+22)×a-10+c÷2”,其中,a = 40,c = 212。
#include <stdio.h>
int main()
{
int a=40;
int b=0;
int c=212;
b=(-8+22)*a-10+c/2;
printf("%d\n",b);
return 0;
}
//改进
#include <stdio.h>
int main()
{
int a=40;
int c=212;
printf("%d\n",(-8+22)*a-10+c/2);
return 0;
}
注意:数学符号对应的代码符号
14. 多组输入,表明一个人的智商。
#include <stdio.h>
int main()
{
int iq=0;
//输入
scanf("%d",&iq);
if(iq>=140)
{
printf("Genius\n");
}
return 0;
}//只能处理一组数据
int main()
{
int iq=0;
//输入
//EOF -> -1
while(scanf("%d",&iq)==1)
//等价于while(scanf("%d",&iq)!==EOF)
{
if(iq>=140)
{
printf("Genius\n");
}
}
return 0;
}
在 cplusplus.com 上查找scanf:
int main()
{
int a=0;
int b=0;
int ret=scanf("%d %d",&a,&b);
//4 5 ret=2
//5 (ctrl+z)*3 ret=1
//CodeBlock (ctrl+z)*1
printf("ret=%d\n",ret);
printf("ret=%d\n",a);
printf("ret=%d\n",b);
return 0;
}
15.判断一个整数是否能被5整除
#include <stdio.h>
int main()
{
int M=1;
scanf("%d",&M);
if(M%5==0)
printf("YES");
else
printf("NO");
return 0;
}
16. 关于C语言关键字说法正确的是
选B
17. 关于static说法不正确的是:
选C
18. 选出以下程序执行结果:
选B(参考初识C语言讲解)
19.下面哪个不是关键字:
选C
#define预处理指令
20. 在switch语言关键字中不包含哪个:
选A
21. 计算商和余数
#include <stdio.h>
int main()
{
int a=0;
int b=0;
scanf("%d %d",&a,&b);
printf("%d %d",a/b,a%b);
return 0;
}
22. 反向输出一个四位数
#include <stdio.h>
//解析:
//1234
//4321
//1234%10=4
//1234/10=123
//123%10=3
//123/10=12
//12%10=2
//12/10=1
//1%10=1
//1/10=0
int main()
{
int n=1000;
if(1000<=n&&n<=9999)
{
scanf("%d",&n);
while(n)
{
printf("%d",n%10);
n=n/10;
}
}
return 0;
}
//修改代码
int main()
{
int n=0;
scanf("%d",&n);//1234
while(n)
{
printf("%d",n%10);
n=n/10;
}
return 0;
}
23. 计算平均成绩
//法1
int main()
{
int a=0;
int b=0;
int c=0;
int d=0;
int e=0;
scanf("%d %d %d %d %e",&a,&b,&c,&d,&e);
printf("%.1lf",(a+b+c+d+e)/5.0);
return 0;
}
//法3
int main()
{
int n=0;
int i=0;
int sum=0;
while(i<5)
{
scanf("%d",&n);
sum+=n;
i++;
}
printf("%.1lf",sum/5.0);
return 0;
}
//法2
#include <stdio.h>
int main()
{
int score[5]={0};
int sum=0,i=0;
for(i=0;i<5;i++)
{
scanf("%d",&score[i]);
sum+=score[i];
}
double ave=sum/5.0;
printf("%.1lf",ave);
return 0;
}
24. 判断两个数大小
//法1
int main()
{
int a=0;
int b=0;
while(scanf("%d %d",&a,&b)==2)
{
if(a>b)
{
printf("%d>%d\n",a,b);
}
else if(a<b)
{
printf("%d<%d\n",a,b);
}
else
{
printf("%d=%d\n",a,b);
}
}
return 0;
}
//法2
#include <stdio.h>
int main ()
{
int a = 1 ;
int b = 1 ;
while(scanf("%d %d",&a,&b)!=EOF)
{
if(a==b)
{
printf("%d=%d\n",a,b);
}
else if( a>b)
{
printf("%d>%d\n",a,b);
}
else
printf("%d<%d\n",a,b);
}
return 0;
}
25. 时间转换
#include <stdio.h>
//3661
//s/3600=1h
//s%3600=61
//61/60=1min
//61/60=1s
int main()
{
int seconds;
scanf("%d",&seconds);
if(0<seconds&&seconds<100000000)
{
int h=seconds/3600;
int m=seconds/60%60;
//int m=(second%3600)/60;
int s=seconds%60;
//int s=(s%3600)%60;
printf("%d %d %d",h,m,s);
}
return 0;
}
1 h = 60 min = 3600 s |
---|
1 min = 60 s |
#include <stdio.h>
//3661
//s/3600=1h
//s%3600=61
//61/60=1min
//61/60=1s
int main()
{
int seconds;
scanf("%d",&seconds);
if(0<seconds&&seconds<100000000)
{
int h=seconds/3600;
int m=seconds/60%60;
//int m=(second%3600)/60;
int s=seconds%60;
//int s=(s%3600)%60;
printf("%d %d %d",h,m,s);
}
return 0;
}
1 h = 60 min = 3600 s |
---|
1 min = 60 s |