文档库 最新最全的文档下载
当前位置:文档库 › C语言大题题库(部分)

C语言大题题库(部分)

C语言大题题库(部分)
C语言大题题库(部分)

1.在考生文件夹(E:\c语言\尚意然)下的给定程序modi21.c中,函数fun的功能是:将一个由八进制数字组成的字符串转换为与其面值相等的十进制整数。规定输入的字符串最多只能包含5位8进制数字。

例如,若输入77777,则输出将是32767。

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

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

#include

int fun(char *p)

{int n;

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

n=*p-'o';

p++;

while (*p!=0)

{

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

n=n*7+*p-'o';

p++;

}

return n;

}

main()

{char s[6];int i;int n;

printf("Enter a string(0catal digits): ");gets(s);

if(strlen(s)>5){printf("Error:String too longer !\n\n");exit(0);}

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

if(s[i]<'0'||s[i]>'7')

{printf("Error:%c not is ocatal digits!\n\n",s[i]);exit(0);}

printf("The original string:");puts(s);

n=fun(s);

printf("\n%s is convered to integer number: %d\n\n",s,n);

}

第1 处内容填写有误

第[1]处操作错误

题面要求操作:内容为[n=*p-'0';]

实际操作结果:内容为[n=*p-'o';]

第2 处内容填写有误

第[2]处操作错误

题面要求操作:内容为[n=n*8+*p-'0';]

实际操作结果:内容为[n=n*7+*p-'o';]

本题着重考察考生对C语言中一些简单算法的掌握情况。

八进制转换成十进制的方法是:例如77777=7*8^4+7*8^3+7*8^2+7*8^1+7*8^0

本题中的第一个错误:题中要求将一个由八进制数字字符组成的字符串转换为等值的十进制数,思路应是:先将字符串中相应的字符减去字符0的ASCII值,得出该字符的八进制数,然后乘以8的次幂之和,即可求得该数的十进制数,所以程序中语句"n=*p-'o';"应改为"n=*p-'0';";

本题中的第二个错误与第一个错误相似,另外,八进制转换成十进制应乘以8的次幂,所以应将程序中语句

2.给定程序功能是计算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…+f(n)的值。例如,当n为5时,函数值应为:10.407143。

┌(x+1)/(x-2) x>0

f(x) = ┤0 x=0 或 x=2

└(x-1)/(x-2) x<0

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

注意:源程序存放在考生文件夹(E:\c语言\尚意然)下的blank12.c中。

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

#include

#include

float f( double x)

{

if (x == 0.0 || x == 2.0)

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

return ___1___;

else if (x < 0.0)

return (x -1)/(x-2);

else

return (x +1)/(x-2);

}

double fun( int n )

{ int i; double s=0.0, y;

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

for (i= -n; i<=___2___; i++)

{y=f(1.0*i); s += y;}

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

return ___3___;

}

main ( )

{

printf("%f\n", fun(5) );

}

第1 处内容填写有误

第[1]处操作错误

题面要求操作:内容为[return 0;]

实际操作结果:内容为[return___1___;]

第2 处内容填写有误

第[2]处操作错误

题面要求操作:内容为[for (i= -n; i<=n; i++)]

实际操作结果:内容为[for(i=-n;i<=___2___;i++)]

第3 处内容填写有误

第[3]处操作错误

题面要求操作:内容为[return s;]

本题的考核点是C语言中的函数的入口参数和类型转换。

题中第一个空填"0.0":根据题意,当x=0或x=2时,f(x)返回0。因为f(x)定义为float型,所以也可以返回0.0。

题中第二个空填"n":由程序可知,此处是设置循环的次数,其值是由主调函数中的实参所确定。由于在主调函数中是以确定的值定义的,所以循环变量可以由形参变量所确定,也可以用主调函数中的确定值所确定。

题中第三个空填"s":通过return语句将被调用函数中s的值带回主调函数中去。

3. 给定程序的功能是把a数组中的n个数,和b数组中逆序的n个数一一对应相乘、求平方,结果存在c数组中。

例如:当a数组中的值是:1、3、5、7、8,b数组中的值是:2、3、4、5、8

调用该函数后,c中存放的数据是:64、225、400、441、256

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

注意:源程序存放在考生文件夹(E:\c语言\尚意然)下的blank46.c中。

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

#include

void fun(int a[], int b[], int c[], int n)

{

int i;

for (i=0; i

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

___1___ = (a[i] * b[n-1-i]) *(a[i] * b[n-1-i]);

}

main()

{ int i, a[100]={1,3,5,7,8}, b[100]={2,3,4,5,8}, c[100];

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

fun(___2___, 5);

printf("The result is: ");

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

for (i=0; i<5; i++) printf("%d ", ___3___);

printf("\n");

}

第1 处内容填写有误

第[1]处操作错误

题面要求操作:内容为[c[i] = (a[i] * b[n-1-i]) *(a[i] * b[n-1-i]);]

实际操作结果:内容为[___1___=(a[i]*b[n-1-i])*(a[i]*b[n-1-i]);]

第2 处内容填写有误

第[2]处操作错误

题面要求操作:内容为[fun(a, b, c, 5);]

实际操作结果:内容为[fun(___2___,5);]

第3 处内容填写有误

第[3]处操作错误

题面要求操作:内容为[for (i=0; i<5; i++) printf("%d ", c[i]);]

实际操作结果:内容为[for(i=0;i<5;i++)printf("%d",___3___);]

本题的考核点是for循环的使用。

解题思路:本题通过for循环,使用公式c[i] = (a[i] * b[n-1-i]) *(a[i] * b[n-1-i]),求得数组a与数组b逆序之积的平方,将计算结果存在c数组中。

符串连接起来,组成一个新串,放入pt中。

例如:把3个串:"abc","CD","EF"串连起来,结果是"abcCDEF"。

请改正函数 fun 中的语法错误,使它能统计出正确结果。

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

#include

#include

#include

#include

int fun ( char str[][10], int m, char *pt )

{

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

Int k, q, i ;

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

{ q = strlen ( str [k] );

for (i=0; i

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

pt[i] = str[k,i] ;

pt += q ;

pt[0] = 0 ;

}

}

main( )

{ int n, h ;

char s[10][10], p[120] ;

system("cls") ;

printf( "\nPlease enter n:" ) ;

scanf("%d", &n) ;

printf( "\nPlease enter %d string:\n", n ) ;

for ( h = 0; h < n; h++ ) scanf("%s", s[h]) ;

fun(s, n, p) ;

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

}

第1 处内容填写有误

第[1]处操作错误

题面要求操作:内容为[int k, q, i ;]

实际操作结果:内容为[Intk,q,i;]

第2 处内容填写有误

第[2]处操作错误

题面要求操作:内容为[pt[i] = str[k][i] ;]

实际操作结果:内容为[pt[i]=str[k,i];]

本题的考核点是C语言的一些基本用法和数组的使用。

C语言是区分大小写的,所以,"Int k,q,i; "应改为"int k,q,i; "。

二维数组定义的一般形式为:类型说明符数组名[常量表达式][常量表达式] 例如 char str[k][i]

接起来,组成一个新串,放入pt所指字符串中。

例如:把3个串:"abc","CD","EF"串连起来,结果是"abcCDEF"。

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

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

#include

#include

#include

#include

int fun(char str[][10],int m,char *pt)

{

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

Int k,q,i;

for(k=0;k

{ q=strlen(str[k]);

for(i=0;i

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

pt[i]=str[k,i];

pt+=q;

pt[0]=0;

}

}

main()

{ int m,h;

char s[10][10],p[120];

system("cls") ;

printf("\nPlease enter m:");

scanf("%d",&m);gets(s[0]);

printf("\nPlease enter %d string:\n",m);

for (h=0;h

fun(s,m,p);

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

}

第1 处内容填写有误

第[1]处操作错误

题面要求操作:内容为[int k,q,i;]

实际操作结果:内容为[Intk,q,i;]

第2 处内容填写有误

第[2]处操作错误

题面要求操作:内容为[pt[i]=str[k][i];]

实际操作结果:内容为[pt[i]=str[k,i];]

本题的考核点是C语言的一些基本用法和数组的使用。

C语言是区分大小写的,所以,"Int k,q,i; "应改为"int k,q,i; "或相同作用的语句。

二维数组定义的一般形式为:类型说明符数组名[常量表达式][常量表达式]

6.给定程序中,函数fun的功能是:有N×N矩阵,根据给定的m(m<=N)值,将每行元素中的值均右移m个位置,左边置为0。例如,N=3,m=2,有下列矩阵

1 2 3

4 5 6

7 8 9

程序执行结果为

0 0 1

0 0 4

0 0 7

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

注意:源程序存放在考生文件夹(E:\c语言\尚意然)下的blank50.c中。

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

#include

#define N 4

void fun(int (*t)[N], int m)

{ int i, j;

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

for(i=0; i

{ for(j=N-1-m; j>=0; j--)

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

t[i][j+___2___ ]=t[i][j];

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

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

t[i][j]=0;

}

}

main()

{ int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j, m;

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

for(i=0; i

{ for(j=0; j

printf("%2d ",t[i][j]);

printf("\n");

}

printf("Input m (m<=%d): ",N);scanf("%d",&m);

fun(t,m);

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

for(i=0; i

{ for(j=0; j

printf("%2d ",t[i][j]);

printf("\n");

}

}

第1 处内容填写有误

第[1]处操作错误

题面要求操作:内容为[for(i=0; i

实际操作结果:内容为[for(i=0;i

实际操作结果:内容为[t[i][j+___2___]=t[i][j];]

第3 处内容填写有误

第[3]处操作错误

题面要求操作:内容为[for(j=0; j

实际操作结果:内容为[for(j=0;j<___3___;j++)]

本题的考核点是C语言中的循环嵌套语句的使用。

解题思路:使用嵌套循环,外循环是行循环,内循环是列循环,这样可以对整个数组中的元素进行符合条件的运算。题目要求将每行元素中的值均右移m个位置,左边置为0,所以首先要使用for语句将每行元素中的值均右移m个位置,再将左边置为0。

7.在考生文件夹(E:\c语言\尚意然)下的给定程序modi185.c中,函数fun的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。

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

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

#include

#include

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

{ int i,j,d,y;

for(i=3;i<=a/2;i=i+2) {

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

y=0;

for(j=2;j<=sqrt((double)i);j++)

if(i%j==0) y=0;

if(y==1) {

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

d=i-a;

for(j=2;j<=sqrt((double)d);j++)

if(d%j==0) y=0;

if(y==1)

{ *b=i; *c=d; }

}

}

}

main()

{ int a,b,c;

do

{ printf("\nInput a: "); scanf("%d",&a); }

while(a%2);

fun(a,&b,&c);

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

}

第1 处内容填写有误

第[1]处操作错误

题面要求操作:内容为[y=1;]

实际操作结果:内容为[y=0;]

实际操作结果:内容为[d=i-a;]

首先,我们必须先读懂题中程序的大致意思,这是发现并改正程序中错误的重要前提。

程序中的重要思想如下:

1、首先,要了解素数的意思,素数是指只能被1和它自身整除的数;

2、题目中要求为一个偶数寻找两个素数,这两个素数之和等于该偶数。

本题中的第一个错误:由下面的程序"if(i%j==0) y=0;"可知,如果不为素数,y值为0,所以应当开始给y

赋值为1,做找到标志;

本题中的第二个错误:根据上下文及题意思可知,a为偶数,*b与*c为所求的两个素数,而*b与*c由"{ *b=i; *c=d; }"得出,所以a=i+d,即"d=a-i;"。

8.给定程序的功能是从字符串s尾部开始,按逆序把相邻的两个字符交换位置,并依次把每个字符紧随其后重复出现一次,放在一个新串t中。

例如:当s中的字符串为:"12345"时,则t中的字符串应为:"4455223311"。

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

注意:源程序存放在考生文件夹(E:\c语言\尚意然)下的blank16.c中。

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

#include

#include

void fun (char *s, char *t)

{ int i, j, sl;

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

sl = ___1___;

for (i=sl-1, j=0; i>=0; i-=2)

{ if (i-1 >= 0) t[j++] = s[i-1];

if (i-1 >= 0) t[j++] = s[i-1];

t[j++] = s[i]; t[j++] = s[i];

}

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

___2___;

}

main()

{ char s[100], t[100];

printf("\nPlease enter string s:");

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

scanf("%s", ___3___);

fun(s, t);

printf("The result is: %s\n", t);

}

第1 处内容填写有误

第[1]处操作错误

题面要求操作:内容为[sl = strlen(s);]

实际操作结果:内容为[sl=___1___;]

第2 处内容填写有误

第3 处内容填写有误

第[3]处操作错误

题面要求操作:内容为[scanf("%s", s);]

实际操作结果:内容为[scanf("%s",___3___);]

本题的考核点是字符数组和字符函数。

题中第一个空填"strlen(s)":strlen()是测试字符串长度的函数,函数的值为字符串的实际长度,不包括'\0'在内。

题中第二个空填"t[j]='\0'"或者"t[j]=0":字符串是以'\0'作为结束标志的,其ASCII的值是0。

题中第三个空填"s":"scanf("%s", s);"表示输入字符串,存放于s中。

9.在考生文件夹(E:\c语言\尚意然)下的给定程序modi37.c中,函数fun的功能是:根据以下公式求π值,并作为函数值返回。

π 1 1 2 1 2 3 1 2 3 4

─ = 1 + ─ + ─×─ + ─×─×─ + ─×─×─×─ +……

2 3 3 5 3 5 7 3 5 7 9

例如,给指定精度的变量eps输入0.0005时,应当输出Pi=3.140578。

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

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

#include

#include

#include

double fun(double eps)

{ double s,t; int n=1;

s=0.0;

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

t=0;

while (t>eps)

{s+=t;

t=t*n/(2*n+1);

n++;

}

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

return(s);

}

main()

{double x;

printf("\nPlease enter a precision:");scanf("%lf",&x);

printf("\neps=%lf,Pi=%lf\n\n",x,fun(x));

}

第1 处内容填写有误

第[1]处操作错误

题面要求操作:内容为[t=1;]

实际操作结果:内容为[t=0;]

第2 处内容填写有误

本题的考核点是根据公式求π值。

本题中的第一个错误:变量t是用来累计表达式的乘积,它的初值应为1,所以程序中的语句"t=0;"应改为"t=1;";

本题中的第二个错误:由程序可知,变量s中存放的是π/2的值,而不是π的值,所以程序中的语句"return(s);"应改为"return(s*2);"或相同作用的语句。

10.给定程序的功能是求出能整除x且不是偶数的各整数,并放在数组pp中,这些除数的个数由n返回。

例如,若x的值为30,则有4个数符合要求,它们是1,3,5,15。

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

注意:源程序存放在考生文件夹(E:\c语言\尚意然)下的blank31.c中。

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

#include

void fun(int x, int pp[], int *n)

{

int i, j = 0 ;

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

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

if((x % i) == 0) pp[j++] = ___1___ ;

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

*n = ___2___ ;

}

main()

{ int x, aa[1000], n, i ;

printf( "\nPlease enter an integer number:\n" ) ; scanf("%d", &x) ;

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

fun(x, ___3___ ) ;

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

printf("\n") ;

}

第1 处内容填写有误

第[1]处操作错误

题面要求操作:内容为[if((x % i) == 0) pp[j++] = i ;]

实际操作结果:内容为[if((x%i)==0)pp[j++]=___1___;]

第2 处内容填写有误

第[2]处操作错误

题面要求操作:内容为[*n = j ;]

实际操作结果:内容为[*n=___2___;]

第3 处内容填写有误

第[3]处操作错误

题面要求操作:内容为[fun(x, aa, &n ) ;]

实际操作结果:内容为[fun(x,___3___);]

本题的考核点是求出能整除x且不是偶数的整数的算法。

11.在考生文件夹(E:\c语言\尚意然)下的给定程序modi26.c中,函数fun的功能是:求出a所指数组中最大数和次最大数(规定最大数和次最大数不在a[0]和a[1]中,依次和a[0]、a[1]中的数对调。

例如数组中原有的数为:7、10、12、0、3、6、9、11、5、8,

输出的结果为:12、11、7、0、3、6、9、10、5、8。

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

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

#include

#include

#include

#define N 20

int fun(int *a,int n)

{int k,m1,m2,max1,max2,t;

max1=max2=-32768;m1=m2=0;

for (k=0;k

if(a[k]>max1)

{ max2=max1;m2=m1;

max1=a[k];m1=k;

}

else if (a[k]>max2)

{ max2=a[k];m2=k;}

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

t=a[0];a[m1]=a[0];a[m1]=t;

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

t=a[1];a[m2]=a[1];a[m2]=t;

}

main()

{ int x,b[N]={7,10,12,0,3,6,9,11,5,8},n=10,i;

system("cls");

for (i=0;i

fun(b,n);

for(i=0;i

}

第1 处内容填写有误

第[1]处操作错误

题面要求操作:内容为[t=a[0];a[0]=a[m1];a[m1]=t;]

实际操作结果:内容为[t=a[0];a[m1]=a[0];a[m1]=t;]

第2 处内容填写有误

第[2]处操作错误

题面要求操作:内容为[t=a[1];a[1]=a[m2];a[m2]=t;]

实际操作结果:内容为[t=a[1];a[m2]=a[1];a[m2]=t;]

本题的考核点是循环语句和常用算法。

本题要求将最大数和a[0]中的数对调,把次最大数和a[1]中的数对调。题目给程序fun函数定义了变量t作为中间元素,因此对调过程应如下:t = a;a = b;b = t;然而fun函数中两次对调均没有形成三角型赋值,是错误

12.给定程序的功能是:读入一个整数k(2≤k≤10000),打印它的所有质因子(即所有为素数的因子)。

例如,若输入整数:3410,则应输出:2、5、11、31。

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

注意:源程序存放在考生文件夹(E:\c语言\尚意然)下的blank21.c中。

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

#include

IsPrime ( int n )

{ int i, m;

m = 1;

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

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

if (!( n ___1___ i )) {

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

m = 0; ___2___ ;

}

return ( m );

}

main( )

{ int j, k;

printf( "\nPlease enter an integer number between 2 and 10000: " );

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

scanf( "%d", ___3___ );

printf( "\n\nThe prime factor(s) of %d is( are ):", k );

for( j = 2; j <= k; j++ )

if( ( !( k%j ) )&&( IsPrime( j ) ) ) printf( "\n %4d", j );

printf("\n");

}

第1 处内容填写有误

第[1]处操作错误

题面要求操作:内容为[if (!( n%i )) {]

实际操作结果:内容为[if(!(n___1___i)){]

第2 处内容填写有误

第[2]处操作错误

题面要求操作:内容为[m = 0; break ;]

实际操作结果:内容为[m=0;___2___;]

第3 处内容填写有误

第[3]处操作错误

题面要求操作:内容为[scanf( "%d", &k );]

实际操作结果:内容为[scanf("%d",___3___);]

本题的考核点是C语言中算术运算符的用法以及输入输出语句和break语句的使用。

题中第一个空填"%":"%"为模运算符,或称求余运算符,%两侧均应为整型数据。只有当"n%i==0"时,循环才继续执行。

题中第二个空填"break":break语句用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语

"格式控制"是用双引号括起来的字符串,也称"转换控制字符串"。

"地址表列"是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。

13. 在考生文件夹(E:\c语言\尚意然)下的给定程序modi77.c中,函数fun的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。例如变量a中的值为3,b中的值原为8,程序运行后a中的值为8,b 中的值为3。

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

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

#include

#include

#include

int fun(int *x,int y)

{

int t;

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

t=x;x=y;

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

return(y);

}

main()

{

int a=3,b=8;

system("cls");

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

b=fun(&a,b);

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

}

第1 处内容填写有误

第[1]处操作错误

题面要求操作:内容为[t=*x;*x=y;]

实际操作结果:内容为[t=x;x=y;]

第2 处内容填写有误

第[2]处操作错误

题面要求操作:内容为[return t;]

实际操作结果:内容为[return(y);]

首先,我们必须先读懂题中程序的大致意思,这是发现并改正程序中错误的重要前提。

程序中的重要思想如下:

1、本题的主要目的是交换两个变量的值,在这样的任务中,合理的利用中间变量是个清晰明了的好方法;

2、观察题目,可以发现函数fun()的函数声明中有不少玄虚,第一个形参是一个地址,第二个形参是一个整型变量。

本题中的第一个错误发生在函数fun()中的赋值语句中:

"t = x ; x = y ;",通过前面的分析,我们可以知道,在此变量x代表的是一个地址,所以以上两条赋值语句运算符两端不匹配,应当更正为"t=*x;*x=y;",这样才可以进行正常的赋值工作;

是t的值,故更改为"return(t);"。

14.给定程序的功能是根据形参m(2≤m≤9),在二维数组中存放一张m行m列的表格,由main()函数输出。例如,若输入2 | 若输入4

则输出: | 则输出:

1 2 | 1 2 3 4

2 4 | 2 4 6 8

| 3 6 9 12

| 4 8 12 16

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

注意:源程序存放在考生文件夹(E:\c语言\尚意然)下的blank25.c中。

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

#include

#define M 10

int a[M][M] = {0} ;

fun(int a[][M], int m)

{ int j, k ;

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

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

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

___1___ = (k+1)*(j+1);

}

main ( )

{ int i, j, n ;

printf ( " Enter n : " ) ; scanf ("%d", &n ) ;

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

fun ( ___2___ ) ;

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

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

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

printf ( "%4d", ___3___ ) ;

printf ( "\n" ) ;

}

}

第1 处内容填写有误

第[1]处操作错误

题面要求操作:内容为[a[j][k] = (k+1)*(j+1);]

实际操作结果:内容为[___1___=(k+1)*(j+1);]

第2 处内容填写有误

第[2]处操作错误

题面要求操作:内容为[fun ( a, n ) ;]

实际操作结果:内容为[fun(___2___);]

实际操作结果:内容为[printf("%4d",___3___);]

题中第一个空填"a[j][k]":根据题意,在函数fun()中的嵌套循环中,循环体的内容是为了给m维的多维数组赋值,这个多维数组在列方向是由1开始的自然数,在行方向上是行首第一数的n倍数,。

题中第二个空填"a,n":此句是调用fun()函数,括弧中是其实际参数。

题中第三个空填"a[i][j]":利用嵌套循环语句输出多维数组的值。

15.在考生文件夹(E:\c语言\尚意然)下的给定程序modi25.c中,函数fun的功能是:用下面的公式求π的近似值,直到最后一项的绝对值小于指定的数(参数num)为止:

π 1 1 1

─≈1- ─ + ─ - ─ + ……

4 3

5 7

例如,程序运行后,输入0.0001,则程序输出3.1414。

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

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

#include

#include

#include

float fun(float num)

{ int s;

float n,t,pi;

t=1;pi=0;n=1;s=1;

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

while(t>=num)

{

pi=pi+t;

n=n+2;

s=-s;

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

t=s%n;

}

pi=pi*4;

return pi;

}

main()

{float n1,n2;

system("cls");

printf("Enter a float number:");

scanf("%f",&n1);

n2=fun(n1);

printf("%6.4f\n",n2);

}

第1 处内容填写有误

题面要求操作:内容为[t=s*1/n;]

实际操作结果:内容为[t=s%n;]

首先,我们必须先读懂题中程序的大致意思,这是发现并改正程序中错误的重要前提。

程序中的重要思想如下:

1、用题中提供的公式求π的近似值,直到最后一项的绝对值小于指定的数(参数num )为止;

2、在题中必须使用求分数绝对值的函数。

本题的第一个错误:在函数中的while循环中,条件明显不对,应当改为"while((fabs(t) )>=num)",这样才能保证循环结束的条件为最后一项的绝对值小于指定的数(参数num );

本题的第二个错误:在函数循环中求分数值的语句"t = s % n ;"中错误使用了%号,在C语言中%是求余运算符,而我们的目的是为了进行除运算,所以,该语句应当改为"t=s/n;"。

16.给定程序的功能是将未在字符串s中出现,而在字符串t中出现的字符,形成一个新的字符串放在u中,u中字符按原字符串中字符顺序排序,但去掉重复字符。

例如:当s="12345",t="24677"时,u中的字符为:"67"。

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

注意:源程序存放在考生文件夹(E:\c语言\尚意然)下的blank8.c中。

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

#include

#include

void fun (char *s, char *t, char *u)

{ int i, j, sl, tl, k, ul=0;

sl = strlen(s); tl = strlen(t);

for (i=0; i

{ for (j=0; j

if (t[i] == s[j]) break;

if (j>=sl)

{ for (k=0; k

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

if (t[i] == u[k]) ___1___ ;

if (k>=ul)

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

u[ul++] = ___2___ ;

}

}

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

___3___='\0';

}

main()

{ char s[100], t[100], u[100];

printf("\nPlease enter string s:"); scanf("%s", s);

printf("\nPlease enter string t:"); scanf("%s", t);

fun(s, t, u);

题面要求操作:内容为[if (t[i] == u[k]) break;]

实际操作结果:内容为[if(t[i]==u[k])___1___;]

第2 处内容填写有误

第[2]处操作错误

题面要求操作:内容为[u[ul++] = t[i];]

实际操作结果:内容为[u[ul++]=___2___;]

第3 处内容填写有误

第[3]处操作错误

题面要求操作:内容为[u[ul]='\0';]

实际操作结果:内容为[___3___='\0';]

本题考核点为字符串的查找,赋值操作。

题中第一空填"break;":break为跳出循环的语句。"if (t[i] == u[k]) break;"当t[i]==u[k],即u[k]中的字符已经在字符指针t做指向的字符数组中存在,循环就结束。

题中第二空填"t[i]":"u[ul++] = t[i];"是将t[i]赋给u[ul],然后ul加1。

题中第三空填"u[ul]":"u[ul]='\0';",字符串的最后一个字符应该是'\0'的。

17. 在考生文件夹(E:\c语言\尚意然)下的给定程序modi142.c的功能是:读入一个整数k(2≤k≤10000),打印它的所有质因子(即所有为素数的因子)。

例如,若输入整数:2310,则应输出:2,3,5,7,11,

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

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

#include "conio.h"

#include "stdio.h"

#include "stdlib.h"

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

IsPrime ( int, n )

{ int i, m;

m = 1;

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

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

if !( n%i )

{ m = 0; break ; }

return ( m );

}

main( )

{ int j, k;

system("cls");

printf( "\nPlease enter an integer number between 2 and 10000: " ); scanf( "%d", &k );

printf( "\n\nThe prime factor(s) of %d is( are ):\n", k );

for( j = 2; j <= k; j++ )

if( ( !( k%j ) )&&( IsPrime( j ) ) ) printf( "%4d,", j );

printf("\n");

}

题面要求操作:内容为[IsPrime ( int n )]

实际操作结果:内容为[IsPrime(int,n)]

第2 处内容填写有误

第[2]处操作错误

题面要求操作:内容为[if (!( n%i ) )]

实际操作结果:内容为[if!(n%i)]

本题的考核点是C语言的一些基本用法以及 if 语句的使用。

本题中 IsPrime(int , n )是函数的定义,变量与关键字之间不能有逗号。所以,"IsPrime(int , n)"应改为"IsPrime(int n) "。

根据 if 语句的语法规则,if 后的表达式必须由括号括起来。由题意看出,n整除 i 时,也就是说"n%i==0"时,循环才继续进行。因此,"if !(n%i) "应改为"if (!(n%i) )"或相同作用的语句。

18.给定程序的功能是将在字符串s中下标为奇数位置上的字符,紧随其后重复出现一次,放在一个新串t中,t 中字符按原字符串中字符出现的逆序排列。(注意0为偶数)

例如:当s中的字符串为:"1234567"时,则t中的字符串应为:"664422"。

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

注意:源程序存放在考生文件夹(E:\c语言\尚意然)下的blank10.c中。

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

#include

#include

void fun (char *s, char *t)

{ int i, j, sl;

sl = strlen(s);

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

if(sl%2) sl-=2; ___1___ sl--;

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

for (i=sl, j=___2___; i>=0; i-=2)

{ t[2*j] = s[i];

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

t[2*j +1] = ___3___ ;

j++;

}

t[2*j]='\0';

}

main()

{ char s[100], t[100];

printf("\nPlease enter string s:"); scanf("%s", s);

fun(s, t);

printf("The result is: %s\n", t);

}

题面要求操作:内容为[if(sl%2) sl-=2; else sl--;]

实际操作结果:内容为[if(sl%2)sl-=2;___1___sl--;]

第2 处内容填写有误

第[2]处操作错误

题面要求操作:内容为[for (i=sl, j=0; i>=0; i-=2)]

实际操作结果:内容为[for(i=sl,j=___2___;i>=0;i-=2)]

第3 处内容填写有误

第[3]处操作错误

题面要求操作:内容为[t[2*j +1] = s[i];]

实际操作结果:内容为[t[2*j+1]=___3___;]

本题考核点为对字符数组和字符指针的理解。

题中第一个空填"else":"if(sl%2) sl-=2; else sl--;",当s1为奇数时,s1-=2;当s1为偶数时,s1--。

题中第二个空填"0":for循环的结构一般为:for(表达式1;表达式2;表达式3;),其中表达式1主要用于初始化循环变量。

题中第三个空填"s[i]":由题意奇数下标的字符连续写两次,故此处为"s[i];"。

19.在考生文件夹(E:\c语言\尚意然)下的给定程序modi145.c中,函数fun的功能是:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。

例如:当s中的字符串为:"ABCDE"时,

则t中的字符串应为:"EDCBAABCDE"。

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

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

#include

#include

#include

#include

void fun (char *s, char *t)

{

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

int i;

sl = strlen(s);

for (i=0; i

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

t[i] = s[sl-i];

for (i=0; i

t[sl+i] = s[i];

t[2*sl] = '\0';

}

main()

{ char s[100], t[100];

system("cls");

printf("\nPlease enter string s:"); scanf("%s", s);

题面要求操作:内容为[int i,sl;]

实际操作结果:内容为[inti;]

第2 处内容填写有误

第[2]处操作错误

题面要求操作:内容为[t[i]=s[sl-i-1];]

实际操作结果:内容为[t[i]=s[sl-i];]

本题着重考察考生对C语言中一些基本语法和简单算法的掌握情况。

首先,在C语言中要明确在变量使用前,一定要对其进行定义,在本题中使用sl前,没有对其进行定义,所以要修改原语句为int i,sl或其等效语句,应加上对变量的定义!其次,在C语言中数组的下标是从0开始的,所以在这里应该用语句t[i]=s[sl-i-1]或其等效语句,而不是原程序中的t[i] = s[sl-i]。

20.给定程序的功能是把s串中所有的字母改写成该字母的下一个字母,字母z改写成字母a。大写字母仍为大写字母,小写字母仍为小写字母,其它的字符不变。

例如:s串中原有的字符串为:Mn.123Zxy,则调用该函数后,s串中的内容为:No.123Ayz。

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

注意:源程序存放在考生文件夹(E:\c语言\尚意然)下的blank49.c中。

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

#include

#include

#include

#define N 81

fun ( char *s )

{

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

char *p = ___1___ ;

while(*p) {

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

if(*p == 'Z') *p = ___2___ ;

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

else if(*p == 'z') *p = ___3___ ;

else if(isalpha(*p)) *p = (*p) + 1 ;

p++ ;

}

}

main( )

{ char a[N];

printf ( "Enter a string : " ); gets ( a );

printf ( "The original string is : " ); puts( a );

fun ( a );

printf ( "The string after modified : ");

puts ( a );

2019年电大C语言考试题库(c语言小题+编程)

C语言程序设计课程期末复习练习 一、单选题 1.在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为( )。 A. main B. MAIN C. name D. function 2.每个C语言程序文件的编译错误分为()类。 A. 1 B. 2 C. 3 D. 4 3. 字符串"a+b=12\n"的长度为()。 A. 6 B. 7 C. 8 D. 9 4. 在switch语句的每个case块中,假定都是以break语句结束的,则此switch语句容易被改写为()语句。 A. for B. if C. do D. while 5. 在下面的do-while循环语句中,其循环体语句被执行的次数为()。 int i=0; do i++; while(i<10); A. 4 B. 3 C. 5 D. 10 6. 将两个字符串连接起来组成一个字符串时,选用的函数为()。 A. strlen() B. strcap() C. strcat() D. strcmp() 7. 若用数组名作为函数调用的实参,传递给形参的是()。 A. 数组的首地址 B. 数组中第一个元素的值 C. 数组中全部元素的值 D. 数组元素的个数 8. 假定a为一个整数类型的数组名,整数类型的长度为4,则元素a[4]的地址比a数组的首地址大( )个字节。 A. 4 B. 8 C. 16 D. 32 9. 假定s被定义为指针类型char *的变量,初始指向的字符串为"Hello world!",若要使变量p指向s所指向的字符串,则p应定义为()。 A. char *p=s; B. char *p=&s; C. char *p;p=*s; D. char *p; p=&s; 10. 从一个数据文件中读入以换行符结束的一行字符串的函数为()。 A. gets() B. fgets() C. getc() D. fgetc() 11. 由C语言目标文件连接而成的可执行文件的缺省扩展名为( )。 A. cpp B. exe C. obj D. c 12. 设有两条语句为“int a=12; a+=a*a;”,则执行结束后,a的值为( )。 A. 12 B. 144 C. 156 D. 288 13. 带有随机函数调用的表达式rand()%20的值在( )区间内。 A. 1~19 B. 1~20 C. 0~19 D. 0~20 14. for循环语句“for(i=0; i

西工大C语言上机考试题库

1:2:3 #include #include int main() { int i=0,j=0,k=0,a=0,b=0,c=0,l=0,m=0,n=0,d=0,p=0,q=0; for(i=1;i<=3;i++) { for(j=1;j<=9;j++) { if(i!=j) { for(k=1;k<=9;k++) { if(k!=j&&i!=k) { a=i*100+j*10+k; b=a*2; c=a*3; l=b%10,d=c%10; m=(b%100)/10,p=(c%100)/10; n=b/100,q=c/100; if(l!=0&&m!=0&&n!=0&&d!=0&&p!=0&&q!=0) if(i!=l&&i!=m&&i!=n&&j!=l&&j!=m&&j!=n&&k!=l&&k!=m&&k!=n) if(i!=d&&i!=p&&i!=q&&j!=d&&j!=p&&j!=q&&k!=d&&k!=p&&k!=q) if(l!=d&&l!=p&&l!=q&&m!=d&&m!=p&&m!=q&&n!=d&&n!=p&&n!=q) printf("%d %d %d\n",a,b,c); } }

} } } return 0; } 8 #include"stdio.h" int main() { int a,b[10],m=0,n=0,p; int i,j,k; scanf("%d",&a); for(i=1;i<=a;i++) { m=0; n=0; p=i; for(j=0;p!=0;j++) { b[j]=p%10; p=p/10; } for(k=0;k

大学C语言考试试题

C语言模拟试题 一、判断 1、关系运算符<= =与= =的优先级相同。(N ) 2、C语言的函数可以嵌套定义。(N ) 3、若有定义和语句:int a;char c;float f;scanf(“%d,%c,%f”,&a,&c,&f);若通过键盘输入:10,A,12.5, 则a=10,c=?A?,f=12.5.( Y ) 4、变量根据其作用域的范围可以分作局部变量和全局变量。( Y ) 5、#define和printf都不是C语句。( Y ) 6、Int I,*p=&I;是正确的C说明。( Y ) 7、结构体类型只有一种。( N ) 8、在Turbo C中,整形数据在内存中占2个字节。( N ) 9、一个include命令可以指定多个被包含的文件。( N ) 10、有如下说明:int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是*(p+8).( Y ) 二、选择 2、C语言中,char类型数据占(A) A、1个字节 B、2个字节 C、4个字节 D、8个字节 3、已知x=43,ch=?A?,y=o;则表达式(x>=y&&ch1;i--) for(j=1;j

大学c语言考试题库含答案

================================================== 题号:1482 执行以下程序段后,输出结果和a的值是()。int a=10; printf("%d",a++); A、11 和10 B、11 和11 C、10 和11 D、10 和10 答案: C 题号:2100 已知字符'A'的ASCⅡ代码值是65,字符变量c1的值是'A',c2的值是'D'.执行语句printf("%d,%d",c1,c2-2);后,输出结果是 A、65,66 B、A,B C、65,68 D、A,68 答案: A 题号:5055 相同结构体类型的变量之间,可以()。 A、比较大小 B、地址相同 C、赋值 D、相加 答案: C 题号:3217 int a[10];合法的数组元素的最小下标值为()。 A、1 B、0 C、10 D、9 答案: B

能正确表示逻辑关系:" a≥10或a≤0 "的C语言表达式是 A、a>=0 | a<=10 B、a>=10 or a<=0 C、a>=10 && a<=0 D、a>=10 || a<=0 答案: D 题号:157 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",a,b); }该程序的输出结果是( ) A、2,2 B、2,1 C、1,1 D、1,0 答案: B 题号:4784 设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的 数据类型为()。 A、不确定 B、double C、int D、float 答案: B 题号:1647 以下程序中,while循环的循环次数是______ main() { int i=0;

C语言上机题库百科园第2章!南信大!

第二章 若有数学式3ae bc,则不正确的C语言表达式是() A.3*a*e/b*c B.a/b/c*e*3 C.3*a*e/b/c D.a*e/c/b*3 设:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b) && (n=c>d)后n的值为()。 A.4 B.3 C.2 D.1 下列表达式中,不满足"当x的值为偶数时值为真,为奇数时值为假"的要求的是() A.(x/2*2-x)==0 B.!(x%2) C.!(x%2==0) D.x%2==0 表达式18/4*sqrt(4.0)/8值的数据类型为()。 A.char B.double C.不确定 D.float 在C语言中,要求运算数必须是整型的运算符是( ) A.% B./ C.++ D.!= 若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为()。 A.4

C.16 D.52 C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( ) A.必须为下划线 B.必须为字母 C.可以是字母、数字和下划线中的任意一种 D.必须为字母或下划线 若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是( ) A.不知道a的值,不能确定 B.0 C.2 D.1 判断字符型变量c1是否为数字字符的正确表达式为( ) A.(c1>='0')&&(c1<='9') B.(c1>=0)&&(c1<=9) C.('0'>=c1)||('9'<=c1) D.'0'<=c1<='9' 下面四个选项中,均是合法的用户标识符的选项是()。 A._123 temp INT B.A p_o do C.b-a goto int D.float lao _A 以下关于C语言数据类型使用的叙述中错误的是( ) A.若要处理如"人员工资"的相关数据,单精度类型 B.若只处理"真"和"假"两种逻辑值,应使用逻辑类型 C.若要保存带有多位小数的数据,应使用双精度类型 D.若要准确无误差的表示自然数,应使用整数类型 假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是()。 A.7 B.8 C.6 D.2 下面正确的字符常量是()

大学C语言考试试题及答案

精选考试类文档,如果您需要使用本文档,请点击下载! 祝同学们考得一个好成绩,心想事成,万事如意! 大学C语言考试试题及答案 姓名成绩 温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔细地完成这张试题吧。加油! 一单项选择题 1. 在C语言中,以 D 作为字符串结束标志 A)’\n’ B)’ ’ C) ’0’ D)’\0’ 2.下列数据中属于“字符串常量”的是( A )。 A.“a” B.{ABC} C.‘abc\0’ D.‘a’ 若干个字符构成字符串 在C语言中,用单引号标识字符;用双引号标识字符串

选项B,C,分别用{}和’’标识字符串 选项D,标识字符。 3、以下说法中正确的是( C )。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是( B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C )。 A.-a1 B.a[i] C.a2_i D.int t 6.下列C语言用户标识符中合法的是( B )。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是( C )。 A) %x B) a+b C) a123 D) 123 8、下列四组字符串中都可以用作C语言程序中的标识符的是( A )。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 9.C语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是 C 。 A)2.5 B)2 C)1 D)3 11.如果int a=3,b=4;则条件表达式"a

C语言上机题库

C语言习题集 3.11输入'A'~'F'中的一个字母,代表一个十六进制数,将其转换为十进制数,求该数与15的和并输出。 输入格式: B 输出格式: 26 #include int main(void) { char ch; int sum; ch=getchar(); sum=ch-'A'+10+15; printf("%d\n",sum); return 0; } 3.12输入三个整数,求其平均值。 输入格式: 3 5 7 输出格式: 5 #include int main(void) { int a,b,c,aver; scanf("%d %d %d",&a,&b,&c); aver=(a+b+c)/3; printf("%d\n",aver); return 0; } 3.13根据c=5/9*(f-32) 公式,输入华氏温度f,求摄氏温度c,结果精确到小数点后两位。 输入格式: 80.0 输出格式: 26.67 #include int main(void) { float f,c; scanf("%f",&f); c=5.0/9*(f-32); printf("%.2f\n",c); return 0; } 3.14输入一个四位正整数,求其各位数字之和。例如,1357的各位数字之和为1 + 3 + 5 + 7 = 16。 输入格式: 1357 输出格式: 16 #include int main(void) { int num; int a,b,c,d,total; scanf("%d",&num); a=num/1000; b=(num-a*1000)/100; c=(num-a*1000-b*100)/10; d=num-a*1000-b*100-c*10; total=a+b+c+d; printf("%d\n",total); return 0; } 3.15输入一大写字母,输出对应的小写字母。 输入格式: A 输出格式: a #include int main(void) { char c1,c2;

(完整版)C语言考试题库之判断题(2)

三、判断题(10道小题,共10分) 1、C 语言具有简洁明了的特点。(1分) 正确 2、预处理命令的前面必须加一个“#”号。(1分) 正确 3、标准格式输入函数scanf()可以从键盘上接收不同数据类型的数据项。(1分) 正确 4、在if语句的三种形式中,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{}括起来组成一个复合语句。(1 分) 正确 5、continue 不是结束本次循环,而是终止整个循环的执行。(1分) 错误 6、在对数组全部元素赋初值时,不可以省略行数,但能省略列数(1分) 错误 7、.函数的实参传递到形参有两种方式值传递和地址传递(1分) 正确 8、直接访问就是直接利用变量的地址进行存取直接访问(1分) 正确 9、共用体变量可以作结构体的成员,结构体变量也可以作共用体的成员。(1分) 正确 10、文件指针和位置指针都是随着文件的读写操作在不断改变。(1分) 错误 11、C 语言标准格式输入函数scanf() 的参数表中要使用变量的地址值。(1分) 正确 12、浮点型常量的指数表示中,e 是可以省略的。(1分) 错误 13、任何表达式语句都是表达式加分号组成的。(1分) 正确 14、在switch语句中,每一个的case常量表达式的值可以相同。(1分) 错误 15、do-while循环的while后的分号可以省略。(1分) 错误 16、用字符串方式赋值比用字符逐个赋值要多占一个字节,用于存放字符串结束标志'\0'。正确 17、C语言函数返回类型的默认定义类型是void(1分) 错误 18、可以用一个指针变量指向一个函数,然后通过该指针变量调用此函数(1分) 正确 19、枚举类型中的元素都具有一个整型值。(1分) 正确 20、C 语言是一种具有某些低级语言特征的高级语言。(1分) 正确 21、case语句后如没有break,顺序向下执行。(1分)正确

c语言上机题库 (1)

1、给定n 个数据, 求最小值出现的位置(如果最小值 出现多次,求出第一次出现的位置即可)。 2、编写程序求无理数e 的值并输出。计算公式为: e=1+1/1!+1/2!+1/3!+......+1/n! 当1/n!<0.000001时e=2.718282。 3、求一批数中最大值和最小值的积。 4、某一正数的值保留2位小数,对第三位进行四舍 五入。 5、从键盘上输入任意实数x,求出其所对应的函数值。 z=(x-4)的二次幂(x>4) z=x 的八次幂(x>-4) z=z=4/(x*(x+1))(x>-10) z=|x|+20(其他) 6、求出N ×M 整型数组的最大元素及其所在的行坐标 及列坐标(如果最大元素不唯一,选择位置在最前面 的一个)。 例如:输入的数组为: 1 2 3 4 15 6 12 18 9 10 11 2 求出的最大数为18,行坐标为2,列坐标为1。 7、求一个n 位自然数的各位数字的积。(n 是小于10的 自然数) 8、计算n 门课程的平均值,计算结果作为函数值返回。 例如:若有5门课程的成绩是:92,76,69,58,88, 则函数的值为76.599998。 9、求一批数中小于平均值的数的个数。 10、编写函数判断一个整数m 的各位数字之和能否被7整除, 可以被7整除则返回1,否则返回0。调用该函数找出 100~200之间满足条件的所有数。

11、请编一个函数void fun(int tt[M][N],int pp[N]), tt指向一个M行N列的二维数组,求出二维数组每列 中最大元素,并依次放入pp所指一维数组中。二维 数组中的数已在主函数中赋予。 12、编写函数fun用比较法对主程序中用户输入的具有10 个数据的数组a按由大到小排序,并在主程序中输出 排序结果。 13、编写main程序调用函数fact求解从m个元素选n 个元 素的组合数的个数。计算公式是:组合数=m!/(n!.(m-n)!)。 要求:m不能小于n,否则应有容错处理。 说明:函数fact(x)的功能是求x!。 14、找出一批正整数中的最大的偶数。 15、实现两个整数的交换。 例如:给a和b分别输入:60和65,输入为: a=65 b=60 16、将字符串中的小写字母转换为对应的大写字母, 其它字符不变。 17、求一个四位数的各位数字的立方和。 18、求一组数中大于平均值的数的个数。 例如:给定的一组数为1,3,6,9,4,23,35,67,12,88时,函数值为3。 19、对任意输入的x,用下式计算并输出y 的值。 5 x<10 y= 0 x=10 -5 x>10 20、求给定正整数m以内的素数之和。 例如:当m=20时,函数值为77。 21、判断整数x是否是同构数。若是同构数,函数返回1; 否则返回0。x的值由主函数从键盘读入,要求不大

c语言上机考试训练题库及答案

上机考试习题集 1.编写程序,一次输入5个学生的3门课成绩,每输入一个学生的3门成绩后,立即统计并输出该学生的总分和平均分。 #include "stdio.h" void main() { int score[5][3], i,j; float sum[5],average[5]; printf("请分别输入三个学生的成绩:\n"); for(i=0;i<5;i++) { sum[i]=0; for(j=0;j<3;j++) {scanf("%d",&score[i][j]); average[i]=0; sum[i]+=score[i][j]; average[i]=sum[i]/5; } } for(i=0;i<5;i++) printf("第%d个学生的总分为:%f,平均成绩为:%f\n",i+1,sum[i],average[i]); } 2 、编写程序,提示用户从键盘输入一个double类型的数,使该数保留小数点后两位,对第三位小数进行四舍五入处理,然后在显示器上输出此数,以便验证处理是否正确。 #include #include double rounding(double x,int n); void main() { double x,x1; int n; printf("请输入一个浮点数:\n"); scanf("%lf",&x); printf("请输入给定的小数位:\n"); scanf("%d",&n); x1=rounding(x,n); printf("圆整后的数为:\n%.*lf\n",n,x1); } double rounding(double x,int n)

c语言期中考试试题及答案

《C语言程序设计》期中考试试卷 课程编号:03402513试卷类型:A卷考试形式:笔试考试日期: 注意事项:1.请将试卷最后一页的答题纸撕下,将答案填写在其中;2.交卷时请确认答题纸是否按要求写好姓名等信息并与试题一起上交;3.不准携带任何书籍、资料、纸张等。4.草稿纸用试卷的背面。 一、单项选择题(1空1分,共20分) 1、C语言程序的基本结构是(【1】) 。 【1】 A) 函数 B) 语句 C) 字符 D) 程序行 2、一个C程序的执行是(【2】) 。 【2】A) 从本程序的主函数开始,到本程序的主函数结束 B)从本程序的第一个函数开始,到本程序的最后一个函数结束 C) 从本程序的主函数开始,到本程序的最后一个函数结束 D)从本程序的第一个函数开始,到本程序的主函数结束 3、下列四个叙述中,错误的是(【3】) 。 【3】 A) 一个C源程序必须有且只能有一个主函数 B) 一个C源程序可以含一个或多个子函数 C) 在C源程序中注释说明必须位于语句之后 D) C源程序的基本结构是函数 4、下面不属于C语言保留字的是(【4】) 。 【4】 A) short B) ELSE C) extern D) for 5、下列四个叙述中,正确的是(【5】) 。 【5】 A) 库函数也是C语言本身的组成部分 B) C语言中的输入输出操作是由相应语句完成的 C) 库函数是C编译系统提供的功能函数 D) 标题文件(头文件)可以在程序的函数内部调用 6、下列四组数据类型中,C语言允许的一组是(【6】)。 【6】 A) 整型、实型、逻辑型 B) 整型、实型、字符型 C) 整型、双精度型、布尔型 D) 整型、实型、复型 7、在C语言中不同数据类型的的长度是(【7】)。 【7】 A) 固定的 B) 由用户自己定义的 C) 任意的 D) 与机器字长有关

C语言试题库(完整版)

C语言试题库 一、单项选择 第一章 C语言概述 (1)一个C程序的执行是从 A、本程序的MAIN函数开始,到MAIN 函数结束。 B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。 C、本程序的MAIN函数开始,到本程序的最后一个函数结束。 D、本程序文件的第一个函数开始,到本程序的MAIN函数结束。(2)以下叙述正确的是 A、在C程序中,MAIN函数必须位于程序的最前面。 B、 C程序的每行中只能写一条语句。 C、 C语言本身没有输入输出语句。 D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误。(3) C语言规定,在一个源程序中,MAIN主函数的位置是在: A、必须在最前面。 B、必须在系统调用的库函数的后面 C、可以在任意位置。

D、必须在最后面 (4)一个C程序是由: A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 (5)以下叙述不正确的是: A、一个C源程序可由一个或多个函数组成 B、一个C源程序必须包含一个MAIN函数 C、 C程序的基本组成单位是函数 D、在C程序中,注释说明只能位于一条语句的后面 第二章数据类型、运算符与表达式 (1)若x, i, j, k都是int型变量,则计算下面表达式后,x的值为x=( i=4, j=16, k=32) A、4 B、16 C、32

D、52 (2)下列四组选项中,均不是C语言键字的选项是 A、define , IF, type B、getc, char, printf C、include, scanf, case E、 if, struct, type (3)下面四个选项中,均是不合法的用户标识符的选项是A、A,P_0,do B、float,1a0, _A C、b-a, goto, int D、_123, temp, INT (4)若有代数式3ae/bc,则正确的C语言表达式是A、a/b/c*e*3 B、3*a*e/bc C、3*a*e/b*c D、a*e/c/b*3 (5)已知各变量的类型说明如下:

大一c语言考试试题

一、单项选择题(每小题2分,共50分) 1、一个C程序的执行是从___A__。 A、本程序的main函数开始,到main函数结束 B、本程序的main函数开始,到本程序文件的最后一个函数结束 C、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 D、本程序文件的第一个函数开始,到本程序main函数结束 2、C语言程序的基本单位是___C___。 A、程序行 B、语句 C、函数 D、字符 3、请选出可用作C语言用户标识符的一组标识符___B___。 A、void B、a3_b3 C、For D、2a define_123-abcDO WORDIFasesizeof 4、假定x和y为double型,则表达式(x=2,y=x+5/2)的值是__C__。 A、、4 C、、 5、下列可以正确表示字符型常量的是___D__。 A、297 B、"a" C、"\n" D、'\t' 6、在C语言中,要求运算数必须是整型的运算符是__D__。 A、/ B、++ C、*= D、% 7、C语言中,复合语句的构成是将一系列语句置于__C__。 A、begin与end之间 B、方框号“[]”之间 C、花括号“{}”之间 D、圆括号“()”之间 8、有如下程序段,对应正确的数据输入是___A___。 floatx,y; scanf(”%f%f”,&x,&y); printf(”a=%f,b=%f”,x,y); A、<回车> B、,<回车> <回车> C、A=,B=<回车> D、回车> 9、以下程序段的输出结果是___D__。 inta=5678; printf(”%2d\n”,a); A、提示出错、无结果 B、56 C、78 D、5678 10、已知:charch='A';则下列表达式的值是__B__。 ch=(ch>='A'&&ch<='Z')?(ch+32):ch; A、A B、a C、Z D、z

大学C语言考试题库及答案

精选考试类应用文档,如果您需要使用本文档,请点击下载,另外祝您生活愉快,工作顺利,万事如意! 大学C语言考试题库及答案 姓名成绩 温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔细地完成这张试题库吧。加油! 一单项选择题库 1. 在C语言中,以 D 作为字符串结束标志 A)’\n’ B)’ ’ C) ’0’ D)’\0’ 2.下列数据中属于“字符串常量”的是( A )。 A.“a” B.{ABC} C.‘abc\0’ D.‘a’ 若干个字符构成字符串 在C语言中,用单引号标识字符;用双引号标识字符串 选项B,C,分别用{}和’’标识字符串 选项D,标识字符。 3、以下说法中正确的是( C )。 A、C语言程序总是从第一个定义的函数开始执行

B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C )。 A.-a1 B.a[i] C.a2_i D.int t 6.下列C语言用户标识符中合法的是(B )。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是(C )。 A)%x B)a+b C)a123 D)123 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A )。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 9.C语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是 C 。

2020年全国计算机等级考试二级c语言上机精选题库(共80套)

2020年全国计算机等级考试二级c语言上机精选题库(共80套) 第1套试题 第一题:给定程序中,函数fun的功能是:计算N*N矩阵的主对角元素和反向对角元素之和,并作为函数值返回。注意:要求先累加主对角线元素中的值,然后累加反向对角线元素中的值。 例如,若N=3,有下列矩阵: 1 2 3 4 5 6 7 8 9 fun函数首先累加1、5、9,然后累加3、5、7,函数的返回值为30。 请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。 #include #define N 4 fun(int t[][N], int n) { int i, sum; ___1___; for (i=0; i

第二题:下列给定程序中,函数fun 的功能是:根据整型参n ,计算如下公式的值。 ,11=A ,1112A +=A ,1123A +=A … ,1 11-A +=A n n 例如,若n=10,则应输出0.617978。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main 函数,不得增行或删行,也不要更改程序的结构! #include #include /********found********/ fun(int n) { double A = 1; int i; /********found********/ for(i=2;i #include void fun (int a, int b, long *c) { }

C语言考试题库之判断题[1]_共5页

三、判断题(10道小题,共10分) 1、c语言具有简洁明了的特点。 正确 2、预处理命令的前面必须加一个“#”号。正确 3、标准格式输入函数seanf()可以从键盘上接收不同数据类型的数据项。 正确 4、在if语句的三种形式中,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{} 括起来组成一个复合语句。 正确 5、continue不是结束本次循环,而是终止整个循环的执行。 错误 6、在对数组全部元素赋初值时,不可以省略行数,但能省略列数 错误 7、.函数的实参传递到形参有两种方式值传递和地址传递 正确 8、直接访问就是直接利用变量的地址进行存取直接访问 正确 9、共用体变量可以作结构体的成员,结构体变量也可以作共用体的成员。 正确 10、文件指针和位置指针都是随着文件的读写操作在不断改变。 错误 11、C语言标准格式输入函数scanfO的参数表中要使用变量的地址值。 正确 12、浮点型常量的指数表示中,6是可以省略的。 错误 13、任何表达式语句都是表达式加分号组成的。 正确 14、在switch语句中,每一个的case常量表达式的值可以相同。 错误 15、do-while循环的while后的分号可以省略。 错误 16、用字符串方式赋值比用字符逐个赋值要多占一个字节,用于存放字符串结束标志'\0'。 正确 17、C语言函数返回类型的默认定义类型是void( 错误 18、可以用一个指针变量指向一个函数,然后通过该指针变量调用此函数正确 19、枚举类型中的元素都具有一个整型值。 正确 20、C语言是一种具有某些低级语言特征的高级语言。 正确 21、c ase语句后如没有break,顺序向下执行。正确 22、d o-while循环至少要执行一次循环语句。正确

历年全国计算机等级考试-二级C语言上机考试题库及答案

1.填空 给定程序的功能是调用fun函数建立班级通讯录。通讯录中记录每位学生的编号,姓名和电话号码。班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。 请在程序的下划线处填入正确的内容并把下划线删除,是程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.c中 不得增行或删行,也不得更改程序的结构! void check(); /**********found**********/ int fun(___1___ *std) { /**********found**********/ ___2___ *fp; int i; if((fp=fopen("myfile5.dat","wb"))==NULL) return(0); printf("\nOutput data to file !\n"); for(i=0; i

大学C语言期末考试习题集(带详解答案)

一、单项选择题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从 C开始执行。 A) 程序中第一条可执行语句 B) 程序中第一个函数 C) 程序中的main函数 D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B)。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 5~8题为相同类型题 考点:标识符的命名规则 (1)只能由字母、数字、下划线构成 (2)数字不能作为标识符的开头 (3)关键字不能作为标识符 选项A中的“-”,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3) 6.下列C语言用户标识符中合法的是( B)。 A)3ax B)x C)case D)-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是(C)。 A) %x B) a+b C) a123 D) 123 选项A中的“%”,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2) 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai

二级C语言上机题库及答案

第一套题 上机填空: #include double fun(double e) { int i, k; double s, t, x; s=0; k=1; i=2; /**********found**********/ x=__1__/4; /**********found**********/ while(x __2__ e) { s=s+k*x; k=k* (-1); t=2*i; /**********found**********/ x=__3__/(t*t); i++; } return s; } main() { double e=1e-3; printf("\nThe result is: %f\n",fun(e)); 第一处答案:3.0 第二处答案:> 第三处答案:(2*i+1)或者(t+1) 上机改错题: #include /************found************/ void fun ( int n )

{ int a, b, c, k; double s; s = 0.0; a = 2; b = 1; for ( k = 1; k <= n; k++ ) { /************found************/ s = s + (Double)a / b; c = a; a = a + b; b = c; } return s; } main( ) { int n = 5; printf( "\nThe value of function is: %lf\n", fun ( n ) ); } 第一处改错:将:void fun ( int n ) 改为double fun ( int n ) 第二处改错:s = s + (Double)a / b; 改为s = s + (double)a / b; 第二套题 上机填空题 #include double fun(int n) { int i; double s, t; /**********found**********/ s=__1__; /**********found**********/ for(i=1; i<=__2__; i++) { t=2.0*i; /**********found**********/ s=s+(2.0*i-1)*(2.0*i+1)/__3__; } return s; } main() { int n=-1; while(n<0) { printf("Please input(n>0): "); scanf("%d",&n); }

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