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

1、以下说法中正确的是____。(C)

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();​

  1. 计算 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;

结果:

C语言练习题_1_C语言练习


  1. 计算 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;

结果:

C语言练习题_1_C语言练习_02

C语言练习题_1_循环语句_03

  1. 在一个有序数组中查找具体的某个数字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;

结果:

C语言练习题_1_C语言练习_04


  1. 编写代码,演示多个字符从两端移动,向中间汇聚。

代码:

#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;

结果:

C语言练习题_1_循环语句_05

  1. 编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则 提示登录成,如果三次均输入错误,则退出程序。

代码:

#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语言练习题_1_循环语句_06

感谢大家的观看,如果有误,欢迎指出~~

以上是关于c语言练习题的主要内容,如果未能解决你的问题,请参考以下文章

C语言实战例题:必会的 10 个C语言经典练习题,源码分享

c语言练习题

二级C语言考试选择真题分类练习讲解——C语言基本语法

C语言练习

C语言练习010:求1到10的阶乘之和

C语言练习008:水仙花数