2013年3月计算机二级C语言上机题库

更新时间:2023-05-15 18:44:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

2013年3月计算机二级C语言上机题库

第01套:

给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去

除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回 所指变量。

例如,输入一个数:27638496,新的数:为739。

请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结

果。

注意:源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

给定源程序:

#include <stdio.h>

void fun(unsigned long *n)

{ unsigned long x=0, i; int t;

i=1;

while(*n)

/**********found**********/

{ t=*n % __1__;

/**********found**********/

if(t%2!= __2__)

{ x=x+t*i; i=i*10; }

*n =*n /10;

}

/**********found**********/

*n=__3__;

}

main()

{ unsigned long n=-1;

while(n>99999999||n<0)

{ printf("Please input(0<n<100000000): "); scanf("%ld",&n); }

fun(&n);

printf("\nThe result is: %ld\n",n);

}

解题思路:

第一处:t是通过取模的方式来得到*n的个位数字,所以应填:10。

第二处:判断是否是奇数,所以应填:0。

第三处:最后通形参n来返回新数x,所以应填:x。

***************************************************

给定程序MODI1.C中函数 fun 的功能是:计算n!。

例如,给n输入5,则输出120.000000。

请改正程序中的错误,使程序能输出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

2013年3月计算机二级C语言上机题库

给定源程序:

#include <stdio.h>

double fun ( int n )

{ double result = 1.0 ;

/************found************/

if n = = 0

return 1.0 ;

while( n >1 && n < 170 )

/************found************/

result *= n--

return result ;

}

main ( )

{ int n ;

printf("Input N:") ;

scanf("%d", &n) ;

printf("\n\n%d! =%lf\n\n", n, fun(n)) ;

}

解题思路:

第一处:条件语句书写格式错误,应改为:if (n==0)。

第二处:语句后缺少分号。

***************************************************

请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得

调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串"-1234",则 函数把它转换为整数值 -1234。函数fun中给出的语句仅供参考。

注意: 部分源程序存在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填

入你编写的若干语句。

给定源程序:

#include <stdio.h>

#include <string.h>

long fun ( char *p)

{

/* 以下代码仅供参考 */

int i, len, t; /* len为串长,t为正负标识 */

long x=0;

len=strlen(p);

if(p[0]=='-')

2013年3月计算机二级C语言上机题库

else t=1;

/* 以下完成数字字符串转换为一个数字 */

return x*t;

}

main() /* 主函数 */

{ char s[6];

long n;

printf("Enter a string:\n") ;

gets(s);

n = fun(s);

printf("%ld\n",n);

NONO ( );

}

NONO ( )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。

FILE *fp, *wf ;

int i ;

char s[20] ;

long n ;

fp = fopen("c:\\test\\in.dat","r") ;

wf = fopen("c:\\test\\out.dat","w") ;

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

fscanf(fp, "%s", s) ;

n = fun(s);

fprintf(wf, "%ld\n", n) ;

}

fclose(fp) ;

fclose(wf) ;

}

解题思路:

本题是将一个数字字符串转换为一个整数。

参考答案:

#include <stdio.h>

#include <string.h>

long fun ( char *p)

{

/* 以下代码仅供参考 */

int i, len, t; /* len为串长,t为正负标识 */

long x=0;

len=strlen(p);

if(p[0]=='-') */

2013年3月计算机二级C语言上机题库

else t=1;

/* 以下完成数字字符串转换为一个数字 */

while(*p) x = x*10-48+(*p++);

return x*t;

}

main() /* 主函数 */

{ char s[6];

long n;

printf("Enter a string:\n") ;

gets(s);

n = fun(s);

printf("%ld\n",n);

NONO ( );

}

NONO ( )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */

FILE *fp, *wf ;

int i ;

char s[20] ;

long n ;

fp = fopen("c:\\test\\in.dat","r") ;

wf = fopen("c:\\test\\out.dat","w") ;

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

fscanf(fp, "%s", s) ;

n = fun(s);

fprintf(wf, "%ld\n", n) ;

}

fclose(fp) ;

fclose(wf) ;

}

注意:由于NONO( )这个函数是改卷人用的,与考生没有什么关系,故下面从第2套试题开始均省略NONO( )

※※※※※※※※※※※※※※※※※※※※※※※※※

第02套:

给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本

文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。

2013年3月计算机二级C语言上机题库

请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结

果。

注意:源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

给定源程序:

#include <stdio.h>

void fun(char *s, int a, double f)

{

/**********found**********/

__1__ fp;

char ch;

fp = fopen("file1.txt", "w");

fprintf(fp, "%s %d %f\n", s, a, f);

fclose(fp);

fp = fopen("file1.txt", "r");

printf("\nThe result :\n\n");

ch = fgetc(fp);

/**********found**********/

while (!feof(__2__)) {

/**********found**********/

putchar(__3__); ch = fgetc(fp); }

putchar('\n');

fclose(fp);

}

main()

{ char a[10]="Hello!"; int b=12345;

double c= 98.76;

fun(a,b,c);

}

解题思路:

本题是考察先把给定的数据写入到文本文件中,再从该文件读出并显示在屏幕上。 第一处:定义文本文件类型变量,所以应填:FILE *。

第二处:判断文件是否结束,所以应填:fp。

第三处:显示读出的字符,所以应填:ch。

***************************************************

给定程序MODI1.C中函数fun的功能是: 依次取出字符串中所有数字字符, 形

成新的字符串, 并取代原字符串。

请改正函数fun中指定部位的错误, 使它能得出正确的结果。

注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构!

给定源程序:

2013年3月计算机二级C语言上机题库

#include <stdio.h>

void fun(char *s)

{ int i,j;

for(i=0,j=0; s[i]!='\0'; i++)

if(s[i]>='0' && s[i]<='9')

/**********found**********/

s[j]=s[i];

/**********found**********/

s[j]="\0";

}

main()

{ char item[80];

printf("\nEnter a string : ");gets(item);

printf("\n\nThe string is : \"%s\"\n",item);

fun(item);

printf("\n\nThe string of changing is : \"%s\"\n",item );

}

解题思路:

第一处: 要求是取出原字符串中所有数字字符组成一个新的字符串,程序中是使用变量j 来控制新字符串的位置,所以应改为:s[j++]=s[i];。

第二处: 置新字符串的结束符,所以应改为:s[j]='\0';.

***************************************************

请编写函数fun, 函数的功能是: 将M行N列的二维数组中的字符数据, 按列的

顺序依次放到一个字符串中。

例如, 二维数组中的数据为:

W W W W

S S S S

H H H H

则字符串中的内容应是: WSHWSHWSH。

注意:部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入

你编写的若干语句。

给定源程序:

#include <stdio.h>

#define M 3

#define N 4

void fun(char s[][N], char *b)

{

int i,j,n=0;

for(i=0; i < N;i++) /* 请填写相应语句完成其功能 */

{

}

2013年3月计算机二级C语言上机题库

b[n]='\0';

}

main()

{ char a[100],w[M][N]={{'W','W','W','W'},{'S','S','S','S'},{'H','H','H','H'}};

int i,j;

printf("The matrix:\n");

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

{ for(j=0;j<N; j++)printf("%3c",w[i][j]);

printf("\n");

}

fun(w,a);

printf("The A string:\n");puts(a);

printf("\n\n");

NONO();

}

解题思路:

本题是把二维数组中的字符数据按列存放到一个字符串中。

1. 计算存放到一维数组中的位置。

2. 取出二维数组中的字符存放到一维数组(已计算出的位置)中。

参考答案:

void fun(char s[][N], char *b)

{

int i,j,n=0;

for(i=0; i < N;i++) /* 请填写相应语句完成其功能 */

{

for(j = 0 ; j < M ; j++) {

b[n] = s[j][i] ;

n = i * M + j + 1;

}

}

b[n]='\0';

}

※※※※※※※※※※※※※※※※※※※※※※※※※

第03套:

程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所

有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所 指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其它学 生的数据不变。

请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结

果。

2013年3月计算机二级C语言上机题库

注意:源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

给定源程序:

#include <stdio.h>

#define N 5

typedef struct student {

long sno;

char name[10];

float score[3];

} STU;

void fun(char *filename, STU n)

{ FILE *fp;

/**********found**********/

fp = fopen(__1__, "rb+");

/**********found**********/

fseek(__2__, -1L*sizeof(STU), SEEK_END);

/**********found**********/

fwrite(&n, sizeof(STU), 1, __3__);

fclose(fp);

}

main()

{ STU t[N]={ {10001,"MaChao", 91, 92, 77}, {10002,"CaoKai", 75, 60, 88},

{10003,"LiSi", 85, 70, 78}, {10004,"FangFang", 90, 82, 87},

{10005,"ZhangSan", 95, 80, 88}};

STU n={10006,"ZhaoSi", 55, 70, 68}, ss[N];

int i,j; FILE *fp;

fp = fopen("student.dat", "wb");

fwrite(t, sizeof(STU), N, fp);

fclose(fp);

fp = fopen("student.dat", "rb");

fread(ss, sizeof(STU), N, fp);

fclose(fp);

printf("\nThe original data :\n\n");

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

{ printf("\nNo: %ld Name: %-8s Scores: ",ss[j].sno, ss[j].name);

for (i=0; i<3; i++) printf("%6.2f ", ss[j].score[i]);

printf("\n");

}

fun("student.dat", n);

printf("\nThe data after modifing :\n\n");

fp = fopen("student.dat", "rb");

fread(ss, sizeof(STU), N, fp);

2013年3月计算机二级C语言上机题库

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

{ printf("\nNo: %ld Name: %-8s Scores: ",ss[j].sno, ss[j].name);

for (i=0; i<3; i++) printf("%6.2f ", ss[j].score[i]);

printf("\n");

}

}

解题思路:

本题是考察如何从文件中读出数据,再把结构中的数据写入文件中。

第一处:从指定的文件中读出数据,所以应填:filename。

第二处:读取文件fp的最后一条记录,所以应填:fp。

第三处:再把读出的记录,写入文件fp指定的位置上,所以应填:fp。

***************************************************

给定程序MODI1.C中的函数Creatlink的功能是创建带头结点的单向链表, 并

为各结点数据域赋0到m-1的值。

请改正函数Creatlink中指定部位的错误, 使它能得出正确的结果。

注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构!

给定源程序:

#include <stdio.h>

#include <stdlib.h>

typedef struct aa

{ int data;

struct aa *next;

} NODE;

NODE *Creatlink(int n, int m)

{ NODE *h=NULL, *p, *s;

int i;

/**********found***********/

p=(NODE )malloc(sizeof(NODE));

h=p;

p->next=NULL;

for(i=1; i<=n; i++)

{ s=(NODE *)malloc(sizeof(NODE));

s->data=rand()%m; s->next=p->next;

p->next=s; p=p->next;

}

/**********found***********/

return p;

}

outlink(NODE *h)

2013年3月计算机二级C语言上机题库

p=h->next;

printf("\n\nTHE LIST :\n\n HEAD ");

while(p)

{ printf("->%d ",p->data);

p=p->next;

}

printf("\n");

}

main()

{ NODE *head;

head=Creatlink(8,22);

outlink(head);

}

解题思路:

第一处: 指向刚分配的结构指针,所以应改为:p=(NODE *)malloc(sizeof(NODE));

第二处: 在动态分配内存的下一行语句是,使用临时结构指针变量h保存p指针的初始位置, 最后返回不能使用p,是因为p的位置已经发生了变化,所以应改为返回h。

***************************************************

请编写函数fun, 函数的功能是:统计一行字符串中单词的个数,作为函数值返

回。一行字符串在主函数中输入, 规定所有单词由小写字母组成,单词之间由若干 个空格隔开, 一行的开始没有空格。

注意:部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入

你编写的若干语句。

给定源程序:

#include <stdio.h>

#include <string.h>

#define N 80

int fun( char *s)

{

}

main()

{ char line[N]; int num=0;

printf("Enter a string :\n"); gets(line);

num=fun( line );

printf("The number of word is : %d\n\n",num);

NONO();

}

解题思路:

本题是统计字符串中的单词数。

2013年3月计算机二级C语言上机题库

1. 利用while循环语句和指针变量,当字符为空格时,则单词数k加1。

2. 循环结束返回k。

参考答案:

int fun( char *s)

{

int k = 1 ;

while(*s) {

if(*s == ' ') k++ ;

s++ ;

}

return k ;

}

※※※※※※※※※※※※※※※※※※※※※※※※※

第04套:

程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所

有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指 的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的 学生数据输出到filename所指的文件中,覆盖原来的文件内容。

请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结

果。

注意:源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

给定源程序:

#include <stdio.h>

#define N 5

typedef struct student {

long sno;

char name[10];

float score[3];

} STU;

void fun(char *filename)

{ FILE *fp; int i, j;

STU s[N], t;

/**********found**********/

fp = fopen(filename, __1__);

fread(s, sizeof(STU), N, fp);

fclose(fp);

for (i=0; i<N-1; i++)

for (j=i+1; j<N; j++)

/**********found**********/

if (s[i].sno __2__ s[j].sno)

{ t = s[i]; s[i] = s[j]; s[j] = t; }

2013年3月计算机二级C语言上机题库

fp = fopen(filename, "wb");

/**********found**********/

__3__(s, sizeof(STU), N, fp); /* 二进制输出 */

fclose(fp);

}

main()

{ STU t[N]={ {10005,"ZhangSan", 95, 80, 88}, {10003,"LiSi", 85, 70, 78},

{10002,"CaoKai", 75, 60, 88}, {10004,"FangFang", 90, 82, 87},

{10001,"MaChao", 91, 92, 77}}, ss[N];

int i,j; FILE *fp;

fp = fopen("student.dat", "wb");

fwrite(t, sizeof(STU), 5, fp);

fclose(fp);

printf("\n\nThe original data :\n\n");

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

{ printf("\nNo: %ld Name: %-8s Scores: ",t[j].sno, t[j].name);

for (i=0; i<3; i++) printf("%6.2f ", t[j].score[i]);

printf("\n");

}

fun("student.dat");

printf("\n\nThe data after sorting :\n\n");

fp = fopen("student.dat", "rb");

fread(ss, sizeof(STU), 5, fp);

fclose(fp);

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

{ printf("\nNo: %ld Name: %-8s Scores: ",ss[j].sno, ss[j].name);

for (i=0; i<3; i++) printf("%6.2f ", ss[j].score[i]);

printf("\n");

}

}

解题思路:

本题是考察把结构中的数据写入文件。

第一处:建立文件的类型,考虑到是把结构中的数据(结构中的数据包含不打印的字符) 从文件中读出,所以应填:"rb"。

第二处:判断当前学号是否大于刚读出的学号进行相比,如果大于,则进行交换,所以应 填:>。

第三处:把已排序的结构数据,重新写入文件,所以应填:fwrite。

***************************************************

给定程序MODI1.C中函数fun的功能是: 在字符串的最前端加入n个*号, 形成

新串, 并且覆盖原串。

2013年3月计算机二级C语言上机题库

注意: 字符串的长度最长允许为79。

请改正函数fun中指定部位的错误, 使它能得出正确的结果。

注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构!

给定源程序:

#include <stdio.h>

#include <string.h>

void fun ( char s[], int n )

{

char a[80] , *p;

int i;

/**********found***********/

s=p;

for(i=0; i<n; i++) a[i]='*';

do

{ a[i]=*p;

i++;

}

/**********found***********/

while(*p++)

a[i]=0;

strcpy(s,a);

}

main()

{ int n; char s[80];

printf("\nEnter a string : "); gets(s);

printf("\nThe string \"%s\"\n",s);

printf("\nEnter n ( number of * ) : "); scanf("%d",&n);

fun(s,n);

printf("\nThe string after insert : \"%s\" \n" ,s);

}

解题思路:

第一处: 指针p应指向s,所以应改为:p=s;。

第二处: 死循环,当do while循环执行一次,临时变量p应该指向字符串的下一位置,所以 应改为:while(*p++);。

***************************************************

请编写函数fun,函数的功能是:统计各年龄段的人数。N个年龄通过调用随机

函数获得,并放在主函数的age数组中;要求函数把0至9岁年龄段的人数放在d[0] 中,把10至19岁年龄段的人数放在d[1]中,把20至29岁年龄段的人数放在d[2]中, 其余依此类推, 把100岁 (含100)以上年龄的人数都放在d[10]中。结果在主函数

中输出。

注意:部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入

2013年3月计算机二级C语言上机题库

你编写的若干语句。

给定源程序:

#include <stdio.h>

#define N 50

#define M 11

void fun( int *a, int *b)

{

}

double rnd()

{ static t=29,c=217,m=1024,r=0;

r=(r*t+c)%m; return((double)r/m);

}

main()

{ int age[N], i, d[M];

for(i=0; i<N;i++)age[i]=(int)(115*rnd());

printf("The original data :\n");

for(i=0;i<N;i++) printf((i+1)%10==0?"%4d\n":"%4d",age[i]);

printf("\n\n");

fun( age, d);

for(i=0;i<10;i++)printf("%4d---%4d : %4d\n",i*10,i*10+9,d[i]);

printf(" Over 100 : %4d\n",d[10]);

NONO(d);

}

解题思路:

本题是统计各年龄段的人数。

1. 初始化各年龄段人数为0。

2. 使用for循环以及求出各年龄的十位数字作为存放人数的地址,如果大于值大于10,则 存入d[10]中(大于110岁的人)。

参考答案:

void fun( int *a, int *b)

{

int i, j ;

for(i = 0 ; i < M ; i++) b[i] = 0 ;

for(i = 0 ; i < N ; i++) {

j = a[i] / 10 ;

if(j > 10) b[M - 1]++ ; else b[j]++ ;

}

}

double rnd()

{ static t=29,c=217,m=1024,r=0;

r=(r*t+c)%m; return((double)r/m);

2013年3月计算机二级C语言上机题库

}

※※※※※※※※※※※※※※※※※※※※※※※※※

第05套:

给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文本

文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi和atof将 字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。

请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结

果。

注意:源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

给定源程序:

#include <stdio.h>

#include <stdlib.h>

void fun(char *s, int a, double f)

{

/**********found**********/

__1__ fp;

char str[100], str1[100], str2[100];

int a1; double f1;

fp = fopen("file1.txt", "w");

fprintf(fp, "%s %d %f\n", s, a, f);

/**********found**********/

__2__ ;

fp = fopen("file1.txt", "r");

/**********found**********/

fscanf(__3__,"%s%s%s", str, str1, str2);

fclose(fp);

a1 = atoi(str1);

f1 = atof(str2);

printf("\nThe result :\n\n%s %d %f\n", str, a1, f1);

}

main()

{ char a[10]="Hello!"; int b=12345;

double c= 98.76;

fun(a,b,c);

}

解题思路:

本题是考察先把给定的数据写入到文本文件中,再从该文件读出并转换成相应的整数、浮 点数显示在屏幕上。

第一处:定义文本文件类型变量,所以应填:FILE *。

第二处:关闭刚写入的文件,所以应填:fclose(fp)。

2013年3月计算机二级C语言上机题库

第三处:从文件中读出数据,所以应填:fp。

***************************************************

给定程序MODI1.C中函数fun的功能是: 对N名学生的学习成绩,按从高到低的 顺序找出前m(m≤10)名学生来, 并将这些学生数据存放在一个动态分配的连续存 储区中, 此存储区的首地址作为函数值返回。

请改正函数fun中指定部位的错误, 使它能得出正确的结果。

注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构!

给定源程序:

#include <stdio.h>

#include <alloc.h>

#include <string.h>

#define N 10

typedef struct ss

{ char num[10];

int s;

} STU;

STU *fun(STU a[], int m)

{ STU b[N], *t;

int i,j,k;

/**********found**********/

t=(STU *)calloc(sizeof(STU),m)

for(i=0; i<N; i++) b[i]=a[i];

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

{ for(i=j=0; i<N; i++)

if(b[i].s > b[j].s) j=i;

/**********found**********/

t(k)=b(j);

b[j].s=0;

}

return t;

}

outresult(STU a[], FILE *pf)

{ int i;

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

fprintf(pf,"No = %s Mark = %d\n", a[i].num,a[i].s);

fprintf(pf,"\n\n");

}

main()

{ STU a[N]={ {"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},

{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71} };

2013年3月计算机二级C语言上机题库

STU *pOrder;

int i, m;

printf("***** The Original data *****\n");

outresult(a, stdout);

printf("\nGive the number of the students who have better score: ");

scanf("%d",&m);

while( m>10 )

{ printf("\nGive the number of the students who have better score: ");

scanf("%d",&m);

}

pOrder=fun(a,m);

printf("***** THE RESULT *****\n");

printf("The top :\n");

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

printf(" %s %d\n",pOrder[i].num , pOrder[i].s);

free(pOrder);

}

解题思路:

第一处: 语句最后缺少分号。

第二处: 应该使用方括号,而不是圆括号。

像此类,使用编译,即可发现。

***************************************************

请编写函数fun, 函数的功能是: 删去一维数组中所有相同的数, 使之只剩一

个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如, 一维数组中的数据是: 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。

删除后,数组中的内容应该是: 2 3 4 5 6 7 8 9 10。

注意:部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入

你编写的若干语句。

给定源程序:

#include <stdio.h>

#define N 80

int fun(int a[], int n)

{

}

main()

{ int a[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10},i,n=20;

printf("The original data :\n");

for(i=0; i<n; i++)printf("%3d",a[i]);

n=fun(a,n);

printf("\n\nThe data after deleted :\n");

for(i=0;i<n;i++)printf("%3d",a[i]); printf("\n\n");

2013年3月计算机二级C语言上机题库

NONO();

}

解题思路:

本题是删除已排序过数组中的相同数。

1. 取出数组中的第1个数存放在临时变量k中,再利用for循环来依次判断所有的数。

2. 如果取出的数和k相比,如果不相同,则仍存放在原数组中,其中存放的位置由j来控制, 接着把这个数重新存入k。如果相同,则取下一数。

参考答案:

int fun(int a[], int n)

{

int i, j = 1, k = a[0] ;

for(i = 1 ; i < n ; i++)

if(k != a[i]) {

a[j++]=a[i] ;

k = a[i] ;

}

a[j] = 0 ;

return j ;

}

1.C程序是由( 函数 )构成的,一个C程序中至少包含( 一个函数 ) 。因此,( 函数 ) 是C程序的基本单位。

2.C程序注释是由( /* ) 和( */ ) 所界定的文字信息组成的。

3.函数体一般包括( ) 和( ) 。二.判断题

1.一个C程序的执行总是从该程序的main函数开始,在main函数最后结束。 【 】

2.main函数必须写在一个C程序的最前面。 【 】

3.一个C程序可以包含若干的函数。【 】

4.C程序的注释部分可以出现在程序的任何位置,它对程序的编译和运行不起任何作用。但是可以增加程序的可读性。【 】

5.C程序的注释只能是一行。【 】

6.C程序的注释不能是中文文字信息。【 】

8.可以使用Turbo C来编译和连接一个C程序。【 】

2013年3月计算机二级C语言上机题库

9.可以使用Turbo C来运行一个C程序。【 】

10.可以使用Turbo C来实时调试(即动态调试)一个C程序。【 】三.简答题

1. 写出一个C程序的基本结构。

2. 简要叙述使用Turbo C 2.0编译和运行一个程序的步骤。

四.编程题

1. 提高题:参照课本例1.1,试编写一个C程序,输出如下信息。(提示:使用键盘上的一些符号)。

2. 提高题:试编写一个C程序,输出如下信息。

试试看,可以输出其他组合图案吗?第二章 数据类型,运算符与表达式一.选择题

1.合法的字符常量是 。

A) \t B) “A” C) a D) \x32

2、合法的字符常量是 。

A) \084 B) \84 C) ab D) \x43

2. 是C语言提供的合法的数据类型关键字。

A) Float B) signed C) integer D)Char

3.在以下各组标识符中,合法的标识符是。

(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

2013年3月计算机二级C语言上机题库

4.属于合法的C语言长整型常量的是 。

A)5876273 B)0L C)2E10 D)(long)5876273

5.下面选项中,不是合法整型常量的是 。

A)160 B)-0xcdg C)-01 D)-0x48a

6.判断int x = 0xaffbc;x的结果是 。

A)赋值非法 B)溢出 C)为affb D)为ffbc

7.下面选项中,均是合法浮点数的是 。

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

8.在C语言中,要求参加运算的数必须时整数的运算符是 。

A)/ B)* C)% D) =

9.在C语言中,字符型数据在内存中以 形式存放。

A)原码 B)BCD码 C)反码 D)ASCII码

10.下列语句中,符合语法的赋值语句是 。

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;

11. 是非法的C语言转义字符。

A) \b B) \0xf C) \037 D) \

12.对于语句:f=(3.0,4.0,5.0),(2.0,1.0,0.0);的判断中, 是正确的。

A)语法错误 B)f为5.0 C)f为0.0 D)f为2.0

13.与代数式(x*y)/(u*v) 不等价的C语言表达式是 。

2013年3月计算机二级C语言上机题库

A)x*y/u*v B)x*y/u/v C)x*y/(u*v) D)x/(u*v)*y

14.在C语言中,数字029是一个 。

A)八进制数 B)十六进制数 C)十进制数 D)非法数

15.C语言中整数-8在内存中的存储形式为 。

A)1111111111111000 B)100000000001000

C)000000000001000 D)1111111111110111

16.对于char cx= \039 ;语句,正确的是 。

A)不合法 B)cx的ASCII值是33

C)cx的值为四个字符 D)cx的值为三个字符

17.若int k=7,x=12;则能使值为3的表达式是 。

A)x%=(k%=5) B)x%=(k-k%5)

C)x%=k-k%5 D)(x%=k)-(k%=5)

18.为了计算s=10!(即10的阶乘),则s变量应定义为 。

A)int B)unsigned C)long D)以上三种类型均可

19.以下所列的C语言常量中,错误的是 。

A)0xFF B)1.2e0.5 C)2L D) \72

20.假定x和y为double型,则表达式x=2,y=x+3/2的值是 。

A)3.500000 B)3 C)2.000000 D)3.000000

21.设变量n为float型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是 。

A)n=(n*100+0.5)/100.0 B)m=n*100+0.5,n=m/100.0

C)n=n*100+0.5/100.0 D)n=(n/100+0.5)*100.0

本文来源:https://www.bwwdw.com/article/ply4.html

Top