c语言练习题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言练习题相关的知识,希望对你有一定的参考价值。
1、以下说法中正确的是____。
A、C语言程序总是从第一个函数开始执行
B、在C语言程序中,要调用的函数必须在main()函数中定义
C、C语言程序总是从main()函数开始执行
D、C语言程序中的main()函数必须放在程序的开始部分
2、某文件中定义的静态全局变量(或称静态外部变量)其作用域是_____。
A、只限某个函数
B、本文件
C、跨文件
D、不限制作用域
3、下列叙述中正确的是_____。
A、函数定义不能嵌套,但函数调用可以嵌套
B、函数定义可以嵌套,但函数调用不可以嵌套
C、函数定义和函数调用都不能嵌套
D、函数定义与函数调用都可以嵌套
4、以下说法中正确的是_____。
A、#define和printf都是C语句
B、#define是C语句,而printf不是
C、printf是C语句,但#define
D、#define和printf都不是C语句
5、以下关于函数叙述中,正确的是_____。
A、在函数体中可以直接引用另一个函数中声明为static类别的局部变量的值
B、在函数体中至少必须有一个return 语句
C、在函数体中可以定义另一个函数
D、在函数体中可以调用函数自身
6、在C语言中,若对函数类型未加显式说明,则函数的隐含类型是______。
A、void
B、double
C、int
D、char
7、下面不正确的描述为______。
A、调用函数时,实参可以是表达式
B、调用函数时,实参与形参可以共用内存单元
C、调用函数时,将为形参分配内存单元
D、调用函数时,实参与形参的类型必须一致
8、在一个源文件中定义的全局变量的作用域为______。
A、本文件的全部范围
B、本程序的全部范围
C、本函数的全部范围
D、从定义该变量开始至本文件结束
9、以下叙述中,错误的是______。
A、不同函数中可以使用相同名字的变量
B、在函数外部定义的变量是全局变量
C、形式参数是局部变量
D、在main函数体内定义的变量是全局变量
10、C语言规定,调用一个函数时,当实参和形参都是普通变量时,它们之间数据传递的方式是______。
A、地址传递
B、单向值传递
C、双向值传递
D、由用户定义传递方式
11、若用数组名作为函数调用的实参,则传递给形参的是______。
A、数组的首地址
B、数组的第一个元素的值
C、数组中全部元素的值
D、数组元素的个数
12、C语言规定,函数返回值的类型是______。
A、return语句中的表达式的类型
B、调用该函数时的主调函数的类型
C、由系统确定
D、该函数定义时的类型
13、若一个void型函数定义中没有return语句,则调用该函数时,函数______。
A、没有返回值
B、返回若干个系统默认值
C、返回一个用户所希望的函数值
D、返回一个不确定的值
14、以下有关C语言的叙述中,错误的是______。
A、函数调用可以作为独立的语句出现
B、函数调用可以出现在表达式中
C、函数调用可以作为函数的实参
D、函数调用可以作为函数的形参
15、以下程序输出结果是__________。
#include <stdio.h>
int i=10;
main()
int j=1;
j=fun();
printf("%d,",j);
j=fun();
printf("%d",j);
fun()
int k=0;
k=k+i;
i=i+10;
return (k);
A、0,0
B、10,20
C、10,10
D、20,20
A、C语言程序总是从第一个函数开始执行
B、在C语言程序中,要调用的函数必须在main()函数中定义
C、C语言程序总是从main()函数开始执行
D、C语言程序中的main()函数必须放在程序的开始部分
2、某文件中定义的静态全局变量(或称静态外部变量)其作用域是_____。(B)
A、只限某个函数
B、本文件
C、跨文件
D、不限制作用域
3、下列叙述中正确的是_____。(A)
A、函数定义不能嵌套,但函数调用可以嵌套
B、函数定义可以嵌套,但函数调用不可以嵌套
C、函数定义和函数调用都不能嵌套
D、函数定义与函数调用都可以嵌套
4、以下说法中正确的是_____。(A)
A、#define和printf都是C语句
B、#define是C语句,而printf不是
C、printf是C语句,但#define
D、#define和printf都不是C语句
5、以下关于函数叙述中,正确的是_____。(D)
A、在函数体中可以直接引用另一个函数中声明为static类别的局部变量的值
B、在函数体中至少必须有一个return 语句
C、在函数体中可以定义另一个函数
D、在函数体中可以调用函数自身
6、在C语言中,若对函数类型未加显式说明,则函数的隐含类型是______。(A)
A、void
B、double
C、int
D、char
7、下面不正确的描述为______。(A)
A、调用函数时,实参可以是表达式
B、调用函数时,实参与形参可以共用内存单元
C、调用函数时,将为形参分配内存单元
D、调用函数时,实参与形参的类型必须一致
8、在一个源文件中定义的全局变量的作用域为______。(D)
A、本文件的全部范围
B、本程序的全部范围
C、本函数的全部范围
D、从定义该变量开始至本文件结束
9、以下叙述中,错误的是______。(D)
A、不同函数中可以使用相同名字的变量
B、在函数外部定义的变量是全局变量
C、形式参数是局部变量
D、在main函数体内定义的变量是全局变量
10、C语言规定,调用一个函数时,当实参和形参都是普通变量时,它们之间数据传递的方式是______。(B)
A、地址传递
B、单向值传递
C、双向值传递
D、由用户定义传递方式
11、若用数组名作为函数调用的实参,则传递给形参的是______。(A)
A、数组的首地址
B、数组的第一个元素的值
C、数组中全部元素的值
D、数组元素的个数
12、C语言规定,函数返回值的类型是______。(D)
A、return语句中的表达式的类型
B、调用该函数时的主调函数的类型
C、由系统确定
D、该函数定义时的类型
13、若一个void型函数定义中没有return语句,则调用该函数时,函数______。(A)
A、没有返回值
B、返回若干个系统默认值
C、返回一个用户所希望的函数值
D、返回一个不确定的值
14、以下有关C语言的叙述中,错误的是______。(A)
A、函数调用可以作为独立的语句出现
B、函数调用可以出现在表达式中
C、函数调用可以作为函数的实参
D、函数调用可以作为函数的形参
15、以下程序输出结果是__________。(B)
#include <stdio.h>
int i=10;
main()
int j=1;
j=fun();
printf("%d,",j);
j=fun();
printf("%d",j);
fun()
int k=0;
k=k+i;
i=i+10;
return (k);
A、0,0
B、10,20
C、10,10
D、20,20 参考技术A 1.C 2.B 3.A 4.C 5.D 6.C 7.C 8.D 9.D 10.B 12.B 13.A 14.C 15.B 参考技术B C B A B D
c c a D B
A d a D B 参考技术C C D A C D
A D D D B
A A A D B 参考技术D cdacd
C语言练习题_1
注意:编译器使用为VS2019,由于编译器的缘故,以下代码的输入函数均写为scanf_s();
- 计算 n的阶乘。
代码:
#include<stdio.h>
int main(void)
int n = 0;
int i = 0;
int result = 1;
printf("请输入整数n:");
scanf_s("%d",&n);
for (i = 0; i < n; i++)
result *= (i + 1);
printf("n!的值为%d。\\n",result);
return 0;
结果:
- 计算 1!+2!+3!+……+10!
代码:
#include<stdio.h>
int main(void)
int n = 10;
int i = 0;
int j = 0;
int result_1 = 1;
int result_2 = 0;
for (i = 0; i < n; i++)
for (result_1 = 1,j = 0; j < i+1; j++)
result_1 *= (j + 1);
result_2 += result_1;
printf(" 1!+ 2!+ 3!+ …… + 10!的结果为:%d\\n",result_2);
return 0;
或者:(该方法较为简便,代码效率更高)
#include<stdio.h>
int main(void)
int n = 10;
int i = 0;
int j = 0;
int result_1 = 1;
int result_2 = 0;
for (i = 0; i < n; i++)
result_1 *= (i+1);
result_2 += result_1;
printf(" 1!+ 2!+ 3!+ …… + 10!的结果为:%d\\n",result_2);
return 0;
结果:
- 在一个有序数组中查找具体的某个数字n。(讲解二分查找)
代码:
#include<stdio.h>
int main(void)
int arr[] = 1,2,3,4,5,6,7,8,9;
int k = 7;
int left = 0;
int right = sizeof(arr) / sizeof(arr[0]) - 1;
int mid = (left + right) / 2;
while (left <= right)
if (arr[mid] == k)
printf("%d的下标为%d。", k, mid);
break;
else if (arr[mid] > k)
right = mid - 1;
mid = (left + right) / 2;
else if (arr[mid] < k)
left = mid + 1;
mid = (left + right) / 2;
if (left > right)
printf("%d不在数组中。",k);
return 0;
结果:
- 编写代码,演示多个字符从两端移动,向中间汇聚。
代码:
#include<stdio.h>
#include<string.h>
int main(void)
char arr[] = "Welcome to China!!!!!!";
int left = 0;
int right = strlen(arr) - 1;
int i;
while (left <= right)
for (i = 0; i < strlen(arr); i++)
if (i <= left || i >= right)
printf("%c", arr[i]);
else
printf("#");
printf("\\n");
left++;
right--;
return 0;
结果:
- 编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则 提示登录成,如果三次均输入错误,则退出程序。
代码:
#include<stdio.h>
#include<string.h>
int main(void)
char arr[] = "abc";
char password[20]="0";
int i = 0;
for (i = 0; i < 3; i++)
printf("请输入密码:");
scanf_s("%s", password,10);
if (strcmp(password, arr) == 0)
printf("确认密码成功!\\n");
break;
else
printf("确认密码失败,请重试!\\n");
if (3 == i)
printf("3次确认密码均失败,请稍后再试!\\n");
return 0;
结果:
感谢大家的观看,如果有误,欢迎指出~~
以上是关于c语言练习题的主要内容,如果未能解决你的问题,请参考以下文章