江西省二级C上机题库

更新时间:2024-06-29 07:31:01 阅读量: 综合文库 文档下载

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

一、程序改错题。

gc22.c程序是输入一个字符串, 将此字符串中最长的单词输出,程序在注释行附近有两个错误,请试调试改正,但调试改正中不得增删语句。

int alph(char c) {

if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) return(1); else

return(0); /* find 1 */ }

int longest(char *str) {

int len=0,i,length=0,flag=1,point,place; for(i=0;i<=strlen(str);i++)

if(alph(str[i])) if(flag) {

flag=0; point=i; } else len++;

else /* Find 2 */ {

flag=1; if(len>length) { length=len; place=point; len=0; } }

return(place); }

main( ) { int i;

char line[100];

printf(\ gets(line);

printf(\

for(i=longest(line);alph(line[i]);i++) printf(\ printf(\ }

二、程序填空题

tk22.c是打印出杨辉三角形,在空白处将程序补充完整,运行得出正确结果。

1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 . . .

#define N 11 main( ) {

int I,j,a[N][N]; for (I=1; I

a[I][1]=1; // }

for (I=3;I

a[I][j]=a[I-1][j-1]+a[I-1][j]; for (I=1;I

printf(\ }

一、程序改错题(20分)。

下列程序是建立一个包含学生有关数据的单向链表。但该程序有2个错误,错误出现在每个注释行附近,请调试改正。调试改正中,不得改变程序结构,也不得增删语句。 #define NULL 0

struct stud {

long num; char name[10]; float score;

struct stud *next; };

/* ????? comment ????? */ int n;

struct stud create() {

struct stud *head,*p1,*p2; n=0;

p1=p2=(struct stud *)malloc(sizeof(struct stud));

scanf(\ /* ?????comment ????? */

head=NULL; while(p1!=0) { n=n+1;

if(n==1) head=p1; else p2->next=p1;

p1=(struct stud *)malloc(size(struct stud));

scanf(\ }

p2->next=NULL; return(head); }

二、程序填空题(20分)。

下面的程序是完成从键盘上输入若干行长度不一的字符串把其存到一个文件名为ttt.txt的磁盘文件上去,再从该文件中输出这些数据到屏幕上, 将其中的小写字母转换成大写

字母。然而,该程序是一个不完整的程序,请在下划线空白处将其补充完整,以便得到正确答案,但不得增删原语句。

试题二、程序填空题

tk56.c程序用于计算4×5的整型数组中最大元素所在行和列的位置。下面程序不完整,

请将其补充完整,以便得到正确答案,注意:不得增行和删行,也不得修改程序的结构。。

#include void main(void) {

int a[4][5]={{4,8,9,10,12}, {2,5,13,17,11}, {81,76,34,57,33}, {1,90,3,78,55}};

int max , max_row , max_col; int i,j;

max=a[0][0]; // max_row=0; max_col=0; for (i=0;i<4;i++) for (j=0;j<5;j++) if(max

max=a[i][j] ; max_row = i ; max_col = j; }

printf(\ }

试题一、程序改错题:

gc56.c程序用于将字符串中的小写字母转换为大写字母,程序中有两处错误,请调试改正

之,但不得增删语句. #include void main(void) {

char s[255]; int i;

scanf(\ for (i=0;s[i];i++)

if(s[i]>='a' && s[i]<='z') s[i] = s[i] -'a' + 'A'; printf(\ }

2.程序改错题

gc57.c的功能是互换给定数组中的最大数和最小数。如将下面8个数:

5,3,1,4,2,8,9,6

变成:

5,3,9,4,2,8,1,6

程序中,最大数与最小数的互换操作通过函数调用来实现,让指针max和min分别指向最大数和最小数。程序有二处错误,请改正。注意:不得增行和删行,也不得修改程序的结构。

main() { int i;

static int a[8]={5,3,1,4,2,8,9,6}; void jhmaxmin();

printf(\ for(i=0; i<8; i++) printf(\ printf(\ jhmaxmin(a,8);

printf(\

for(i=0; i<8; i++) printf(\ printf(\ }

void jhmaxmin(p,n) int *p, n; {

int t, *max, *min, *end, *q; end=p+n; max=min=p;

for(q=p+1; q*max) max=q; if(*q<*min) min=q; }

t=*max; *max=*min; *min=t; }

1.程序填空题

tk57.c用来输出两整数M和N之间的所有素数(质数)。所谓一个整数n为素数,是指n除了能被1和其本身n除尽

外,不能被2到n-1中的任何整数除尽。如7为素数,而9不是素数。

程序中,外循环变量i用于控制整数选择范围,内循环变量j用于判断某整数i是否为素数,若是,

则输出该素数,且通过变量s来控制每行输出5个素数。 #define M 4 #define N 30 main() {

int i, j, k, s=0;

for(i=M; i<= N ; i++)// { for(j=2; j< i ; j++)// if(i%j== 0 ) break; if(j>=i)

{ printf(\ s=s+1;

if(s%5==0 ) printf(\ } }

printf(\ }

程序改错题:

gc101.c的功能为:输入8个整数,使用指针以选择法对其进行排序(从小到大).程序中有三处错误代码,请改正.注意,不得改变程序结构。

#include main() {

int a[8],*p=a; int i,j;

int tempmin,tempcode;

printf(\ for (i=0;i<8;i++) scanf(\ tempmin=*p; for (i=0;i<7;i++) {

for (j=i;j<8;j++)

if (j==i||*(p+j)

if (tempcode!=i)

{ *(p+tempcode)=*(p+i); *(p+i)=tempmin; }

}

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

printf(\ return(1); }

2.程序改错题 ( 每错10分,共20分 )

程序gc137.c中的sub函数的功能是:将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。例如,当s所指字符串的内容为“ABCD”时,t所指数组中的内容为“DCBAABCD”。请改正函数sub中的两个错误,使它能得出正确的结果。注意:不要改动main 函数,不得增行或删行,也不得修改程序的结构。

#include \ #include \ #include \

void sub( char *s, char *t ) {

int i, d; d=strlen( s );

for( i=0; i< d ; i++ ) t[i]=s[d-1-i] ; for( i=0; i

char s[100], t[100]; clrscr( ) ;

printf( \ scanf(\

sub(s,t) ;

printf( \ }

1.程序填空题 ( 每空10分,共20分 )

若一个整数x除了能被1和其本身x除尽外,不能被2到x-1中的任何整数除尽,则此数即为素数(或质数)。例如7是素数,而9不是素数。程序 tk137.c 的功能是:将任意输入的一个大偶数n分解为两个素数之和,并给出各种分解方法。例如n=10时,分解后的结果为 10=3+7 和 10=5+5。请填空(替换掉下划线部分)。 程序中,函数check用来判断一个整数x是否是素数,若是,返回1,否则返回0 。

#include \ main( ) {

int n, i;

int check( int x ); do {

printf( \

scanf( \ } while( n % 2 != 0 ); for( i=3; i<= n/2 ; i++ )

if( check ( i ) && check(n-i) )//

printf( \ }

int check ( int x ) { int i;

for( i=2; i< x ; i++ )

if(x%i==0) return ( 0 );// return ( 1 ); }

程序改错

gc154.c程序的功能是从键盘输入一行字符,

分别统计其中的字母、数字、空格和其它字符的个数。

但该程序中有3处错误,

请调试并改正。不允许改变程序结构和增删语句。 #include main() { int c;

int letter=0,digit=0,space=0,other=0; printf(\ while ((c=getchar())!='\\n')

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

else if (c>='0'&&c<='9') digit++; else if (c==' ') space++; else

other++;

printf(\ printf(\ printf(\ printf(\ }

程序填空题

tk154.c中有整形数组a[ ]。通过调用子程序inv(),对a[ ]数组中的元素,反向交换存储位置。请在括号[ ]处补充完整程序,并删除[ ],运行测试,实现上述要求。不得增加行或删除行,也不得更改程序结构。

void inv(int x[],int n) {

int temp,i,j,m=(n-1)/2;// for(i=0;i<=m;i++) {j=n-i-1; temp=x[i]; x[i]=x[j];//

x[j]=temp;// }

return; } main() {

int a[10]={4,5,6,7,8,9,10,11,12,88}; int i;

printf(\ for(i=0;i<10;i++) printf(\ printf(\ inv(a,10);

printf(\ for(i=0;i<10;i++) printf(\

printf(\ }

1.程序填空题

tk155.c的功能是:假设a数组中的数据巳按由小到大的顺序存放,以下程序可把a数组中相同的数据删得只剩一个,然后以每行4个数据的格式输出a数组。请填空。

# define M 10 main()

{int a[M],i,j,n; for(i=0;i=0)

{ if(*(a+i)==*(a+i-1)) {for(j=i;j<=n;j++)// *(a+j-1)=*(a+j);//

n--;// } i--;}

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

{printf(\ if(i%4==0) printf(\ printf(\ }

程序改错

gc163.c的功能是实现求1000以内的自然数中的完数及其个数(所谓完数,指它恰好等于除它本身之外的因子之和,如:6=1+2+3,28=1+2+4+7+14),并显示结果。但该程序中有3处错误,请调试并改正。不允许改变程序结构和增删语句。

#include void main(void)

{

int i,k,m,n,s,p=0; int a[100];

printf(\以内的自然数中的完数有:\ for (i=2;i<=10000;i++) { s=0; m=0;

for (k=1;k<=i/2;k++) { if (i%k==0) { s=s+k; a[m]=k; m=m+1; } }

if (s==i) { p=p+1;

printf(\ n=1;

while (n

{ printf(\ } }

printf(\总个数为: %d\\n\ }

1、程序改错题

gc165.c 程序中的函数find_str()用来返回字符串s2在字符串s1中第一次出现的首地址;如果字符串s2不是s1的子串,则该函数返回空指针NULL。

现在程序中发现有两个错误,错误就出现在那些注释行的附近,请你找出错误并将它们改正过来,要求在调试过程中不允许改变程序结构,更不得增删语句。

#include #include

char *find_str(char *s1,char *s2) {

int i,j,ls2; ls2=strlen(s2);

for(i=0;i<=strlen(s1)-ls2;i++) {

for(j=0;j

return NULL; }

void main() { char

*a=\

windows98

office2000\

/* .............. comment two .............. */ c=find_str(a,b);

if(c!=NULL)printf(\ else printf(\未找到字符串%s\\n\ }

2、程序填空题

tk165.c 程序首先定义了一个结构体变量(包括年、月、日),然后从键盘上输入任意的一天(包括年月日),最后计算该日在当年中是第几天,此时当然要考虑闰年问题。

现在程序是一个不完整的程序,请你在下划线空白处将其补充完整,以便得到正确的答案,但不得增删原来的语句。

struct datetype{ int year; int month; int day;

}date; main() {

int i,day_sum; static

day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

printf(\请输入年、月、日:\\n\ scanf(\&date.day);

day_sum=0;

for(i=1;i

if((date.year % 4 == 0 && date.year % 100 != 0 || date.year % 400 ==0) && date.month>=3 ) //

day_sum+=1; printf(\

月%d

日是%d

年的第%d

&date.month,

int

\\n\

}

1.程序改错题

gc166.c程序的功能是:计算并输出从键盘输入的任一正整数的各位数字之和s以及各位数字之积t。

例如,当输入的正整数为237时, s的值为12,t的值为42。

请改正程序中的两个错误,使它能得出正确的结果。注意:不得增行或删行,也不得修改程序的

结构。

#include \ main() {

int n, yw, s=0, t=0; scanf(\ while(n!=0) {

yw=n;

s=s+yw; t=t*yw; n=n; }

printf(\ }

2.程序填空题

tk166.c程序中,函数fun的功能是:将s所指字符串中下标为偶数的字符删除,s中剩余的字符形成的新串

放在t所指的数组中。 例如,当“ABCDEFGHIJK”,

在t所指数组中的内容应是“BDFHJ”。 #include #include #include void fun(char *s, char t[])

s所指字符串中的内容为

{

int i, j, n; n=strlen(s);

for(i=0, j=0; i

main() {

char s[80], t[80]; // clrscr();

printf(\ scanf(\ fun(s, t);

printf(\ }

2.程序改错题

gc227.c 中函数fun的功能是:使输入的一个字符串按反序存放,并在主函数中输出。请改正函数fun中的错误,使它能得出正确的结果。

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

#include #include main()

{char str[100];

printf(\ scanf(\

fun(str);

printf(\ }

fun(str) char str[]; {char t; int i,j;

for(i=0,j=strlen(str);i

1.程序填空题

tk227.c 求出以下分数序列的前n项之和。

1/2,2/3,3/5,5/8,8/13,13/21,......

例如,若n的值为:5,则应输出:3.007051

#include main() {int n,i;

double sum,mole,deno,temp; printf(\ scanf(\ sum=0;//

mole=1;deno=2; for(i=0;i

{sum=sum+mole/deno; temp=mole+deno;// mole=deno; deno=temp; }

printf(\ }

程序改错题:

gc228.c 代码功能为:使用指针将数组a中10个整数按相反的顺序存放。程序中有3处错误代码,请指出并改正之.

void inv(x,n) int *x,n;

{int *p,t,*i,*j,m=(n-1)/2; i=x; j=x+n-1; p=x+m;

for(;i<=p;i++,j--) {t=*i;*i=*j;*j=t;} return; } main() {int a[10],i;

printf(\

for(i=0;i<10;i++) scanf(\

printf(\ for(i=0;i<10;i++) printf(\ printf(\ inv(a,10);

printf(\ for(i=0;i<10;i++) printf(\ printf(\ }

2.程序改错题

gc234.c中函数fun的功能是:求S的值。

S= ((2*2)/3) * ((4*4)/(3*5)) * ... *

( (2*k*2*k)/((2*k-1)*(2*k+1)) )

请改正函数fun中的两个错误,使程序能输出正确的结果。

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

#include \ #include \ float fun( int k ) { int n;

float s, w, p, q; n = 1; s = 1.0; while ( n <= k ) {

w = 2.0 * n; p = w - 1.0; q = w + 1.0;

s = s * w *w/p/q; n++; }

return s; }

main ( ) { //clrscr( );

printf(\ }

1.程序填空题

tk234.c中函数fun的功能是:将a所指字符串中字符的倒序,和b所指字符串中的倒序, 按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。

例如,当a所指字符串中的内容为\, b所指字符串中的内容为\时,则c所指数组中的内容应该为\;而当a所指字符串中的内容为\,b所指字符串中的内容为\时,则c所指数组中的内容应该为\。

请将函数fun补充完整,使它能得出正确的结果。不得增行或删行,也不得更改程序的结构!

#include #include #include

void myswap( char *s ) {

char *sp, *st, ch; sp = s;

st = s + strlen(s) - 1; while ( sp <= st )

{ ch = *sp; *sp = *st; *st = ch; sp++; st--; } }

void fun( char *a, char *b, char *c )

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

Top