当前位置:文档之家› C语言 练习7~12

C语言 练习7~12

C语言  练习7~12
C语言  练习7~12

练习7 7.1

char f(char ch)

{

if('A'<=ch && ch<='Z')

{

ch +=3;

if(ch>'Z')

{

ch -=26;

}

}

else if('a'<=ch && ch<='z')

ch = (ch - 'a' + 3) % 26 + 'a';

return ch;

}

7.2

int f(int x,int y)

{

int sum=x*x+y*y;

if(sum>100)

return sum/100;

return x+y;

}

7.3

int f(int n)

{

int rev = 0;

int m;

while(n > 0)

{

m = n % 10;

rev = rev * 10 + m;

n /= 10;

}

return rev;

}

7.4

//仅仅判断了三位的正整数是否为水仙花数。

int f(int n)

{

int m, sum, num = n;

sum = 0;

while(n > 0)

{

m = n % 10;

sum += m * m * m;

n /= 10;

}

return sum == num;

}

7.5

int f(int a,int b)

{

int r;

r =a % b;

while(r > 0)

{

a = b;

b = r;

r = a % b;

}

return b;

}

7.6

/*输出说明

1表示不能被2或3或5整除;2,3,5分别表示能被2,3,5整除;6表示能被2和3整除;

10表示能被2和5整除;

15表示能被3和5整除;

30表示能同时被2、3和5整除;*/

int f(int n)

{

int m = 1;

if(n % 2 == 0)

m *= 2;

if(n % 3 == 0)

m *= 3;

if(n % 5 == 0)

m *= 5;

return m;

}

7.7

E。不可以。无论在何种情况下,convertGrade函数都必须输出一个字符。可以约定用函数输出字符F表明函数的输入数据非法。

7.8

不能互换使用。库函数abs用于求整数的绝对值,而库函数fabs用于求小数的绝对值。函数调用abs(3)的值为整数3,函数调用abs(2.3)的值为整数2;函数调用fabs(3)的值为double 型数3.0,函数调用fabs(2.3)的值为double型数2.3。

注:abs(2.3)的实参为2.3,给形参赋值后,形参的值为2,故它的返回值为2。

7.9

#include

int f(int n)

{

int rev = 0;

int m;

while(n > 0)

{

m = n % 10;

rev = rev * 10 + m;

n /= 10;

}

return rev;

}

void main()

{

int a;

printf("请输入一个正整数:\n");

scanf("%d",&a);

if(f(a) == a)

printf("%d是一个回文数\n", a);

else

printf("%d不是一个回文数\n", a);

}

7.10

#include

int f(int a,int b)

{

int r;

r =a % b;

while(r > 0)

{

a = b;

b = r;

r = a % b;

}

return b;

}

int main()

{

int a,b;

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

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

printf("%d和%d的最小公倍数是%d\n",a, b, a*b/f(a,b));

return 0;

}

7.11

#include

char f(char ch)

{

if('A'<=ch && ch<='Z')

{

ch +=3;

if(ch>'Z')

{

ch -=26;

}

}

else if('a'<=ch && ch<='z')

ch = (ch - 'a' + 3) % 26 + 'a';

return ch;

}

void main()

{

char str[1000];

int i=0;

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

gets(str);

printf("加密前:%s\n加密后:",str);

while(str[i] != '\0')

{

str[i] = f(str[i]);

++i;

}

puts(str);

}

7.12

#include

int f(int n)

{

int m = 1;

if(n % 2 == 0)

m *= 2;

if(n % 3 == 0)

m *= 3;

if(n % 5 == 0)

m *= 5;

return m;

}

void main()

{

int a, i;

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

for(i=0; i<10; ++i)

{

scanf("%d", &a);

printf("%d", a);

switch(f(a))

{

case 1:

printf("不能被2,3,5中的任一个数整除。\n");

break;

case 2:

printf("能被2整除。\n");

break;

case 3:

printf("能被3整除。\n");

break;

case 5:

printf("能被5整除。\n");

break;

case 6:

printf("能被2和3整除。\n");

break;

case 10:

printf("能被2和5整除。\n");

case 15:

printf("能被3和5整除。\n");

break;

case 30:

printf("能同时被2,3,5整除。\n");

break;

}

}

}

7.13

提示错误:fatal error C1083: Cannot open include file: '7_2.c': No such file or directory

7.14

注意函数形参的类型、个数,返回值等问题。函数调用执行的过程为对实参求值,用实参给形参赋值,函数执行,执行结束。

7.15

局部变量m和n的作用域从5行起至第9行止。

swap函数形参x和y的作用域从第11行起至第16行止。

变量temp的作用域从12行起至第16行止。

7.16

全局变量m和变量n的作用域从3行起至第16行止。

swap函数形参x和y的作用域从第11行起至第16行止。

变量temp的作用域从12行起至第16行止。

程序的运行结果为:

7.17

交换前:m = 3, n = 5

交换后:m = 5, n = 3

7.18

m = 10, n = 5

7.19

10, 15

10, 20

10, 20

7.20

例7-11在函数calculate中计算了圆的周长并赋值给了全局变量g_circum;而main函数通过访问全局变量g_circum得到了圆的周长。全局变量的使用方式为,一个函数为全局变量赋值,另一个函数使用全局变量的值。

例7-13(1)中函数vary1改变并使用了全局变量的值。

例7-14函数vary使用了全局变量的值。

例7-15函数vary3把全局变量g_i的作用域限制在函数中,并在函数中使用了全局变量。全局变量可用于在函数之间传递数据,使用全局变量时应参考例7-11的用法。

7.21

程序7-8中,swap函数执行时局部变量m,n不能在swap函数使用,但这两个变量的生命期却并没有结束。

7.22

7.23

相同。函数randomize产生的随机序列与种子有关,即与函数中变量seed的值有关。

7.24

例7-17函数sumUpFactor使用全局变量数组a时,为数组a各元素赋值。函数print使用了全局变量数组a中的各个元素。

7.25

主调函数和被调函数是使用和被使用的关系。函数通常且有一定的功能(作用),甚至可以将函数(库函数)理解成C语言的命令。主调函数使用被调函数代替编码完成操作,可以提高编程效率,避免编码时可能出现的错误。

7.26

数组为形参时,数组的长度可有可无不起作用。如有函数void test(int a[5]),则调用test函数时,实参可以是任意长度的一维int型数组,而并非只能用长度为5的一维int型数组。因此,数组为形参时常需用另一个整型形参指出数组的长度。

数组为形参时,函数中如改变形参数组元素的值,则实参数组相对应数组元素的值也会随之改变。

7.27

void sort(int a[], int n)

{

int i, j, temp;

for(i=1; i

{

temp = a[i];

for(j=i; j>=0 && temp

a[j] = a[j - 1];

a[j] = temp;

}

}

7.28

//只给出了main函数。

void main()

{

int a[10],i;

printf("排序前:");

for(i=0; i<10; ++i)

{

a[i] = randomize();

printf("%d ", a[i]);

}

sort(a,10);

printf("\n排序后:");

for(i=0; i<10; ++i)

{

printf("%d ", a[i]);

}

printf("\n");

}

7.29

例6-4将转换后数据每一位上的数字都存储到了一个整数数组中,因此,相关函数也需一个数组存储输出结果。函数的输出结果不能是数组,而数组作形参时可以修改实参数组的元素,故可以把保存输出结果的数组定义为函数的一个形参。

convert函数用于将整数n转换成base进制,转换结果每一位上的数字都存储到了rem数组中。转换成功时convert函数会返回一个整数,否则将返回另外一个整数。

7.30

函数abc的作用为删除字符数组str存储字符串中的字符d。程序的输出结果为abcef。

7.31

例7-20中用整型数组的第一个元素存储了数组中待处理元素的长度。练习7.30中用空字符标示数组存储的字符串的结束位置。

7.32

#include

int f(int i)

{

if(i == 1)

return 1;

return i + f(i - 1);

}

void main()

{

int i;

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

scanf("%d", &i);

printf("1+2+...+%d=%d\n", i, f(i));

}

7.33

#include

int f(int i)

{

if(i<10)

return i;

return i % 10 + f(i / 10);

}

void main( )

{

int i;

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

scanf("%d", &i);

printf("%d各位数字和为%d\n", i, f(i));

}

7.34

#include

int f(int a,int b)

{

if(a%b==0)

return b;

return f(b, a%b);

}

void main()

{

int a, b;

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

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

printf("%d和%d的公约数为%d\n", a, b, f(a,b));

}

7.35

x1 = (x0 + a / x0) / 2;

y=mySqrt(a, x1);

7.36

fun(9)=9-fun(9-2)=9-fun(7)=9-(7-fun(5))=9-(7-(5-fun(3)))=9-(7-(5-(3-fun(1))))= 9-(7-(5-(3-2))) 7.37

递归函数recMin用于返回array数组中的最小值。5

7.38

普通算法如下:

int f(int a[], int n, int key)

{

int i;

for(i=0; i

if(a[i] == key)

return i;

return -1;

}

递归算法如下:

int f(int a[], int n, int key)

{

if(n < 0)

return -1;

if(a[n-1] == key)

return n - 1;

return f(a, n-1, key);

}

查找成功时,普通算法返回第一个值为key的元素的下标,递归算法返回最后一个值为key 的元素的下标。

7.39

7.40

void f(int n)

{

if(n == 0)

return;

f(n / 2);

printf("%d", n % 2);

}

练习8

8.1预处理的作用是把源文件中不是纯粹的C语言语句转换成C语言语句,转换通常是通过简单的查找替换实现的。

预处理器和C语言编译器是程序编译的两个阶段。预处理器先于C语言编译器对C语言源文件进行处理,经过处理后的源文件通常就只有单纯的C语言语句了,被C语言编译器处理后就能变成“可执行程序了”。

8.2程序中宏和整型变量的标识符都为A在语法上没有问题,因为程序编译分阶段

进行。预处理时,程序中以标识符形式出现的宏会被展开,当编译时,源文件实际为:#include

void main()

{

int n = 5;

printf("A = %d\n", n);

}

8.3

(1)宏名为:LSTR 宏体为:"This is a long string!"

(2)宏名为:AREA 宏体为:(r) 3.1415926 * r * r //注设AREA和(r)之间有空格。

(3)宏名为:N 宏体为:100;

8.4

宏引用N第一次展开为3 * 2 + M 第二次展开为3 * 2 + 5

宏引用N * 2第一次展开为3 * 2 + M * 2 第二次展开为3 * 2 + 5 * 2

宏引用(N) * 3第一次展开为(3 * 2 + M) * 3 第二次展开为(3 * 2 + 5) * 3

8.5 测试程序如下:

#include

const double PI = 3.1415926;

void main()

{

double r;

printf("请输入圆的半径:");

scanf("%lf", &r);

printf("它的周长为:%f\n", 2 * PI * r);

printf("它的面积为:%f\n", PI * r * r);

}

8.6 简单宏没有类型,可读性不好。

8.7 宏引用ZERO(5)展开后为5-5值为0;宏引用ZERO(3+2)展开为后为3+2-3+2值为4。可见宏引用ZERO的值不一定为0。

8.8 宏引用B(A+3)第一次展开为((A+2)*A+3),第二次展开为((10+2)*10+3)。

8.9 宏引用MAX(3+2, 3*2)展开后为3+2>3*2?3+2:3*2

8.10 宏引用PR(F(3)*3)第一次展开为printf(" %d\n”, (int)(F(3)*3)),第二次展开为printf(" %d\n”, (int)(3.2+3*3))

8.11 ZERO(3+2)展开后为(3+2)-(3+2)值为0;10*ZERO(5)展开后为10*(5)-(5)值为45。ZERO(3)/ZERO(3)展开后为(3)-(3)/(3)-(3)值为-1。

8.12 “无歧义”的参数化宏需要多加括号。

8.13 理论上有歧义,如!SQUARE(0)展开后为!(0)*(0)结果为0即假,但0的平方为0,!0的值为1,应为真。

8.14 #define LESS(x, y) (((x) < (y)) ? (x) : (y))

8.15函数调用时实参会向形参赋值,函数myAbs的形参为整型,实参-3.5给形参x赋值后,形参x的值为-3,因此,函数调用myAbs(-3.5)的结果为3而不会是3.5。参数化宏与函数相比,宏在预处理阶段展开,只是简单的替换,而函数在编译阶段处理,会进行执行状态切换,实参给形参赋值等复杂的操作。

8.16 宏SW AP1中使用了整型变量t,因此它只能用于交换两个整型变量的值,而宏SWAP2却可以交换整型变量或浮点型变量的值。

8.17 参数化宏只是简单的替换,一些简单功能的参数化宏可以超越数据类型的限制而具有了一定的通用性。函数受限于数据类型的限制只能专注于一种类型,要么求两个整数的较大者,要么求两个浮点数的较大者。

8.18 区别在于到什么目录中查找要包含的文件。

8.19 经编程测试可以。

8.20 头文件不是源文件,只有扩展名为.c的源文件才可以编译。头文件会被预处理器使用。预处理器用头文件的内容替换相关的包含命令。

8.21 分别编译源文件test2.c和8_5.c时不会出现语法错误。

包含命令通常把头文件的内容合并到源文件中,而函数声明语句仅仅扩充了函数的作用域。

工程在链接阶段会出现错误,因为在源文件test2.c中有函数myAbs1的定义,而在源文件8_5.c中也有函数myAbs1的定义,工程中头文件header1.h被包含了两次,定义了两个同名的函数myAbs1。

8.22 与例8-5相比,头文件中只有函数声明语句,没有函数定义语句。一个工程中可多次声明一个函数,因此即使这个头文件被多次包含到工程中也不会出现问题。

8.23 stdio.h文件具体位置在microsoft visual studio\vc98\include\stdio.h,可以用记事本程序打开。

8.24 条件编译可以根据简单的判断结果删除或保留源文件中相关的代码。

8.25 程序中从三个角度理解了宏N。首先,ifdef判断宏N是否定义,如果已经定义就保留代码,此时,宏N的具体值无关紧要(#define N也可)。

其次,if判断宏N是否为真,即其值是否为非0。与C语言中的关键字if相比,条件编译指令if仅能进行最简单的判断。

最后,判断宏N是正数、负数还是0。

源文件经过预处理后只剩下三条输出语句了。

8.26

#include

#define UPPER

void main()

{

char str[100];

int i;

gets(str);

#ifdef UPPER

for(i=0; str[i]!='\0'; ++i)

if(str[i] >= 'a' && str[i] <= 'z')

str[i] -= 'a' - 'A';

#else

for(i=0; str[i]!='\0'; ++i)

if(str[i] >= 'A' && str[i] <= 'Z')

str[i] += 'a' - 'A';

#endif

puts(str);

}

8.27

#include

void main()

{

char str[100];

int i, flag;

gets(str);

do

{

printf("请输入一个整数:1大写,2小写!\n");

scanf("%d", &flag);

} while(flag != 1 && flag != 2);

if(flag == 1)

{

for(i=0; str[i]!='\0'; ++i)

if(str[i] >= 'a' && str[i] <= 'z')

str[i] -= 'a' - 'A';

}

else

{

for(i=0; str[i]!='\0'; ++i)

if(str[i] >= 'A' && str[i] <= 'Z')

str[i] += 'a' - 'A';

}

puts(str);

}

8.28 练习8.26采用条件编译在源文件编译之前就确定了改写方案,可执行代码比较简短。练习8.27采用选择结构在程序运行时让用户决定改写方案,功能强大。

8.29 做法可行,因为预处理器仅进行简单的替换,不认识关键字int,只是把源文件中出现的int看成宏名。

9.1

可以,但是无法确定相关储存单元的大小及编码格式。只有知道了类型,才能确定相关存储单元的大小及编码格式,才能正确使用相关的存储单元。

9.2

整型变量存储整数,指针变量存储地址。指针与内存地址的关系似乎更像整型与整数的关系。准确地说,指针变量存储的是存储单元的地址而并非简单的内存地址。存储单元的地址具有类型。

9.3

地址是整数,但整数不是地址。多次强调,存储单元的地址有类型,而指针变量也只能用规

定类型的存储单元的地址赋值。更进一步,指针变量只能指向程序拥有的存储单元。因此,通常不能用整数给指针变量赋值。

理论上不可以,只有同类型间的指针变量才可以相互赋值,但实际上C语言追求效率,不保证类型安全,有些C语言编译程序“允许”不同类型的指针变量之间相互赋值。即使单精度指针变量pf真的指向了整型变量i,通过*pf使用变量i的存储单元也没有太大的实际意义。

9.4

不等价。double *p = &lf;是初始化语句,定义了一个双精度指针变量p,并且它被赋值为变量lf的地址;语句*p=&lf;是赋值语句,把变量lf的地址赋值给指针变量p指向的存储单元,这条语句有两个问题,首先指针变量p没有指向合法的存储单元,不能以间接引用*p的方式使用非法的存储单元,其次,*p标识存储单元的类型为双精度,不能接受变量lf的地址,两者类型不匹配。double *p = &lf;的作用等同于double *p; p = &lf;。

9.5

程序的运行结果为:

因为语句printf(“%x”, -5);的输出结果为fffffffb,所以变量i实际的内存状态和简化后的内存状态如下:

地址变量

0x0012 ff7c 0x0012 ff7d 0x0012 ff7e 0x0012 ff7f 0x0012 ff80

i

...

1111 1011

1111 1111

1111 1111

1111 1111

...

内容

...

-5

...

内容地址

0x0012 ff7c

0x0012 ff80

实际的内存状态

简化后的内存状态变量pi与变量i的关系如下:

变 量

pi 地 址0x0012 ff780x0012 ff7c

-5

原始状态

0x0012 ff7c

i

-5

i

pi

形象地表示

...

...

内容

9.6

指针变量用于存储某类型存储单元的地址,而存储单元的地址在VC6.0中均为32位,因此,无论何种类型的指针变量,其长度均为4个字节。

不相等。sizeof(pf)的值为指针变量pf 本身的长度,长度为4个字节。sizeof(*pf)的值为指针变量pf 指向的存储单元的长度,即双精度型存储单元的长度,为8个字节。

9.7

(1)有错误,不能用整型变量给整型指针变量赋值。 (2)00000005

9.8

程序中指针变量p1指向了整型变量i ,而语句p2=p1;使得指针变量p2也指向了整型变量i 。因为*p1和*p2也标识了变量i 相关的存储单元,所以语句i = *p1 + *p2;相当于i = i + i;,语句执行后,变量i 的值变为6。最终程序的输出结果为:6, 6, 6。

9.9

C 语言有直接引用和间接引用两种使用存储单元的方法。对于指针变量p ,语句p=&i;为指针变量p 赋值为变量i 的地址,实际上是使用直接引用的方式使用了指针变量p 本身的存储单元。语句*p = 23;就是所谓的以间接引用的方式使用指针变量p 指向的存储单元。

理论上,只要指针变量指向了某存储单元,就可以通过间接引用的方式使用该存储单元,但实际上为避免出现错误,应保证通过间接引用方式只使用合法的存储单元。

9.10

pi 不是空指针!程序的输出结果为:

可见在VC6.0中,没有赋值的局部指针变量会被赋值为0xcccccccc。

9.11

(1)无问题。

(2)无问题。

(3)有问题,其中p2 = *p1;错误,不能用整型变量给指针变量赋值。。

(4)有问题,指针变量p1指向了非法的存储单元,语句*p1=*p2;中使用了非法的存储单元。

(5)无问题。

(6)有问题。指针变量p1只能用整型地址赋值,语句p1=&p2;中&p2的结果并非整型地址而是整型指针地址。

9.12

程序的运行结果为:

a=1, b=7

m=6, n=9

分析如下:

语句a=p1==&m;中p1==&m先求值,因为指针变量p1指向了整型变量m,故求值结果为真,值为1,原语句变为a=1;。

在语句b=(++*p1)/(*p2)+5;中,*p1标识了变量m相关的存储单元,即其可与m互换,*p2可与n互换,原语句可变为b=(++m)/n+5;,变量b被赋值为7,且变量m自增1后变为6。语句n=*p1+*p2;可变为n=m+n;即n=6+3;。

9.13

(1) #include

void main()

{

int a,b,c,*pa=&a,*pb=&b,*pc=&c,t;

printf("请输入三个整数!\n");

scanf("%d%d%d", pa, pb, pc);

if(*pa > *pb)

{

t = *pa;

*pa = *pb;

*pb = t;

}

if(*pb > *pc)

{

t = *pb;

*pb = *pc;

*pc = t;

if(*pa > *pb)

{

t = *pa;

*pa = *pb;

*pb = t;

}

}

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

}

(2) #include

void main()

{

int a,b,c,*pa=&a,*pb=&b,*pc=&c,*t;

printf("请输入三个整数!\n");

scanf("%d%d%d", pa, pb, pc);

if(*pa > *pb)

{

t = pa;

pa = pb;

pb = t;

}

if(*pb > *pc)

{

t = pb;

pb = pc;

pc = t;

if(*pa > *pb)

{

t = pa;

pa = pb;

pb = t;

}

}

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

printf("%d<%d<%d\n", *pa, *pb, *pc);

}

9.14

函数调用swap(*p1,*p2)的实参为两个整数,当实参给形参赋值时,会因类型不匹配而出错。

函数调用swap(p1,p2)对实参求值时得到了两个整型存储单元的地址,实参给形参赋值后,两个形参分别指向了整型变量i和j,函数调用swap(p1,p2)等同于swap(&i, &j)。

9.15

函数调用swap(&i, &j)执行时,形参px指向整型变量i,即它的值为0x0012ff00,形参py 指向了整型变量j,即它的值为0x0012ff04。函数体执行时交换了两个整型指针形参px和py的值,函数执行结束时,形参px指向了变量j,形参py指向了变量i。由于函数中并没有以间接引用的方式使用变量i和j,所以在main函数中它们并没有改变。

9.16

由于传值调用C语言函数中不可能改变实参的值。指针作为形参时,实参应为某个存储单元的地址,函数中获得了地址的指针型形参可以用间接引用的方式使用它指向的存储单元,从而改变相关存储单元的内容。当认为与形参指针对应的是一个存储单元表现为地址时,可以勉强说函数中可以改变“实参”的值。确切地说指针作形参时,实参是地址,函数中可以使用(改变)此地址处的存储单元,改变并非实参本身。

9.17

不等价,因为在swap函数中变量i不可见。在变量px和变量i的重叠作用域中,*px与变量i可以互换使用。借助指针可以拓展存储单元的使用范围。

9.18

指针变量存储的是某类地址,值比较特别而已,与存储了整数的变量没有本质的区别。任何变量都有作用域和生存期的限制。

9.19

scanf函数的形参显然为指针类型,函数中可以改变与实参相关的存储单元。

把用户输入的整数存入变量i中只需变量i的地址即可,而指针变量pi存储了变量i的地址,因此,可以用语句scanf("%d", pi);。

9.20

(1)scanf函数中与%c对应的地址应为一个字符型存储单元的地址,而&cp不是一个这样的地址。改成scanf("%c",cp);后没有了语法错误,但实际上还是有问题的。scanf函数将把用户输入的字符存入变量cp指向的存储单元,但它指向了什么存储单元呢?可以修改char ca, *cp; cp=&ca;scanf("%c", cp);。其中语句scanf("%c", cp);与scanf("%c", &ca);等价。

(2)int *pi=(int*)malloc(sizeof(int));scanf("%d",pi); free(pi);

9.21

分析:

全局指针变量p指向了变量j。当test函数执行时,形参x的值为5,pi也指向了变量j。语句*p=*pi+c;可理解为j=j+c;,与j相关存储单元的内容变为5。语句x=*pi*c ;可理解为x=j*c;,形参x的值变为15。程序的输出结果为:

15, 5, 5

5, 5, 5

9.22

(1)

void larger(int x, int y, int *z)

{

if(z == NULL)

return;

if(x > y)

*z = x;

else

*z = y;

}

(2)

#include

#include "7_1.c"

void main()

{

float m = 3.2, n = 2.3;

int i;

larger(m + n, m - n, &i);

printf("%.1f 和%.1f中较大者为%d\n", m + n, m - n, i);

}

思考:可以定义一个单精度变量f(float f;)再用larger(m+n, m-n, &f);求出较大者吗?9.23

void fac(int n, unsigned int *re)

{

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

*re = 1;

else

{

fac(n-1, re);

*re = n * *re;

}

}

9.24

(1)语句const double *pf = &m;中关键字const修饰的是double *可理解为指针变量pf指向的存储单元,也就是说指针变量pf可以通过赋值操作指向不同的存储单元,但它指向的存储单元不能被修改,即不能用类似*pf=3;的语句改变与变量m相关的存储单元。(2)语句double const *pf = &m;中关键字const修饰的是*,同上也可理解为指针变量pf指向的存储单元。

(3)语句double * const pf = &m;中关键字const修饰的是指针变量pf,即不能通过赋值操作改变它指向的存储单元了,它只能指向变量m,但可以的用类似*pf=3;的语句改变与变量m相关的存储单元。

(4)语句const double * const pf = &m;中,指针变量pf只能指向变量m,也不能用类

人教版-语文-高二必修五专题训练3语言文字运用

(三)——语言文字运用 作业时限:45分钟作业满分:60分 第一组:(20分) 1.下列句子中,加点的词语使用正确的一项是(3分)() A.城市的发展是无可厚非 ....的,地球在转动,社会要进步,我们决不是要回到旧时代,然而我们的失误是不分青红皂白全部拆除。 B.新版《水浒传》播出以来,好评和质疑不绝于耳。张涵予对此表示:引发热议是好事,说明大家关心、大家看了,宋江是经典, 向来饱受争议,演宋江,毁誉参半 ....才是正常。 C.近年来,随着流域经济的快速发展,松花江污染问题也日渐 严重,因此恢复松花江的生态功能间不容发 ....。 D.纵观本次比赛,中国队在进攻线上保持了强大的战斗力,主攻王一梅和副攻双塔薛明、马蕴雯都表现不俗,由她们三人组成 的得分铁三角呼之欲出 ....。 解析:本题考查正确使用词语的能力。A项无可厚非,指说话做事虽有缺点,但还有可取之处,应予谅解。此处应用无可非议。B项毁誉参半,说坏话的和说好话的各占一半。表示对人的评价没有一致的意见。C项间不容发,指事物之间的距离极小或比喻与灾祸相距极近,情势极其危急。不符合语境。此处指形势紧迫,可用刻不容缓。D项呼之欲出,指人像等画得逼真,似乎叫他一声他就会从画里走出来,泛指文学作品中人物的描写十分生动。对象不符。 答案:B 2.下列句子中,没有语病的一项是(3分)()

A.如果将平均主义推广到分配领域,否认人的差异而要求平均分享一切,只会扼杀人的积极性,不利于社会公平的真正实现,最终阻碍社会的发展。 B.韩国大邱世界田径锦标赛意外迭出。博尔特因抢跑比赛资格被取消,而罗伯斯则在比赛中因干扰刘翔被剥夺到手的金牌。 C.今年大西洋飓风季的首个飓风艾琳(Irene)在美国东部时间27日早7时在北卡罗来纳州登陆,已导致10人死亡,至少超过二百万人撤离家园。 D.据称,各大商业银行限制信用卡在支付宝网上交易的主要目的是为了防止套现可能产生的呆坏账风险,为此商业银行出台了一系列新措施。 解析:本题考查辨析病句的能力。B项语序不当,后两个分句应为博尔特因抢跑被取消比赛资格,而罗伯斯则因在比赛中干扰刘翔而被剥夺到手的金牌。C项语意重复,至少超过应删去一个。D项句式杂糅,的主要目的为了保留其一即可。 答案:A 3.填入下面横线处的句子,与上下文衔接最恰当的一组是(3分)() 中国文化中极其夺目的一个部分或称之为贬官文化。________,________,________,________,________。地因人传,人因地传,两相帮衬,俱著声名。 ①贬官失了宠,摔了跤,孤零零的,悲剧意识也就爬上了心头;贬到了外头,这里走走,那里看看,只好与山水亲热 ②过了一个时候,或过了一个朝代,事过境迁,连朝廷也觉得此人不错,就恢复其名誉

C语言习题集

1、将一元二次方程的求根公式(-b+判断式的平方根)/(2a)转换为C语言的表达式,转换以后的语句写在函数fun的花括号,fun 函数的其他语句请不要修改,main函数供你调试程序使用也可以任意修改。 #include #include double fun(double a,double b,double c) { double x1=0.0; //--ksstart (注释不能删除)— //考生代码从此开始编写 x1 = (-b+sqrt(b*b-4*a*c))/(2*a); //--ksend--- return x1; } main() { //求一个根 double a=0.0,b=0.0,c=0.0,x1=0.0; int n=0; printf("The a,b,c:"); scanf("%lf %lf %lf",&a,&b,&c); x1=fun(a,b,c); printf("The x1=%lf:\n",x1); } 2、函数 fun 的功能是: 将两个两位数的正整数 a、b 合并形成一个整数放在 c 中。合并的方式是: 将 a 数的十位和个位数依次放在 c 数的个位和百位上, b 数的十位和个位数依次放在 c 数的十位和千位上。 例如, 当 a=45, b=12, 调用该函数后, c=2514 。 注意: 部分源程序存在文件 PROG1.C 中。数据文件 bc.in 中的数据不得修改。请勿改动主函数main 和其它函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 #include #include long fun(int a, int b) { long c=0; //--ksstart(注释不能删除)— //考生代码从此开始编写 int c1,c2,c3,c4; c1 = b%10; c2 = a%10; c3 = b/10;

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函数时发生错误,则函数的返回值是()。

语言文字运用综合训练

语言文字运用综合训练(三) 阅读下面的文字,完成1~3题。(9分,每小题3分) 宋代郭熙在《林泉高致·山水训》中有言“山水,大物也”,一个“大”字,便道出山水画所蕴含的精神要义,即中国人的世界观和创作者的精神追求,以大道为终极取向,同时体现时代气象。正如北宋国富力强,收复燕云十六州几乎一直是国家方略,所以北宋山水画也多宏幅巨制,如《溪山行旅图》等,表现了北方雄浑壮阔的自然山水,全景式构图__________;而南宋__________,山水画也从“大山大水”变成了气象萧疏的“边角山水”。所以,应该将中国画传承问题提升到光大中华文化、文化自信的高度,用笔墨“为祖国山河立传”。 “为祖国山河立传”光有扎实的技法还不够,更重要的是创作者要有家国情怀,作品要呈现中国画独特的审美意蕴,其中包括特定形式所呈现的时代审美意蕴以及画家的精神追求。中国画有自身的发展逻辑,()。就像中国画最高的成就是“写意”,其中既包含“写”的审美性,也包含“意”在形式上所体现出的特定审美意蕴,二者_________________________________。 因此,中国画的创新既要守住精神,也要守住其笔墨法度与核心内涵,不能仅从形式上追求创新。现在一些画家为了求变,偷换概念,__________,虽然使用的是宣纸、毛笔、水墨等中国画工具,但实际上画出来的是水彩、素描的样子。这种创新,其实是在玩形式游戏,充其量是一种艺术实验,不能展现中国画真正的魅力,更不可能成为中国画的主流。 1.依次填入文中横线上的成语,全都恰当的一项是() A.气势磅礴苟且偷安相反相成故弄玄虚 B.惊心动魄偏安一隅相辅相成故作高深 C.气势磅礴偏安一隅相辅相成故弄玄虚 D.惊心动魄苟且偷安相反相成故作高深 C[第一处,气势磅礴:形容气势雄伟盛大。惊心动魄:形容使人感受很深,震动很大。这里形容的是“全景式构图”,所以应该选用“气势磅礴”。第二处,苟且偷安:只图眼前的安逸,得过且过,不考虑将来。偏安一隅:在残存的一片土地上苟且偷安。指封建王朝不能统治全国,偏安于仅存的部分领土。这里说的是“南宋”,结合历史,应该选用“偏安一隅”。第三处,相反相成:指

c语言习题.doc

1.C语言中,int型数据在计算机内部是由()表示的。 答:int型数据在计算机内部是由16位补码表示的。 2.下列可以作为C语言用户标识符的是()。 A) _123 B) a1b2c3 C) int D) 123abc 答:A)和B) C语言标识符必须是以英文字母(a到z)、或者下划线_开头的字符串。字符串中只能包含英文字母、下划线和数字(0到9)。但字符串不能是C语言中的32个保留字(例如int,short,long,unsigned,float,char,if,switch,for,while等)。 3.在C语言中,如果下面的变量都是int类型,则输出的结果是()。 sum=pad=5,pAd=sum++,pAd++,++pAd; printf("%d\n",pad); 答:输出结果是5。 因为C语言是字母大小写敏感的,也就是说区分大小写字母。pad和pAd是两个不同的变量。4.以下程序的输出结果是( )。 #include main() { printf("%d\n",NULL); } 答:0 因为stdio.h头文件中NULL的定义如下: #define NULL 0 5.下面程序的输出是()。 main() { int x=10,y=3; printf("%d\n",y=x/y); } 答:3 因为两个同类型的数据作算术运算,其结果仍为该类型。即整数除以整数,商仍为整数。 10/3的商为3。 6.下面程序的输出是()。 main() { int x=023; printf("%d\n",--x); } 答:18 因为023是一个八进制数,表达式--x的值为022,按照%d带符号的十进制数输出,结果为18。 注意:023是八进制数;23是十进制数;0x23是十六进制数。 7.在C语言中,不正确的int类型的常数是()。 A)32768 B)0 C)037 D)0xAF 答:A) 8.执行下面程序中的输出语句后a的值是()。

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.(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

语言文字运用练习

高三年语文语言文字运用练习 班级:座号:姓名: 一、成语选择题 1.依次填入下列各句横线处的成语,最恰当的一组是( ) ①机器能够为人类造福,但如果将来机器发展得足够智能,那么人工智能就是“人类最大的潜在威胁”,玩弄人工智能等同于“召唤恶魔”,_________。 ②企事业单位需要制定必要的规章制度,但不可过于繁琐,弄得_________,困住自己的手脚。 ③精于谋划小圈子的人,拉帮结派,编织自己的关系网,以使自己左右逢源,如鱼得水。结果却是_________,到头来圈住的定会是自己。 A.玩火自焚作茧自缚自食其果 B.玩火自焚自食其果作茧自缚 C.自食其果玩火自焚作茧自缚 D.作茧自缚玩火自焚自食其果 答:A.解析:玩火自焚:比喻干冒险或害人的勾当,最后受害的还是自己。作茧自缚:比喻做了某件事,结果使自己受困。也比喻自己给自己找麻烦。自食其果:指自己做了坏事,自己受到损害或惩罚。 2.依次填入下列各句横线处的成语,最恰当的一组是() ①近年来,我国高铁发展迅猛,运营里程已超过万公里,在铁路改革转型期,沿用过去铁路票价制订的方法明显有些。 ②面包车司机懊悔地说:“如果当时我及时把受伤的人送到医院抢救,就不会落到今天这个地步。”他肇事后抛弃伤者,,使交通肇事变成了故意杀人。 ③尽管打着“金融互助”旗号的网络投资平台被包括央行、银监会在内的四部委定义为非法机构,相关部门也做出风险提示,但仍有投资人。 A.因循坐误一念之误执迷不悟 B.一念之误因循坐误执迷不悟 C.执迷不悟一念之误因循坐误 D.因循坐误执迷不悟一念之误

答:A(因循坐误:指情况有了变化,还照老一套办,因而耽误了事情。一念之误:一个念头的差错。执迷不悟:坚持错误而不觉悟) 3.依次填人下列各句横线处的成语,最恰当的一组是() ①公开选拔是新时期干部选拔制度改革的重大成果,它可以促使德才兼备的优秀干部,具有传统选拔方式无可比拟的优势。 ②从年龄层次看,这次荻奖作者中,有年过花甲的老作家,有年富力强的中年作家,也有近年来____的青年作家. ③与上一代相比,“80后”的育儿理念更为多元,他们认为道德立身胜于____,对孩子未来的期许不再宏大,对成功的定义也更加宽泛。 A.出人头地脱颖而出崭露头角 B.崭露头角出人头地脱颖而出 C.脱颖而出崭露头角出人头地 D.脱颖而出出人头地崭露头角 答:C 4.下列各句中,加点的成语使用恰当的一项是( ) A. CBA联赛落下帷幕,胜利者欢欣鼓舞,失败者偃旗息鼓,然而有一些事件却不能因为赛季结束而被人们忘记,如球场暴力。 B.尽管科学家试图证明外星人的存在,但现有资料表明,银河系中存在浩如烟海的其他行星,但人类是唯一的生命形式。 C.历史事实已经证明,欧阳修的“忧劳可以兴国,逸豫可以亡身”实属不刊之论,难道你就不能从历史事实中吸取教训? D.安全问题无小事,对一些看似细小的安全隐患要重视;否则,滴水穿石,细小问题也会酿成大灾祸,从而造成巨大损失。 [答案]C [解析]本题考查正确使用成语。A.“偃旗息鼓”指秘密行军,不暴露目标;现多指停止战斗,也比喻停止批评和攻击。用在句中不合语境。B.“浩如烟海”形容文献、资料等非常丰富。用在句中对象错。C.“不刊之论”比喻不能改动或不可磨灭的言论,用来形容文章或言辞的精准得当,无懈可击。使用恰当。D.“滴水穿石”指只要有恒心,不断努力,事情一定能成功。用在句中感情色彩错。5.依次填入下列各句横线处的成语,最恰当的一组是()

C语言题库

C语言题库 1.若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写, 则文件方式字符串应是(D)。 A、"rb+" B、"ab++" C、"ab" D、"wb+" 2.设有如下定义: struct sk {int a; float b;} data,*p; 若要使p指向data中的a域,正确的赋值语句是(C)。 A、p=(struct sk*) data.a; B、*p=data.a; C、p=&data.a; D、p=&data,a; 3.对结构体类型的变量的成员的访问,无论数据类型如何都可使用 的运算符是(B)。 A、& B、. C、* D、-> 4.下列关于指针定义的描述,错误的是(A)。 A、指针是一种变量,该变量用来存放某个变量的值 B、指针是一种变量,该变量用来存放某个变量的地址值 C、指针变量的类型与它所指向的变量类型一致 D、指针变量的命名规则与标识符相同 5.设有如下的程序段: char str[ ]="Hello"; char *ptr; ptr=str; 执行完上面的程序段后,*(ptr+5)的值为(D ). A、不确定的值 B、'o'的地址 C、'o' D、'\0' 6.若有以下的定义:int t[3][2];能正确表示t数组元素地址的表达式是(D)。 A、&t[1] B、t[3] C、&t[3][2] D、t[2] 7.下列说法中正确的是(B ). A、函数调用不占运行时间,只占编译时间. B、宏替换不占运行时间,只占编译时间. C、有参数的宏定义,就是函数. D、在定义宏时,宏名与带参数的括弧之间可以加空格. 8.以下叙述中正确的是(C)。

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 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系

语言文字运用专题训练

语言文字运用专题训练 (一) 语言文字运用(20分)(本题共5小题,20分) 阅读下面的文字,完成18-20题。(本题共3小题,9分) 故宫存在已有600年了。初见故宫,不禁被其庞大的身姿所震慑,才真正明白萧何说的“非壮丽无以重威”的意思。历朝历代都有皇宫,得以完整保存的 ______ 。故宫保留至今,其意义已不再是单纯的建筑,而是一部浓缩版历史,书写着过去,迎接着未来。 故宫的“走红”,恰好为我们提供了一个观察的视角。对于博物馆来说,收藏文物、研究文物,让昨天的历史能够经过今天完整地留给明天,是重要的;而让更多民众能够亲近历史,近距离感受文化的魅力,同样是重要的。有这样一个细节值得玩味:以前故宫的厕所是收费的,每年能收入几百万元;游客要参观珍宝馆,也要花两块钱买一双环保鞋。对个人来说这样的收费可能并不高,但却让故宫显得没那么可亲可爱。如今,厕所收费早已销声匿迹,文化产品创收 _______ ,这样的转变,不仅仅是经营模式的巨大进步,更是发展思路的 _____ 。从板起面孔到身子,从自带敬畏感到“萌萌哒”“接地气”,更有亲和力、人情味的“人设”,不断拉近故宫与人们的距离。 今天的博物馆,不仅要提供更多的展馆、展品,还要让“收藏在禁宫里的文物、陈列在广阔大地上的遗产、书写在古籍里的文字都活起来”,让文化真正走进人们的心里。无论是通过充满趣味的文化创意实现知识的普及,还是通过传递400年老树的种子回望文人精神,都让传统文化在今天焕发了新的生命活力。 故宫的老院长郑欣森曾说:“( )。”只有发展才有持久的影响力,只有传播才有广泛的影响力;只有有影响力,文化才不会被“打入冷宫”,而是一直热腾腾的。 18.依次填入文中横线上的词语,全都恰当的一项是(3分)( ) A.屈指可数如火如荼殚精竭虑挺直 B.凤毛麟角如火如荼改弦易辙俯下 C.屈指可数风生水起改弦易辙俯下 D.凤毛麟角风生水起殚精竭虑挺直 19.与划线句中的“走红”引号用法一致的是(3分)() A.才真正明白萧何说的“非壮丽无以重威”的意思 B.“九一八”以后,日本帝国主义侵占我三省 C.包身工没有“做”或“不做”的自由 D.白日的亮光把犯罪者的“成绩”完全暴露出来了 20.下列填入文中括号内的语句,衔接最恰当的一项是(3分)( ) A. 故宫是有文化的,因为文化是活的生命 B. 故宫是有生命的,因为文化是活的生命 C. 故宫是有文化的,因为生命是活的文化 D. 故宫是有生命的,因为生命是活的文化 21.下面文段是一则活动方案的部分内容,其中有五处问题,请标出有问题句子的序号并做修改。(5分) ①11月9日是全国“119”消防日。②为积极推进消防工作社会化,③形成各级各部门工作合力,④持续增强全市消防安全宣传教育力度,有效加大全民消防安全意识,⑤不断提升全市抗御火灾风险能力,⑥有效遏制和预防重特大火灾事故的发生,⑦弄成良好的消防环境,⑧根据“XX省消防总队关于做好消防宣传活动准备工作的通知”的安排部署,⑨特制定“119”

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语言例题经典

51.输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是小写字母,则把它变成大写字母;其它字符不变,请编程。 #include void main() { char ch; ch=getchar(); if ((ch>=65)&&(ch<=90)) ch=ch+32; else if ((ch>=97)&&(ch<=122)) ch=ch-32; printf("%c\n",ch); } 52.已知x和y存在下列对应关系,要求对输入的每个x值,计算出y值,请编程。 y=x*(x+2),2 void main() { float x,y; printf("输入X值:"); scanf("%f",&x); if (x<=-1) { y=x-1; printf ("Y=%6.2f\n",y); } else if (x<=2) { y=2*x; printf ("Y=%6.2f\n",y); } else if (x<=10) { y=x*(x+2); printf ("Y=%6.2f\n",y); } else printf("取值范围出错\n"); } 53.已知x和y存在下列对应关系,要求对输入的每个x值,计算出y值,请编程。 y=0,x=a||x=-a; y=sqrt(a*a-x*x), -aa. #include #include void main() { float x,y,a; printf("输入A值[A>0]:"); scanf("%f",&a); printf("输入X值:"); scanf("%f",&x); if ((x==a)||(x==-a)) y=0; else if ((x-a)) y=sqrt(a*a-x*x); else if ((x<-a)||(x>a)) y=x;

C语言程序的设计试题库完整

一、选择题(每题1分,共20分) 1.C语言程序从main()函数开始执行,所以这个函数要写在(D )。 A.程序文件的开始B.程序文件的最后 C.它所调用的函数的前面D.程序文件的任何位置 2.下列方法中错误的是(D )。 A.主函数可以分为两个部分:主函数说明部分和主函数体。 B.主函数可以调用任何非主函数的其它函数。 C.任何非主函数可以调用其它任何非主函数。 D.程序可以从任何非主函数开始执行。 3.下列正确的标识符是(C )。 A.-a1 B.a[i] C.a2_i D.int t 4.C语言中的简单数据类型包括(D )。 A.整型、实型、逻辑型B.整型、实型、逻辑型、字符型 C.整型、字符型、逻辑型D.整型、实型、字符型 5.下列可以正确表示字符型常量的是(A )。 A.’\t’B.”a”C.”\n”D.297 6.在C语言中,字符型数据所占的内存空间是(C )。 A.2个字节B.4字节C.1字节D.由用户自定义 7.若int类型数据占2个字节,则unsigned int类型数据的取值范围是(B )。 A.0~255 B.0~65535 C.-32768~32767 D.-256~255 8.若有以下类型说明语句:char a;int b; float c; double d; 则表达式a*b+d-c的结果类型为(D )。 A.float B.char C.int D.double 9.下列正确的预编译命令是(D )。 A.define PI 3.14159 B.#define P(a,b)=strcpy(a,b) C.#define stdio.h D.#define PI 3.14159 10.为表示逻辑表达式7979 )&&( X<90 ) B.( X>79 )!=( X<90 ) C.7979 )||( X<90 ) 11.设有语句“int a=2,b=3,c=-2,d=2;”,则逻辑表达式“a>0&&b&&c<0&&d>0”的值是(A )。 A.1 B.0 C.-1 D.出错

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为关键

语言文字运用练习及答案

三、语言文字运用(20分) 阅读下面的文字,完成下面小题。 窗外的一片绿,使我想起了年少时在台湾念书的岁月。那时我住在台北和平东路一个大杂院里,院子里盖了几栋简陋的平房,住了好几家人。武侠小说家古龙小时候也住在那里,他不爱念书,只想写小说,大家叫他“熊家的儿子”。院子中间是公用的空地,养鸡的养鸡,放狗的放狗,剩下窄窄的角落,长了一些不起眼的花花草草,也不知道是谁种下的。水沟边种了几株美人蕉,有红有黄,叶子呈卵状椭圆形。尽管品种普通,在晨曦夕照中,也曾摇曳生姿,增添了不少生活的情趣。 在放学回家的路上,街道旁,水洼里,常常看见一堆堆大片大片的绿叶,形状跟荷叶相像,可是从来也没见过开放的荷花。问大人,才知道 篇作文《雨后》,竟然获得班主任——陈文彬老师大大赞赏,自此激发了对文字的喜爱,也因而在日后走上了文学与翻译的道路。 (摘编自金圣华《绿叶》,《光明日报》2020年04月10日15版) 18. 下列各句中的破折号,和文中破折号作用相同的一项是() A. 不早不迟,偏偏要在这时候——这就可见是一个谬种! B. 我看你的性情好像没有大改——鲁贵像是个很不老实的人。 C. 但我以为这恰是到了好处——酣眠固不可少,小睡也别有风味的。

D. 有一天——到底是怎么回事没人知道——总之是有个诚实的人到了该地定居。 19. 画横线的句子运用了比喻的修辞,请简要赏析。 20. 文中画波浪线的句子也可以改写成:“长了一些也不知道是谁种下的不起眼的花花草草。”为什么原文的表达效果更好?请简要分析。21. 下面文段有四处语病,请指出其序号并做修改,使语言表达准确流畅。 ①近年来,由于我国数字技术发展迅猛,②向生产生活领域和公共治理领域广泛渗透,③数字经济蓬勃发展。④2019年,我国数字经济的增加值达到35.8万亿元左右,⑤占GDP比重超过1/3,⑥在国民经济中的地位进一步凸显。⑦在常态化疫情防控背景下,⑧数字技术将形成更强大的创新活力,构建新的产业生态,⑨数字经济将带领新一轮经济周期,⑩成为经济发展的新引擎。 22. 请对下面这段新闻报道的文字进行压缩。要求保留关键信息,句子简洁流畅,不超过60个字。 适逢紫禁城建成六百年,2020年9月10日,北京,“丹宸永固——紫禁城建成六百年”展在故宫博物院午门开幕。时光穿梭,岁月缥缈,故人不在,只剩下宫墙巍峨,故事无数。故宫博物院此次大展以三大主题、18个历史节点线索,介绍紫禁城的规划、布局、建筑、宫廷生活,以及建筑营缮与保护概况,方便观众理解贯穿于紫禁城“时”“空”的历史文化,感受宫殿建筑技术与艺术完美结合的最高境界,感悟中华优秀传统文化的无穷魅力。

C语言习题及参考答案

C语言习题集 习题一 一.填空题 1.C程序是由(函数)构成的,一个C程序中至少包含(main函数)。因此,( 函数) 是C程序的基本单位。 2.C程序注释是由( /*) 和( */ ) 所界定的文字信息组成的。3.函数体一般包括( 变量声明) 和( 语句) 。 二.判断题 1.一个C程序的执行总是从该程序的main函数开始,在main函数最后结束。【错】 2.main函数必须写在一个C程序的最前面。【错】 3.一个C程序可以包含若干的函数。【对】 4.C程序的注释部分可以出现在程序的任何位置,它对程序的编译和运行不起任何作用。但是可以增加程序的可读性。【对】 5.C程序的注释只能是一行。【错】 6.C程序的注释不能是中文文字信息。【错】 8.可以使用Visual C++ 6.来编译和连接一个C程序。【对】 9.可以使用Visual C++ 6.来运行一个C程序。【对】 10.可以使用Visual C++ 6.来实时调试(即动态调试)一个C程序。【对】三.简答题 1.写出一个C程序的基本结构。 2.简要叙述使用Visual C++ 6.0编译和运行一个程序的步骤。 四.编程题 1.提高题:参照课本例1.1,试编写一个C程序,输出如下信息。(提示:使用键盘上的一些符号)。 2.提高题:试编写一个C程序,输出如下信息。 ********************** *** @ @ *** *** @ *** ********************** 试试看,可以输出其他组合图案吗?

习题二 一.选择题 1、合法的字符常量是(ACD)。 A)…\t?B) “A” C)…a?D)?\x32? 2、合法的字符常量是( D) 。 A)…\084?B) …\84? C)…ab?D)?\x43? 3、(B)是C语言提供的合法的数据类型关键字。 A)Float B)signed C)integer D)Char 4、在以下各组标识符中,合法的标识符是((4))。 (1)A)B01 B)table_1 C)0_t D)k% (2)A)Fast_ B)void C)pbl D) (3)A)xy_ B)longdouble C)*p D)CHAR ( 4 ) A) sj B) Int C)_xy D)w_y23 5、属于合法的C语言长整型常量的是(BD)。 A)5876273 B)0L C)2E10 D)(long)5876273 6、下面选项中,不是合法整型常量的是(B )。 A)160 B)-0xcdg C)-01 D)-0x48a 7、判断int x = 0xaffbc;x的结果是(D)。 A)赋值非法B)溢出C)为affb D)为affbc 8、下面选项中,均是合法浮点数的是(B)。 A)+1e+1 B)-.60 C)123e D)-e3 A)5e-9.4 B)12e-4 C)1.2e-.4 D).8e-4 A)03e2 B)-8e5 C)+2e-1 D)5.e-0 9、在C语言中,要求参加运算的数必须时整数的运算符是(C)。 A)/ B)* C)% D) = 10、在C语言中,字符型数据在内存中以(D)形式存放。 A)原码B)BCD码C)反码D)ASCII码 11、下列语句中,符合语法的赋值语句是(C)。 A)a=7+b+c=a+7;B)a=7+b++=a+7; C)a=(7+b,b++,a+7);D)a=7+b,c=a+7; 12、是非法的C语言转义字符(B )。 A)…\b?B)…\0xf? C)…\037? D)… \?? 13、对于语句:f=(3.0,4.0,5.0),(2.0,1.0,0.0);的判断中,( B )是正确的。A)语法错误B)f为5.0 C)f为0.0 D)f为2.0 14、与代数式(x*y)/(u*v) 不等价的C语言表达式是(A )。 A)x*y/u*v B)x*y/u/v C)x*y/(u*v) D)x/(u*v)*y 15、在C语言中,数字029是一个(D)。

相关主题
文本预览
相关文档 最新文档