当前位置:首页 » 编程语言 » c语言上机答案葛日波

c语言上机答案葛日波

发布时间: 2022-11-18 05:39:43

‘壹’ c语言计算机二级考试选择题如图

全国计算机二级考试试题题库(附答案)
下列各题 A) 、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项在答题
卡相应位置上涂黑,答在试卷上不得分。
(1) 应用软件是指
A) 所有能够使用的软件 B) 能被各应用单位共同使用的某种软件
C) 所有微机上都应使用的基本软件 D) 专门为某一应用目的而编制的软件
(2) 下列述叙中错误的是
A) 计算机要经常使用不要长期闲置不用
B) 为了延长计算机的寿命,应避免频繁开关计算机
C) 在计算机附近应避免磁场干扰
D) 计算机用几小时后,应关机一会儿再用
(3) 下列字符中,ASCII码值最小的是
A) A B) a C) Z D) x
(4) 用晶体管作为电子器件制成的计算机属于
A) 第一代 B) 第二代 C) 第三代 D) 第四代
(5) 下列各不同进制的四个无符号数中,最小的数是
A) ()2 B) (37)8 C) (75)10 D) (2A)16
(6) 二进制数转换成十六进制数是
A) B) C) D)
(7) 下列各无符号十进制数中,能用八位二进制表示的是
A) 296 B) 333 C) 256 D) 199
(8) 计算机的软件系统可分类为
A) 程序与数据 B) 系统软件与应用软件
D) 操作系统与语言处理程序 D) 程序、数据与文档
(9) 486机中的CPU同时能处理的二进制位数为
A) 8 B) 16 C) 32 D) 64
(10) 在使用计算机的过程中,需要重新启动DOS,则要
A) 按Ctrl+Break键 B) 按^C键 C) 按Ctrl+Alt+Del键 D) 按^H键
(11) 现要从软盘启动DOS(软盘中已存有DOS系统),设有如下一些操作:①打开计算机
电源;②将该软盘插入A驱动器;③关好A驱动器门。则冷启动的操作顺序应为
A) ①→②→③ B) ③→②→① C) ②→①→③ D) ②→③→①
(12) 设当前盘中某一文件路径为\A\C\B\,当前目录为\A。下列命令中错误的是
A) CD.. B) RD \A\C\B
C) TYPE \A\C\B\ D) TYPE C\B\
(13) 设当前盘中的根目录下有一子目录AB,在子目录AB下有一文件。现要查看文件
的内容,应使用命令
A) TYPE \AB B) TYPE \AB\
C) TYPE \ D) DIR \AB\
(14) 自动批处理文件必须放在
A) C盘根目录中 B) A盘根目录中
C) 启动盘的任一个目录中 D) 启动盘的根目录中
(15) 设当前盘当前目录为C:\USER\XY\P,且当前盘当前目录为空,则下列命令中能正
确执行的是
A) RD C:\USER\XY\P B) RD USER\XY\P
C) MD \USER\XY\P\USER D) MD \USER\XY\P\X\Y
(16) 下列DOS命令中,合法的是
A) DISKCOMP B) TYPE >>
C) COMP A: B: D) COMP A: A:
(17) 设当前盘为C盘,所用的所有软盘已格式化,且容量相同,则下列DOS命令中错
误的是
A) DISKCOPY A: A: B) COPY A:*.* C) COPY *.* D) COPY A:*.* C:
(18) 下列DOS命令中错误的是
A) TYPE >PRN B) TYPE PRN
C) COPY *.TXT PRN D) COPY CON PRN
(19) 下列四组DOS命令中,互相等价的一组是
A) COPY A:*.* B:与DISKCOPY A: B:
B) COPY +与TYPE >>
C) COPY + 与COPY +
D) TYPE *.FOR>CON与COPY *.FOR CON
(20) 设C盘目录结构如下:
且C盘根目录下文件的内容为
CD FORTRAN
CD \TC
如果在A驱动器中插入一张根目录中只有扩展名为.C的若干文件(即A盘中无DOS系统
文件)的软盘片,则由C盘启动DOS系统后,第一次键入下列命令中,正确的是
A) COPY A:\*.C B) COPY A:\*.C TC
C) COPY A:\*.C FORTRAN D) CD USER
(21) C语言提供的合法的数据类型关键字是
A) Double B) short C) integer D) Char
(22) 在C语言中,合法的长整型常数是
A) 0L B) 4962710 C) D)
(23) 表达式:10!=9的值是
A) true B) 非零值 C) 0 D) 1
(24) 合法的C语言中,合法的长整型常数是
A) '\t' B) "A" C) 65 D) A
(25) 若有说明和语句:
int a=5;
a++;
此处表达式a++的值是
A) 7 B) 6 C) 5 D) 4
(26) 在下列选项中,不正确的赋值语句是
A) ++t; B) n1=(n2=(n3=0)); C) k=i==j; D) a=b+c=1;
(27) 若有说明:int i,j=7, *p=&i;,则与i=j;等价的语句是
A) I= *P; B) *P=*&J; C) i=&j; D) i=* *p;
(28) 不能把字符串:Hello!赋给数组b的语句是
A) char b[10]={'H','e','l','l','o','!'};
B) char b[10];b="Hello!";
C) char b[10];strcpy(b,"Hello!");
D) char b[10]="Hello!";
(29) 若有以下说明:
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
char c='a',d,g;
则数值为4的表达式是
A)a[g-c] B)a[4] C)a['d'-'c'] D)a['d'-c]
(30) 若有以下说明:
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为6的表达式是
A) *p+6 B) *(p+6) C) *p+=5 D) p+5
(31) 若有以下说明:
int w[3][4]o={{0,1},{2,4},{5,8}};
int(*p)[4]=w;
则数值为4的表达式是
A) *w[1]+1 B) p++,*(p+1) C) w[2][2] D) p[1][1]
(32) 若程序中有下面的说明和定义
struct abc
{int x;char y;}
struct abc s1,s2;
则会发生的情况是
A) 编译进错 B) 程序将顺利编译`连接`执行
C) 能顺利通过编译`连接`但不能执行 D) 能顺利通过编译`但连接出错
(33) 能正确表示a≥10或a≤0的关系表达式是
A)a>=10 or a<=0 B)a>=10│a<=0
C)a>=10││a<=0 D)a>=10 ││a<=0
(34) 下面程序的输出是
main()
{ int x=3,y=6,a=0;
while(x++!=(y+=o1))
{ a+o=1;
if(y
#include
main()
{ char ss[10]="12345";
strcat(ss,"6789");
gets(ss);printf("%s\n",ss);
}
A) ABC B) ABC9 C) 123456ABC D) ABC456789
(35) 下面程序的输出是
main()
{ char *a="";
int v1=0,v2=0,v3=0,v4=0,k;
for(k=0;s[k];k++)
switch(s[k])
{ default:v4++;
case '1': v1++;
case '3': v3++;
case '2': v2++; }
printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4); }
A) v1=4,v2=2,v3=1,v4=1 B) v1=4,v2=9,v3=3,v4=1
C) v1=5,v2=8,v3=6,v4=1 D) v1=8,v2=8,v3=8,v4=8
(36) 下面程序的输出是
main()
{int k=11;printf("k=%d,k=%o,k=%x\n",k,k,k);}
A)k=11,k=12,k=11 B)k=11,k=13,k=13 C)k=11,k=013,k=0xb D)k=11,k=13,k=b
(37) 若有以下程序段,w和k都是整型变量:

w=k;
LB: if(w==0) go to LE;
w--;
printf("*");
goto LB;
LE: ┆
则不能与上面程序段等价的循环语句是
A)for(w=k;w!=0;w--) printf("*"); B)for(w=k;w;--w)printf("*");
C)w=k; D)w=k;
while(w--!=0)printf("*");w++; do{ w--;printf("*");}while(w!=0);
(38) 若有说明,double *p,a;则能通过scanf语句正确给输入项读入数据的程序段是
A)*p=&a; scanf("%lf",p); B)p=(double *)malloc(8);scanf("%f",p);
C) p=&a;scanf("%lf",a); D)p=&a; scanf("%le",p);
(39) 当执行下面程序且输入:ABC时,输出的结果是
#include
#include
main()
{ char ss[10]="12345";
gets(ss);printf("%s\n",ss); }
A) ABC B) ABC9 C) 123456ABC D) ABC456789
(40) 若有以下的说明和语句:
main()
{int t[3][2], *pt[3],k;
fpr(k=o; k<3;k++)pt[k]=t[k];
}
则以一选项中能正确表示t数组元素地址的表达式是
A) &t[3][2] B) *pt[0] C) *(pt+1) D) &pt[2]
(41) 下面程序输出数组中的最大值,由s指针指向该元素.
main()
{ int a[10]={6,7,2,9,1,10,5,8,4,3,},*p,*s;
flr(p=a, s=a; p-a<10; p++)
if(---?---)s=p;
printf("The max:%d",*s):
}
则在if语句中的判断表达式应该是
A) p>s B) *p>*s C) a[p]>a[s] D) p-a>p-s
(42) 下面程序的输出是
#include
main()
{ char*a="abcdefgh";
fun(a);puts(a); }
fun (char * s)
{ int x=0,y;char c;
for(y=strlen(s)-1;x
A)abcdefgh B)hgfdecba C)dcbahgfe D)hgfedcba
(43) 若有以下函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函数调用语句
中实参的个数是
A)3 B)4 C)5 D)6
(44) 下面程序的输出是
main()
{ int t=1; fun(fun(t));}
fun(int h)
{ static int a[3]={1,2,3};
int k;
for(k=0;k<3;k++) a[k]+=a[k]-h;
for(k=1;k<3;k++) printf("%d",a[k]);
printf("\n"); return(a[h]);}
A)1,2,3, B)1,3,5, C) 1,3,5, D) 1,3,5,
1,5,9, 1,3,5, 0,4,8, -1,3,7,
(45) C语言中,函数的隐含存储类别是
A)auto B)static C)extern D)无存储类别
(46) 下面程序的输出是
int w=3;
main()
{ int w=10; printf("%d\n",fun(5)*w); }

‘贰’ 求C语言程序设计习题集与上机指导-第三版 (及答案)......

C语言程序设计第三版谭浩强课后习题答案完整版
第一章
1.5请参照本章例题,编写一个C程序,输出以下信息:
**************************
Very Good!
**************************
解:
mian()
{printf(“**************************”);
printf(“\n”);
printf(“Very Good!\n”);
printf(“\n”);
printf(“**************************”);
}
1.6 编写一个程序,输入a、b、c三个值,输出其中最大值。
解:
mian()
{int a,b,c,max;
printf(“请输入三个数a,b,c:\n”);
scanf(“%d,%d,%d”,&a,&b,&c);
max=a;
if(max<b)
max=b;
if(max<c)
max=c;
printf(“最大数为:“%d”,max);
}
第三章
3.6写出以下程序运行的结果。
main()
{char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;
printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);
printf(“\t\b%c %c”,c4,c5);
}
解:
aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabc
AㄩN
3.7 要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.例如,字母"A"后面第4个字母是"E"."E"代替"A"。因此,"China"应译为"Glmre"。请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。
解:
#include <stdio.h>
main()
{ char c1=’C’,c2=’h’,c3=’i’,c4=’n’,c5=’a’;
c1+=4;
c2+=4;
c3+=4;
c4+=4;
c5+=4;
printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5);
}
运行结果:
密码是Glmre
3.9求下面算术表达式的值。
(1)x+a%3*(int)(x+y)%2/4
设x=2.5,a=7,y=4.7
(2)(float)(a+b)/2+(int)x%(int)y
设a=2,b=3,x=3.5,y=2.5
(1)2.5
(2)3.5
3.10写出程序运行的结果。
main()
{int i,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf(“%d,%d,%d,%d”,i,j,m,n);
}
解:
9,11,9,10
3.12 写出下面表达式运算后a的值,设原来a=12。设a和n都已定义为整型变量。
(1)a+=a (2) a-=2 (3) a*=2+3 (4)a/=a+a
(5) a%=(n%=2),n的值等于5
(6)a+=a-=a*=a
解:
(1) 24 (2) 10 (3) 60 (4) 0 (5) 0 (6) 0
第四章
4.4若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a’,c2=’b’。想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出)。
a=_3_ _b=_4_ _c=_5
x=1.200000,y=2.400000,z=-3.600000
x+y=_3.600_ _y+z=-1.20_ _z+x=-2.40
c1=ˊaˊ_or_97(ASCII)
c2=ˊbˊ_or_98(ASCII)
main()
{int a=3,b=4,c=5;
long int u=51274,n=128765;
float x=1.2,y=2.4,z=3.6;
char c1=’a’,c2=’b’;
printf("a=%2d b=%2d c=%2d\n",a,b,c);
printf("x=%f,y=%f,z=%f\n",x,y,z);
printf("x+y=%5.2f y+z=%5.2f z+x=%5.2f\n",x+y,y+z,z+x);
printf("u=%6ld n=%9ld\n",u,n);
printf("%s %s %d%s\n","c1=’a’","or",c1,"(ASCII)");
printf("%s %s %d%s\n","c2=’a’","or",c2,"(ASCII)");
}
4.7用scanf下面的函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=ˊAˊ,c2=ˊaˊ,问在键盘上如何输入?
main()
{
int a,b;float x,y;char c1c2;
scanf("a=%d_b=%d",&a,&b);
scanf("_x=%f_y=%e",&x,&y);
scanf("_c1=%c_c2=%c",&c1,&c2);
}
a=3_b=7
_x=8.5_y=71.82
_c1=A_c2=a
4.8设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。
main()
{float r,h,C1,Sa,Sb,Va,Vb;
scanf("%f,%f",&r,&h);
C1=2*3.14*r;
Sa=3.14*r*r;
Sb=4*Sa;
Va=4*3.14*r*r*r/3;
Vb=Sa*h;
printf("C1=%.2f\n",C1);
printf("Sa=%.2f\nSb=%.2f\nVa=%.2f\nVb=%.2f\n",Sa,Sb,Va,Vb);
}
4.9输入一个华氏温度,要求输出摄氏温度。公式为
c=5(F-32)/9
输出要求有文字说明,取位2小数。
main()
{float F,c;
scanf("%f",&F);
c=5*(F-32)/9;
printf("c=%.2f",c);
}
4.10编程序,用getchar函数读入两个字符给c1、c2,然后分别用函数和函数输出这两个字符。并思考以下问题:(1)变量c1、c2应定义为字符型或整形?抑二者皆可?(2)要求输出c1和c2值的ASCII码,应如何处理?用putchar函数还是printf函数?(3)整形变量与字符变量是否在任何情况下都可以互相代替?如:
char c1,c2;

int c1,c2;
是否无条件的等价?
#include"stdio.h"
main()
{char c1,c2;
c1=getchar();c2=getchar();
putchar(c1);putchar(’\n’);putchar(c2);putchar(’\n’);
file:///C|/Documents and Settings/Administrator/桌面/C语言程序设计第三版谭浩强课后习题答案完整版.txt(第 1/19 页)[2010-5-10 9:14:34]
file:///C|/Documents and Settings/Administrator/桌面/C语言程序设计第三版谭浩强课后习题答案完整版.txt
1.5请参照本章例题,编写一个C程序,输出以下信息:
**************************
Very Good!
**************************
解:
mian()
{printf(“**************************”);
printf(“\n”);
printf(“Very Good!\n”);
printf(“\n”);
printf(“**************************”);
}
1.6 编写一个程序,输入a、b、c三个值,输出其中最大值。
解:
mian()
{int a,b,c,max;
printf(“请输入三个数a,b,c:\n”);
scanf(“%d,%d,%d”,&a,&b,&c);
max=a;
if(max<b)
max=b;
if(max<c)
max=c;
printf(“最大数为:“%d”,max);
}
第三章
3.6写出以下程序运行的结果。
main()
{char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;
printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);
printf(“\t\b%c %c”,c4,c5);
}
解:
aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabc
AㄩN
3.7 要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.例如,字母"A"后面第4个字母是"E"."E"代替"A"。因此,"China"应译为"Glmre"。请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。
解:
#include <stdio.h>
main()
{ char c1=’C’,c2=’h’,c3=’i’,c4=’n’,c5=’a’;
c1+=4;
c2+=4;
c3+=4;
c4+=4;
c5+=4;
printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5);
}
运行结果:
密码是Glmre
3.9求下面算术表达式的值。
(1)x+a%3*(int)(x+y)%2/4
设x=2.5,a=7,y=4.7
(2)(float)(a+b)/2+(int)x%(int)y
设a=2,b=3,x=3.5,y=2.5
(1)2.5
(2)3.5
3.10写出程序运行的结果。
main()
{int i,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf(“%d,%d,%d,%d”,i,j,m,n);
}
解:
9,11,9,10
3.12 写出下面表达式运算后a的值,设原来a=12。设a和n都已定义为整型变量。
(1)a+=a (2) a-=2 (3) a*=2+3 (4)a/=a+a
(5) a%=(n%=2),n的值等于5
(6)a+=a-=a*=a
解:
(1) 24 (2) 10 (3) 60 (4) 0 (5) 0 (6) 0
第四章
4.4若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a’,c2=’b’。想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出)。
a=_3_ _b=_4_ _c=_5
x=1.200000,y=2.400000,z=-3.600000
x+y=_3.600_ _y+z=-1.20_ _z+x=-2.40
c1=ˊaˊ_or_97(ASCII)
c2=ˊbˊ_or_98(ASCII)
main()
{int a=3,b=4,c=5;
long int u=51274,n=128765;
float x=1.2,y=2.4,z=3.6;
char c1=’a’,c2=’b’;
printf("a=%2d b=%2d c=%2d\n",a,b,c);
printf("x=%f,y=%f,z=%f\n",x,y,z);
printf("x+y=%5.2f y+z=%5.2f z+x=%5.2f\n",x+y,y+z,z+x);
printf("u=%6ld n=%9ld\n",u,n);
printf("%s %s %d%s\n","c1=’a’","or",c1,"(ASCII)");
printf("%s %s %d%s\n","c2=’a’","or",c2,"(ASCII)");
}
4.7用scanf下面的函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=ˊAˊ,c2=ˊaˊ,问在键盘上如何输入?
main()
{
int a,b;float x,y;char c1c2;
scanf("a=%d_b=%d",&a,&b);
scanf("_x=%f_y=%e",&x,&y);
scanf("_c1=%c_c2=%c",&c1,&c2);
}
a=3_b=7
_x=8.5_y=71.82
_c1=A_c2=a
4.8设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。
main()
{float r,h,C1,Sa,Sb,Va,Vb;
scanf("%f,%f",&r,&h);
C1=2*3.14*r;
Sa=3.14*r*r;
Sb=4*Sa;
Va=4*3.14*r*r*r/3;
Vb=Sa*h;
printf("C1=%.2f\n",C1);
printf("Sa=%.2f\nSb=%.2f\nVa=%.2f\nVb=%.2f\n",Sa,Sb,Va,Vb);
}
4.9输入一个华氏温度,要求输出摄氏温度。公式为
c=5(F-32)/9
输出要求有文字说明,取位2小数。
main()
{float F,c;
scanf("%f",&F);
c=5*(F-32)/9;
printf("c=%.2f",c);
}
4.10编程序,用getchar函数读入两个字符给c1、c2,然后分别用函数和函数输出这两个字符。并思考以下问题:(1)变量c1、c2应定义为字符型或整形?抑二者皆可?(2)要求输出c1和c2值的ASCII码,应如何处理?用putchar函数还是printf函数?(3)整形变量与字符变量是否在任何情况下都可以互相代替?如:
char c1,c2;

int c1,c2;
是否无条件的等价?
#include"stdio.h"
main()
{char c1,c2;
c1=getchar();c2=getchar();
putchar(c1);putchar(’\n’);putchar(c2);putchar(’\n’);

switch(place)
{ case 5: printf("%d,%d,%d,%d,%d",ten_thousand,thousand,hundred,ten,indiv);
printf("\n反序数字为;");
printf("%d%d%d%d%d\n",indiv,ten,hundred,thousand,ten_thousand);
break;
case 4: printf("%d,%d,%d,%d",thousand,hundred,ten,indiv);
printf("\n反序数字为:");
printf("%d%d%d%d\n",indiv,ten,hundred,thousand);
break;
case 3: printf("%d,%d,%d",hundred,ten,indiv);
printf("\n反序数字为:");
printf("%d%d%d\n",indiv,ten,hundred);
break;
case 2: printf("%d,%d",ten,indiv);
printf("\n反序数字为:");
printf("%d%d\n",indiv,ten);
break;
case 1: printf("%d",indiv);
printf("\n反序数字为:");
printf("%d\n",indiv);
break;
}
}
第五章
5.8 企业发放的奖金根据利润提成。利润I低于或等于10万元时,奖金可提成10% ;利润高于10万元,低于20万元(100000<I≤200000)时,其中10万元按10%提成,高于10万元的部分,可提成7.5% ;200000<I≤400000时,其中20万元仍按上述办法提成(下同),高于20万元的部分按5%提成;400000<I≤600000时,高于40万元的部分按3%提成;600000〈I≤1000000时,高于60万的部分按1.5%提成;I>1000000时,超过100万元的部分按1%提成。从键盘输入当月利润I,求应发放奖金总数。要求:(1)用if语句编程序;(2)用switch语句编程序。
解:计算利润时,要特别注意不同利润的不同提成比例。例如,利润为15万元,其中有10万元按10%的比例提成,另外5万元则按7.5%提成。
(1) 用if语句编程序。
#include <stdio.h>
main()
{ long i;
float bonus,bon1,bon2,bon4,bon6,bon10;
bon1=100000*0.1; /*利润为10万元时的奖金*/
bon2=bon1+100000*0.075; /*利润为20万元时的奖金*/
bon4=bon2+200000*0.05; /*利润为40万元时的奖金*/
bon6=bon4+200000*0.03; /*利润为60万元时的奖金*/
bon10=bon6+400000*0.015; /*利润为100万元时的奖金*/
printf("请输入利润i:");
scanf("%ld",&i);
if(i<=100000)
bonus=i*0.1; /*利润在10万元以内按0.1提成奖金*/
else if(i<=200000)
bonus=bon1+(i-100000)*0.075; /*利润在10万至20万元时的奖金*/
else if(i<=400000)
bonus=bon2+(i-200000)*0.05; /*利润在20万至40万元时的奖金*/
else if(i<=600000)
bonus=bon4+(i-400000)*0.03; /*利润在40万至60万元时的奖金*/
else if(i<=1000000)
bonus=bon6+(i-600000)*0.015; /*利润在60万至100万元时的奖金*/
else
bonus=bon10+(i-1000000)*0.01; /*利润在100万元以上时的奖金*/
printf(”奖金是%10.2f\n",bonus);
}
此题的关键在于正确写出每一区间的奖金计算公式。例如利润在10万元至20万时,奖金应由两部分组成:①利润为10万元时应得的奖金。即100000ⅹ0.1;②10万元以上部分应得的奖金。即(num-100000)ⅹ0.075。同理,20万~40万这个区间的奖金也应由两部分组成:①利润为20万元时应得的奖金,即100000ⅹ0.1ⅹ10万ⅹ0.075;②20万元以上部分应得的奖金,即(num-200000)ⅹ0.05。程序中先把10万、20万、40万、60万、100万各关键点的奖金计算出来,即bon1、bon2、bon4、bon6、hon10;然后再加上各区间附加部分的奖金。
(2) 用switch语句编程序。
输入利润i,确定相应的提成等级branch
根据branch确定奖金值
0 奖金=i*0.1
1 奖金=bon1+(i-105)*0.075
2 奖金=bon2+(i-2*105)*0.05
3
4 奖金=bon4+(i-4*105)*0.03
5
6 奖金=bon6+(i-6*105)*0.015
7
8
9
10 奖金=bon10+(i-106)*0.01
输出奖金
#include <stdio.h>
main()
{ long i;
float bonus, bon1, bon2, bon4, bon6, bon10;
int c;
bon1=100000*0.1;
bon2=bon1+100000*0.075;
bon4=bon2+200000*0.05;
bon6=bon4+200000*0.03;
bon10=bon6+400000*0.015;
printf("请输入利润i:");
scanf("%ld",&i);
c=i/100000;
if(c>10) c=10;
switch(c)
{ case 0: bonus=1*0.1;break;
case 1: bonus=bon1+(i-100000)*0.075;break;
case 2 :
case 3: bonus=bon2+(i-200000)*0.05; break;
case 4:
case 5: bonus=bon4+(i-400000)*0.03;break;
case 6:
case 7:
case 8:
case 9: bonus=bon6+(i-600000)*0.015;break;
case 10: bonus=bon10+(i-1000000)*0.01;
}
printf("奖金是%10.2f",bonus);
}
5.9 输入4个整数,要求按由大到小的顺序输出。
解:此题采用依次比较的方法排出其大小顺序。在学习了循环和数组以后,可以有更多的排序方法。
#include <stdio.h>
main()
{ int t,a,b,c,d;
printf("请输入4个整数:");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
printf("\n a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
if(a>b) {t=a; a=b; b=t;}
if(a>c) {t=a; a=c; c=t;}
if(a>d) {t=a; a=d; d=t;}
if(b>c) {t=a; b=c; c=t;}
if(b>d) {t=b; b=d; d=t;}
if(c>d) {t=c; c=d; d=t;}
printf("排序结果如下:\n");

‘叁’ 9月计算机二级《C语言》上机考题及答案

1、以下选项中属于C语言的数据类型是()。

A. 复合型

B. 双精度型

C. 逻辑型

D. 集合型

2、以下说法中正确的是()。

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

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

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

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

3、选出下列标识符中不是合法的标识符的是()。

A. hot_do

B. cat1

C. _pri

D. 2ab

4、下列描述中不正确的是()。

A、字符型数组中可能存放字符串。

B、可以对字符型数组进行整体输入、输出。

C、可以对整型数组进行整体输入、输出。

D、 不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。

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

A. p+1

B. a+1

C. a++

D. ++p

6、设有如下定义: int x=10,y=3,z; 则语句printf("%d ",z=(x%y,x/y)); 的输出结果是()。

A. 1

B. 0

C. 4

D. 3

7、定义如下变量和数组: int i, 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

8、读出以下语句的输出结果是()。

int x=10,y=10;

printf(“%d %d ”,x--,--y);

A. 10 10

B. 9 9

C. 9 10

D. 10 9

9、两次运行下面的程序,如果从键盘上分别输入6和3,则输出结果是()。

if(x++>5) printf("%d",x);

else printf("%d ",x - -);

A. 7和5

B. 6和3

C. 7和4

D. 6和4

10、设有如下定义:char *aa[2]={"abcd","ABCD"};则以下说法中正确的是()。

A)aa数组成元素的值分别是"abcd"和ABCD"

B)aa是指针变量,它指向含有两个数组元素的字符型一维数组

C)aa数组的两个元素分别存放的是含有4个字符的一维字符数组的`首地址

D)aa数组的两个元素中各自存放了字符’a’和’A’的地址

11、以下语句的输出结果是()。

int a=-1,b=4,k;

k=(+ +a<0)&&!(b - -<=0);

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

A. 1,0,4

B. 1,0,3

C. 0,0,3

D. 0,0,4

12、下列程序的输出结果是()。

char *p1="abcd", *p2="ABCD", str[50]="xyz";

strcpy(str+2,strcat(p1+2,p2+1));

printf("%s",str);

A. xyabcAB

B. abcABz

C. ABabcz

D. xycdBCD

13、执行下面的程序后,a的值是()。

#define SQR(X) X*X

main()

{ int a=10,k=2,m=1;

a/=SQR(k+m)/SQR(k+m);

printf("%d ",a); }

A. 10

B. 1

C. 9

D. 0

14、设A为存放(短)整型的一维数组,如果A的首地址为P,那么A中第i 个元素的地址为()。

A.P+i*2

B. P+(i-1)*2

C. P+(i-1)

D. P+i

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 ",d); }

A. 8, 4

B. 9, 6

C. 9, 4

D. 8, 5

16、表达式:10!=9的值是()。

A. true

B. 非零值

C. 0

D. 1

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

A. i= *p;

B. *p=*&j;

C. i=&j;

D. i=* *p;

18、不能把字符串:Hello!赋给数组b的语句是()。

A. char b[10]={’H’,’e’,’l’,’l’,’o’,’!’};

B. char b[10]; b="Hello!";

C. char b[10]; strcpy(b,"Hello!");

D.char b[10]="Hello!";

19、在C程序中有如下语句:char *func(int x,int y); 它是()。

A. 对函数func的定义。

B. 对函数func的调用。

C.对函数func的原型说明。

D. 不合法的。

20、以下程序的输出结果是()。

char str[15]=”hello!”;

printf(“%d ”,strlen(str));

A. 15

B. 14

C. 7

D. 6

参考答案:

1、B 2、C 3、D 4、C 5、C 6、D 7、C 8、D 9、C 10、D

11、D 12、D 13、B 14、B 15、A 16、D 17、B 18、B 19、C 20、D

‘肆’ 2007年计算机等级考试二级C语言上机试题(1-8套) 有 答案 吗急用,谢谢!

http://www.isud.com.cn/down.asp?cat_id=13&class_id=53
本分类共有96个文件

‘计算机’2007年计算机二级C语言上机考试试题(1-8套..

·2007年计算机二级C语言上机考试试题(1-8套)
软件大小:未知 授权方式:免费下载 下载:5118 推荐程度:

‘计算机’全国计算机等级考试一级试题及答案

·1. 微型计算机硬件系统中最核心的部件是( ).B A,主板 B,CPU C,内存储器 D,I/O设备 2. 下列术语中,属于显示器性能指标的是( ).C A,速度 B,可靠性 C......
软件大小:未知 授权方式:免费下载 下载:5208 推荐程度:

‘计算机等级题’全国计算机等级考试一级试题库

·全国计算机等级考试一级试题库(答案在题号前面) D(1)引导型病毒程序被存放在 A)最后1个扇区中 B)第2物理扇区中 C)数据扇区中 D)引导扇区中 C(2)文件被感染上病......
软件大小:未知 授权方式:免费下载 下载:2638 推荐程度:

‘计算机等级题’全国计算机等级考试一级试题及答案

·全国计算机等级考试一级试题及答案 1. 微型计算机硬件系统中最核心的部件是( ).B A,主板 B,CPU C,内存储器 D,I/O设备 2. 下列术语中,属于显示器性能指标......
软件大小:未知 授权方式:免费下载 下载:2091 推荐程度:

‘计算机等级题’2004年9月全国计算机等级考试二级C笔试试题..

·2004年9月全国计算机等级考试二级C笔试试题 11.用C语言编写的代码程序 A)可立即执行 B)是一个源程序 C)经过编译即可执行 D)经过编译解释才能执行 12.......
软件大小:未知 授权方式:免费下载 下载:588 推荐程度:

‘计算机等级题’全国计算机等级考试一级B模拟试题五

·全国计算机等级考试一级B模拟试题五 (1)我国第一台电子计算机诞生于哪一年 A)1948年 B)1958年 C)1966年 D)1968年【答案】:B 【解析】:我国自......
软件大小:未知 授权方式:免费下载 下载:550 推荐程度:

‘计算机等级题’2004年4月全国计算机等级考试二级C语言笔试..

·2004年4月全国计算机等级考试二级C语言笔试试题基础知识和C语言程序设计一, 选择题((1)~(40)每题1分,(41)~(50)每题2分,共60分) 1, 1MB等于......
软件大小:未知 授权方式:免费下载 下载:481 推荐程度:

‘计算机等级题’06年计算机等级考试一级B考试试题及试题分析..

·06年计算机等级考试一级B考试试题及试题分析 1.计算机根据运算速度,存储能力,功能强弱,配套设备等因素可划分为(). A)台式计算机,便携式计算机,膝上型计算机 B)电......
软件大小:未知 授权方式:免费下载 下载:888 推荐程度:

‘计算机等级题’广东省计算机等级考试(一级)仿真试题(F)

·广东省计算机等级考试(一级)仿真试题(F) (考试时间:100分钟) 系 班 级 学 号 姓 名 说明:(1)请考生在D盘根目录下建立以自己学号命名文件夹(考生......
软件大小:未知 授权方式:免费下载 下载:664 推荐程度:

‘计算机等级题’计算机等级考试三级网络试题

·计算机等级考试三级网络试题 04年9月 教育部考试中心 版权所有一,选择题(每小题1分,共60分) 下列各题A,B,C,D四个选项中,只有一个选项是正确的.请将正确选项涂写......
软件大小:未知 授权方式:免费下载 下载:634 推荐程度:

‘计算机等级题’全国计算机等级考试四级笔试试题

·一,选择题:((1)-(90))题,分为1分题和2分题,满分120分.除标注2分题外,其它均为1分题.) 下列各题A),B),C),D)四个选项中,只有一个是正确的,请将正确选项......
软件大小:未知 授权方式:免费下载 下载:298 推荐程度:

‘计算机等级题’计算机等级考试上机模拟试题汇总

·计算机等级考试上机模拟试题汇总模拟试题(一) 1.填空题请补充函数fun(),该函数的功能是:把从主函数中输入的字符串str2接在字符串str1的后面. 例如:str1......
软件大小:未知 授权方式:免费下载 下载:778 推荐程度:

‘计算机等级题’计算机等级考试二级模拟试题4基础知识与FOX..

·计算机等级考试二级模拟试题4 基础知识与FOXBASE程序设计 (考试时间120分钟,满分100分) 一,选择题((1)-(40)每个选项1分,(41)-(50)每个选项......
软件大小:未知 授权方式:免费下载 下载:330 推荐程度:

‘计算机等级题’2005年4月全国计算机等级考试二级笔试试题A..

·2005年4月全国计算机等级考试二级笔试试题 Access 数据库程序设计 一,选择题(每小题 2 分,共 70 分) 下列各题 A),B),C),D)四个选项中,只有一......
软件大小:未知 授权方式:免费下载 下载:420 推荐程度:

‘计算机等级题’2006年4月全国计算机等级考试二级VFP试题及..

·2006年4月全国计算机等级考试二级VFP试题及答案 (考试时间90分钟,满分100分) 一,选择题(每小题2分,共70分) 下列各题A),B),C),D)四个选项中,只有一......
软件大小:未知 授权方式:免费下载 下载:583 推荐程度:

‘计算机等级题’计算机等级考试二级VFp笔试试题

·计算机等级考试二级VFp笔试试题 一,选择题((1)~(35)每小题2分,共70分)下列各题A),B),C),D)四个选项中,只有一个选项是正确的,请将正确选项涂写在大题卡 相......
软件大小:未知 授权方式:免费下载 下载:297 推荐程度:

‘计算机等级题’全国计算机等级考试二级VFp笔试试题(含答案..

·全国计算机等级考试二级VFp笔试试题(含答案) 一,选择题((1)~(35)每小题2分,共70分) 下列各题A),B),C),D)四个选项中,只有一个选项是正确的,请将......
软件大小:未知 授权方式:免费下载 下载:356 推荐程度:

‘计算机等级题’全国计算机等级考试二级VB上机试题

·全国计算机等级考试二级VB上机试题 (考试时间90分钟,满分100分) 1. 基本操作(2小题,每小题15分,共计30分) 注意:下面出现的"考生文件夹"均为%USER% ......
软件大小:未知 授权方式:免费下载 下载:461 推荐程度:

‘计算机等级题’全国计算机等级考试二级C笔试试题

·9月全国计算机等级考试二级C笔试试题 1.与十进制数200等值的十六进制数为 A) A8 B)A4 C)C8 D)C4 2.DOS文件系统的组织结构属于 A)星......
软件大小:未知 授权方式:免费下载 下载:213 推荐程度:

‘计算机等级题’计算机等级考试试卷二级VFP试题及答案

·计算机等级考试试卷二级VFP试题及答案一,选择题((1)~(35)每小题2分,共70分) 下列各题A),B),C),D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答......
软件大小:未知 授权方式:免费下载 下载:286 推荐程度:

‘计算机等级题’全国计算机等级三级C语言上机试题解析

·全国计算机等级三级C语言上机试题解析三级网络技术和三级数据库技术的C语言上机试题难度较大,题型多样,因此颇难掌握,今将这些试题分类解析,希望能帮大家顺利通过上机考试. 三级......
软件大小:未知 授权方式:免费下载 下载:231 推荐程度:

‘计算机等级题’计算机等级二级C语言模拟试题

·计算机等级二级C语言模拟试题一,选择题(1)~(10)每小题2分,(11)-(50)每小题1分,共60分) 下列各题A),B),C),D)四个选项中,只有一个选项是正确的,......
软件大小:未知 授权方式:免费下载 下载:215 推荐程度:

‘计算机等级题’计算机等级考试二级VB全真模拟试题含答案(2..

·计算机等级考试二级VB全真模拟试题含答案(2) 一,选择题 (1)—(35)题每题2分,共70分. 下列各题A),B),C),D)四个先项中,只有一个选择是正确的,请将正......
软件大小:未知 授权方式:免费下载 下载:308 推荐程度:

‘计算机等级题’2007年9月计算机等级考试二级VB标准模拟试题..

·2007年9月计算机等级考试二级VB标准模拟试题 ,选择题1~20每小题2分,21~30每小题3分,共70分 1.在窗体中添加一个命令按钮,并编写如下程序: Private ......
软件大小:未知 授权方式:免费下载 下载:461 推荐程度:

‘计算机等级题’2006年4月全国计算机等级考试二级VB程序设计..

·2006年4月全国计算机等级考试二级VB程序设计试题及答案一,选择题(每小题2分,共70分) 下列各题A),B),C),D)四个选项中,只有一个选项是正确的.请将正确选项填涂......
软件大小:未知 授权方式:免费下载 下载:237 推荐程度:

‘计算机等级题’湖南省非计算机专业等级考试试题(FOXPRO一级..

·湖南省非计算机专业等级考试试题(FOXPRO一级选择题) 1, 要求一个数据库文件的数值型字段具有5位小数,那么该字段的宽度最少应当定为( ) A,5位 B,6位 C,7位 D......
软件大小:未知 授权方式:免费下载 下载:1649 推荐程度:

‘计算机等级题’全国计算机等级考试一级考试最新模拟试题

·1,设Windows处于系统默认状态,在Word 97编辑状态下,移动鼠标至文档行首空白处(文本选定区)连击左键三下,结果会选择文档的______. A:一句话 B:一行 ......
软件大小:未知 授权方式:免费下载 下载:195 推荐程度:

‘计算机等级题’云南省计算机等级考试(二级C)模拟试卷试题五..

·云南省计算机等级考试(二级C)模拟试卷试题五第一卷第一部分:综合基础知识(共30分,每项1分) 1. 在下列设备中,不能作为微型计算机的输出设备的是____. A.打印......
软件大小:未知 授权方式:免费下载 下载:232 推荐程度:

‘计算机等级题’计算机等级考试模拟题(第一套)

·计算机等级考试模拟题(第一套) 判断正误题目前常用的国产品牌机是联想,金长城等.(√ ) 第一部内存储程序计算机是用汇编语言来设计程序.(×) 二进制数01100101转......
软件大小:未知 授权方式:免费下载 下载:379 推荐程度:

‘计算机等级题’江苏省计算机软件项目开发水平等级考试模拟..

·江苏省计算机软件项目开发水平等级考试模拟试题《程序设计》(Java开发员) 考试说明:卷面分100分;时间2小时考生务必将自己的数据文件存放在D盘上,并以自己的考号命名文......
软件大小:未知 授权方式:免费下载 下载:171 推荐程度:
http://www.zhaoshiti.com.cn/Soft/List.asp?cat_id=53
2007-09-21 2007年9月计算机等级考试二级VB标准模拟试题

2007年9月计算机等级考试二级VB标准模拟试题 ,选择题1~20每小题2分,21~30每小题3分,共70分 1.在窗体中添加一个命令按钮,并编写如下程序: Private Sub Command1Click() X=1:Y=2:Z=3 X=Y:Y=Z:Z=X Print Z End Sub 程序执行后,输出的结果是()(本题分值:1分) A.3 B.0 C.2 D.1 【正确答案】C 2.下列叙述不正..

推荐程度:授权方式:免费软件软件大小:未知下载:82
2007-12-20 微型计算机接口技术复习资料

总线 • 总线是一组公共的信号传输线,用于连接计算机各个部件。 • 位于芯片内部的总线称为内部总线。 • 连接微处理器与存储器、输入输出接口,用以构成完整的微型计算机的总线称为系统总线(有时也称为外部总线)。 • 微型计算机的系统总线分为数据总线、地址总线和控制总线三组。 ……

推荐程度:授权方式:免费软件软件大小:未知下载:8
2007-09-21 江苏省计算机软件项目开发水平等级考试模拟试题

江苏省计算机软件项目开发水平等级考试模拟试题《实际项目开发》(Delphi开发师) 考试时间: 8小时,卷面分:100分项目名称:招评标管理及决策信息系统要求:根据《招评标管理及决策信息系统需求分析说明书》设计和开发系统,所有文档必须齐全,格式见文档模板. (说明:由于时间要求,考试通常分成如下A,B两类,本试题属于B类...

推荐程度:授权方式:免费软件软件大小:未知下载:17
2007-09-21 江苏省计算机软件项目开发水平等级考试模拟试题

江苏省计算机软件项目开发水平等级考试模拟试题《程序设计》(Java开发员) 考试说明:卷面分100分;时间2小时考生务必将自己的数据文件存放在D盘上,并以自己的考号命名文件夹. 开发员程序设计题: (1) 试用递归算法求出Fibonacci数列:1,1,2,3,5,8,……的第40个数,即 F1 = 1 (n=1) F2 = 1 (n=2) Fn = Fn-1 +Fn-2 (n>=3..

推荐程度:授权方式:免费软件软件大小:未知下载:13
2007-09-21 计算机等级考试模拟题(第一套)

计算机等级考试模拟题(第一套) 判断正误题目前常用的国产品牌机是联想,金长城等.(√ ) 第一部内存储程序计算机是用汇编语言来设计程序.(×) 二进制数01100101转换成十六进制数是65.(√) 第二代计算机是电子管为主要逻辑元件,体积大电路复杂且易出故障.(×) 十进制数120转换成二进制数是1111000.(√) 微处理器就是微..

推荐程度:授权方式:免费软件软件大小:未知下载:21
2007-09-21 云南省计算机等级考试(二级C)模拟试卷试题五

云南省计算机等级考试(二级C)模拟试卷试题五第一卷第一部分:综合基础知识(共30分,每项1分) 1. 在下列设备中,不能作为微型计算机的输出设备的是____. A.打印机 B.显示器 C.绘图仪 D.键盘 2. 二进制数101110转换为等值的八进制数是____. A.45 B.56 C.67 D.78 3. 微型计算机中,普遍使用的字符编码是____. A.补..

推荐程度:授权方式:免费软件软件大小:未知下载:15
2007-09-21 全国计算机等级考试一级考试最新模拟试题

1,设Windows处于系统默认状态,在Word 97编辑状态下,移动鼠标至文档行首空白处(文本选定区)连击左键三下,结果会选择文档的______. A:一句话 B:一行 C:一段 D:全文 2,如果你的计算机已接入Internet,用户名为Zhs,而连接的服务商主机域名为Public.tpt.cn,则你的E-mail地址应该是_______. 3,在Word编辑状态下,若想将..

推荐程度:授权方式:免费软件软件大小:未知下载:22
2007-09-21 湖南省非计算机专业等级考试试题(FOXPRO一级选择题)

湖南省非计算机专业等级考试试题(FOXPRO一级选择题) 1, 要求一个数据库文件的数值型字段具有5位小数,那么该字段的宽度最少应当定为( ) A,5位 B,6位 C,7位 D,8位 2,某数值型字段的宽度定为6,小数位为2,该字段所能存放的最小数值是( ) A,0 B,-999.99 C,-99.99 D,-9999.99 3,可以使用5种不同的数据类型描述数据库文件中的..

推荐程度:授权方式:免费软件软件大小:未知下载:21
2007-09-21 2006年4月全国计算机等级考试二级VB程序设计试题及答案

2006年4月全国计算机等级考试二级VB程序设计试题及答案一,选择题(每小题2分,共70分) 下列各题A),B),C),D)四个选项中,只有一个选项是正确的.请将正确选项填涂在答题卡相应位置上,答在试卷上不得分. (1)下列选项中不属于结构化程序设计方法的是. A) 自顶向下B) 逐步求精 C) 模块化D) 可复用 (2)两个或两个以上模块之间..

推荐程度:授权方式:免费软件软件大小:未知下载:18
2007-09-21 计算机等级考试二级VB全真模拟试题含答案(2)

计算机等级考试二级VB全真模拟试题含答案(2) 一,选择题 (1)—(35)题每题2分,共70分. 下列各题A),B),C),D)四个先项中,只有一个选择是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分. (1) 下列不能打开属性窗口的操作是 . A) 执行"视图"菜单中的"属性窗口"命令 B) 按F4键 C) 按Ctrl+T D) 单击工..

推荐程度:授权方式:免费软件软件大小:未知下载:25
首页 上一页 1 2 3 4 5 6 7 8 9 10 下一页 尾页

‘伍’ 关于选择计算机二级 参考书 今年9月考的

谭浩强出版的 C语言程序设计挺不错的 我读过他写的C++程序设计 通俗易懂 但内容绝非浅显
推荐你读他的书
每一本C语言程序设计有关的书都有自己的体系 结构不太一样
对C来说,我感觉指针比较难吧
要是9月份就考 时间有点紧
计算机二级考试题不难 你一定能过的

‘陆’ C语言上机问题:在线等答案!为什么中间变量要定义成整型

应该是不同的数据类型之间的运算数据截取的问题,你如果定义成无符号整型,赋值符号右边的运算结果如果是一个带符号整型的话,赋值的时候就会自动截取,从带符号的截取到不带符号的会出现数据错误,把符号位也算成值了,所以出错。

‘柒’ 求 安徽大学C语言程序上机操作答案 网盘资源

安徽大学C语言程序上机操作答案

链接:https://pan..com/s/1CWkUXdldFsOEW3hySfoBBQ

提取码:xxpv

如果资源不正确,或者版本不正确,欢迎追问

‘捌’ 求2011年九月以及以前的计算机二级考试C语言试题及答案、以及考试内容分析和解题技巧。记住只要C的。

(1)下面叙述正确的是________。
A)算法的执行效率与数据的存储结构无关
B)算法的空间复杂度是指算法程序中指令(或语句)的条数
C)算法的有穷性是指算法必须能在执行有限个步骤之后终止
D)算法的时间复杂度是指执行算法程序所需要的时间
(1)C
知识点:算法的基本概念;算法复杂度的概念和意义(时间复杂度与空间复杂度)
评 析:算法的设计可以避开具体的计算机程序设计语言,但算法的实现必须借助程序设计语言中提供的数据类型及其算法。数据结构和算法是计算机科学的两个重要支柱。它们是一个不可分割的整体。算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度。算法的有穷性是指一个算法必须在执行有限的步骤以后结束。算法的时间复杂度是指执行算法所需要的计算工作量,即算法执行过程中所需要的基本运算次数。
(2)以下数据结构属于非线性数据结构的是________。
A)队列 B)线性表 C)二叉树 D)栈
(2)C
知识点:栈和队列的定义;栈和队列的顺序存储结构及其基本运算
评 析:线性表、栈和队列等数据结构所表达和处理的数据以线性结构为组织形式。栈是一种特殊的线性表,这种线性表只能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端称为栈底。一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚被插入的元素。所以栈又称后进先出表(Last In First Out)。队列可看作是插入在一端进行,删除在另一端进行的线性表,允许插入的一端称为队尾,允许删除的一端称为队头。在队列中,只能删除队头元素,队列的最后一个元素一定是最新入队的元素。因此队列又称先进先出表(First In First Out)。二叉树的数据结构是树型结构,结构中数据元素之间存在着一对多的关系,因此它是一种非线性数据结构。
(3)在一棵二叉树上第8层的结点数最多是________。
A)8 B)16 C)128 D)256
(3)C
知识点:二叉树的定义及其存储结构
评 析:根据二叉树的性质:二叉树第i(I>1)层上至多有2i-1个结点。得到第8层的结点数最多是128。
(4)下面描述中,不符合结构化程序设计风格的是________。
A)使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑
B)自顶向下
C)注重提高程序的执行效率
D)限制使用goto语句
(4)C
知识点:结构化程序设计
评 析:结构化程序设计方法的四条原则是:1.自顶向下:2.逐步求精;3.模块化;4.限制使用goto语句。“自顶向下”是说,程序设计时,应先考虑总体,后考虑细节,先考虑全局目标,后考虑局部目标;“逐步求精’’是说,对复杂问题,应设计一些子目标作过渡,逐步细节化;“模块化”是说,一个复杂问题肯定是由若干稍简单的问题构成,解决这个复杂问题的程序,也应对应若干稍简单的问题,分解成若干稍小的部分。
(5)下面概念中,不属于面向对象方法的是________。
A)对象、消息 B)继承、多态 C)类、封装 D)过程调用
(5)D
知识点:面向对象的程序设计方法、对象、方法、属性及继承与多态性
评 析:面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。面向对象方法从对象出发,发展出对象、类、消息、继承等概念。
(6)在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是________。
A)可行性分析 B)需求分析 C)详细设计 D)程序编码
(6)B
知识点:结构化设计方法
评 析:软件开发阶段包括需求分析、总体设计、详细设计、编码和测试五个阶段。其中需求分析阶段常用的工具是数据流程图和数据字典。
(7)软件生命周期中所花费用最多的阶段是________。
A)详细设计 B)软件编码 C)软件测试 D)软件维护
(7)D
知识点:软件工程基本概念,软件生命周期概念,软件工具与软件开发环境
评 析:软件生命周期分为软件定义、软件开发及软件运行维护3个阶段。本题中详细设计、软件编码和软件测试都属于软件开发阶段;维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性,降低维护的代价。
(8)数据库系统的核心是________。
A)数据模型 B)DBMS C)软件工具 D)数据库
(8)B
知识点:数据库的基本概念:数据库,数据库管理系统,数据库系统
评 析:数据库管理系统DBMS是数据库系统的核心。DBMS是负责数据库的建立、使用和维护的软件。DBMS建立在操作系统之上,实施对数据库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行,最终都必须通过DBMS。另外,DBMS还承担着数据库的安全保护工作,按照DBA所规定的要求,保证数据库的完整性和安全性。
(9)下列叙述中正确的是________。
A)数据处理是将信息转化为数据的过程
B)数据库设计是指设计数据库管理系统
C)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键
字,则称其为本关系的外关键字
D)关系中的每列称为元组,一个元组就是一个字段
(9)C
知识点:数据模型,实体联系模型及E-R图,从E-R图导出关系数据模型
评 析:数据处理是指将数据转换成信息的过程,故选项A叙述错误;设计数据库的目的实质上是设计出满足实际应用需求的实际关系模型,故选项B叙述错误;关系中的行称为元组,对应存储文件中的记录,关系中的列称为属性。对应存储文件中的字段,故D选项叙述错误。
(10)下列模式中,_______是用户模式。
A)内模式 B)外模式 C)概念模式 D)逻辑模式
(10)B
知识点:数据库的基本概念:数据库,数据库管理系统,数据库系统
评 析:数据库管理系统的三级模式结构由外模式、模式和内模式组成。外模式,或称子模式,或称用户模式,是指数据库用户所看到的数据结构,是用户看到的数据视图。模式,或称逻辑模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和。外模式是模式的一部分。内模式,或称存储模式,或称物理模式,是指数据在数据库系统内的存储介质上的表示。即对数据的物理结构和存取方式的描述。
36)算法的时间复杂度是指_______。
A)执行算法程序所需要的时间
B)算法程序的长度
C)算法执行过程中所需要的基本运算次数
D)算法程序中的指令条数
(36)C
知识点:算法复杂度的概念和意义(时问复杂度与空间复杂度)
评析:所谓算法的时间复杂度,是指执行算法所需要的计算工作量。为了能够比较客观地反映出一个算法的效率,在度量一个算法的工作量时,不仅应该与所使用的计算机、程序设计语言以及程序编制者无关,而且还应该与算法实现过程中的许多细节无关。为此,可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。
(37)下列叙述中正确的是_______。
A)线性表是线性结构 B)栈与队列是非线性结构
C)线性链表是非线性结构 D)二叉树是线性结构
(37)A
知识点:线性结构与非线性结构的概念
评析:根据数据结构中各数据元素之间相关联关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。如果一个非空的数据结构满足下列两个条件: (1)有且只有一个根结点; (2)每一个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构,又称线性表。所以线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。
(38)下面关于完全二叉树的叙述中,错误的是_______。
A)除了最后一层外,每一层上的结点数均达到最大值
B)可能缺少若干个左右叶子结点
C)完全二叉树一般不是满二叉树
D)具有结点的完全二叉树的深度为[log2n]+l
(38)B
知识点:二叉树的定义及其存储结构
评析:这里考察完全二又树与满二叉树的定义及二叉树的性质。满二叉树指除最后一层外每一层上所有结点都有两个子结点的二叉树。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干子结点(叶子结点)的二叉树。因此选项A是正确的,而选项B是错误的。由定义可知,满二叉树肯定是完全二又树,而完全二又树一般不是满二叉树,因此选项c是正确的叙述。选项D即二又树性质(5),也是正确的。
(39)结构化程序设计主要强调的是_______。
A)程序的规模 B)程序的易读性
C)程序的执行效率 D)程序的可移植性
(39)B
知识点:结构化程序设计
评析:结构化程序设计主要强调的足结构化程序清晰易读,可理解性好,程序员能够进行逐步求精、程序证明和测试.以保证程序的正确性。
(40)在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是_______。
A)概要设计 B)详细设计 C)可行性分析 D)需求分析
(40)D
知识点:软件工程基本概念,软件生命周期概念,软件工具与软件开发环境
评析:通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。软件生命周期的主要活动阶段为:
① 可行性研究和计划制定。确定待开发软件系统的开发目标和总的要求,给出它的功能、性能、可靠性以及接口等方面的可行方案,制定完成开发任务的实施计划。
②需求分析。对待开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能。编写软件规格说明书及初步的用户手册,提交评审。
③软件设计。系统设计人员和程序设计人员应该在反复理解软件需求的基础上,给出软件的结构、模块的划分、功能的分配以及处理流程。
④软件实现。把软件设计转换成计算机可以接受的程序代码。即完成源程序的编码,编写用户手册、操作手册等面向用户的文档,编写单元测试计划。
⑤软件测试。在设计测试用例的基础上,检验软件的各个组成部分。编写测试分析报告。
⑥运行和维护。将已交付的软件投入运行,并存运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。
(41)数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是_______。
A)控制流 B)加工 C)数据存储 D)源和潭
(41)A
知识点:结构化分析方法,数据流图,数据字典,软件需求规格说明书
评析:数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。数据流图中的主要图形元素有:加工(转换)、数据流、存储文件(数据源)、源和潭。
(42)软件需求分析一般应确定的是用户对软件的_______。
A)功能需求 B)非功能需求 C)性能需求 D)功能需求和非功能需求
(42)D
知识点:结构化设计方法
评析:软件需求分析中需要构造一个完全的系统逻辑模型,理解用户提出的每一功能与性能要求,是用户明确自己的任务。因此,需求分析应确定用户对软件的功能需求和非功能需求。
(43)下述关于数据库系统的叙述中正确的是_______。
A)数据库系统减少了数据冗余
B)数据库系统避免了一切冗余
C)数据库系统中数据的一致性是指数据类型的一致
D)数据库系统比文件系统能管理更多的数据
(43)A
知识点:数据库的基本概念:数据库,数据库管理系统,数据库系统
评析:由于数据的集成性使得数据可为多个应JH=j所共享,特别是在网络发达的今天,数据库与网络的结合扩大了数据关系的应用范围。数据的共享自身义可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不一致性。所谓数据的一致性是指在系统中同一数据的不同出现应保持相同的值,而数据的不一致性指的是同一个数据在系统的不同拷贝处有不同的值。
(44)关系表中的每一横行称为一个_______。
A)元组 B)字段 C)属性 D)码
(44)A
知识点:数据库的基本概念:数据库.数据库管理系统,数据库系统
评析:在关系数据库中,关系模型采用二维表来表示,简称“表”。二维表是由表框架及表元组组成。在表框架中,按行可以存放数据,每行数据称为元组。
(45)数据库设计包括两个方面的设计内容,它们是_______。
A)概念设计和逻辑设计 B)模式设计和内模式设计
C)内模式设计和物理设计 D)结构特性设计和行为特性设计
(45)A
知识点:数据库设计方法和步骤:需求分析、概念设计、逻辑设计和物理设计的相关策略
评析:数据库设计可分为概念设计与逻辑设计。数据库概念设计的目的是分析数据问内存语义关联,在此基础上建立一个数据的抽象模型。数据库逻辑设计的主要工作是将E-R图转换为指定的RDBMS中的关系模型。
(61)字符(char)型数据在微机内存中的存储形式是________。
A)反码 B)补码
C)EBCDIC码 D)ASCII码
(61)D
知识点:字符数据在内存中的存储形式
评析:将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的ASCII码值放到存储单元中。
71)算法的空间复杂度是指_______。
A)算法程序的长度 B)算法程序中的指令条数
C)算法程序所占的存储空间 D)算法执行过程中所需要的存储空间
(71)D
知识点:算法的复杂度
评析:一个算法的空间复杂度,一般是指执行这个算法所需的内存空间。
一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。
(72)下列关于栈的叙述中正确的是_______。
A)在栈中只能插入数据 B)在栈中只能删除数据
C)栈是先进先出的线性表 D)栈是先进后出的线性表
(72)D
知识点:栈的输入输出操作
评析:栈是限定在一端进行插入与删除的线性表。
栈是按照“先进后出”的或“后进先出”的原则组织数据的,因此,栈也被称为“先进后出”表或“后进先出”表。
(73)在深度为5的满二叉树中,叶子结点的个数为_______。
A)32 B)31 C)16 D)15
(73)C
知识点:二叉树的概念
评析:所谓满二叉树是指除最后一层外,每层上的所有结点都有两个子结点。也就是说,在满二又树中,每一层上的结点数都达到最大值,即在满二叉树的第K层上有2k-1个结点,且深度为m的满二叉树有2m个结点。
在满二叉树中,最后一层的结点个数就是叶子结点的个数,本题中深度为5,故叶子结点数为25-1=24==16。
(74)对建立良好的程序设计风格,下面描述正确的是_______。
A)程序应简单、清晰、可读性好 B)符号名的命名要符合语法
C)充分考虑程序的执行效率 D)程序的注释可有可无
(74)A
知识点:程序设计风格
评析:要形成良好的程序设计风格,主要应注重和考虑下述一些因素:符号名的命名应具有一定的实际含义,以便于对程序功能的理解;正确的注释能够帮助读者理解程序;程序编写应优先考虑清晰性,除非对效率有特殊要求,程序编写要做到清晰第一,效率第二。
(75)下面对对象概念描述错误的是_______。
A)任何对象都必须有继承性 B)对象是属性和方法的封装体
C)对象问的通讯靠消息传递 D)操作是对象的动态性属性
(75)A
知识点:对象的概念
评析:对象是由数据和容许的操作组成的封装体,与客观实体有直接的对应关系。对象之间通过传递消息互相联系,以模拟现实世界中不同事物彼此之间的联系。
(76)下面不属于软件工程的3个要素的是_______。
A)工具 B)过程 C)方法 D)环境
(76)D
知识点:软件:[程的要素
评析:软件工程包括3个要素,即方法、工具和过程。
(77)程序流程图(PFD)中的箭头代表的是_______。
A)数据流 B)控制流 C)调用关系 D)组成关系
(77)B
知识点:软件设计工具
评析:程序流程图(PFD)是一种传统的、应用广泛的软件过程设计表示工具,通常也称为程序框图,其箭头代表的是控制流。
(78)在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是_______。
A)数据库系统 B)文件系统 C)人工管理 D)数据项管理
(78)A
知识点:数据管理技术的发展
评析:在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是数据库系统。

‘玖’ 2010计算机二级c语言上机题库 要原题的 急急急 在线等

一、改错题
【分析】:改错题的错误一般可分为两类,一类是语法错误,这类错误可通过调试程序改正,较容易;另一类是逻辑错误,这类错误程序能运行,但结果不正确,这类错误相对较难,修改前必须要看懂和理解程序。
#include"stdio.h"
#define n 4 #define m 3 /*语法错,#define m 3需另起一行*/
int a[n][m],s[m];
p(int j)/*此函数的功能为:找出a数组中第j列的最小元素的值及行号,函数成功运行后,i中即为j列的最小元素的行号,s[j]中即为j列的最小元素的值*/
{int k,i,x;
x=a[0][j];i=0; /*逻辑错,从函数的功能可知,a[0][j]也应赋值给s[j],所以x=a[0][j]应改为s[j]=x=a[0][j]*/
for(k=1;k<N;K++)< p>
if(a[k][j]<X)< p>
{i=k;s[j]=x=a[k][j];}
return i;
}
main()
{int index[m],i,j,k;
for(i=0;i<N;I++)< p>
for(j=0;j<M;J++)< p>
scanf("%d",a[i][j]);/*语法错,但编译时不会报错,scanf语句的一般形式为scanf(格式控制,地址表列),所以a[i][j]应改为&a[i][j])*/
for(j=0,j<M;J++)< p>
{index[j]=p[j];
printf("a[%d,%d]=%d\n",index[j],j,s[j]);
}
i=s[1];k=0; /*逻辑错,数组s中存放的是a数组中每一列的最小值,比较时应从数组的第0个元素开始,而下面的for循环是从第1个元素开始的,所以i=s[1]应改为i=s[0]*/
for(j=1;j<>
if(s[j]<I)< p>
{i=s[j];k=j;}
printf("min=a[%d,%d]=%d",index[k],k,i); }
二、编程题
【分析】:本题的主要功能是建立一个3行8列的二维数组,并给其元素赋值,其中第1、2行的值可通过递推公式xi+1=(25*xi+357)%1024得到,第三行的值取前两行同列元素的最大公约数,所以编程时可用一个函数来实现求公约数的算法。
#include
#include
#define n 8
/*函数gcd实现求最大公约数的算法*/
gcd(int a,int b)
{int c;
while(b!=0)
{c=a%b;a=b;b=c;}
return a;
}
main()
{int i,j,x,a[3][n];
FILE *f;
if((f=fopen("d:\\temp\\1\\myf2.out","w"))= =NULL)
{printf("Create File myf2.out Failed!\n");exit(0);}
x=26;
/*下面二重for循环实现给第1、2行数组元素赋值的功能*/
for(i=0;i<2;i++)
for(j=0;j<N;J++)< p>
{a[i][j]=x;x=(25*x+357)%1024;}
/*下面for循环通过调用gcd函数实现给第3行数组元素赋值的功能*/
for(j=0;j<N;J++)< p>
a[2][j]=gcd(a[0][j],a[1][j]);
/*下面for循环实现按题目所给格式输出二维数组的功能*/
for(i=0;i<3;i++)
{for(j=0;j<>
fprintf(f,"\n");
}
fclose(f); }
2010年计算机等级考试二级C语言上机习题(2)
一、改错题
【知识点】整数数位处理、数字字符与相应数字的转换、程序调式
【解析】程序中的错误一般可以分为两类,一类是语法错误,即程序中有拼写错误,书写不符合C语言的规定等,此类错误可通过调试(按F9键),根据提示进行改正。另一类是逻辑错误,程序调试已通过(报success),但运行结果不正确,此类错误的修改必须要理解程序后方能改正。
使用putchar函数必须在程序开头加上文件包含#include "stdio.h";scanf语句中必须是地址序列,故scanf("num=%d",num);应改为scanf("num=%d",&num);,且调式时注意将“num=”原样输入;某数字若转换为相应数字字符,应加上字符'0'或48(字符'0'的ASCII码值),故digit[n++]=m%10;应改为digit[n++]=m%10+'0';;最后输出时,n已在前面多加了一次,故而输出时应先减1,故for(;n>=0;n--)中第一个表达式应加上n--或--n或n=n-1。
【答案】①在程序开头加上#include "stdio.h"
②将原第五行的scanf("num=%d",num);改为scanf("num=%d",&num);
③将原第十一行的digit[n++]=m%10;改为digit[n++]=m%10+'0';
④将原第十六行的for(;n>=0;n--)改为for(n--;n>=0;n--)
二、编程题
【知识点】字符串应用、数据文件的使用
【解析】注意,按要求必须调用函数,且使用数据文件完成输出。使用数据文件有5大步骤:①#include ,②用FILE *定义指针,③用fopen("A:\\myf2.out","w")打开文件并赋值给指针,④用fprintf输出结果,⑤用fclose关闭文件。
【注意】fopen("A:\\myf2.out","w")中盘符A:后要加双斜杠表示根目录,因为C语言用转义字符'\\'才能表达字符\;另外,文件的命名一定要严格按照规定处理,千万不要随便命名。
【参考答案】
#include "stdio.h"
int compress(char s[])
{int n,k=0,count=0;
if(s[0]!=NULL) n=k+1;
while(s[n]!=NULL)
{if(s[k]= =s[n]){n++;count++;}
else {s[++k]=s[n];n++;}
}
s[++k]='\0';
return count;
}
main()
{char num[100];
int count=0;
FILE *fp;
fp=fopen("A:\\myf2.out","w");
gets(num);
count=compress(num);
fprintf(fp,"%s",num);
printf("%d",count);
fclose(fp); }
运行结果如下:
@ I wil sucesful & and you to ! #
2010年计算机等级考试二级C语言上机习题(3)
一、改错题
【知识点】选择法排序、指针与字符串、程序的调试
【解析】程序中的错误一般可以分为两类,一类是语法错误,即程序中有拼写错误,书写不符合C语言的规定等,此类错误可通过调试(按F9键),根据提示进行改正。另一类是逻辑错误,程序调试已通过(报success),但运行结果不正确,此类错误的修改必须要理解程序后方能改正。
本题要求“从键盘上接受一个含有空格的字符串”,scanf是做不到的,它遇到第一个空格即认为读入完毕,故应替换成gets函数;程序中使用了strcpy函数,就必须在程序开头加上文件包含#include "string.h";根据选择法升序排序要领,每次找到一个“更小的字符”由r指着,直到指向最小的为止,而不是修改r所指字符的值,故if(*r>*q)*r=*q;应改为if(*r>*q) r=q;;当r与p所指不同时,交换二者所指字符的值,即使得p所指字符为每次的最小,故应将if(r/=p)改为if(r!=p)。
【答案】①在程序开头加上文件包含#include "string.h"
②将原第五行的scanf("%s",str);改为gets(str);
③将原第八行的*r=*q; 改为r=q;
④将原第九行的if(r/=p)改为if(r!=p)
二、编程题
【知识点】二维数组的应用、数据文件的使用
【解析】 关于“二维数组应用”的题目,一般都要仔细观察,找出规律后再编程。本题中原数组的任意一个元素a[i][j]旋转后,位置处于b中第3-j行i列。注意,按要求必须调用函数,且使用数据文件完成输出。使用数据文件有5大步骤:①#include ,②用FILE *定义指针,③用fopen("A:\\myf2.out","w")打开文件并赋值给指针,④用fprintf输出结果,⑤用fclose关闭文件。
【注意】fopen("A:\\myf2.out","w")中盘符A:后要加双斜杠表示根目录,因为C语言用转义字符'\\'才能表达字符\;另外,文件的命名一定要严格按照规定处理,千万不要随便命名。
【参考答案】
#include "stdio.h"
int rotate(int a[4][4],int b[4][4]);
main()
{FILE *fp;
int i,j,x[4][4],y[4][4],s;
fp=fopen("A:\\myf2.out","w");
if(fp= =NULL){printf("Can't create file myf2.out!");
exit(1);}
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&x[i][j]);
s=rotate(x,y);
for(i=0;i<4;i++)
{for(j=0;j<4;j++)
fprintf(fp,"%d ",y[i][j]);
fprintf(fp,"\n");
}
fprintf(fp,"sum=%d\n",s);
fclose(fp);
}
int rotate(int a[4][4],int b[4][4])
{int i,j,s=0;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
b[3-j][i]=a[i][j];
for(i=0;i<4;i++) s+=b[i][i];
return s; }
2010年计算机等级考试二级C语言上机习题(4)
一、改错题
含有错误的源程序如下:
void match(char *pat,char str) ①
{char *p=pat,*q=str;
int i=0; ②
while((*p!=NULL)&&(*q!=NULL))
if(*p= =*q||*p= ='?')p++,q++;
else if(*p= ='*')
{p++;
while(*q!=*p&&*q!=NULL)q++;
}
else i=0;break; ③
if(*p!=NULL||*q!=NULL)i=0;
return i;
}
}
【知识点】字符串处理、程序的调试
【解析】程序中的错误一般可以分为两类,一类是语法错误,即程序中有拼写错误,书写不符合C语言的规定等,此类错误可通过调试(按F9键),根据提示进行改正。另一类是逻辑错误,程序调试已通过(报Success),但运行结果不正确,此类错误的修改必须要理解程序后方能改正。
程序中用到系统预设的符号常量NULL,又未加“文件包含”处理,按F9后即编译时系统会报错,故应在最前面加上include 或将以下全部NULL改为0。函数match分明有返回值,故系统也会报错,应将void改为int;变量i的作用是:当匹配时取值1,否则取值0,根据③处,易于发现i初值应取1,故②处应改为i=1,当发现不匹配时,立即置为0,并跳出循环,此两句应是一个整体,应构成复合语句。②③均为逻辑错误。
【答案】(1)在最前面加上include 或将以下全部NULL改为0
(2)加下划线的部分改为:
①int match(char *pat, char *str)
②i=1
③{ i=0;break;}
二、编程题
【知识点】穷举法、数据文件的使用
【解析】将30~50之间的每一个数都进行判断,就不会有遗漏。注意,按要求必须调用函数,且使用数据文件完成输出。使用数据文件有5大步骤:①#include ,②用FILE *定义指针,③用fopen("A:\\myf2.out","w")打开文件并赋值给指针,④用fprintf输出结果,⑤用fclose关闭文件。
【注意】fopen("A:\\myf2.out","w")中盘符A:后要加双斜杠表示根目录,因为C语言用转义字符'\\'才能表达字符\;另外,文件的命名一定要严格按照规定处理,千万不要随便命名。
【参考答案】
#include
int inv(int x)
{int y;
y=x/10+x%10*10; /*此句可将某两位正整数的十位与个位数字换位*/
return y;
}
main()
{FILE *out;
int i,j;
if((out=fopen("A:\\myf2.out","w"))= =NULL)
{printf("Open file myf2.out failed!\n");exit(1);}
for(i=30;i<50;i++)
for(j=30;j<50;j++)
if((i/10!=i%10)&&(i*j= =inv(i)*inv(j))) /* i/10!=i%10确保十位与个位数字不同*/
fprintf(out,"%d*%d=%d*%d\n",i,j,inv(i),inv(j));
fclose(out); }
2010年计算机等级考试二级C语言上机习题(5)
一、改错题
【分析】:对于改错题的程序中的错误一般可分为两类,一类是语法错误,程序中的语句不符合C语言的语法,拼写错误,这类的错误可通过调试程序改正。另一类是逻辑错误,程序调试已通过,但运行结果不正确,这类错误的修改必须要看懂和理解程序。
#include
#define N 50
void sum(int n,int *pa)
/*属第一类错误。若声明为void类型,则该函数没有返回值,但程序要求返回前n的和,所以类型声明不正确,应改为: int 或去掉*/
{ int count, total,temp;
*pa=3;*++pa=2;
total=5; count=2;
while(count++<N)< p>
{ temp=*(pa-1)**pa;
if(temp<10)
{ total+=temp; *(++pa)=temp;
}
else
{*++pa=temp/10;
total+=*pa;
if(count
/*属第二类错误。若乘积为两位数,已把其十位数字作为数列的后续项,但若数列的个数没有超过n时,将该乘积个位数字作为数列的后续项。*++pa 与*pa++不同,此处应为: *++pa */
}
}
return total;
}
main()
{ int tol,n,i,num[n];
/*属第一类错误。数组的声明不正确,数组的下标必须为常量或常量标识符。应改为:num[N] 或 num[50] */
do
{ printf("Input n=?(2<N<50)");< p>
scanf("%d",&n);
}while(n<=2||n>=50);
tol=sum(N,num);
/*属第二类错误。本题要求生成数列的前n(n<50)项,而N是常量。应改为:sum(n,num) */
for(i=0;i<N;I++)< p>
printf((i+1)%5?"%5d":"%5d\n",num[i]);
printf("\n");
printf("%d",tol);
}
2010年计算机等级考试二级C语言上机习题(6)
一、改错题
含有错误的源程序:
#include
#include
#define N 5
struct student
{ char name[10];
int score;
} ―――――――――――①
void sort(struct student stud[],int n)
{ int i,j;
struct student p;
for(i=1;i<>
{ p=stud[i];
for(j=i-1;j>0 && p>stud[j];j--) ―――――――――――③
stud[j+1]=stud[j];
stud[j+1]=p;
}
}
void main()
{ struct student stud[N]={"aaa",60,"bbb",90,"ccc",85,"ddd",65,"yyy",77};
int i;
sort(stud,N);
printf("sorted data:\n");
for(i=0;i< printf(?%s\t%d\n?,stud[i]);>
}
【知识点】结构体、排序
【难点】 插入法排序
【解析】本题是将未排序的数组元素采用插入排序方法进行排序,其思想是:从第2个元素开始,最初与第一个元素进行比较,由大到小排列在适当位置,成为排好序的数组元素一员。再依次将待排序的元素与前面已排好序的元素从后向前进行比较,如果大于该元素,则该元素向后移一位,直到待排序的元素小于已排好序的某一元素,则直接插入到该元素之后。直到待排序的元素全部完成为止。本程序的sort函数中i表示待排序的元素下标,j表示已排好序的元素下标。
【答案】(1)标号①:} 改为 }; (2)标号②:for(i=1;i
(3)标号③:for(j=i-1;j>0 && p>stud[j];j--) 改为 j>=0 && p.score>stud[j].score;j--)
(4) 标号④:printf("%s\t%d\n",stud[i]); 改为printf("%s\t%d\n",stud[i].name,stud[i].score );
二、编程题
【知识点】字符串操作、函数、文件
【解析】仔细阅读并分析【编程要求】。【编程要求1】已对函数Replace_string指定了函数名、函数类型、形参类型和个数,并详细说明了其功能。在line指向的字符串中查找str1指向的字符子串的关键语句是当“str1[j]= =line[loc]&&str1[j]!='\0'”时继续循环查找,当 因“str1[j]!='\0'”退出循环时,则找到str1指向的字符子串,此时用str2指向的字符串替换在line中的str1字符子串,返回。【编程要求2】编写主函数主要功能要求是保存结果到数据文件、调用Replace_string函数、输入测试数据。这部分是最常规和基本的要求,必须掌握。
【参考答案】
#include
#include
int Replace_string (char line[],char str1[],char str2[])
{ int i=0,j,loc;
char temp[80];
while(i<=strlen(line)-strlen(str2))
{ j=0;loc=i;
while(str1[j]= =line[loc]&&str1[j]!='\0')
{ loc++;j++;}
if(str1[j]= ='\0')
{strcpy(temp,&line[loc]);strcpy(&line[i],str2);
i+=strlen(str2);strcpy(&line[loc],temp);
return 1;
}
else i++;
}
return 0;
}
main()
{ FILE *fp;
char string[100]="My EXAM_number is 0112404321.";
char number[11]="0112404321",num[11];
fp=fopen("myf2.out","w");
fprintf(fp,"%s\n",string);
gets(num);
Replace_string (string,number,num);
fprintf(fp,"%s\n",string);
fprintf(fp,"\n my exam number is: %s\n","0112404321");
fclose(fp); }
2010年计算机等级考试二级C语言上机习题(7)
一、改错题
含有错误的源程序如下:
#include
#include
struct T
{char name [20],num[20];
};
void sort(struct T items[],int low,int high)
{struct T temp;
int k,j;
for(k=low;k<HIGH;K++)< p>
for(j=low;j<>
if(items[j].name>items[j+1].name) ②
{temp=items[j];items[j]=items[j+1];items[j+1]=temp;}
}
void main(void)
{struct T stu[4]={"Wang","6723","Cai","2106","Zhang", ③
"5129","Chang","4512","An","6868"};
int k;
sort(stu,0,4);
printf("The Sorted Array:\n");
for(k=0;k<5;k++)
printf("name:%s,num:%s\n",stu[k]->name,stu[k]->num); ④
}
【知识点】冒泡排序、结构体数组、程序的调试
【解析】程序中的错误一般可以分为两类,一类是语法错误,即程序中有拼写错误,书写不符合C语言的规定等,此类错误可通过调试(按F9键),根据提示进行改正。另一类是逻辑错误,程序调试已通过(报success),但运行结果不正确,此类错误的修改必须要理解程序后方能改正。
本题使用起泡法完成排序,①处j<HIGH-K-1等价与J<=HIGH-K-2,J最大取HIGH-K-2时,J+1才取到HIGH-K-1,例如,刚开始当K为0时,最后一个比较的元素下标为HIGH-1,而实际上根据实参(值已为4)传递而来的最后一个元素的下标应为HIGH,故①处应改为J<HIGH-K或J<=HIGH-K-1,此为逻辑错误。②③④处均属于语法错误:字符串的比较不能使用关系运算符,要借助STRCMP函数;所赋值有5个,数组维数就必须大于等于5;STU[K]不是指针,不能用指向成员符描述成员。< p>
【答案】加下划线的部分改为:
①j<HIGH-K或J<=HIGH-K-1< p>
②if(strcmp(items[j].name, items[j+1].name)>0)
③stu[5]
④stu[k].name, stu[k].num
2010年计算机等级考试二级C语言上机习题(7)
二、编程题
【知识点】字符串处理、函数调用、数据文件的使用
【解析】编程题的结果一般都是客观的,这样便于老师主观阅卷评分,虽然考生个人的准考证号是各异的,对评阅老师却是可以通过所交磁盘标签直接观察到,故必须如实输入,不能直接套用题中例子。注意,按要求必须调用函数,且使用数据文件完成输出。使用数据文件有5大步骤:①#include ,②用FILE *定义指针,③用fopen("A:\\myf2.out","w")打开文件并赋值给指针,④用fprintf输出结果,⑤用fclose关闭文件。
【注意】fopen("A:\\myf2.out","w")中盘符A:后要加双斜杠表示根目录,因为C语言用转义字符'\\'才能表达字符\;另外,文件的命名一定要严格按照规定处理,千万不要随便命名。
【参考答案】
#include
#include
#include
void count(char a[],char w[][10],int n,int b[])
{int i=0,j,k=0;char s[10];
for(i=0;a[i]!=0;i++)
{if(isalpha(a[i]))s[k++]=a[i]; /* isalpha函数用于判断字符是否为字母*/
/*此句将连续字母组成的一个单词存放于s中,便于与二维数组中的某一行进行比较*/
else
{s[k]= '\0'; /*加上'\0'才能使s中存放的是字符串,才能使用strcmp函数进行比较*/
for(j=0;j<N;J++)< p>
if(strcmp(s,w[j])= =0){b[j]++;break;}
k=0; /*让s重新存放另一个单词*/
}
}
}
main()
{FILE *fp;
char line[80]="this is a book,that is an apple",word[6][10]={"this","that","is","a","an","book"};
/*按要求初始化,用二维字符数组的一行存放一个单词便于后面比较处理*/
int c[6]={0},m;
count(line,word,6,c);fp=fopen("A:\\myf2.out","w");
if(fp= =NULL){printf("Can't open file");exit(1);}
for(m=0;m<6;m++)fprintf(fp,"%s:%d",word[m],c[m]);
fprintf(fp,"\nmy exam number is:%s","0112400123"); /*注意输入实际准考证号*/
fclose(fp);
}

‘拾’ c语言上机答案

1.main()
{char a;
scanf("%c",&a);
printf("%c%d",a-32,a-32);}
2.main()
{float c,f;
scanf("%f",&f);
c=5/9.0*(f-32);
printf("%f",c);
}
3.main()
{float x;
Y=3X3+0.4X2-2 X / 3;
printf("%f",Y);
}
4.main()
{int a,b,c,t;
scanf("%d,%d,%d",&a,&b,&c);
t=a;a=b;b=c;c=t;
printf("%d,%d,%d",a,b,c);
}
其它的你自己想想吧

热点内容
php难招 发布:2025-01-14 19:06:07 浏览:487
sublime编译php 发布:2025-01-14 18:57:16 浏览:307
云计算服务器是什么 发布:2025-01-14 18:56:22 浏览:41
vip域名查询ftp 发布:2025-01-14 18:46:48 浏览:114
格式化linux 发布:2025-01-14 18:35:14 浏览:593
如何进入安卓原生市场 发布:2025-01-14 18:22:06 浏览:558
台式电脑找不到服务器 发布:2025-01-14 18:19:58 浏览:423
androidsdk网盘 发布:2025-01-14 18:17:43 浏览:80
个别用户访问不了腾讯云服务器 发布:2025-01-14 18:03:27 浏览:277
oracle链接sqlserver 发布:2025-01-14 17:58:33 浏览:729