文档库 最新最全的文档下载
当前位置:文档库 › C语言练习题答案

C语言练习题答案

C语言练习题答案
C语言练习题答案

1.已知三角形的三边长为a,b,c,计算三角形面积的公式为:

area=sqrt(s(s-a)(s-b)(s-c)),其中s=(a+b+c)/2。

试编程从键盘输入a,b,c的值(假设a,b,c的值可以保证其构成一个三角形),计算并输出三角形的面积。

**输入格式要求:"%f,%f,%f" 提示信息:"Input a,b,c:"

**输出格式要求:"area = %.2f\n"

程序运行示例如下:

Input a,b,c:3,4,5

area = 6.00

答案:#include

#include

int main(void)

{

float a, b, c, s, area;

printf("Input a,b,c:");

scanf("%f,%f,%f", &a, &b, &c);

s = (a + b + c) / 2;

area = sqrt(s*(s - a)*(s - b)*(s - c));

printf("area = %.2f\n", area);

return 0;

}

-----------------1

2.从键盘任意输入一个4位整数,编程计算并输出它的逆序数.例如:输入1234,分离出千位1、百位2、十位3和个位4,然后计算4*1000+3*100+2*10+1=4321,并输出4321。

**要求输入提示信息为:无

**要求输入格式为: "%d"

**要求输出格式为:"%d"

程序运行示例如下:

1234 此处为输入

4321 此处为输出

答案:

#include

int main(void)

{

int a, b, c, d,e;

scanf("%d",&a);

b = a/1000;

c = a%1000/100;

d = a%100/10;

e = a%10;

a = e*1000+d*100+c*10+b;

printf("%d",a);

return 0;

}

--------------2

3.有关输入输出问题。

输入为:12a↙

b↙

运行结果为:1,2,a,b,123.300000,65535

请改正程序中的错误,使它能得出正确的结果。

#include

main()

{

int b;

unsigned short a = 65535;

short k = a;

char c, d;

int f, g;

b = (1234.0 - 1) / 10;

scanf("%c", &c);

scanf("%c", &d);

scanf("%d", &f);

scanf("%d", &g);

printf("%c,%c,%c,%c,%f,%d", c, d , f, g, b, k); }

答案:#include

main()

{

double b;

int a = 65535;

char c, d;

int f, g;

b = (1234.0 - 1) / 10;

scanf("%c", &c);

scanf("%c", &d);

scanf("%c\t", &f);

scanf("%c", &g);

printf("%c,%c,%c,%c,%f,%d", c, d , f, g, b, a);

}

--------3

4.输入一行字符,统计其中的英文字符、数字字符、空格字符,以及其他字符的个数。请找出以下程序的错误,并改正之。#include

#include

#define ARR_SIZE = 80;

main()

{

charstr[ARR_SIZE];

int len, i;

int letter=0,digit=0,space=0,other=0;

printf("请输入一个字符串:");

gets(str);

len = strlen(str);

for(i=0; i

{

if(a=

{

letter ++;

}

elseif(0=

{

digit ++;

}

elseif(str[i]=' ')

{

space ++;

}

else

other ++;

}

printf("英文字符数:%d\n", letter);

printf("数字字符数:%d\n", digit);

printf("空格数:%d\n", space);

printf("其他字符数:%d\n", other);

}

答案:#include

#include

#define ARR_SIZE 80

main()

{

charstr[ARR_SIZE];

int len, i;

int letter = 0, digit = 0, space = 0, other = 0;

printf("请输入一个字符串:");

gets(str);

len = strlen(str);

for(i = 0; i

{

if('a'<= str[i]&&str[i] <= 'z'|| 'A'<= str[i]&&str[i] <= 'Z')

{

letter++;

}

elseif('0'<= str[i] && str[i]<= '9')

{

digit++;

}

elseif( str[i] == ' ')

{

space++;

}

else

other++;

}

printf("英文字符数:%d\n", letter);

printf("数字字符数:%d\n", digit);

printf("空格数:%d\n", space);

printf("其他字符数:%d\n", other);

}

--------------------4

5.对输入的一个数判断是否是素数。所谓素数是指这个数只能被1和自身整除。要求在主函数输入一个数,调用函数Fun()判断该数是否是素数。打印信息在主函数中进行。例如:从键盘输入5,5是素数则打印如下信息:"5 is a prime number"。又如:从键盘输入4, 4不是素数则打印如下信息:"4 is not a prime number"。负数、0和1均不是素数。对输入的数据要考虑数据的合法性,不满足条件的数要重新输入直到满足条件为止。不能使用全局变量,不按给定的函数原型编写程序

不给分。Fun()函数原型为: int Fun(int m);

**输入数据提示信息:"Please input a number:\n"

注:该提示信息请放在循环体外

**输入数据格式为:"%d"

**输出格式要求:

若是素数输出数据格式为:"%d is a prime number\n"

若不是素数输出数据格式为: "%d is not a prime number\n" 不完整答案:#include

intFun(inta)

{

inti;

if(a>1)

{

for(i = 2;i

{

if(a%i==0)

return0;

else

continue;

}

return1;

}

else

return0;

}

main()

{

intb,c;

printf("Please input a number:\n");

scanf("%d",&b);

c = Fun(b);

if(0 == c)

printf("%d is not a prime number\n",b);

else

printf("%d is a prime number\n",b);

}

参考答案:#include "stdio.h"

intFun(intm);

intmain()

{

intm, flag;

printf("Please input a number:\n");

do

{

scanf("%d", &m); //1

}

while(m < 2); //e1

flag = Fun(m); //3

if(flag) //1

printf("%d is a prime number\n", m);

else

printf("%d is not a prime number\n", m); //1

return0;

}

intFun(intm)//2

{

inti, flag = 1; //1

for(i = 2; i < m; i++) //1

{

if(m % i == 0) //1

{

flag = 0; //1

break;

}

}

returnflag;//2

}

- ---------------------------------------------------------5

6.求1898

现將不超过2000的所有素数从小到大排成第一行,第二行上的每个数都等于它“右肩”上的素数与“左肩”上的素数之差。请编程求出:第二行数中是否存在这样的若干个连续的整数,它们的和恰好是1898?假如存在的话,又有几种这样的情况?

**输入格式要求:提示信息:"There are follwing primes in first row :\n"

**输出格式要求:"(%d).%3d,......,%d\n"

程序运行示例如下:

There are follwing primes in first row :

(1).101,......,1999

(2). 89,......,1987

(3). 53,......,1951

(4). 3,......,1901

答案:

#include

#define N 330

int a[N];

int main()

{

int c = 0, b = 0, d = 1;

int i = 0, j = 0, k = 0;

for (i = 3;i <= 2000;i++)

{

for (j = 2;j < i;j++)

{

if (i%j == 0)

break;

else

continue;

}

if (j == i)

{

a[k] = i;

k++;

}

else

continue;

}

printf("There are follwing primes in first row :\n");

for (c = 329;c >= 0;c--)

for (b = c + 1;c < b;b++)

if (b < 330)

{

if ((a[b] - a[c]) == 1898)

{

printf("(%d).%3d,......,%d\n", d, a[c], a[b]);

d++;

}

else

continue;

}

else

break;

}

7.从键盘任意输入一个整数m,若m不是素数,则对m进行质因数分解,并将m表示为质因数从小到大顺序排列的乘积形式输出,否则输出"It is a prime number"。例如,用户输入90时,程序输出90 = 2 * 3 * 3 * 5;用户输入17时,程序输出"It is a prime number"。

输入提示信息:"Input m:"

输入格式:"%d"

输出格式:

是素数时输出"It is a prime number\n"

否则输出用"%d = ","%d * "

运行示例1:

Input m:90↙

90 = 2 * 3 * 3 * 5

运行示例2:

Input m:13↙

It is a prime number

答案:

#include

#include

intIsPrime(intx); voidOutputPrimeFactor(intx); intmain()

{

intm;

printf("Input m:");

scanf("%d",&m);

if(IsPrime(m))

{

printf("It is a prime number\n"); }

else

{

printf("%d = ",m); OutputPrimeFactor(m);

}

return0;

}

intIsPrime(intx)

{

inti,flag=1;

intsquareRoot=sqrt(x);

if(x<=1)

{

flag=0;

}

for(i=2;i<=squareRoot&&flag;i++) {

if(x%i==0)

{

flag=0;

}

}

returnflag;

voidOutputPrimeFactor(intx)

{

inti;

for(i=2;i

{

if(x%i==0)

{

printf("%d * ",i);

OutputPrimeFactor(x/i);

return;

}

}

printf("%d",x);

}

---------------------------7

8.

将任一整数转换为二进制形式。

**输入格式要求:"%d" 提示信息:"Input number:"

**输出格式要求:"number of decimal form:%d\n"" it\'s binary form: " 程序运行示例如下:

Input number:876

number of decimal form:876

it's binary form: 00000000000000000000001101101100

答案:

#include

#include

int main()

{

int a;

char b[32];

printf("Input number:");

scanf("%d", &a);

printf("number of decimal form:%d\n", a);

printf(" it\'s binary form: ");

printf("%s\n", itoa(a, b, 2));

}

---------------------------8

9.

求自然数n最近的素数k, k>n。

***输入提示信息**:"Input n:"

***输入数据格式**:"%d"

***输出数据格式**:"%d"

示例

输入:

257

输出:

Please input n:263

答案:

#include

int main()

{

int n, i = 1, k;

printf("Please input n:");

scanf("%d", &n);

for (k = n + 1;i;k++)

{

for (i = 2;i < k;i++)

if (k%i == 0)

break;

else

continue;

if (i == k)

{

printf("%d", k);

i = 0;

break;

}

}

}

---------------9

10.

如果一个正整数m的所有小于m的不同因子(包括1)加起来正好等于m本身,那么就被称它为完全数。它是指这样的一些特殊的自然数,它所有的真因子(即除了自身以外的约数)的和,恰好等于它本身。

注意:1没有真因子,所以不是完全数。例如,6就是一个完全数,是因为6 = 1 + 2 + 3。

请编写一个判断完全数的函数IsPerfect(),然后判断从键盘输入的整数是否是完全数。

要求:按如下原型编写判断完全数的函数,若函数返回0,则代表不是完全数,若返回1,则代表是完全数。

int IsPerfect(int x);

**要求输入提示信息为: "Input m:\n"

**要求输入格式为: "%d"

**要求输出格式为

"%d is a perfect number\n"

"%d is not a perfect number\n"

注:不能使用指针、结构体、共用体、文件、goto、枚举类型进行编程,主函数不能使用int main 和return 0。

答案:

#include

int IsPerfect(int x);

int main()

{

int m;

printf("Input m:\n");

scanf("%d", &m);

if (IsPerfect(m))

printf("%d is a perfect number\n", m);

else

printf("%d is not a perfect number\n", m);

}

int IsPerfect(int x)

{

int i = 1,b = 0;

for (i = 1;i < x;i++)

if (x%i == 0)

{

b = b + i;

continue;

}

else

continue;

if (b == x)

return 1;

else

return 0;

}

---------------------10

11.

用函数编程计算两整数的最大值,在主函数中调用该函数计算并输出从键盘任意输入的两整数的最大值。

**输入格式要求:"%d,%d" 提示信息:"Input a,b:"

**输出格式要求:"max = %d\n"

程序运行示例如下:

Input a,b:5,8

max = 8

答案:

#include

int max(int a, int b)

if(a >= b)

return a;

else

return b;

}

main()

{

int a = 0,b = 0;

printf("Input a,b:");

scanf("%d,%d",&a,&b);

printf("max = %d\n",max(a,b));

}

---------------------------11

12.

利用求阶乘函数Fact(),编程计算并输出1! + 2! + …+ n!的值。**输入格式要求:"%u" 提示信息:"Input n(n>0):"

**输出格式要求:"sum = %lu\n"

答案:

#include

int sum_s(int i);

main()

{

unsigned int n = 0;

unsigned long b = 0;

printf("Input n(n>0):");

scanf("%u",&n);

for (b;n;n--)

{

b = b +sum_s(n);

}

printf("sum = %lu\n",b);

}

int sum_s(int i)

{

int a;

for(a = 1;i;i--)

{

if (i > 1)

a = a * i;

else

a = a * 1;

}

return a;

--------------------------------------12

13.

编程输出如下菜单界面(具体的输出则以下面提示中要求的输出格式为准):

=======大学信息管理系统=======

------------------------------

办公室管理财务管理

教务管理图书管理

科研管理设备管理

人事管理后勤管理

退出系统

------------------------------

请您在上述功能中选择(0——8):

提示:输出如下格式

"=======大学信息管理系统======= \n"

"------------------------------\n"

"1. 办公室管理 5. 财务管理 \n"

"2. 教务管理 6. 图书管理 \n"

"3. 科研管理 7. 设备管理 \n"

"4. 人事管理 8. 后勤管理 \n"

"0. 退出系统\n"

"------------------------------\n"

"请您在上述功能中选择(0——8):\n"

答案:

#include

main()

{

printf("=======大学信息管理系统======= \n");

printf("------------------------------\n");

printf("1. 办公室管理 5. 财务管理 \n");

printf("2. 教务管理 6. 图书管理 \n");

printf("3. 科研管理 7. 设备管理 \n");

printf("4. 人事管理 8. 后勤管理 \n");

printf("0. 退出系统\n");

printf("------------------------------\n");

printf("请您在上述功能中选择(0——8):\n");

}

-------------------------------------13

14.

利用静态变量计算n的阶乘。

**输入格式要求:"%d" 提示信息:"Input n:"

**输出格式要求:"%d! = %ld\n"

程序运行示例如下:

Input n:10

1! = 1

2! = 2

3! = 6

4! = 24

5! = 120

6! = 720

7! = 5040

8! = 40320

9! = 362880

10! = 3628800

答案:

#include

int sum_s(int i);

main()

{

unsigned int n = 0,b = 1;

printf("Input n:");

scanf("%d",&n);

for (b = 1;b <= n;b++)

{

printf("%d! = %ld\n",b,sum_s(b));

}

}

int sum_s(int i)

{

int a;

for(a = 1;i;i--)

{

if (i > 1)

a = a * i;

else

a = a * 1;

}

return a;

}

------------------------------------------------14

15.

写一个程序从键盘输入两个整数,然后显示输出第1个数除以第2个数的结果。例如,输入123和12,程序的输出结果格式如下:

10 Remainder = 3

------

12 ) 123

提示:使用求余运算符获得余数,使用整数除法获得商。

**输入格式要求:"%d%d" 提示信息:"请输入两个整数:"

**输出格式要求:

"%13d Remainder = %d\n"

" ------\n"

"%5d ) %5d"

答案:

#include

main()

{

int a, b, c, d;

printf("请输入两个整数:");

scanf("%d%d",&a,&b);

c = a / b;

d = a % b;

printf("%13d Remainder = %d\n",c,d);

printf(" ------\n");

printf("%5d ) %5d",b,a);

}

-------------------------------------------15

16.

写一个程序,将接收的摄氏温度转换为对应的华氏温度。程序应显示如下的提示信息: Please input cels:

然后输入一个十进制数并回车,然后程序以合适的消息形式输出转换后的华氏温度。程序使用如下的公式完成转换:摄氏温度 = 5.0 *(华氏温度– 32.0) / 9.0

**输入格式要求:"%lf" 提示信息:"Please input cels: "

**输出格式要求:"The fahr is: %.2f"

答案:

#include

main()

{

double a,b;

printf("Please input cels: ");

scanf("%lf",&a);

b = (9.0 * a)/5.0 + 32.0;

printf("The fahr is: %.2f",b);

}

--------------------------16

17.

写一个程序,将接收的华氏温度转换为对应的摄氏温度。程序应显示如下的提示信息:

Please input fahr:

然后输入一个十进制数并回车,然后程序以合适的消息形式输出转换后的华氏温度。

程序使用如下的公式完成转换:摄氏温度 = 5.0 *(华氏温度– 32.0) / 9.0

**输入格式要求:"%lf" 提示信息:"Please input fahr: "

**输出格式要求:"The cels is: %.2f"

答案:

#include

main()

{

double a,b;

printf("Please input fahr: ");

scanf("%lf",&a);

b = 5.0 * (a - 32.0) / 9.0;

printf("The cels is: %.2f",b);

}

-----------------------------------17

18.

编写一个程序,输入一个3位整数,要求逆序输出对应的数。例如:输入123,则输出321。

**输入格式要求:"%d" 提示信息:"Please enter a positive integer: "

**输出格式要求:"%d-->%d\n"

程序运行示例如下:

Please enter a positive integer: 345

345-->543

答案:

#include

int main(void)

{

int a, b, c, d,e;

printf("Please enter a positive integer: ");

scanf("%d",&a);

b = a/100;

d = a%100/10;

e = a%10;

c = e*100+d*10+b;

printf("%d-->%d",a,c);

return 0;

}

-------------------------------------------18

19.

计算两个数的平方和

从键盘读入两个实数,编程计算并输出它们的平方和,要求使用数学函数pow(x,y)计算平方值,输出结果保留2位小数。

提示:使用数学函数需要在程序中加入编译预处理命令 #include

以下为程序的输出示例:

Please input x and y:

1.2,3.4↙

result=13.00

输入格式:

"%f,%f"

输出格式:

输入提示信息:"Please input x and y:\n"

输出格式:"result=%.2f\n"

答案:

#include

#include

main()

{

float x,y,z;

printf("Please input x and y:\n");

scanf("%f,%f",&x,&y);

z = pow(x,2) + pow(y,2);

printf("result=%.2f\n",z);

}

————————————————————————————————19

20.

写一个程序从键盘输入两个整数,然后显示第1个整数占第二个整数的百分比,保留到小数点后1位。例如输入5和40,程序输出结果如下:

5 is 12.5 percent of 40

**输入格式要求:"%d%d" 提示信息:"请输入两个整数:"

**输出格式要求:"%d is %.1f percent of %d"

答案:

#include

main()

{

int a, b;

float c;

printf("请输入两个整数:");

scanf("%d%d",&a,&b);

c = (float)a / (float)b;

c = c *100;

printf("%d is %.1f percent of %d",a, c, b );

}

----------------------------------20

21.

求三角形面积。输入三角形的三个边长,计算三角形的面积。设三角形的三个边长分别为a、b、c,为简单起见,我们认为输入的三个边长数据是正确的,可以组成一个三角形。

**输入格式要求:"%f,%f,%f" 提示信息:"Enter 3 floats:"

**输出格式要求:"area=%.2f\n"

程序运行示例如下:

Enter 3 floats:2,2,3

area=1.98

答案:

#include

#include

int main(void)

{

float a, b, c, s, area;

printf("Enter 3 floats:");

scanf("%f,%f,%f", &a, &b, &c);

s = (a + b + c) / 2;

area = sqrt(s*(s - a)*(s - b)*(s - c));

printf("area=%.2f\n", area);

return 0;

}

------------------------------------------21

22.

写一个程序计算长为11.5厘米,宽为2.5厘米,高为10厘米的盒子的体积和表面积。

程序说明:采用直接赋值,不用输入。

**输出格式要求"area=%.2f,volume=%.2f"

答案:

#include

main()

{

float a, b;

a = (11.5 * 2.5 + 11.5*10 +10 * 2.5)*2;

b = 11.5 * 2.5 * 10;

printf("area=%.2f,volume=%.2f",a,b);

}

23.

用递归方法计算整数n的阶乘n!。

**输入格式要求:"%d" 提示信息:"Input n:""n<0, data error!\n"

**输出格式要求:"%d! = %ld\n"

程序运行示例如下:

Input n:5

5! = 120

答案;

#include

int f(int n)

{

if(n==1 ||n==0)

return 1;

else

return n * f(n - 1);

}

main()

{

int n;

o: printf("Input n:");

scanf("%d",&n);

while (n<0)

{

printf("n<0, data error!\n");

goto o;

}

printf("%d! = %ld\n",n, f(n));

}

------------------------------------23

24.

用递归方法编程计算Fibonacci数列的前N项。其中fib(0)=0,fib(1)=1,fib(n)=fib(n-1)+fib(n-2)。**输入格式要求:"%d" 提示信息:"Input n:"

**输出格式要求:"Fib(%d)=%d\n"

程序运行示例如下:

Input n:10

Fib(1)=1

Fib(2)=1

Fib(3)=2

Fib(4)=3

Fib(5)=5

Fib(6)=8

Fib(7)=13

Fib(8)=21

Fib(9)=34

Fib(10)=55

答案:

#include

int Fib(int n)

{

if (n == 0)

return 0;

else if (n == 1)

return 1;

else

return Fib(n - 1) + Fib(n - 2);

}

main()

{

int n, a;

printf("Input n:");

scanf("%d", &n);

for (a = 1; a <= n;a++)

{

printf("Fib(%d)=%d\n", a, Fib(a));

}

}

--------------------------------------------24

25.

利用求阶乘函数Fact(),编程计算并输出从1到n之间所有数的阶乘值。**输入格式要求:"%u" 提示信息:"Input n(n>0):"

**输出格式要求:"%d! = %lu\n"

程序运行示例如下:

Input n(n>0):10

1! = 1

2! = 2

3! = 6

4! = 24

5! = 120

6! = 720

7! = 5040

8! = 40320

9! = 362880

10! = 3628800

答案:

#include

int sum_s(unsigned int i)

{

unsigned int a;

for(a = 1;i;i--)

{

if (i > 1)

a = a * i;

else

a = a * 1;

}

return a;

}

int Fact(unsigned int n)

c语言试题及答案

1、以下正确的说法是( B ) (A) 用户若需要调用标准库函数,调用前必须重新定义 (B) 用户可以重新定义标准库函数,若如此,该函数将失去原有含义 (C) 系统根本不允许用户重新定义标准库函数 (D) 用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调 2、以下正确的函数声明形式是( A ) (A) double fun(int x, int y) (B) double fun(int x; int y) (C) double fun(int x, int y); (D) double fun(int x,y); 3、以下正确的函数形式是( D ) (A) double fun(int x, int y) { z=x+y; return z;} (B) fun(int x,y) { int z; return z;} (C) fun(x,y) { int x,y; double z; z=x+y; return z;} (D) double fun(int x, int y) { double z; z=x+y; return z;} 4、以下正确的说法是( A ) 在C语言中 (A) 实参和与其对应的形参各占用独立的存储单元 (B) 实参和与其对应的形参共占用一个存储单元 (C) 只有当实参和与其对应的形参同名时才共占用存储单元 (D) 形参是虚拟的,不占用存储单元 5、若调用一个函数,且此函数中没有return语句,则正确的说法是( A ) 该函数 (A) 没有返回值 (B) 返回若干个系统默认值 (C) 能返回一个用户所希望的函数值 (D) 返回一个不确定的值 6、以下不正确的说法是( B ) C语言规定 (A) 实参可以是常量、变量和表达式 (B) 形参可以是常量、变量和表达式 (C) 实参可以为任意类型 (D) 形参应与其对应的实参类型一致 7、以下正确的说法是( C ) (A) 定义函数时,形参的类型说明可以放在函数体内 (B) return后边的值不能为表达式 (C) 如果函数值的类型与返回值类型不一致,以函数值类型为准 (D) 如果形参与实参的类型不一致,以实参类型为准 8、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( B ) (A) 地址传递 (B) 单向值传递 (C) 由实参传给形参,再由形参传回给实参 (D) 由用户指定传递方式

c语言复习题(有答案)●

思考题 不仅要会做这些题,更重要的是要掌握其相关知识点一、一般填空题 1-1、调用fopen函数打开一文本文件,在“打开模式”这一项中,为输出(写)而打开需填入【1】. 1-2、调用fopen函数打开一文本文件,在“打开模式”这一项中,为追加而打开需填入【1】. 1-3、fopen函数的原形在头文件【1】中. 1-4、getchar函数的原形在头文件【1】中. 1-5、sqrt函数的原形在头文件【1】中. 1-6、如果函数不要求带回值,可用【1】来定义函数返回值为空. 答案:w或w+;a或a+;stdio.h ; stdio.h ; math.h ;void . 2-1、字符串“\1011234\\at”的长度(字符数)是【1】. 2-2、字符串“abc\103\\bcd”的长度(字符数)是【1】. 2-3、字符串“1\\t\x43\abx44”的长度(字符数)是【1】. 2-4、“a“在内存中占【1】个字节. 2-5、‘a’在内存中占【1】个字节. 2-6、“\71“在内存中占【1】个字节. 2-7、一维数组下标的最小值是【1】;数组char a[]=“china” ;在内存应占【1】个字节。 答案:8; 8; 9; 2;1;2 ;0;6. 3-1、设x=(5>1)+2, x的植为【1】. 3-2、表达式‘B’+15+‘\x41’+011+0x10的值是【1】. 3-3、表达式‘b’+5+‘\x42’+011+0x10的值是【1】. 答案:3;171;194; 4-1、假设所有变量都为整型,表达式(a=2,b=5,a>b?a++:b++,a+b)的值是【1】. 4-2、if(!a)中的表达式!a等价于【1】. 4_3、已知a=1,b=2,c=3,执行if(a>b>c) b=a;else b=c;a=4;b=8;后,b的值是【1】. 答案:8;a==0;8; 5-1、若所用变量都已定义,下列程序段的执行结果是【1】. for(i=1;i<=5;i++);printf(“OK\n”); 5-2、执行语句char s[3]=”ab”,*p;p=s;后,*(p+2)的值是【1】. 5-3、若有以下定义和语句:int a[4]={0,1,2,3},*p; p=&a[2]; ,则*--p的值是【1】. 5-4、下列程序的输出结果是【1】,main(){int a=011;printf(“%d\n”,++a);} 答案:OK;’\0’;1;10 6-1、若宏定义为:#define y(x) 2+x, 则表达式a=3*y(3)的值为【1】. 6-2、若宏定义为:#define y(x) 2+x, 则表达式a=4*y(2)的值为【1】. 6-3、若宏定义为:#define y(x) 2/x, 则表达式a=4+3*y(3)的值为【1】. 答案:9;10;6 . 二、单项选择题 1-1、若以"a+"方式打开一个已存在的文件,则以下叙述正确的是()。 A:文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作 B:文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作 C:文件打开时,原有文件内容被删除,只可作写操作 D:以上各种说法皆不正确 1-2、若执行fopen函数时发生错误,则函数的返回值是()。

(完整版)C语言试题及答案解析

C语言 一、选择题(第题2分,共20分) 1.一个C程序的执行是从 A 。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束 D) 本程序的main函数开始,到本程序文件的最后一个函数结束 2.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为 C 。 x=(i=4,j=16,k=32) A) 4 B) 16 C) 32 D) 52 3.设C语言中,一个int型数据在内存中占2个字节,则unsigned int 型数据的取值范围为 C 。 A) 0~255 B) 0~32767 C) 0~65535 D) 0~2147483647 4.设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为 D 。 A) float B) char C) int D) double 5. putchar函数可以向终端输出一个 D 。 A) 整型变量表达式 B) 实型变量值 C) 字符串 D) 字符或字符型变量值 6. printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式 B ;如果字符串长度小于5,则输出按方式 C 。 A) 从左起输出该字符串,右补空格 B) 按原字符长从左向右全部输出 C) 右对齐输出该字符串,左补空格 D) 输出错误信息 7.判断char型变量ch是否为大写字母的正确表达式是 C 。 A) ‘A’<=ch<=‘Z’ B) (ch>=‘A’)&(ch<=‘Z’) C) (ch>=‘A’)&&(ch<=‘Z’) D) (‘A’<= ch)AND(‘Z’>= ch) 8.已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是 B 。 if(x>y) z=x; x=y; y=z; A) x=10, y=20, z=30 B) x=20, y=30, z=30 C) x=20, y=30, z=10 D) x=20, y=30, z=20 9.以下程序段______C__. x=-1; do{ x=x*x; } while(!x); A)是死循环 B)循环执行二次 C)循环执行一次 D)有语法错误 10.以下正确的描述是___B____. A)continue语句的作用是结束整个循环的执行

C语言试卷及答案

一、选择题(每题 1 分,共 20 分) 1. C 语言程序的三种基本结构是顺序结构、选择结构和结构。 A、循环 B、递归 C、转移 D、嵌套 2. 下列标识符中,合法的是_______ 。 A) unsigned B) 5ab C) INT# D)_num2 3. 若float x ;x = 10/4 ;x的值是。 A、2.5 B、2.0 C、3 D、 2 4. 表达式!x 等价于。 A、x==0 B、x==1 C、x != 0 D、x != 1 5. 算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为。 A、算术运算、赋值运算、关系运算 B、关系运算、赋值运算、算术运算 C、算术运算、关系运算、赋值运算 D、关系运算、算术运算、赋值运算 6. 能将高级语言编写的源程序转换为目标程序的是。 A、链接程序 B、解释程序 C、编译程序 D、编辑程序 7. 下列语句定义pf为指向float类型变量f的指针,是正确的。 A、float f, *pf = f; B、float f, *pf = &f; C、float *pf = &f, f; D、float f, pf = f; 8. 一个C程序的执行是从。 A、本程序的main函数开始,到main函数结束 B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C、本程序的main函数开始,到本程序文件的最后一个函数结束 D、本程序文件的第一个函数开始,到本程序main函数结束 9. 能正确表示“当x的取值在[1,10]或[[200,210]范围内为真,否则为假”的表达式是________。 A、(x>=1)&&(x<=10)&&(x>=200)&&(x<=210) B、(x>=1)||(x<=10)||(x>=200)||(x<=210) C、(x>=1)&&(x<=10)||(x>=200)&&(x<=210) D、(x>=1)||(x<=10)&&(x>=200)||(x<=210) 10. 对两个数组a和b进行如下初始化 char a[]=“ABCDEF”;char b[]={ …A?,?B?,?C?,?D?,?E?,?F?}; 则以下叙述正确的是。 A、a和b数组完全相同 B、a和b长度相同 C、a和b中都存放字符串 D、a数组比b数组长度长 11. 是不正确的字符常量。 A、'\n' B、'1' C、"a" D、'\101' 12. 若变量已正确定义,语句“if(a>b) k=0; else k=1;”和等价。 A、k=(a>b)?1:0; B、k=a>b; C、k=a<=b; D、a<=b ? 0 : 1; 13. 设变量定义为“int x, *p=&x;”,则&*p相当于。 A、p B、*p C、x D、*&x 14. 有两个字符数组a、b,则以下正确的输入语句是。 A)gets(a,b); B) scanf(“%s%s”,a,b); C) scanf(“%s%s”,&a,&b); D) gets(“a”),gets(“b”); 15. C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是。 A、地址传递 B、单向值传递

C语言练习题(带答案)

一、单项选择题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从C开始执行。 A) 程序中第一条可执行语句B) 程序中第一个函数 C) 程序中的main函数D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 6.下列C语言用户标识符中合法的是(B)。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是(C)。 A)%x B)a+b C)a123 D)123 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 9.C语言中的简单数据类型包括(D)。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是C。 A)2.5 B)2 C)1 D)3 11.如果int a=3,b=4;则条件表达式"a

C语言试题与答案

大学C语言考试题库 第1章 C语言概述习题 1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. A B. B C. D D. E (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由主程序和子程序组成 C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 32 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系

c语言试题及答案 ()

第1章 C语言概述习题 1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由

主程序和子程序组成 C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 37 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集是 ASCII码字符集。 (5) C 语言的程序中有特殊含义的英语单词称为保留字。 (6) C 语言标识符的长度是前 8 位有效。 (7) C 语言中,标识符的定义规则是以字母或下划线为开头。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总是以 /* 符号作为开始标记,以 */ 符号作为结束标记。

C语言思考题

1、机器语言:机器语言及其指令是计算机能够直接识别的执行的一组二进制代码。一条机器指令通常由操作码和操作数两部分构成。 2、汇编指令:是机器语言的符号化表示MOV 3、汇编语言:由汇编指令、汇编伪指令及汇编语言的语法规则组成。 4、汇编语言源程序:用汇编语言编写的程序 5、汇编程序:把汇编语言源程序翻译成目标程序的加工程序MASM 6、二、十、十六进制转换(掌握<256)练习1:117=(1110101)B练习2:1000 1011 B=(139)D练习3:1011 1000 0000 0101 B=(B805)H 7、机器数:是指计算机中的数据,可以分为无符号数和有符号数字长为N位时无符号数表示范围0≤N≤2N-1 当N=8时0≤N≤255 8、原码(8位):最高位为符号位(正数用0表示,负数用1表示),其他位为数值位 如X=+45=+0010 1101B [X]原=0010 1101B 如X=-45=-0010 1101B [X]原=1010 1101B 9、补码(8位):正数的补码与原码相同,负数的补码是将符号位取1,数值位逐位取反,未位加1。如X=+45=+0010 1101B [X]补=0010 1101B 如X=-45=-0010 1101B [X]补=1101 0011B 10、补码运算:是指对一个补码表示的数按位求反后再在末尾加1,可以得到与此数相应的符号相反的数的补码。例、已知[117]补=0111 0101B,[-117]补=1000 1011B,对[117]补作补码运算。解:因为[117]补=0111 0101B,按位求反后得1000 1010B,末尾加1得1000 1011B=[-117]补。[X+Y]补=[X]补+[Y]补[X-Y]补=[X]补+[-Y]补 12、BCD码:BCD码用4位二进制数表示1位十进制数。常用8421BCD码例:写出十进制314所对应的BCD码 13、8086/8088CPU:16位微处理器和16位数据总线,20位地址总线(寻址空间为1MB)。8088微处理器内部16位数据,外部8位数据,也称准16位机。8086/8088CPU的组成(功能方面):运算器、控制器、寄存器组 14、寄存器是CPU内部临时存放数据的部件,速度比内存快。(1)数据寄存器4个16位寄存器AX,BX,CX,DX,每个寄存器还可以拆成2个8位寄存器使用。 AX累加器:算术运算寄存器,用于存放操作数或运算结果。I/O指令中通过AX与外部交换数据。在乘除运算中指定存放被乘数与被除数,系统功能调用号。AX累加器可以分为AH、AL分别使用。 BX基址寄存器:可作为通用寄存器使用。在计算内存地址是,常作基址寄存器,作为通用寄存器还可以分为BH、BL分别使用。 CX数据寄存器:可作为通用寄存器使用。在循环和串操作指令中作隐含计数器。作为通用寄存器还可以分为CH、CL分别使用。 DX数据寄存器:可作为通用寄存器使用。在I/O操作中,DX用来存放I/O端品地址。在乘除法运算中与AX组合一起存放双字型数据。作为通用寄存器还可以分为DH、DL 分别使用。 (2)变址寄存器(2 个16位):SI 源变址寄存器.DI 目的变址寄存器 BP基址寄存器:用于存放栈中的操作数的偏移地址。SP堆栈指针寄存器:用来指示栈顶的当前位置(偏移地址)。 IP 指令指针寄存器(程序计数器):用于存放下一条指令所在偏移地址。与CS配合,用来确定程序中下一条指令的物理地址。 15、PSW程序状态字寄存器(标志寄存器):8088微处理器使用16位中的9位设置了9个标志。标志位SF、OF、CF、ZF的含义0010 1001B+1110 1000B=1 0001 0001B CF=1 OF=0 SF=0 ZF=0 16、段地址寄存器:段表示一块内存空间(大小可变),最大为64K字节,最小为16字

C语言试题及答案

一、单项选择题 1. 软件危机具有下列表现( d )。 I. 对软件开发成本估计不准确II. 软件产品的质量往往靠不住 III. 软件常常不可维护IV. 软件成本逐年上升 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 2. 软件生命周期一般都被划分为若干个独立的阶段,其中占用精力和费用最多的阶段往往是( A )。 A. 运行和维护阶段 B. 设计阶段 C. 代码实现阶段 D. 测试阶段 3. 下列属于软件的特点的是(D )。 A. 软件是一种逻辑实体,具有抽象性 ~ B. 软件在使用过程中没有磨损、老化的问题 C. 软件不同于一般程序,它的一个显著特点是规模庞大,复杂程度高 D. 以上都正确 4. 软件工程的出现是由于(D )。 A. 软件危机的出现 B. 计算机硬件技术的发展 C. 软件社会化的需要 D. 计算机软件技术的发展 5. 软件开发技术不包含( d )。 A. 软件开发方法学 B. 软件工程环境 C. 软件工具 D. 软件质量度度量 6. 软件工程的课程特点( D )。 【 I. 学科理论及其知识应用的多维性 II. 工程化 III. 浓厚的方法学色彩 IV. 实践性、指导性强 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 7. 下列属于应用软件的是( b )。 I. 计算机辅助教学软件II. 软件测试工具 III. 办公自动化软件IV. 工程与科学计算软件

A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 8. 需求分析阶段最重要的技术文档是( b )。 - A. 设计说明书 B. 需求规格说明书 C. 可行性分析报告 D. 用户手册 9. 以下关于数据流图的说法错误的是( c )。 A. 数据流图舍去了具体的物质,只剩下数据的流动、加工处理和存储 B. 数据流图是用作结构化分析的一种工具 C. 传统的数据流图中主要由加工、数据源点/终点、数据流、控制流、数据存储组成 D. 数据流图的绘制采用自上向下、逐层分解的方法 10. 数据字典是软件需求分析阶段的最重要工具之一,其最基本的功能是( c )。 A. 数据库设计 B. 数据通信 C. 数据定义 D. 数据维护 11. 需求分析阶段的研究对象是( b )。 ¥ A. 系统分析员要求 B. 用户要求 C. 软硬件要求 D. 系统要求 12. 结构化方法的基本原则是( b )。 A. 模块化 B. 抽象与分解 C. 信息隐蔽 D. 逐步求精 13. 耦合度最高的是(b)耦合。 A. 环境 B. 内容 C. 控制 D. 数据 14. 内聚程度较低的是( a )内聚。 A. 偶然 B. 通讯 C. 顺序 D. 时间 15. 对一个程序来说,组成系统的模块数目( b ),则开发成本越小。 A. 越多 B. 越少 C. 顺序 D. 时间> 16. 画软件结构图时应注意调用关系只能是(B )。 A. 从下到上 B. 从上到下 C. 从左到右 D. 从右到左 17. 程序流程图中的箭头代表( b )。 A. 数据流 B. 控制流 C. 顺序流 D. 调用 18. 软件测试是软件质量保证的重要手段,下述( B )是软件测试的最基础环节。

c语言试题及答案

《C语言》课程综合复习资料 一、单选题 1. 在C语言中,字符型数据在存中的存储形式是 A)原码 B)补码 C)反码 D)ASCII码 2. 在C语言中,十进制数47可等价地表示为 A) 2f B) 02f C) 57 D) 057 3. 设有定义:int x=12,n=5; 则表达式 x%=(n%2) 的值为 A) 0 B) 1 C) 2 D) 3 4. 设有定义语句:char str[][20]={,"Beijing","中国石油大学"},*p=str; 则printf("%d\n",strlen(p+20)); 输出结果是 A)10 B) 6 C) 0 D) 20 5. 已定义以下函数: fun(int *p) { return *p; } 该函数的返回值是 A)不确定的值 B)形参p所指存储单元中的值 C)形参p中存放的值 D)形参p的地址值 6. C语言中,函数返回值的类型是由 A)return语句中的表达式类型决定 B)调用函数的主调函数类型决定 C)调用函数时的临时类型决定 D)定义函数时所指定的函数类型决定 7. 有以下函数定义: void fun( int n , double x ) { …… } 若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是 A) fun( int y , double m ); B) k=fun( 10 , 12.5 ); C) fun( 10 , 12.5 ); D) void fun( 10 , 12.5 ); 8. 以下选项中不能正确赋值的是 A) char b[]={′H′,′e′,′l′,′l′,′o′,′!′}; B) char b[10];b="Hello!";

C语言练习题(带答案)-绝对经典题目不看后悔

1单选题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从C开始执行。 A) 程序中第一条可执行语句B) 程序中第一个函数 C) 程序中的main函数D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B)。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 5~8题为相同类型题 考点:标识符的命名规则 (1)只能由字母、数字、下划线构成 (2)数字不能作为标识符的开头 (3)关键字不能作为标识符 选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3) 6.下列C语言用户标识符中合法的是(B)。 A)3ax B)x C)case D)-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是(C)。 A)%x B)a+b C)a123 D)123 选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2) 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键

C语言试题及答案

C语言试题及答案 Company number【1089WT-1898YT-1W8CB-9UUT-92108】

第1章C语言概述习题1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由主程序和子程序组成

C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 37 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言 的特点;既适合于开发系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集是 ASCII码字符集。 (5) C 语言的程序中有特殊含义的英语单词称为保留字。 (6) C 语言标识符的长度是前 8 位有效。 (7) C 语言中,标识符的定义规则是以字母或下划线为开头。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总是以 /* 符号作为开始标记,以 */ 符号作为结束标记。

C语言课后习题答案(最终)

第0章习题 1. 将下列十进制数分别转化为二进制数、八进制数和十六进制数: (1)128 (2)511 (3)1024 (4)65535 (5)1048575 答: (1)10000000、200、80 (2)111111111、777、1FF (3)10000000000、2000、400 (4)1111111111111111、177777、FFFF (5)11111111111111111111、3777777、FFFFF 2. 将下列二进制数转化为十进制数和十六进制数: (1)1100110101B (2)101101.1011B 答: (1)821、335 (2)45.6875、2D.B 3. 写出下列数的原码、反码、补码:15、-20、-27/32 答: (1)00001111、00000000、00001111 (2)10010100、11101011、11101100 (3)1.1101100、1.0010011、1.0010100 4. 16位无符号定点整数的数值表示范围为多少?8位补码的表示范围是多少?16位补码的表示范围是多少? 答: 0~65535、-128~127、-32768~32767 5.1968年Dijkstra提出结构化程序设计的思想的原因是什么?简要回答结构化程序设计的经典定义。 答: 结构化程序设计概念的提出主要是源于程序结构的层次性与模块化使得构造出来的软件具有良好的可理解性和可维护性,随着软件规模的扩大与复杂性的提高,程序的可维护性成为程序设计者们关注的重要问题之一。 如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。 6.C程序在内存中存储在哪儿?计算机的内存空间是如何分区的?分区存放不同类型的数据的目的是什么? 答:

c语言第1章练习题答案

第一章 C语言概述练习题 一、选择题 1.C语言是一种( )。 A) 机器语言B) 汇编语言C) 高级语言 D) 低级语言 2.下列各项中,不是C语言的特点是( )。 A) 语言简洁、紧凑,使用方便B) 数据类型丰富,可移植性好 C) 能实现汇编语言的大部分功能D) 有较强的网络操作功能 3.下列叙述正确的是( )。 A) C语言源程序可以直接在DOS环境中运行 B) 编译C语言源程序得到的目标程序可以直接在DOS环境中运行 C) C语言源程序经过编译、连接得到的可执行程序可以直接在DOS环境中运行 D) Turbo C系统不提供编译和连接C程序的功能 4.下列叙述错误的是()。 A) C程序中的每条语句都用一个分号作为结束符 B) C程序中的每条命令都用一个分号作为结束符 C) C程序中的变量必须先定义,后使用 D) C语言以小写字母作为基本书写形式,并且C语言要区分字母的大小写 5.一个C程序的执行是从()。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束 D) 本程序的main函数开始,到本程序文件的最后一个函数结束 6.以下叙述不正确的是()。 A) 一个C源程序必须包含一个main函数 B) 一个C源程序可由一个或多个函数组成 C) C程序的基本组成单位是函数 D) 在C程序中,注释说明只能位于一条语句的后面 7.C语言规定:在一个源程序中,main函数的位置( )。 A)必须在程序的开头B)必须在系统调用的库函数的后面 C)可以在程序的任意位置D)必须在程序的最后 8.一个C语言程序是由( )。 A)一个主程序和若干个子程序组成B) 函数组成 C) 若干过程组成D) 若干子程序组成 9.以下有4组用户标识符,其中合法的一组是()。 A) For B) 4d C) f2_G3 D) WORD -sub DO IF void Case Size abc define 10. 一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是 ()。

C语言试题及答案

一 下面四个选项中,均是不合法的用户标识符的选项是()。 A、float la0 _A B、A P_0 do C、_123 temp int D、b-a goto int 表达式18/4*sqrt(4.0)/8值的数据类型为()。 A、double B、float C、int D、不确定 设: long w=65535,t=7654321; 根据下面的输出结果,正确的程序段是( ). w=65535,t=7654321 end A、printf("w=%5d,t=%7d\n",w,t);printf("%s","end'); B、printf("w=%5ld,t=%7ld",w,t);printf("%c","end"); C、printf("w=%5ld,t=%7ld\n",w,t);printf("%s","end"); D、printf("w=%5u,t=%7u\n",w,t);printf( "end"); 选择结构中的条件与循环结构中循环成立的条件,在写法上可以是任一表达式,但其值只能被判断为“真”或“假”。哪个数作为逻辑“假”值()。 A、0 B、-1 C、非零的数 D、1 假定有以下变量定义: int k=7,x=12; 则能使值为3的表达式是:( ) A、(x%=k)-(k%=5)

B、x%=(k-k%5) C、x%=k-k%5 D、x%=(k%=5) 在以下给出的表达式中,与 do--while(E)语句中的(E)不等价的 表达式是()。 A、(E>0||E<0) B、(E==0) C、(!E==0) D、(E!=0) 下面有关 for 循环的正确描述是()。 A、for 循环是先执行循环体语句,后判断表达式 B、在 for 循环中,不能用 break 语句跳出循环体 C、for 循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 D、for 循环只能用于循环次数已经确定的情况 在C语言中,一维数组的定义方式为:类型说明符数组名()。 A、[整型常量]或[整型表达式] B、[正整型常量表达式] C、[整型表达式] D、[常量表达式] 以下正确的说法是( ). A、函数的类型决定返回值的类型 B、定义函数时,形参的类型说明可以放在函数体内 C、return后面不能为表达式 D、如果形参与实参的类型不一致,以实参类型为准 若调用一个函数,且此函数中没有return语句,则正确的说法是: 该函数()。 A、没有返回值 B、返回一个不确定的值 C、返回若干个系统默认值 D、能返回一个用户所希望的值 设函数的调用形式如下: f((x1, x2),(y1,y2,y3)),则函数有 ( )个形参. A、2 B、4 C、3 D、5

c语言试题及答案

单选题 1 .在C语言中,下列类型属于构造类型的是(D ) A整型B .字符型C .实型D .数组类型 2.下列字符串不是标识符的是( D ) A.sum B. Average C. Day_night D. M.D.JOHN 3.在C语言中,回车换行符是(A ) A. n B. t C. v D. b 4.在C语言中,语句和数据定义是用(C )作为结束标记的A句号B .逗号C .分号D .括号 5. 设有如下定义: int x=10,y=5,z; 则语句printf( “%dn”,z= (x+=y,x/y)); 的输出结果是( C ) A.0 B.1 C.3 D.4 6. 10 .以下程序的输出结果是( B ) main( ) {char c1= '8',c2= '2'; printf( “%c,%c,%d,%d”n ,c1,c2,c1 -c2,c1+c2); }

精选文库 A.因输出格式不合法,输出出错信息 B.8,2,6,106 C . 8,2,6,10 D . 825,9 7.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是 (A)mai n() {int x; seanf( “ %d,&x); if(x++>5) printf( “%dn ,x); else prints “%dn ,x --); A. 7 禾R 5 B . 7 禾R 4 C . 6 禾R 4 8.表达式(int)2.1416 的值时(A ) A. 2 B. 2.1 C. 0 D. 3 9.下列运算符优先级最高的是(B ) A. > B. + C. && D. != 10.C语言容许函数值类型缺省定义,此时该函数值隐含的类型时(B ) A. float 型 B. Int 型 C. Long 型 D. Double 型 11、C程序的基本构成单位是(C) A子程序B、过程C、函数D、文件 12、C语言中要求操作数都为整型数据的算术符是( C )

C语言试题库(完整版)

C语言试题库 一、单项选择 第一章 C语言概述 (1)一个C程序的执行是从 A、本程序的MAIN函数开始,到MAIN 函数结束。 B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。 C、本程序的MAIN函数开始,到本程序的最后一个函数结束。 D、本程序文件的第一个函数开始,到本程序的MAIN函数结束。(2)以下叙述正确的是 A、在C程序中,MAIN函数必须位于程序的最前面。 B、 C程序的每行中只能写一条语句。 C、 C语言本身没有输入输出语句。 D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误。(3) C语言规定,在一个源程序中,MAIN主函数的位置是在: A、必须在最前面。 B、必须在系统调用的库函数的后面 C、可以在任意位置。

D、必须在最后面 (4)一个C程序是由: A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 (5)以下叙述不正确的是: A、一个C源程序可由一个或多个函数组成 B、一个C源程序必须包含一个MAIN函数 C、 C程序的基本组成单位是函数 D、在C程序中,注释说明只能位于一条语句的后面 第二章数据类型、运算符与表达式 (1)若x, i, j, k都是int型变量,则计算下面表达式后,x的值为x=( i=4, j=16, k=32) A、4 B、16 C、32

D、52 (2)下列四组选项中,均不是C语言键字的选项是 A、define , IF, type B、getc, char, printf C、include, scanf, case E、 if, struct, type (3)下面四个选项中,均是不合法的用户标识符的选项是A、A,P_0,do B、float,1a0, _A C、b-a, goto, int D、_123, temp, INT (4)若有代数式3ae/bc,则正确的C语言表达式是A、a/b/c*e*3 B、3*a*e/bc C、3*a*e/b*c D、a*e/c/b*3 (5)已知各变量的类型说明如下:

C语言试题及答案

第1章C语言概述习题1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由主程序和子程序组成

C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 37 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集是 ASCII码字符集。 (5) C 语言的程序中有特殊含义的英语单词称为保留字。 (6) C 语言标识符的长度是前 8 位有效。 (7) C 语言中,标识符的定义规则是以字母或下划线为开头。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总是以/* 符号作为开始标记,以 */ 符号作为结束标记。

相关文档