文档库 最新最全的文档下载
当前位置:文档库 › 2012计算机等级考试二级C语言上机模拟试题及答案

2012计算机等级考试二级C语言上机模拟试题及答案

2012计算机等级考试二级C语言上机模拟试题及答案
2012计算机等级考试二级C语言上机模拟试题及答案

函数ReadDat()实现从文件ENG.IN中读取一篇英文文章存入到字符串数组xx中; 请编制函数ComWord()分别计算出单词长度2,4,6,8的单词数以及单词总数并依次存入整型数组yy[0]至yy[4]中,最后调用函数WriteDat()把结果yy输出到文件PS3.OUT中。原始数据文件存放的格式是:每行的宽度均小于80个字符, 含标点符号和空格。注意: 部分源程序存放在PROG1.C中。文章每行中的单词与单词之间用空格或其它标点符号分隔, 每单词均小于20个字符。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。

/*参考答案*/

#include

#include

#include

#include

char xx[50][80] ;

int yy[5] ;

int maxline = 0 ; /* 文章的总行数*/

int ReadDat(void) ;

void WriteDat(void) ;

void ComWord(void)

{

int i,j,k,n,len,s[4] = {2,4,6,8};

char word[20],c;

memset(yy,0,5*sizeof(int));

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

{

len = strlen(xx);

n = 0;

for(j = 0; j < len+1; j++)

{

c = xx[j];

if((c>='a' && c<='z') || (c>='A' && c<='Z'))

{

word[n] = c;

n++;

}

else

{

word[n] = '\0';

if(word[0] != '\0')

{

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

if(n == s[k])

yy[k]++;

yy[4]++;

}

n = 0;

}

}

}

}

void main()

{

int i ;

clrscr() ;

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

if(ReadDat()) {

printf("数据文件ENG.IN不能打开!\n\007") ; return ;

}

ComWord() ;

WriteDat() ;

}

int ReadDat(void)

{

FILE *fp ;

int i = 0 ;

char *p ;

if((fp = fopen("eng.in", "r")) == NULL) return 1 ; while(fgets(xx, 80, fp) != NULL) {

p = strchr(xx, '\n') ;

if(p) xx[p - xx] = 0 ;

i++ ;

}

maxline = i ;

fclose(fp) ;

return 0 ;

}

void WriteDat(void)

{

FILE *fp ;

int i ;

fp = fopen("ps3.out", "w") ;

for(i = 0 ; i < 5 ; i++) fprintf(fp, "%d\n", yy) ;

printf("单词长度为3的单词数=%d\n", yy[0]) ;

printf("单词长度为5的单词数=%d\n", yy[1]) ;

printf("单词长度为7的单词数=%d\n", yy[2]) ;

printf("单词长度为9的单词数=%d\n", yy[3]) ;

printf("单词的总数=%d\n", yy[4]) ;

fclose(fp) ;

}

1.若变量已正确定义并赋值,对库函数错误调用的是

A) k=scanf("%d%d",&i,&j);

B) printf("\\%d\\\n",k);

C) getchar(ch);

D) putchar(ch);

2.要求定义一个返回值为double类型的名为mysum的函数,其功能为求两个double 类型数的和值,正确的定义是:

A) mysum(double a,b)

{ return (a+b); }

B) mysum(double a, double b)

{ return a+b; }

C) double mysum(int a, intb);

{return a+b; }

D) double mysum(double a, double b)

{ retrun (a+b); }

3.以下是对fun函数的正确调用:

fun(a+b,fun(a+b,(a,b)));

则fun函数有______个形参。

4.若有以下函数定义:

myfun(double a, int n)

{…… }

则myfun函数值的类型是

A) void

B) double

C) int

D) char

5.若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值。以下选项中错误的程序是

A) double fun( int a,int b )

{…… }

main()

{ ┇

fun( i,k );

}

B) main()

{

printf( "%f\n",fun( 2,10 ));

}

double fun( int a,int b )

{ …… }

C) double fun( int, int );

main()

{ ┇

x=fun( i,k );

}

double fun( int a,int b )

{ …… }

D) main()

{ double fun(int i,int y);

x=fun( i,k );

}

double fun(int a,int b)

{ ……}

6.若有以下函数:

int fun(int x)

{ return (1+x*x); }

则语句printf(" %d\n",fun(fun(fun(fun( 1 )))) );的输出结果是答案:C D 2 C B 677

1.若有以下定义:floatx;inta,b,c=2;,则正确的switch语句是()

A)

switch(x)

{ case1.0∶printf("*\n");

case2.0∶printf("**\n");

}

B)switch(int(x))

{ case1∶printf("*\n");

case2∶printf("**\n");

}

C)

switch(a+b)

{ case1∶printf("*\n");

case1+2∶printf("**\n");

}

D)switch(a+b)

{ case1∶printf("*\n");

casec∶printf("**\n");

}

2.执行下面程序片段的结果是()

int x=123;

do

{ printf("=\n",x--);}

while(!x);

A)打印出321

B)打印出123

C)不打印任何内容

D)陷入死循环

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

# include

main()

{ int i=0,a=0;

while(i<20)

{ for(;;){ if((i )==0)break;else i--; }

i+=11;a+=i;

}

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

}

A)21B)32C)33D)11

4.下列与表达式“b=(a<0?-1∶a>0?1∶0)”的功能等价选项是()

A)b=0;

if(a>=0)

if(a>0) b=1;

else b=-1;

B)if(a>0)b=1;

else if(a<0)b=-1;

elseb=0

C)if(a)

if(a<0) b=-1;

else if(a>0)b=1;

else b=0;

D) b=-1;

if(a)

if(a>0)b=1;

else if(a==0)b=0;

else b=-1;

5.若有以下定义:char a; int b; float c; double d; 则表达式“a*b+d-c”值的类型为()

A)float

B)int

C)char

D)double

6.以下叙述中正确的是()

A)在函数中必须要有return语句

B)在函数中可以有多个return语句,但只执行其中的一个

C)return语句中必须要有一个表达式

D)函数值并不总是通过return语句传回调用处

7.有以下程序

float fun(int x,int y)

{ return(x+y);

}

main()

{int a=2,b=5,c=8;

printf("%3.0f\n",fun((int)fun(a+c,b),a-c));

}

程序运行后的输出结果是()

A)编译出错

B)9

C)21

D)9.0

8.若已定义:

inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,I;

其中0≤i≤9,则对a数组元素不正确的引用是()

A)a[p-a]

B)*(&a[i])

C)p[i]

D)a[10]

9.以下叙述中正确的是()

A)全局变量的作用域一定比局部变量的作用域大

B)静态(static)类型变量的生存期贯穿于整个程序的运行期间

C)函数的形参都属于全局变量

D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值

10.若有如下程序:

main()

{char a[][9]={"china","Japan","USA","France"};

printf("\′%s\′\n",a[2]);}

则程序运行后的输出结果是()

A)′Japan′

B)′USA′

C)USA

D)′inaJapanUSAFrance′

答案:1.C 2.B 3.B 4.B 5.D 6.B 7.B 8.D 9.B 10.B

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

A)′a′<=c<=′z′

B)(c>=′a′)||(c<=′z′)

C)(′a′=C)

D)(c>=′a′)&&(c<=′z′)

2.下面程序的输出结果是()

main()

{ int x=2,y=0,z;

x+=3+2;printf("%d",x);

x*=y=z=4;printf("%d",x);

}

A)728

B)无法计算

C)7,4

D)8,4

3.有如下程序

main()

{int x=1,a=0,b=0;

switch(x){

case 0∶b++;

case 1∶a++;

case 2∶a++;b++;

}

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

}

程序运行后的输出结果是()

A)a=2,b=1

B)a=1,b=1

C)a=1,b=0

D)a=2,b=2

4.以下选项中,正确的if-else语句是()

A)if(x!=0)

printf("%d",x)

else

printf("%d",-x);

B)if(x!=0)

{x=x+y;printf("%d",x); }

else

printf("%d",-x);

C)if(x!=0)

x=x+y;printf("%d",x);

else

printf("%d",-x);

D)if(x!=0)

{x=x+y;printf("%d",x)};

else

printf("%d",-x);

5.有以下程序段

int n=0,p;

do {scanf("%d",&p);n++;}while(p!=12345 &&n<3);

此处do-while循环的结束条件是()

A)p的值不等于12345并且n的值小于3

B)p的值等于12345并且n的值大于等于3

C)p的值不等于12345或者n的值小于3

D)p的值等于12345或者n的值大于等于3

6.若有如下程序段:

main()

{ int n=0;

while(printf("*"))

{ n++;

if(n<3)break; }}

则下列描述正确的是()

A)其中循环控制表达式与0等价

B)其中循环控制表达式与’0’等价

C)其中循环控制表达式是不合法的

D)以上说法都不对

7.C语言中main函数参数的非法表示形式是()

A)main(char *argv[],int argc)

B)main(int a,char**b)

C)main(int y,char *x[])

D)main(int argv,char *argc[])

8.设有如下枚举类型定义:

enum language {Basic=3,Assembly,Ada=100,COBOL,Fortran}; 枚举类型Fortran的值为()

A)4

B)7

C)102

D)103

9.阅读下述程序段:

y=-1;

if (x!=0)

if (x>0)

y=1;

else

y=0;

该程序段所描述的数学关系是()

A)y=-1(x<0)

0(x=0)

1(x>0)

B)y=1(x<0)

0(x=0)

-1(x>0)

C)y=0(x<0)

-1(x=0)

1(x>0)

D)y=-1(x<0)

1(x=0)

0(x>0)

10.设有数组定义:char array[]="China";蚴 閍rray所占的空间为()

A)4个字节

B)5个字节

C)6个字节

D)7个字节

答案:1.D 2.A 3.A 4.B 5.D 6.B 7.A 8.C 9.C 10.C

1.有以下程序:

main()

{intx=0xFFFF;printf("%d\n",x--);}

执行后的输出结果是()

A)32767

B)FFFE

C)-1

D)-32768

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

#include

#include

main()

{ char str[12]={′s′,′t′,′r′,′i′,′n′,′g′};

printf("%d\n",strlen(str));

}

A)6

B)7

C)11

D)12

3.若有以下定义:

char s[20]="programming",*ps=s;

则不能代表字符o的表达式是()

A)ps+2

B)s[2]

C)ps[2]

D)ps+=2,*ps

4.关于语句“for(表达式1;表达式2;表达式3)”,下面说法中错误的是()

A)for语句中的三个表达式可以同时省略

B)for语句可以用于循环次数不确定的情况

C)for语句中表达式2只能是关系表达式或逻辑表达式

D)for语句中表达式1和表达式3可以是逗号表达式

5.执行下面程序片段的结果是()

int x=23;

do

{ printf("-",x--);}

while(!x);

A)打印出321

B)打印出23

C)不打印任何内容

D)陷入死循环

6.与y=(x>0?1∶x<0?-1∶0);的功能相同的if语句是()

A)if(x>0)y=1;

else if(x<0)y=-1;

else y=0;

B)if(x)

if(x>0) y=1;

else if(x<0) y=-1;

else y=0;

C)y=-1;

if(x)

if(x>0)y=1;

else if(x==0) y=0;

else y=-1;

D)y=0;

if(x>=0)

if(x>0) y=1;

else y=-1;

7.标准库函数fgets(s,n,f)的功能是()

A)从文件f中读取长度为n的字符串存入指针s所指的内存

B)从文件f中读取长度不超过n-1的字符串存入指针s所指的内存

C)从文件f中读取n个字符串存入指针s所指的内存

D)从文件f中读取长度为n-1的字符串存入指针s所指的内存

8.若有如下函数调用语句:

sub(a,1,fun(b,c),d+c,(a+d,c*f));

则在该函数调用语句中含有实参的个数是()

A)5

B)7

C)10

D)6

9.若要定义a为3×4的二维数组,正确的定义语句是()

A)float a(3,4);

B)float a[3][4];

C)float a(3)(4);

D)float a[3,4];

10.有以下程序

main()

{intaa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};

int i,s=0;

for (i=0;i<4;i++)s+=aa[i][1];

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

}

程序运行后的输出结果是()

A)11

B)19

C)13

D)20

答案:1.C 2.A 3.A 4.C 5.B 6.A 7.B 8.A 9.B 10.B

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

#include

main ()

{int a,b,d=241;

a=d/100%9

b=(-1)&&(+1);

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

A)6,1

B)2,1

C)6,0

D)2,0

2.关于if后一对圆括号中的表达式,以下叙述中正确的是()

A)只能用逻辑表达式

B)只能用关系表达式

C)既可用逻辑表达式也可用关系表达式

D)可用任意表达式

3.有以下程序

{ int a,b;

for(a=1,b=1;a<=100;a++)

{if(b>=20)break;

if(b%3==1)

{b+=3;

continue;}

b-=5;

}

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

}

程序运行后的输出结果是()

A)7

B)8

C)9

D)10

4.C语言中()

A)不能使用do-while语句构成的循环

B)do-while语句构成的循环必须用break语句才能退出

C)do-while语句构成的循环,当while语句中的表达式值为非零时结束循环

D)do-while语句构成的循环,当while语句中的表达式值为零时结束循环

5.当a=1、b=3、c=5、d=4时,执行下面一段程序:

if(a if(c else

if(a if(b elsex=3;

elesx=6;

elsex=7;

程序执行后,x的值为()

A)1

B)2

C)3

D)6

6.若x、y、z、m均为int型变量,则执行下面语句后m的值是()

m=1;x=2;y=3;

m= (m m= (m m= (m A)1

B)2

C)3

D)4

7.设有如下的函数

funct(x)

float x;

{ x*=x;printf("\n%d",x);return(x);}

则函数的类型()

A)与参数x的类型相同

B)void

D)无法确定

8.在C语言中,不适用于局部变量的存储类说明符是()

A)auto

B)register

C)static

D)extern

9.有以下程序

intf(intn)

{if(n==1)return1;

elsereturnf(n-1)+1;

}

main()

{inti,j=0;

for(i=1;i<5;i++)j+=f(i);

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

}

程序运行后的输出结果是()

A)15

B)10

C)6

D)3

10.有以下程序

intb=2;

int func(int*a)

{b+=*a;return(b);}

main()

{inta=2,res=2;

res+=func(&a);

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

}

程序运行后的输出结果是()

A)4

B)6

C)8

D)10

答案:1.B 2.D 3.B 4.D 5.B 6.A 7.C 8.D 9.B 10.B

1.下面叙述正确的是()

A)define和auto都不能定义为用户标识符

B)可以把define和auto定义为用户标识符

C)可以把define定义为用户标识符,但auto是C语言的关键字

D)可以把auto定义为用户标识符,但define是C语言的关键字

2.以下的for循环()

for(x=0,y=0;(y!=123)&&(x<4);x++)

A)是无限循环

B)循环次数不定

C)执行4次

D)执行3次

3.下述对C语言字符数组的描述中错误的是()

A)字符数组可以存放字符串

B)字符数组中的字符串可以整体输入、输出

C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值

D)不可以用关系运算符对字符数组中的字符串进行比较

4.设有定义:int a,*p=&a,**pp=&p;,则与a=100;等价的语句为()

A)**p=100;

B)**pp=100;

C)&*p=100;

D)*pp=10;

5.有以下程序

int x=3;

do {printf("%d",x-=2);}while(!(--x));

程序运行后的输出结果是()

A)1

B)30

C)1-2

D)死循环

6.执行下面程序的正确结果是()

main()

{ float a=1.9;

switch(a)

{ case 0∶printf("0000");

case 1∶printf("1111");

case 2∶printf("3333");

}

printf("%f",a);

}

A)1.900000

B)111133331.900000

C)33331.900000

D)00001111233331.900000

7.对下述程序,正确的判断是()

main ()

{ int a, b;

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

if(a>b)a=b;b=a;

else a++;b++;

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

A)有语法错误不能通过编译

B)若输入4,5则输出5,6

C)若输入5,4则输出4,5

D)若输入5,4则输出5,5

8.若有如下程序:

sub(int n)

{intt;

if(n==1)returnt=5;

else t=sub(n-1)+3;

returnt;}

main()

{printf("%d\n",sub(5));}

则程序运行后的输出结果是()

A)17

B)18

C)19

D)20

9.下面各被调用函数首部书写正确的是()

A)void sub(float x;float y);

B)void sub(float x,y)

C)void sub(float x,float y)

D)void sub(float x,float y);

10.设有如下程序:

#include"string.h"

main()

{static char s1[20],s2[20];

scanf("%s",s1);scanf("%s",s2);

if(strcmp(s1,s2))printf("@");

elseprintf("$");

printf("%d\n",strlen(strcat(s1,s2)));}

如果从键盘上输入name<回车>name1<回车>,则程序运行后的输出结果是()

A)$8

B)@10

C)$9

D)@9

答案:1.C 2.C 3.C 4.B 5.C 6.B 7.A 8.A 9.C 10.D

1.以下程序运行后,输出结果是()

#include

ss(char *s)

{char *p=s;

while(*p)p++;

return(p-s);

}

main()

{char*a="abded";

inti;

i=ss(a);

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

}

A)8

B)7

C)6

D)5

2.若有如下程序:

int sub()

{static int n=1;

int x=1;

x*=n;n++;

return x;}

main()

{int n,t=1;

for(n=1;n<6;n++)t*=sub();

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

则程序运行后的输出结果是()

A)15

B)120

C)34560

D)-30976

3.在C语言中,函数的隐含存储类别是()

A)static

B)auto

C)extern

D)register

4.有以下程序:

intf1(doublea)

{returna*a; }

intf2(doublex,doubley)

{doublea,b;

a=f1(x);

b=f1(y);

returna+b;

}

main()

{doublew;

w=f2(1.1,2.0);

}

变量w中的值是()

A)5.21

B)5

C)5.0

D)0.0

5.下面被调用函数sub的函数值的类型是()

sub(float a)

{float b;

b=a*a+1;

return b;}

A)单精度型

B)双精度型

C)空类型

D)整型

6.若有以下定义语句:

doublea[5];inti=0;

能正确给a数组元素输入数据的语句是()

A)scanf("%lf%lf%lf%lf%lf",a);

B)for(i=0;i<=5;i++)scanf("%lf",a+i);

C)while(i<5)scanf("%lf",&a[i++]);

D)while(i<5)scanf("%lf",a+i);

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

main()

{ charss[16]="test\0\n\"";

printf("%d,%d\n",strlen(ss),sizeof(ss));

}

A)4,16

B)7,7

C)16,16

D)4,7

8.以下说法正确的是()

A)宏定义是C语句,所以要在行末加分号

B)可以使用#undef命令来终止宏定义的作用域

C)在进行宏定义时,宏定义不能层层置换

D)对程序中用双引号括起来的字符串内的字符,与宏名相同的要进行置换

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

#include

main()

{struct stru{int a,b;

char c[6];

};

printf("%d\n",sizeof(stru));

}

A)2

B)4

C)8

D)10

10.若有如下定义:

int s[3];

则下面表达式中不能代表数组元素s[1]的地址的是()

A)&s[1]

B)&s[0]+1

C)s+1

D)s++

答案:1.D 2.B 3.C 4.C 5.D 6.C 7.A 8.B 9.D 10.D

二级(C语言程序设计)上机题汇总

二级(C语言程序设计)上机题汇总 一、程序调试题 (一)程序填空 练习一: /*该程序功能:对x=1,2,。。。。。,10,f(x)=x*x*-5*x+sin(x)的最大值。*/ #include #include #define f(x) x*x-5*x+sin(x) void main() { int x; float max; ____ max=f(1);____ for(x=2;x<=10;x++) ___if( max void swap(__int *pa, int *pb____) { /*交换两个数的位置*/ int temp; temp = *pa; *pa = *pb; *pb = temp; } void main() { int a,b,c,temp; scanf("%d%d%d",&a,&b,&c); if(a>b) swap(&a,&b); if(b>c) swap(&b,&c); if(__a>b___) swap(&a,&b); printf("%d,%d,%d",a,b,c); } 练习三: /*该程序功能:将输入的十进制正整数n通过函数Dec2Bin转换为二进制数,并将转换结果输出。*/ #include

void Dec2Bin(int m) { int bin[32],j; for(j=0;m!=0;j++) { bin[j]= __m%2___; m=m/2; } for(;j!=0;j--) printf("%d", ____bin[j-1]_ _____ ); } void main() { int n; scanf("%d",&n); Dec2Bin(n); } 练习四: /*该程序功能:输入数组x[7],调用函数f,去除数组中的负数,输出结果为:1 3 4 6*/ #include void f(int *a,int *m) { int i,j; for(i=0;i<*m;i++) if(a[i]<0) { for(j=i--;j<*m-1;j++) a[j]=a[j+1]; ___*m=*m-1;___ } } void main() { int i,n=7,x[7]={1,-2,3,4,-5,6,-7}; _ f(x,&n);_____ for(i=0;i void main() { int i,j,s; for(i=6;i<=1000;i++) { ___s=1;___

C语言上机试题

1:第1题m个人的成绩存放在score数组中,请编写函数fun,它的功能就是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。 2:第2题请编写函数fun,它的功能就是:求出1到100之内能北7或者11整除,但不能同时北7与11整除的所有证书,并将她们放在a所指的数组中,通过n返回这些数的个数。 3:第3题请编写函数void fun(int x,int pp[],int *n),它的功能就是:求出能整除x且不就是偶 数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。 4:第4题请编写一个函数void fun(char *tt,int pp[]),统计在tt字符中"a"至U "z"26各字母各自出现的次数,并依次放在pp所指的数组中。 5:第5题请编写一个函数void fun(int m,int k,int xx[]),该函数的功能就是:将大于整数m且 紧靠m的k各素数存入xx所指的数组中。 6:第6题请编写一个函数void fun(char a[],char[],int n),其功能就是:删除以各字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。 7:第7题请编写一个函数int fun(int *s,int t,int *k),用来求除数组的最大元素在数组中的下 标并存放在k所指的储存单元中。 8:第8题编写函数fun,功能就是:根据以下攻势计算s,计算结果作为函数值返回『通过形参 传入。S=1 + 1/(1+2)+1/(1+2+3)+ ??…、+1/(1+2+3+4+ ??…+n) 9:第9题编写一个函数fun,它的功能就是:根据以下公式求p的值,结果由函数值带回。M 与n为两个正整数,且要求m>n。p=m!/n!(m-n)! 10:第10题编写函数fun,它的功能就是:利用以下的简单迭代方法求方程cos(x)-x=0的一个 实根。 迭代步骤如下:(1)取x1初值为0、0;⑵x0=x1,把x1的值赋各x0; (3) x1=cos(x0),求出一个新的x1; (4) 若x0-x1的绝对值小于0、000001,则执行步骤(5),否则执行步骤(2); (5) 所求x1就就是方程cos(x)-x=0的一个实根,作为函数值返回。 程序将输出root=0、739085。 11:第11题下列程序定义了nx n的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][n]),该函数的功能就是:使数组左下半三角元素中的值全部置成0。 12:第12题下列程序定义了n x n的二维数组,并在主函数中赋值。请编写函数fun,函数的 功能使求出数组周边元素的平均值并作为函数值返回给主函数中的s。 13:第13题请编写一个函数void fun(int tt[m][n],int pp[n]),tt 指向一个m行n列的二维函数组,求出二维函数组每列中最小元素,并依次放入pp所指定一维数组中。二维数组中的数已在主函数中赋予。 14:第14题请别写函数fun,函数的功能使求出二维数组周边元素之与,作为函数值返回。二 维数组中的值在主函数中赋予。 15:第15题请编写一个函数unsigned fun(unsigned w),w 使一个大于10的无符号整数,若w 使n(n>2)位的整数,则函数求出w后n-1位的数作为函数值返回。 16:第16题请编写一个函数float fun(double h),函数的功能使对变量h中的值保留2位小树, 并对第三位进行四舍五入(规定h中的值位正数)。 17:第17题请编写一个函数fun(char *s),该函数的功能使把字符串中的内容拟置。 18:第18题编写程序,实现矩阵(3行3列)的转置(即行列互换)。 19:第19题编写函数fun,该函数的功能就是:从字符中删除指定的字符,同一字母的大、小写按不同字符处理。20:第20题编写函数int fun(int lim,int aa[max]),该函数的功能就是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求的素数的个数。 21:第21题请编写函数fun,对长度位7个字符的字符串,除首尾字符外,将其余5个字符按ascii码降序排列。

C语言程序实例

#include void main (int argc,char *argv[] ) { int x[5] = { 2,3,1,4,6 }; int i; for (i = 0; i < 5; i++) { printf("%d\n", 2 * x[i]); } } 一维数组的遍历: #include void main(int argc, char *argv[]) { int x[5] = { 1,2,3,4,5 }; int i = 0; for (i = 0; i < 5; i++) { printf("x[%d]:%d\n", i, x[i]); } } 一维数组的最值: #include int main(int argc, char* argv[]) { int x[5] = { 1,2,3,4,5 }; int nMax = x[0]; int i = 0; for (i = 1; i < 5; i++) { if (x[i] > nMax) { nMax = x[i]; } } printf("max:%d\n", nMax); return 0; }

#include void main(int argc, char ** argv[]) { int arr[5] = { 9, 8, 3, 5, 2 }; int temp = 0; int i, j; printf("冒泡排序前: \n"); for (i = 0; i < 5; i++) { printf("%d ", arr[i]); } printf(" \n"); for (i = 0; i < 5-1; i++) { for (j = 0; j < 5 - 1 - i; j++) { if (arr[j] > arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } printf("冒泡排序后: \n"); for (i = 0; i < 5; i++) { printf("%d ", arr[i]); } printf("\n"); } 二维数组的遍历 #include void main() { //声明并初始化数组 int array[3][4] = { {1,2,3,4,},{5,6,7,8,},{9,10,11,12} }; for (int i = 0; i < 3; i++)//循环遍历行 {

历年二级C语言笔试真题及答案

1 2009年9月全国计算机等级考试二级笔试 试卷 1)下列数据结构中,属于非线性结构的是 A )循环队列 B) 带链队列 C) 二叉树 D )带链栈 2)下列数据结果中,能够按照“先进后出”原则存取数据的是 A) 循环队列 B) 栈 C)队列 D)二叉树 3)对于循环队列,下列叙述中正确的是 A )队头指针是固定不变的 B )队头指针一定大于队尾指针 C )队头指针一定小于队尾指针 D )队头指针可以大于队尾指针,也可以小于队尾指针 4)算法的空间复杂度是指 A )算法在执行过程中所需要的计算机存储空间 B )算法所处理的数据量 C )算法程序中的语句或指令条数 D )算法在执行过程中所需要的临时工作单元数 5)软件设计中划分模块的一个准则是 A) 低内聚低耦合 B) 高内聚低耦合 C) 低内聚高耦合 D) 高内聚高耦合 6)下列选项中不属于结构化程序设计原则的是 A) 可封装 B) 自顶向下 C) 模块化 D) 逐步求精 7)软件详细设计产生的图如下: 该图是 A) N-S 图 B) PAD 图 C) 程序流程图 D) E-R 图 8)数据库管理系统是 A )操作系统的一部分B) 在操作系统支持下的系统软件C) 一种编译系统 D) 一种操作系统 9)在E-R 图中,用来表示实体联系的图形是 A) 椭圆图B) 矩形C) 菱形D) 三角形 10)有三个关系R ,S 和T 如下: 其中关系T 由关系R 和S 通过某种操作得到,该操作为 A) 选择 B) 投影 C) 交 D) 并 11)以下叙述中正确的是 A )程序设计的任务就是编写程序代码并上机 B )程序设计的任务就是确定所用数据结 构 C )程序设计的任务就是确定所用算法 D )以上三种说法都不完整 12)以下选项中,能用作用户标识符的是 A )void B )8_8 C )_0_ D )unsigned 13)阅读以下程序 #include main() { int case; float printF; printf(“请输入2个数:”); scanf(“%d %f”,&case,&pjrintF); printf(“%d %f \n”,case,printF); } 该程序编译时产生错误,其出错原因是 A )定义语句出错,case 是关键字,不能 用作用户自定义标识符B )定义语句出错,printF 不能用作用户自定义标识符 C )定义语句无错,scanf 不能作为输入函 数使用 D )定义语句无错,printf 不能输出case 的值 14)表达式:(int)((double)9/2)-(9)%2的值是 A )0 B )3 C )4 D )5 15)若有定义语句:int x=10;,则表达式 x-=x+x 的值为 A )-20 B )-10 C )0 D )10 16)有以下程序 #include main() { int a=1,b=0; printf(“%d,”,b=a+b); printf(“%d \n”,a=2*b); } 程序运行后的输出结果是 A )0,0 B )1,0 C )3,2 D )1,2 17)设有定义:int a=1,b=2,c=3;,以下语 句中执行效果与其它三个不同的是 A )if(a>b) c=a,a=b,b=c; B )if(a>b) {c=a,a=b,b=c;} C ) if(a>b) c=a;a=b;b=c; D ) if(a>b) {c=a;a=b;b =c;} 18)有以下程序 #include main() { int c=0,k; for (k=1;k<3;k++) switch (k) {default: c+=k case 2: c++;break; case 4: c+=2;break; } printf(“%d \n”,c); } 程序运行后的输出结果是 A )3 B )5 C )7 D )9 19)以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是 A )if((a>b)&&(b>c)) k=1;else k=0; B )if((a>b)||(b>c) k=1;else k=0; C )if(a<=b) k=0;else if(b<=c) k=1; D )if(a>b) k=1;else if(b>c) k=1; else k=0; 20)有以下程序 #include main() { char s[]={“012xy”};int i,n=0; for(i=0;s[i]!=0;i++) if(s[i]>=?a?&&s[i]<=?z?) n++; printf(“%d \n”,n); } 程序运行后的输出结果是 A )0 B )2 C )3 D )5 21)有以下程序 #include main() { int n=2,k=0; while(k++&&n++>2); printf(“%d %d \n”,k,n); } 程序运行后的输出结果是 A )0 2 B )1 3 C )5 7 D )1 2 22)有以下定义语句,编译时会出现编译错误的是 A )char a=?a? B )char a=?\n?; C )char a=?aa?; D )char a=?\x2d?; 23)有以下程序 #include main() { char c1,c2; c1=?A?+?8?-…4?; c2=?A?+?8?-…5?; printf(“%c,%d \n”,c1,c2); } 已知字母A 的ASCII 码为65,程序运行后的输出结果是

c语言上机实验实验七

实验七 (2018-12-03~2018-12-05) 一、实验名称: 指针。 二、实验目的 (1)通过实验进一步掌握指针的概念,会定义和使用指针变量; (2)能正确使用数组的指针和指向数组的指针变量; (3)能正确使用字符串的指针和指向字符串的指针变量; (4)了解指向指针的指针的概念及使用方法。 三、实验项目(必做题) 本次实验要求同学们事先在纸介质上编好解决下面问题的源程序,然后才允许进实验室上机调试。 以下均用指针方法编程: (1)下面程序的功能是:用选择法排序,将输入的数按由小到大的次序排列。先仔细阅读程序及注释,然后根据题意填空。 main() { int i,j,k,t,*p; int a[10]; for(i=0;i<10;i++) scanf("%d",&a[i]); /*输入数据*/ p=a; /*指针p指向数组a*/ for(i=0;i<9;i++) { k=i; /*变量k中存放最终需要交换的元素的位置*/ for(j=i+1;j<10;j++) if( ________ ) k=j; /*有更小的元素值时更新k的指向*/ if(k!=i) /*当k被更新后就需要交换数据*/ { t=*(p+k); *(p+k)=*(p+i); ______________; } for(p=a;p

(2)以下程序的功能是:用函数实现a, b两个整数的交换。程序的部分语句如下,请先仔细读程序及注释,然后在此基础上写出完整的程序(缺少的语句可直接写在预留的空白处),并对新写的语句加上注释,最后上机调试通过。 main() { int a,b,*pa,*pb; scanf("%d%d",&a,&b); pa=&a; /*指针pa指向整数a*/ pb=&b; /*指针pb指向整数b*/ printf("a=%d,b=%d\n",a,b); swap(pa,pb); /*调用函数swap,实参为指针*/ printf("a=%d,b=%d\n",a,b); } swap(p1,p2) /*定义函数swap,完成交换功能*/ int *p1, *p2; /*形参说明*/ … (3)调试下列程序,使之具有如下功能:任意输入2个数,调用两个函数分别求: ⑴2个数的和, ⑵2个数交换值。 要求用函数指针调用这两个函数,结果在主函数中输出。 main() { int a,b,c,(*p)(); scanf("%d,%d",&a,&b); p=sum; *p(a,b,c); p=swap; *p(a,b); printf("sum=%d\n",c); printf("a=%d,b=%d\n",a,b); } sum(int a,int b,int c) { c=a+b; } swap(int a;int b) { int t; t=a; a=b; b=t; } 调试程序时注意参数传递的是数值还是地址。 (4) 在主函数中任意输入10个数存入一个数组,然后按照从小到大的顺序输出这10个数, 要求:数组中元素按照输入时的顺序不能改变位置。

二级C语言上机操作指南

上机考试系统的使用 (适合新大纲规定的VC++6.0环境下二级C、三级C、一级等科目的上机考试) 下面我们开始本篇文章(本文适合全国计算机等级考试二级C、三级的上机):最新大纲全国计算机等级考试上机考试系统工作站的运行平台是Microsoft的中文版Windows XP操作系统。测试考生对Windows XP操作系统的一般理解及考生在Windows XP下的微机操作能力和各种应用软件的应用能力。使用方法如下: 1.启动考试程序,出现如下图所示的登录界面 2.在“开始登录”功能项上单击鼠标左键或按回车键出现考号输入窗口,如下图 所示:

3.按回车或选择“考号验证”对输入的考号以及姓名、身份证号进行验证。如下图所示: 4.如果考号不正确选择“否(N)”重新输入;如果考号正确选择“是(Y)”继续。 5.经“登陆提示”选择“是”确认后会再出现一个窗口,从略,选择“抽取试题”后,系统出现如下图所示的“考试须知”。(二级C、和三级C语言上机都是类似的形式) 6.选择“开始考试并计时”,进入考试界面,就可以看题、做题,并开始计时,如下图所示。上机考试系统将自动在屏幕中间生成装载试题内容查阅工具的考试窗口,并在屏幕顶部始终显示着考生的准考证号、姓名、考试剩余时间以及可以随时显示或隐藏试题内容查阅工具和

交卷按钮的窗口,窗口最左边的“显示窗口”字符表示屏幕中间的考试窗口正被隐藏着,当用鼠标点击“显示窗口”字符时,屏幕中间就会显示考试窗口,且“显示窗口”字符变成“隐藏窗口”。 在考试窗口中单击“程序填空题”、“程序修改题”和“程序设计题”按钮,可以分别查看各个题型的题目要求。如下图所示 7.开始做题,编译、连接和运行程序。 当考试系统登录成功后,考生在试题内容查阅窗口的“考试项目”(也叫“答题”)菜单上根据试题内容的要求选择“启动Microsoft Visual C++”(如果点击“启动Microsoft Visual C++”后不能正确启动Visual C++,我们也可以选择手动启动VC6.0,例如从桌面快捷方式或从程序组开始菜单等其他方式启动Visual C++,这对我们做题完全没有任何影响), 注意:“考试项目”(也叫“答题”)菜单下面出现的按钮可能有两种形式:一种是我们上面提到的出现“启动Microsoft Visual C++”按钮,还有第二种可能是出现“BLANK1.C”、“MODI1.C”、“PROG1.C”这几个按钮,如果是第一种形式(出现“启动Microsoft Visual C++”按钮)的话,直接点击““启动Microsoft Visual C++”按钮后按本文后面描述的方法打开相应题目源程序即可,本文主要讲解的是这种方式,如果是第二种形式(出现“BLANK1.C”、“MODI1.C”、“PROG1.C”这几个按钮)那就更简单了,点击“BLANK1.C”即可自动启动Visual C++6.0并自动打开程序填空题,此后的操作和第一种形式就没有区别了,做完并运行正确并保存后,关闭VC++6.0,然后继续按相同的方法做“MODI1.C”、“PROG1.C”即可。打开源程序后的操作和第一种形式就没有任何区别了。 启动Visual C++后,我们再根据“程序填空题”(BLANK1.C)、“程序修改题”(MODI1.C)和“程序设计题”(PROG1.C)内容的要求进行操作。我们以“程序填空题”为例。如下图所示,我们可从VC6.0主菜单File(文件)->Open(打开)方式打开程序填空题源程序BLANK1.C。

C语言上机考试题

考试时间120分钟题目中所有要求统计或输出的地方都要用printf函数输出相关内容要求:新建一个以自己中文姓名命名的文件夹,将如下题目的答案保存在该文件夹中,各题命名要求Exam1.c,Exam2.c,Exam3.c,Exam4.c,Exam5.c 只需提交每个题目的源文件 1.定义一个字符数组s[50],从键盘输入如下字符串给s数组中,统计其中数字字符的个数和英文字母的个数以及特殊字符的个数。(要求:输入的字符为:“123ABCDhijkop#&%*&!”)(本题5分) 输入功能,3个统计 2.从键盘输入10个元素给数组a,然后将这些元素逆向复制到数组b中(要求:输入的这10个数为:1,2,3,4,5,6,7,8,9,10)。(本题5分) 输入,逆序2个功能,错一个扣2分 3.使用循环嵌套,打印输出如下图形结果(提示使用两次循环嵌套)。 (本题5分) 没有中文后面扣1分 实现一半扣2分 4.从键盘上输入一个字符,如果是’M’,输出Mondey,’T’输出Tuesday,’W’输出Wednesday,’R’输出Tursday,’F’输出Friday,’S’输出Saturday,’U’输出Sunday,否则输出Error(本题5分)输入字符,switch语句,细节有错扣0.5 5.从键盘上输入10个学生的数学成绩,使用冒泡排序实现对成绩的排序功能(排序后的成绩按从低到高排列,效果如下), 输出排序后的学生成绩,输出最高成绩,输出最低成绩,将55-60之间的成绩(含55,不含60)修改为60,并统计被修改的成绩个数,统计及格人数,统计95(含95,优秀)分以上的学生成绩人数,输出及格率和优秀率(>=60,及格,>=95优秀)。(要求:输入的10个

c语言上机实验实验八

实验八 (2018-12-12~2018-12-17) 一、实验名称: 结构体 二、实验目的: (1)掌握结构体类型的定义和使用; (2)掌握结构体类型变量的概念和使用; (3)掌握链表的概念,初步学会对链表进行操作; (4)进一步熟悉Visual C++6.0开发环境下调试程序的基本步骤。 三、实验项目(必做题) 本次实验要求同学们事先在纸介质上编好解决下面问题的源程序,然后才允许进实验室上机调试。 (1)利用顺序表实现“先进后出”的堆栈 提示:定义结构体struct来定义堆栈;采用动态数组实现顺序表;定义函数实现堆栈中元素的压入和弹出,保证“先进后出”的实现 // 结构体Stack struct Stack{ int * List; // 用来存储元素的顺序表 int curNumber; // 用来存储当前元素的总个数 }; void iniStack(Stack * A); // 初始化堆栈 void clearStack(Stack * A); //清空堆栈 void push(Stack * A, ELEMENT obj); //将元素obj压入堆栈的栈顶 void pop(Stack * A); //将当前栈顶的元素弹出栈。要求:栈不为空 ELEMENT get_top(Stack * A); //返回当前栈顶的元素值。要求:栈不为空 int is_empty(Stack * A); //判断当前堆栈是否为空,空返回1,非空返回0 void display(Stack * A); //自顶向下显示堆栈中的元素 测试实例: 向堆栈中压入:1 2 3 4 弹出次序应为:4 3 2 1

计算机二级C语言上机考试操作步骤

二级C语言上机考试操作步骤 一、进入考试系统 单击桌面上的“考试系统”图标,进入考试启动界面。“考试启动界面”如图1所示。 图1 二、输入考生信息 进入考试界面后,单击“开始登录”按钮即可进入考试环境进行“考生信息”的输入。“信息输入”如图2所示。 图2 考生输入准考证号如“2427180018001800”后,单击“考号验证”按钮进行信息核实,系统会弹出如图3所示的对话框。 图3 在确定考生信息完全正确时,单击“是”按钮,进入答题界面,如下图所示,上方含有“程序填空题”、“程序修改题”、“程序设计题”三个按钮,

三、开始答题 本次考试共有50套题,每一套题的填空、改错和编程题的答案均附在后面。学生进入上述考试界面后,首先点击程序设计题,根据程序设计题从而明白是哪一套题的组合,然后开始正式答题。过程如下: 1.程序填空题 单击考试界面中的“程序填空题”按钮后,题目显示区将显示出题目对应的文字叙述信息。通过文字叙述可以了解到该题目的考试内容。然后单击左上角“答题”菜单中的“启动Microsoft Visual C++”菜单项进入“Visual C++ 6.0”系统环境界面,如下图所示。 进入系统环境后,执行左上角的“文件|打开”命令,系统弱出“打开”对话框,选择“blank1.c”程序文件,点击左下角的“打开”按钮,如图4所示。

图4 打开“blank1.c”程序文件后,开始填空。填空方法如下: (1)在程序中找到“******** found *******”标识位置。 (2)把“found ”标识位置下面的需要填空的“占位符”删除(需要连横线一起删除),将程序的答案写在对应位置。例如下图所示。 原“blank1.c ”程序图: 填完结果后的“blank1.c ”程序图: 打开

C语言上机试题

1: 第1题m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。 2: 第2题请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。 3: 第3题请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。 4: 第4题请编写一个函数void fun(char *tt,int pp[]),统计在tt字符中"a"到"z"26各字母各自出现的次数,并依次放在pp所指的数组中。 5: 第5题请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k各素数存入xx所指的数组中。 6: 第6题请编写一个函数void fun(char a[],char[],int n),其功能是:删除以各字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n 中存放指定的下标。 7: 第7题请编写一个函数int fun(int *s,int t,int *k),用来求除数组的最大元素在数组中的下标并存放在k所指的储存单元中。 8: 第8题编写函数fun,功能是:根据以下攻势计算s,计算结果作为函数值返回;n通过形参传入。S=1+1/(1+2)+1/(1+2+3)+…….+1/(1+2+3+4+……+n) 9: 第9题编写一个函数fun,它的功能是:根据以下公式求p的值,结果由函数值带回。M与n为两个正整数,且要求m>n。 p=m!/n!(m-n)! 10: 第10题编写函数fun,它的功能是:利用以下的简单迭代方法求方程cos(x)-x=0的一个实根。 迭代步骤如下:(1)取x1初值为0.0; (2)x0=x1,把x1的值赋各x0; (3)x1=cos(x0),求出一个新的x1; (4)若x0-x1的绝对值小于0.000001,则执行步骤(5),否则执行步骤(2); (5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。 程序将输出root=0.739085。 11: 第11题下列程序定义了n×n的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][n]),该函数的功能是:使数组左下半三角元素中的值全部置成0。 12: 第12题下列程序定义了n×n的二维数组,并在主函数中赋值。请编写函数fun,函数的功能使求出数组周边元素的平均值并作为函数值返回给主函数中的s。 13: 第13题请编写一个函数void fun(int tt[m][n],int pp[n]),tt指向一个m行n列的二维函数组,求出二维函数组每列中最小元素,并依次放入pp所指定一维数组中。二维数

C语言程序简单例子讲解学习

实验二参考答案 1.输入两个整型数字,输出他们的和。 #include main() { int a, b, sum; scanf(“%d%d ”, &a, &b); sum=a+b; printf(“a+b=%d ”, sum); } 2.输入两个实型数,输出他们的和与乘积。 #include main() { float a, b, sum, product; scanf(“%f%f ”, &a, &b); sum=a+b; product=a*b; printf(“a+b=%5.2f, a*b =%5.2f ”, sum, product); } 3.求方程02=++c bx ax 的根(设042≥-ac b )(其中a ,b ,c 的值由键盘输入)。 #include #include main() { float a, b, c, dt, x1, x2; scanf(“%f%f%f ”, &a, &b, &c); dt=sqrt(b*b-4*a*c); x1=(-b+dt)/(2*a); x2=(-b-dt)/(2*a); printf(“x1=%5.2f, x2 =%5.2f ”, x1, x2); }

4.鸡兔同笼,已知鸡兔总头数为h,总脚数为f,求鸡兔各多少只?(h和f的值由键盘输入,输出鸡和兔的头数) #include main() { int h, f, x,y; scanf(“%d%d”, &h, &f); x=2*h-f/2; y=f/2-h; printf(“x=%d, y =%d”, x, y); }

二级C语言上机编程题答题技巧

二级C语言上机编程题技巧 一、技巧的原理 首先使用这个技巧必须了解上机编程题的评分原理。以上机题的第5套编程题为例。二级C语言的上机试题是让我们自己编写某个小程序的子程序来实现题目中的功能。那么考官是怎么样来检查我们编的程序是否正确呢?根据编程题下面这段程序我们就可以看出: 在考生文件夹下存在一个名为in.dat的文件。首先以只读的方式打开in.dat文件,以只写方式打开out.dat文件,若out.dat不存在则自动新建该文件。然后使用fscanf 语句将其中的数据输入到变量a中,再将a当作实参调用我们需要编写的程序。将结果用fprintf语句输入到out.dat文件中。其中.dat为这个文件的扩展名(扩展名有可能被隐藏)。

所以考官不会直接检查我们的程序,只要检查out.dat里的数据是否正确就可以判断我们编的子程序是否正确。因此程序编写题,我们可以只通过修改out.dat里面的答案而不去编写程序就可以拿到满分。 二、使用技巧的条件 当然不是所有的编程题我们都能使用这个技巧的(不过90%的编程题都可以用这个方法)。使用这个技巧必须具备两个条件: 1、编程题是通过我上面讲的方法来检验,说白了就是我们的考生文件夹下面 含有in.dat文件。 2、编程题需要实现的功能我们编程者可以自己想出来程序完成的答案。例如 本题:

它让我们实现实型数据保留两位小数,并对第三位进行四舍五入。那么这个功能我们若知道任一个实数都可以自己计算出结果,那么我们才能将正确答案写在out.dat文件里面。若某程序让你编写子程序实现求取圆周率并精确到小数点后10位这个功能,那么我们就无法背出那么长的数字,因此也没有办法知道结果。那么这种技巧就不能使用。 三、步骤 确定了这个技巧可以使用后,我们就可以开始操作了。一般分为以下几步: 1、建立out.dat文件 上面可以看到我们的考生文件夹中是没有out.dat这个文件的。所以我们需要自己新建。最好的方法就是打开编程题直接编译、链接、执行。这样将程序执行一遍后我们的考生文件夹里就自动生成了我们需要的out.dat文件。(注意:这里生成了out.dat 文件后就不要再运行我们的程序了,因为每运行一次程序就会将程序生成的答案写入out.dat文件中,这样即算我们改成了正确答案,你如果再次运行程序,就会将我们修改的正确结果覆盖掉。) 2、修改答案

北理c语言上机答案(全)

1 Hello world 让我们用C语言向世界问好。 最早的程序基本是这个样子的: 程序一: #include <> void main() { printf("Hello world.\n"); } 程序二: #include <> int main() { printf("Hello world.\n"); return 0; } 上面的程序你任意模仿一个,看看是否可以通过如果你能通过这个简单的程序,那就让我们继续完成后面的习题吧。 输入:无 输出:Hello world. 程序实例1: #include<> void main() { printf("Hello world.\n");

} 结果: Hello world. 程序实例2: #include <> int main() { printf("Hello world.\n"); return 0; } 结果: Hello world. 1. Welcome to Beijing. 让我们来练习如何显示多行文字。 输入:无 输出:就是下面的那段文字。 程序实例1: #include"" int main() { printf("Welcome\n"); printf("to\n"); printf("Beijing.\n"); return 0; }

Welcome to Beijing. 程序实例2: #include<> void main() {printf("Welcome\nto\nBeijing.\n"); } 结果: Welcome to Beijing. 1练习最简单的printf和scanf printf函数和scanf函数是C语言中最常用的函数之一,下面让我们练习一下吧。输入:整型变量x的值。 输出:输出整型变量x对应的十进制、八进制和十六进制形式。 认真看看-1的八进制和十六进制输出,请想想是为什么。 程序实例1: #include"" main() {int x; scanf("%d",&x); printf("x=%d,x=%o,x=%x\n",x,x,x); }

计算机二级C语言编程题库(100题)

2011,____年上机题100题库 1: 第1题m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。 答案: int fun(int score[],int m,int below[]) { int i,k=0,aver=0; for(i=0;i<m;i++) aver+=score[i]; aver/=m; for(i=0;i<m;i++) if(score[i]<aver) { below[k]=score[i]; k++; } return k; } 2: 第2题请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。

答案: void fun(int *a, int *n) { int i,j=0; for(i=2;i<1000;i++) if ((i%7==0 || i%11==0) && i%77!=0) a[j++]=i; *n=j; } 3: 第3题请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。 答案: void fun(int x, int pp[ ], int *n) { int i=1,j=0;k=0,*t=pp; for(i=0;i<=x;i++) if(i%2!=0) { t[j]=I; j++; }

C语言程序设计实验-答案

-前言- /*非常感谢度娘以及各位网上C语言高手的支持,才能让敝人完成此文档的整理。 本文档集合了本人、度娘、众网友的力量,其中代码的正确率约为90%(不正确的有标注)。为回报度娘及众网友的帮助,本文档免费下载。 */ /*配“电子科技大学出版社(周信东主编)”的C语言程序设计实验*/ /*努力吧,骚年以及学妹们!*/ /*整理ed by 口玉刀一of GUET.*/ ===================== 实验一C语言程序初步 ===================== 1.---------------------------- 已知a=5,b=4,c=6,求出s并换行 #include"stdio.h" main() { int a,b,c,s; a=5;b=4;c=6; s=(a+b+c)/3; printf("a=%d,b=%d,c=%d\n,s=%d",a,b,c,s); } 2.------------------------------- 输入一个数字求他的平方 #include main() { int r,s; scanf("%d",&r); s=r*r; printf("s=%d\n",s); } 3.-------------------------------- (1) #include main() { printf(" *\n"); printf("***\n"); printf(" *\n"); } (2) #include

{ int v; int a,b,c; //a,b,c aer sides,v is volume of cube a=3;b=3;c=5; v=a*b*c; printf("v=%d\n",v); } ================================= 实验二数据类型、运算符和表达式 ================================= 1. (1)-------------------------------------------------- //总觉得打印结果怪怪的,DO YOU THINK SO? main() { char s1='3',s2='4',s3='5'; int c1=101,c2=102; printf("3%c\t4%c\t5%c\n",s1,s2,s3); //3%c为输出3和%c printf("s1=%d\ts2=%d\ts3=%d\n",s1,s2,s3);//注意哦,s1,s2,s3是char!而%d:输入输出为整形%ld 长整型%hd 短整型%hu无符号整形%u %lu%s:输入输出为字符串%c字符%f:输入输出为浮点型%lf双精度浮点型printf("c1=%d\t~%c\n",c1,c1); //换码符'\t',表示水平制表位(horizeontal tab),它的作用是将光标移到最接近8的倍数的位置 printf("c2=%d\t~%c\n",c2,c2); //注意c1,c2的类型 } (2) //运行结果为8.300000 %是求余数先运算x-y,把结果转换为int型的有利于四则运算 main() { float x=8.3,y=4.2,s; int a=7; s=x+a%5*(int)(x-y)%2/3; printf("s=%f",s); }

计算机二级C语言上机题库复习小抄(最新校正,精美排版)

计算机二级C语言上机题库复习小抄 (最新校正,精美排版) 第一套 1.程序填空 程序通过定义学生结构体数组,存储了若干个学生的学号、姓名和三门课的成绩。函数fun 的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大排序)。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 第一处struct student t; 第二处for(i=0;i0) 2程序修改 给定程序MODI1.C中函数fun的功能是:在p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向上顺序移动。 /**found**/ q=p+i; /**found**/ while(q>p) 3程序设计 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写了函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。 int fun(STREC *a,STREC *b,int l,int h) {int i,j=0; for(i=0;i=1&&a[i].s<=h) b[j++]=a[i]; return j; } 第二套 1.程序填空 给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序连接。函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。 第一处free(q); 第二处q=p->next; 第三处q=q->next; 2. 程序修改 给定程序MODI1.C中函数fun的功能是:用选择法对数组中的n各元素按从小到大的顺序进行排序。 /**found**/ p=j; /**found**/ p=i; 3. 程序设计 请编写一个fun函数,它的功能是:求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。 void fun(int m,int *a,int *n) { int i; *n=0; for(i=7;i<=m;i++) if((i%7==0)||(i%11==0)) a[(*n)++]=i; } 第三套 1. 程序填空 函数fun的功能是:逆置数组元素是的值。例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、1。形参n给出数组中数组中数据的个数。 第一处for(i=0;idata==ch)return n; 第三处k=fun(head,ch); 2. 程序修改 给定程序MODI1.C中函数fun的功能是:删除p所指字符串的所有空白字符(包括制表符、回车符及换行符)。输入字符串时用‘#’结束输入。 /**found**/ for(i=0,t=0;p[i];i++) /**found**/ c[t]=?\0?; 3. 程序设计 请编写一个函数fun,将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。 void fun(char *ss) { int i; for(i=1;i=?a?&&ss[i]<=?z?) ss[i]-=32; } } 第五套 1. 程序填空 给定程序中,函数fun的功能是:计算下式前n项的和作为函数值返回。例如:当形参n的值为10 的时,函数返回:9.6125588。 第一处s=0; 第二处for(i=1;i<=n;i++) 第三处s=s+(2.0*i-1)*(2.0*i+1)/(t*t); 2. 程序修改 给定程序MODI1.C中函数fun的功能是:统计substr所指字符串在str所指字符串中出现伯次数。 /**found**/ for(i=0;str[i];i++) /**found**/ if(substr[k+1]==?\0?) 3. 程序设计 请编写一个函数fun,它的功能是:根据以下公式求JI的值(要求满足精度0.0005,即某项小于0.0005时停止送代):程序运行后,如果输入精度为0.0005,则程序输出为 3.14…。 double fun(double eps) { double s=1,t=1./3; int n=1; while(t>=eps) {s+=t;n++;t=t*n/(2.0*n+1) ;} return(s*2.0); } 第六套 1. 程序填空 给定程序中,函数fun的功能是:将形参s所指定字符串中所有的字母字符顺序前移,其他字母顺序后移,处理后字符串的首地址作为函数值返回。 第一处t[j]=s[i];j++; 第二处for(i=0;iscore[i]+=1; 第三处return a; 2. 程序修改 给定程序MODI1.C中函数fun的功能是:从N个字符串中找出最长的那个串,并将其地址作为函数值返回。各字符串在主函数中输入,并放在一个字符串数组中。 /**found**/ char *fun(char (*sq)[M]) /**found**/ return sp; 1

相关文档
相关文档 最新文档