
一
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语言程序设计题....等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)