《C语言程序设计》第14章在线测试

《C语言程序设计》第14章在线测试,第1张

1B 2D 3A 4B 5D

1BC 2ABC 3AB 4CD 5AB

1错误 2正确 3错误 4正确 5错误

完美!请看我的作品:

#include

<stdioh>

#include

<timeh>

#include

<stdlibh>

#include

<conioh>

#define

N

10

typedef

struct

_ti

{

int

a,

b;

int

op;

int

result;

int

input;

int

rw;

}ti;

ti

timu[N];

int

fen;

int

flag;

int

mulu()

{

int

s;

while(1)

{

printf("\t\t欢迎进入super考试系统\n\n");

printf("1)随机出题\t\t\t\t");

printf("2)开始考试\n");

printf("3)试卷评分\t\t\t\t");

printf("4)显示批改的试卷\n");

printf("5)退出系统\n\n");

printf("请做出选择:");

scanf("%d",

&s);

while(getchar()

!=

'\n');

if(s

<

1

||

s

>

5)

printf("选择有误!请重新输入\n");

else

break;

}

return

s;

}

void

chuti()

{

int

i,

f;

printf("确认随机出%d道题吗(y确认):",

N);

if(getchar()

!=

'y')

return;

for(i

=

0,

f

=

1;

i

<

N;

f

i++

:

0)

{

timu[i]a

=

rand()

%

100+1;

timu[i]b

=

rand()

%

100+1;

timu[i]op

=

rand()

%

4;

if(timu[i]b

==

0

&&

timu[i]op

==

3)

{

f

=

0;

continue;

}

else

f

=

1;

switch(timu[i]op)

{

case

0:

timu[i]result

=

timu[i]a

+

timu[i]b;break;

case

1:

timu[i]result

=

timu[i]a

-

timu[i]b;break;

case

2:

timu[i]result

=

timu[i]a

timu[i]b;break;

case

3:

timu[i]result

=

timu[i]a

/

timu[i]b;break;

}

}

printf("出题完毕!\n");

flag

=

1;

}

请原谅我没有运行,因为我没装VC,我觉得两个问题是一个原因,因为scanf(“%c,%c”,&c1,&c2); 接受的是字符输入,你在上面scanf("%u,%u",&u,&v); 输入完成时按的回车啊,空格啊都有可能被作为scanf(“%c,%c”,&c1,&c2); 的有效字符被录入。

而加上getchar();以后,scanf("%u,%u",&u,&v); 后输入的确认按键,回车或者空格之类的先被getchar();接受,然后再输入时就转入到scanf(“%c,%c”,&c1,&c2); 中。

你试试看,应该就是这个问题。

呵呵,不好意思,我现在没装VC,晚点可能会装,如果有机会帮你再看看吧。

今天装了VC,刚刚又看了一下,我运行的结果如下:

没改之前:

123,456

176,71783765

70000,2174506

62000,58765

a,b

a= 123,b= 456

c= 1760,d= 71783763

e= 70000,f= 2174506

u=62000,v=58765

c1=

,c2=

Press any key to continue

改了之后:

123,456

176,7183765

70000,2174506

62000,58765

a,b

a= 123,b= 456

c= 1760,d= 7183765

e= 70000,f= 2174506

u=62000,v=58765

c1=a,c2=b

Press any key to continue

可以看到,加上getchar();结果是正确的,你可以检查下你的输入有没有问题,我是以回车结束每一行的。

自己好好看看程序吧,别依靠编译器,编译器不是万能的!

1语法错误

在编译前浏览程序的源代码看看是否有明显的错误。

可以查看由编译器发现的错误。

发现错误——从第一个开始修改,每次修改1~2个,然后重现编译。

发现的错误位置可能比真正的错误要滞后一行。

2语义错误

比较程序实际得到的结果和预期结果。

跟踪程序,执行步骤——可用EXCEL(语句行×变量值)

在程序的几个关键点处加入额外的printf()语句以监视所选变量的值。

或用调试器。

一 选择题 (共15题, 每题2分,共30分)

1 定义结构体的关键字是( )

A union B enum Cstruct Dtypedef

2 设整型变量a为5,使b不为2的表达式是( )

A b=a/2 B b=6-(--a) C b=a%2 D b=a>32:1

3 下面哪一项是不正确的字符串赋值或赋初值的方法( )

A char str; str= “china”;

B char str[7]= {‘c’, ‘h’, ‘i’, ‘n’, ‘a’};

C char str1[]= “china”,str2[]=“123”;

D char str1[10]; str1= “china”;

4 以下对二维数组a进行正确初始化的是( )

A int a[2][3]={{1,2},{3,4},{5,6}}; B int a[ ][3]={1,2,3,4,5,6};

C int a[2][ ]={1,2,3,4,5,6}; D int a[2][ ]={{1,2},{3,4}};

5 选出下列标识符中不是合法的标识符的是( )

A hot_do B cat1 C _pri D 2ab

6 以下说法中正确的是( )

A C语言程序总是从第一个的函数开始执行

B 在C语言程序中,要调用的函数必须在main()函数中定义

C C语言程序总是从main()函数开始执行

D C语言程序中的main()函数必须放在程序的开始部分

7 若已定义:int a[9], p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式为( )

A p+1 B a+1 C a++ D ++p

8 若有说明: int i,j=7, p=&i;, 则与i=j; 等价的语句是( )

A i= p; B p=&j; C i=&j; D i= p;

9 若变量c为char类型,能正确判断出c为小写字母的表达式是( )

A ‘a’<=c<= ‘z’ B (c>= ‘a’) || (c<= ‘z’)

C (‘a’<=c) and (‘z’>=c) D (c>= ‘a’) && (c<= ‘z’)

10 以下程序的输出结果是( )

main()

{ int a[]={1,2,3,4,5,6,7,8,9}, p;

p=a;

(p+3)+=2;

printf( “%d,%d\n”,p,(p+3) ); }

A 0, 5 B 1, 6 C 1, 5 D 0, 6

11 以下程序的输出结果是( )

main()

{ int a=5;

float x=314;

a=x(‘E’- ‘A’);

printf(“%f\n”,(float)a); }

A 62000000 B 62800000 C 63000000 D 62

12 以下程序的输出结果是( )

#define f(x) xx

main()

{ int a=6,b=2,c;

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

printf(“%d\n”,c); }

A 9 B 6 C 36 D 18

13 定义如下变量和数组:int i; int x[3][3]={1,2,3,4,5,6,7,8,9};

则语句for(i=0;i<3;i++) printf("%d ",x[i][2-i]); 的输出结果是( )

A 1 5 9 B 1 4 7 C 3 5 7 D 3 6 9

14 下列程序段的输出结果是 ( )

void main( )

{ int k;

for (k=1;k<5;k++)

{ if(k%2!=0)

printf( “#” );

else

printf(“”) ; }

}

A ## B ## C ## D

15 下列程序执行后输出的结果是( )

int d=1;

fun (int p)

{ int d=5;

d + =p + +;

printf("%d,",d); }

main( )

{ int a=3;

fun(a);

d + = a + +;

printf("%d\n",d); }

A 8, 4 B 9, 6 C 9, 4 D 8, 5

二 填空题(共7题,每空2分,共30分)

1 数组 int a[3][5]; 共定义了_______________个元素。

2 有float f=31415927; 则 printf(“%54f”, f );输出的结果是_______________。

3 下面程序的功能是:输出 100以内(不包含100)能被 3整除且个位数为 6的所有整数,请填空。

main( )

{ int i;

for(i=1; _______________; i++)

if (_______________)

printf("%d", i);

}

4 设有“int x=2, y”说明,则逗号表达式“y=x+5,x+y”的值是 _______________

5 以下是使用指针,进行字符串复制的程序,请填空。

main()

{ char a[]= “Tsinghua University”, b[30], p1,p2;

p1=a;

p2=b;

for(; p1!= ‘_______________’; p1++, p2++)

_______________=_______________;

p2= ‘_______________’;

printf(“string a is:%s\n”,a);

printf(“string b is:%s\n”,b);

}

6 下面程序用冒泡法对数组a进行降序排序,请填空。

main()

{ int a[5]={4,7,2,5,1};

int i,j,m;

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

for(j=0;j<_______________;j++)

if( _______________< _______________ )

{ m=a[ j];

a[ j]=a[ j+1];

a[ j+1]= m; }

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

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

}

7 函数fun的功能是:使一个字符串按逆序存放,请填空。

void fun (char str[])

{ char m; int i,j;

for(i=0,j=strlen(str);i<_______________;i++,j--)

{ m=str[i];

str[i]= _______________;

str[j-1]=m;

}

printf("the rotated string is %s\n",_______________);

}

以上就是关于《C语言程序设计》第14章在线测试全部的内容,包括:《C语言程序设计》第14章在线测试、c语言编程 100以内的整数四则运算测试程序设计、继续...C语言程序设计题....等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9411597.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存