当前位置:文档之家› c语言机试上级答案解析(21-40)

c语言机试上级答案解析(21-40)

c语言机试上级答案解析(21-40)
c语言机试上级答案解析(21-40)

第二十一套:

一、请补充main函数,该函数的功能是:打印出满足个位的数字、十位上的数字和百位上的数字都相等的所有三位数。

本题的结果为:

111 222 333 444 555 666 777 888 999。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。

试题程序:

#include

#include

void main()

{

int g, s, b;

system("CLS");

for(g=1; g<10; g++)

for (s=1; s<10; s++)

for(b=1; b<10; b++)

{

if(【1】)

printf("%5d",【2】);

}

}

答案:【1】g==s&&s==b或者g==b&&s==b或者g==s&&g==b 【2】g+s*10+b*100

【解析】填空1:变量g表示三位数的个位数字,变量s表示三位数的十位数字,变量b表示三位数的百位数字。注意,表示三个数字都相等时,不能写成"g==s==b",而要写成"g==s&&s==b"或者"g==b&&s==b"或者"g==s&&g==b"。填空2:一个三位数可以表示为:百位数字乘以100加上十位数字乘以10,再加上个位数字。

二、下列给定程序中,函数fun的功能是:求S的值。设

S=(22/(1*3))*(42/(3*5))*(62/(5*7))*…*(2k)2/((2k-1)*(2k+1))

例如,当k为10时,函数的值应为1.533852。

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

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

试题程序:

#include

#include

#include

#include

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

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++;

}

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

return s

}

void main()

{ system("CLS");

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

}

答案:(1)错误:fun(int k) 正确:double fun(int k)

(2)错误:return s 正确:return s ;

【解析】这样一道数学题要是用C程序来实现,真的挺简单,但我们还是需要注意细节问题上出的错误,该题便是如此。一个是简单的函数调用的定义错误,另一个是语法错误。

三、请编写函数fun,该函数的功能是:计算并输出

S=1+(1+20.5)+(1+20.5+30.5)+…+(1+20.5+30.5+…+n0.5)

例如,若主函数从键盘给n输入20后,则输出为s=534.188884。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

#include

double fun(int n)

{

}

void main()

{

int n;

double s;

printf("\n\nInput n: ");

scanf("%d",&n);

s=fun(n);

printf("\n\ns=%f\n\n",s);

}

答案:double fun(int n)

{

int i;

double s=0.0,s1=0.0;

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

{s1=s1+pow(i,0.5);

/*求每一项*/

s=s+s1;

/*按公式求出s*/

}

return s;

}

【解析】我们先用数学的思路读懂该程序,并用1个字符表示"()"内的值。在本程序中用s1来表示题中每个小括号内的值,第1项相当于有1个10.5(它还是1),第2项相当于第1项的值加上20.5,第3项相当于第2项的值加上30.5,…,依次类推。函数pow(x,y)的功能是求出x的y次方,该函数已在库函数中定义(即可直接使用)。程序中用s来表示总的结果,每1次循环加1次s1,即加1项。

第二十二套:

一、请补充函数fun,该函数的功能是:判断一个数的个位数字和百位数字之和是否等于其十位上的数字,是则返回"yes!",否则返回"no!"。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。

试题程序:

#include #include #include char *fun(int n) { int g,s,b; g=n%10; s=n/10%10; b=【1】; if((g+b)==s) return 【2】; else return 【3】; }

void main() { int num=0; system("CLS"); printf("******Input data *******\n"); scanf("%d",&num); printf("\n\n\n"); printf("****** The result *******\n"); printf("\n\n\n%s",fun(num));

}

答案:【1】n/100%10 【2】″yes!″ 【3】″no!″

【解析】填空1:由程序可以知道,变量g 保存了整数的个位数,变量s 保存了整数的十位数,所以变量b 应该保存整数的百位数。将整数除以100再对10取余,则得到这个整数的百位数。填空2:当个位数字和百位数字之和等于十位数字时,返回″yes!″。填空3:当个位数字和百位数字之和不等于十位数字时,返回″no!″。

二、下列给定程序中,函数fun 的功能是:计算并输出下列数的前N 项之和S N ,直到S N+1大于q 为止,q

的值通过形参传入。

N 1N 342312S N +++++=

例如,若q 的值为50.0,则函数值为49.394948。 请改正程序中的错误,使程序能输出正确的结果。

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

#include #include double fun(double q) {

int n;

double s ,t; n=2; s=2.0;

while (s <= q) {

t=s;

/********found*********/ s=s+ (n+1)/n; n++;

}

printf("n=%d\n",n); /********found********/ return s;

}

main ( )

{

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

}

答案:(1)错误:s=s + (n+1)/n正确:s=s + (double)(n+1)/n;

(2)错误:return s正确:return t;

【解析】(1)在c语言中,整数除以整数得出的结果也是整数,题中是计算小数的,所以要转变类型。(2)观察while循环,假如返回值是s的话,那么返回的是大于q的值,题中所要返回的是小于q的值,所以应该返回t。

三、请编写函数fun,其功能是:计算并输出下列多项式值。

S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n)

例如,若主函数从键盘给n输入8后,则输出为S=0.662872。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

double fun(int n)

{

}

void main()

{

int n;

double s;

printf("\nInput n: ");

scanf("%d",&n);

s=fun(n);

printf("\ns=%f\n ",s);

}

答案:double fun(int n)

{

int i;

double s=0.0;

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

s=s+(1.0/(2*i-1)-1.0/(2*i)); /*计算S=(1-1/2)+(1/3-1/4)+…+

(1/(2n-1)-1/2n)*/

return s;

}

【解析】本题中s=s+(1.0/(2*i-1)-1.0/(2*i));语句是用C程序表达题目中的每一项,这是关键的一步,其他问题不难理解。

第二十三套:

一、请补充函数fun,该函数的功能是:把数组aa中的偶数元素按原来的先后顺序放在原数组后面。

例如,输入"33,67,42,58,25,76,85,16,41,56",输出结果"33,67,25,85,41,42,58,76,16,56"。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。

试题程序:

#include

#include

#define N 10

void fun(int aa[])

{

int I, j=0,k=0;

int bb[N];

for (I=0;I

{

if (【1】)

bb[k++]=aa[I];

else

aa[j++]=aa[I];

}

for(I=0;【2】;I++,j++)

aa[j]=bb[I];

}

void main()

{

int i;

int aa[N]={33,67,42,58,25,76,85,16,

41,56};

system("CLS");

printf("\n*** original list ***\n");

for (i=0;i

printf("%4d",aa[i]);

fun(aa);

printf("\n*** new list ***\n ");

for (i=0; i

printf("%4d",aa[i]);

}

答案:【1】aa[I]%2==0 【2】I

【解析】填空1:如果一个数对2求余,结果为0,那么这个数为偶数,把这个数暂时存在数组bb中。否则这个数为奇数,存在数组aa中。填空2:最后,将数组bb中的偶数都拷贝到数组aa中奇数的后面。变量k记录了原数组aa中偶数的个数,所以for循环的条件是I

二、下列给定程序中,函数fun的功能是:求表达式s=aa…aa-…-aa-aa-a(此处aa…aa表示n个a,a和n的值在1至9之间)的值。例如a=3,n=6,则以上表达式为:

s=333333-33333-3333-333-33-3

其值是296298。a和n是函数fun的形参,表达式的值作为函数值传回main函数。

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

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

试题程序:

#include

#include

long fun (int a,int n)

{

int j;

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

long s=0, t=1;

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

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

t=t*10+a;

s=t;

for(j=1; j

{

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

t=t%10;

s=s-t;

}

return(s);

}

main ( )

{

int a , n;

printf("\nPlease enter a and n:");

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

printf("The value of function is%id\n",fun(a,n));

}

答案:(1)错误:long s=0,t=1正确:long s=0, t=0;

(2)错误:for (j=0; j<=n; j++)正确:for (j=0; j

(3)错误:t=t%10正确:t=t/10;

【解析】(1)用带入法就可看出,结果是错误的,它的个位出现了问题。(2)从题中给出的例题就可以看出,当n=6,a=3时,得到的最大数为33333,是一个五位数,所以这里只要从0开始循环6次,就可以了。(3)根据题意,这里不需要求余数,而是要去掉个位数,重新组合一个数。

三、假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的冰号之外,将串中其他*号全部删除。在编写函数时,不得使用c语言提供的字符串函数。

例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是料****ABCDEFG。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

#include

#include

void fun(char *a)

{

}

main ( )

{

char s[81];

printf("Enter astring:\n");

gets(s);

fun(s);

printf("The string after deleted:\n");

puts(s);

}

答案:void fun(char *a)

{

int i=0;

char *p=a;

while(*p&&*p=='*')

{

a[i]=*p;i++;p++;

}

while(*p)

{

if(*p!='*')

{

a[i]=*p;i++;

}

p++;

}

a[i]='\0';

}

【解析】函数fun的功能是除了字符串前导的*号之外,将串中其他*号全部删除。解答本题,1、定义一个临时指针p,初始指向原串首地址;2、利用循环把字符串前导*号拷贝到原串;

3、继续移动指针,把串中和串尾的非*号字符拷贝到原串;

4、为修改后的字符串赋结尾字符'\0'。

第二十四套:

一、请补充函数fun,该函数的功能是:判断某一个年份是否为闰年。

例如,1900年不是闰年,2004是闰年。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。

试题程序:

#include

#include

#include

int fun(int n)

{

int flag=0;

if(n%4==0)

{

if (【1】)

flag=1;

}

if (【2】)

flag=1;

return【3】;

}

void main()

{

int year;

system("CLS");

printf("Input the year:");

scanf("%d",&year);

if (fun(year))

printf("%d is a leap year. \n",year);

else

printf("%d is not a leap year.\n",

year);

}

答案:【1】n%100!=0或n%100 【2】n%400==0 【3】flag

【解析】填空1:判断闰年的方法是,年份能被4整除但不能被100整除,或者年份能被400整除。n不能被100整除,即对100取余非零。填空2:能被400整除的年份也是闰年,n 能被400整除,即对400取余为零。填空3:flag标记年份n是否为闰年,当flag为1时是闰年,相反,当flag为0时不是闰年。

二、下列给定程序中,函数fun的功能是:判断一个整数m是否是素数,若是返回1,否则返回0。在main函数中,若fun()返回1则输出YES,若fun()返回0则输出NO!

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

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

试题程序:

#include

#include

#include

int fun(int m)

{ int k=2;

while (k<=m&&(m%k))

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

k++

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

if(m=k)

return 1;

else return 0;

}

void main()

{ int n;

system("CLS");

printf("\nPlease enter n: ");

scanf("%d",&n);

if(fun(n)) printf("YES\n");

else printf("NO!\n");

}

答案:(1)错误:k++ 正确:k++ ;

(2)错误:if(m=k) 正确:if(m==k)

【解析】函数fun的功能是判断m是否为素数:m从2开始作为除数,并对m取余,若不存在一个数使得余数为0,则m为素数,程序的错误在于if(m=k)语句中的逻辑表达式写成了赋值表达式。

三、请编写函数fun,该函数的功能是:判断字符串是否为回文?若是则函数返回1,主函数中输出YES,否则返回0,主函数中输出NO。回文是指顺读和倒读都一样的字符串。

例如,字符串LEVEL是回文,而字符串123312就不是回文。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

#define N 80

int fun (char *str)

{

}

main ( )

{

char s[N];

char *test[] = {"1234321", "123421", "123321", "abcdCBA"};

int i;

printf("Enter a string:");

gets(s) ;

printf("\n\n");

puts(s) ;

if(fun(s))

printf(" YES\n");

else

printf(" NO\n");

}

答案:int fun(char *str)

{

int i,n=0,fg=1;

char *p=str;

while (*p) /*将指针p置位到字符串末尾,并统计字符数*/

{

n++;

p++;

}

for(i=0;i

/*循环比较字符*/

if(str[i]==str[n-1-i]) ; /*相

同,什么都不作*/

else /*不同,直接跳出循环*/

{

fg=0;

break;

}

return fg;

}

【解析】判断回文数就是将第一个字符与最后一个字符比较,第二个字符与倒数第二个字符进行比较,依次类推,直到中间的字符,如果比较的结果都是相同,那么这个字符串就是回文数,否则不是。

第二十五套:

一、给定程序的功能是:判断字符ch是否与串str中的某个字符相同,若相同什么也不做,若不同则插在串的最后。

注意:部分源程序给出如下。

请勿改动函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。

试题程序:

#include

#include

void fun(char *str,char ch)

{

while (*str && *str!=ch)

str++;

if (*str【1】ch)

{

str[0] = ch;

【2】=0;

}

}

main ( )

{

char s[81],c;

printf("\nPlease enter a string:\n");

gets(s);

printf("\n Please enter the character to search:");

c=getchar();

fun(【3】);

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

}

答案:【1】!= 【2】str[1]或*(str+1) 【3】s,c

【解析】填空1:根据题意"若相同什么也不做",则应填入!=。填空2:若不同则插在串的最后,那么0就在字符串的倒数第二个了。填空3:函数传递的参数为输入的两个字符串,则填入s,c。

二、下列给定程序中,函数fun的功能是:从3个红球,5个白球,6个黑球中任意取出8个作为一组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球。组合数作为函数值返回。正确的组合数应该是15。程序中i的值代表红球数,j的值代表白球数,k的值代表黑球数。

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

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

试题程序:

#include

int fun()

{ int i,j,k,sum=0;

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

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

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

{ for (j=1;j<=5;j++)

{k=8-i-j;

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

if(k>=1&&k<=6)

{ sum=sum+1;

printf("red:%4d white:%4d

black:%4d\n ",i,j,k);

}

}

}

return sum;

}

void main()

{ int sum;

sum=fun();

printf("sum=%4d\n\n ",sum);

}

答案:(1)错误:for(i=0;i<=3;i++) 正确:for(i=1;i<=3;i++)

(2)错误:if(k>=1&&k<=6) 正确:

if((k>=1&&k<=6)&&(i!=0)&&(j!=0)||(k==0))

【解析】该题是一道教材习题的变体,如果单纯从数学的排列组合角度来分析,实在简单不过,那怎么才能用C语言实现题目中的要求呢?这就需要我们有一个清晰的编程思想。红球数i的总数为3,但最小值为1,循环条件中,i的值是从0开始的,所以不应该是for(i=0;i<=3;i++),而是for(i=1;i<=3;i++),另外,在if(k>=1&&k<=6)中,程序旨在说明"在每组中,可以没有黑球,但必须要有红球和白球"信息,一一满足后,正确的条件应该是if((k>=1&&k<=6)&&(i!=0)&&(j!=0)||(k==0))。

三:假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导和尾部的*号之外,将串中其他*号全部删除。形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。

例如,若字符串中的内容为****A*BC*DEF*G******料,删除后,字符串中的内容应当是****ABCDEFG********。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

#include

#include

void fun(char *a,char *h,char *p)

{

}

main ( )

{

char s[81],*t,*f;

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

gets(s);

t=f=s;

while(*t)

t++;

t--;

while(*t=='*')

t--;

while(*f=='*')

f++;

fun(s,f,t);

printf("The string after deleted:\n");

puts(s);

}

答案:void fun(char *a,char *h,char *p)

{

int i=0;

char *q=a;

while (q

{

a[i]=*q;q++;i++;

}

while (q

{

if(*q!='*')

{

a[i]=*q;i++;

}

q++;

}

while (*q) /*补充尾部*,直到结束*/

{

a[i]=*q;i++;q++;

}

a[i]='\0'

}

【解析】这类题最重要的就是要选择好判断条件,首先是判断前导*的结束,然后判断是否指向最后一个字母,最后补充尾部*,思路对了就可正确作出答案。

二十六套

一、请补充函数fun,该函数的功能是:判断一个数是否为素数。该数是素数时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。

试题程序:

#include

#include

#include

【1】

{

int I, m;

m=1;

for(I=【2】;I

if (【3】)

{

m=0;

break;

}

if (m==1&&n>1)

return("yes!");

else

return("no!");

}

void main()

{

int k=0;

system("CLS");

printf("Input:");

scanf("%d",&k);

printf("%s\n",fun(k));

}

答案:【1】char *fun(int n) 【2】2 【3】n%I==0或!(n%I)

【解析】填空1:根据main()中调用的函数fun(k),可知函数fun的形参为int型变量,函数的返回值为字符型指针。

填空2:判断一个数是否为素数时,也就是判断这个数是否有除了1和其自身之外的因子,所以for循环的变量从2开始,直到这个数的前一个数。填空3:如果一个数能被除了1和其自身之外的数整除(即余数为0),则这个数不是素数。

二、下列给定的程序中,函数fun 的功能是:判断字符ch是否与str所指字符串中的某个字符相同;若相同,则什么也不做,若不同,则将其插在串的最后。

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

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

试题程序:

#include

#include

#include

#include

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

void fun (char str,char ch)

{while (*str &&*str !=ch) str++;

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

if(*str==ch)

{ str[0]=ch;

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

str[1]=′0′;

}

}

void main()

{char s[81],c;

system("CLS");

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

gets(s);

printf("\n Please enter the character to

search : ");

c=getchar();

fun(s,c);

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

}

答案:(1)错误:void fun (char str,char ch) 正确:void fun (char *str,char ch)

(2)错误:if(*str==ch) 正确:if(*str=='\0')

(3)错误:str[1]= '0'; 正确:str[1]= '\0';

【解析】该题的重点在while的循环嵌套语句中,由题干信息"若相同,则什么也不做"很容易就能看出if (*str==ch)后面的执行语句是错误的。另外,void指针具有一般性,它们可以指向任何类型的数据。但目前绝大多数C编译所提供的这类函数都返回char指针,再由题目中的定义得出void fun (char str,char ch)的错误信息;str[1]= '0';是一个简单的语法错误。

三、请编写函数fun,该函数的功能是:将s所指字符串中ASCⅡ值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。

例如,若s所指字符串中的内容为ABCDEFG12345,其中字符B的ASCⅡ码值为偶数、…、字符2的ASC

Ⅱ码值为偶数、…,都应当删除,其他依次类推。最后t所指的数组中的内容应是ACEG135。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

#include

#include

#include

void fun(char *s, char t[])

{

}

void main()

{

char s[100],t[100];

system("CLS");

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

scanf("%s",s);

fun(s,t);

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

}

答案:void fun(char *s, char t[])

{

int i=0;

for(;*s!='\0';s++) /*找出ASCII值为奇数的字符依次存入数组t中*/

if(*s%2==1)

t[i++]=*s;

t[i]='\0'; /*在字符串的末尾加上串结束符*/

}

【解析】要删除ASCII值为偶数的字符,也就是要留下ASCII值为奇数的字符,由于最终是要求求出剩余字符(即ASCII值为奇数)形成的新串,所以本题程序的算法是对原字符串从头到尾扫描,并找出ASCII值为奇数的字符依次存入数组t中。此外,还要注意数组t的下标变化和下标的初值(初值必须为0,即i=0),t[i++]的作用是先使用t[i]然后再使i自增1。任何字符串的末尾都要有串结束符。这种算法在很多题中都要用到,学习者可以举一反三地找一些其他相关习题练习一下。

二十七套:

一、给定程序的功能是:分别统计字符串中大写字母和小写字母的个数。

例如,给字符串ss输入:AaaaBBbl23CCccccd,则输出结果应为:upper=5,lower=9。

注意:部分源程序给出如下。

请勿改动函数中的其他内容,仅在横线上填入所编写的若干表达式或语句。

试题程序:

#include

void fun (char *s,int *a,int *b)

{

while (*s)

{

if (*s>='A' &&*s<='Z')

【1】;

if (*s>='a' &&*s<='z')

【2】;

s++;

}

}

main ( )

{

char s[100];

int upper=0,lower=0;

printf("\nPlease a string:");

gets(s);

fun(s,&upper,&lower);

printf("\nupper=%dlower =%d\n",【3】);

}

答案:【1】(*a)++或++(*a)或*a+=1或*a=*a+1

【2】(*b)++或++(*b)或*b+=1或*b=*b+1

【3】upper,lower

【解析】填空1和填空2:统计大小写字母的个数,就是观察字母的ASCII值的范围。如果在大写字母ASCII 值得范围内,则大写字母的统计数加一,如果在小写字母ASCII值的范围内,则小写字母的统计数加一。填空3:统计大小写字母次数完成后就要输出,所以填入upper,lower。

二、下列给定程序中,函数fun的功能是:实现两个整数的交换。例如给a和b分别输入60和65,输出为:a=65 b=60

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

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

试题程序:

#include

#include

#include

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

void fun(int a,b)

{ int t;

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

t=b;b=a;a=t;

}

void main()

{int a,b;

system("CLS");

printf("Enter a, b: "); scanf("%d%d",

&a,&b);

fun(&a, &b);

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

}

答案:(1)错误:void fun(int a,b) 正确:void fun(int *a,int *b)

(2)错误:t=b;b=a;a=t; 正确:t=*b;*b=*a;*a=t;

【解析】本题考查指针变量做函数参数。采用一般变量做参数,不能改变实参的值,采用指针变量作为参数则能够改变实参的值。主函数中fun()的调用方式说明函数fun的参数应当为指针类型。另外,值得一提的是"交换法则",这题的错误比较明显,如果程序段中有隐蔽的交换错误,一般不容易发现,希望学习者引起注意。

三、请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转为整数的函数)。

例如,若输入字符串"-1234",则函数把它转换为整数值-1234。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

#include

long fun(char *p)

{

}

void main()

{

char s[6];

long n;

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

gets(s);

n=fun(s);

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

}

答案:long fun(char *p)

{

long n=0;

int flag=1;

if(*p=='-') /*负数时置flag为-1*/

{p++;flag= -1;}

else if(*p=='+') /*正数时置flag为1*/

p++;

while(*p!='\0')

{n=n*10+*p-'0'; /*将字符串转成相应的整数*/

p++;

}

return n*flag;

}

【解析】if()的作用是判断它是正数还是负数。while()循环的作用是将字符串转成相应的整数。注意*p是一个字符(如'9'、'4'),并不是一个数,要将其转成相应的数字必须令其减去'0' (不是'\0'),即*p-'0'就得到*p 这个字符的相应数字。如'0'-'0'=0,'8'-'0'=8等。必须在程序的前面加#include,函数atol()的作用是将字符串p转成长整型数,它是一个库函数。

二十八套:

一、给定程序的功能是:分别统计字符串中大写字母和小写字母的个数。

例如,给字符串ss输入:AaaaBBbl23CCccccd,则输出结果应为:upper=5,lower=9。

注意:部分源程序给出如下。

请勿改动函数中的其他内容,仅在横线上填入所编写的若干表达式或语句。

试题程序:

#include

void fun (char *s,int *a,int *b)

{

while (*s)

{

if (*s>='A' &&*s<='Z')

【1】;

if (*s>='a' &&*s<='z')

【2】;

s++;

}

}

main ( )

{

char s[100];

int upper=0,lower=0;

printf("\nPlease a string:");

gets(s);

fun(s,&upper,&lower);

printf("\nupper=%dlower =%d\n",【3】);

}

答案:【1】(*a)++或++(*a)或*a+=1或*a=*a+1

【2】(*b)++或++(*b)或*b+=1或*b=*b+1

【3】upper,lower

【解析】填空1和填空2:统计大小写字母的个数,就是观察字母的ASCII值的范围。如果在大写字母ASCII 值得范围内,则大写字母的统计数加一,如果在小写字母ASCII值的范围内,则小写字母的统计数加一。填空3:统计大小写字母次数完成后就要输出,所以填入upper,lower。

二、下列给定程序中,函数fun的功能是:实现两个整数的交换。例如给a和b分别输入60和65,输出为:a=65 b=60

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

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

试题程序:

#include

#include

#include

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

void fun(int a,b)

{ int t;

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

t=b;b=a;a=t;

}

void main()

{int a,b;

system("CLS");

printf("Enter a, b: "); scanf("%d%d",

&a,&b);

fun(&a, &b);

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

}

答案:(1)错误:void fun(int a,b) 正确:void fun(int *a,int *b)

(2)错误:t=b;b=a;a=t; 正确:t=*b;*b=*a;*a=t;

【解析】本题考查指针变量做函数参数。采用一般变量做参数,不能改变实参的值,采用指针变量作为参数则能够改变实参的值。主函数中fun()的调用方式说明函数fun的参数应当为指针类型。另外,值得一提的是"交换法则",这题的错误比较明显,如果程序段中有隐蔽的交换错误,一般不容易发现,希望学习者引起注意。

三、请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转为整数的函数)。

例如,若输入字符串"-1234",则函数把它转换为整数值-1234。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

#include

long fun(char *p)

{

}

void main()

{

char s[6];

long n;

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

gets(s);

n=fun(s);

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

}

答案:long fun(char *p)

{

long n=0;

int flag=1;

if(*p=='-') /*负数时置flag为-1*/

{p++;flag= -1;}

else if(*p=='+') /*正数时置flag为1*/

p++;

while(*p!='\0')

{n=n*10+*p-'0'; /*将字符串转成相应的整数*/

p++;

}

return n*flag;

}

【解析】if()的作用是判断它是正数还是负数。while()循环的作用是将字符串转成相应的整数。注意*p是一个字符(如'9'、'4'),并不是一个数,要将其转成相应的数字必须令其减去'0' (不是'\0'),即*p-'0'就得到*p 这个字符的相应数字。如'0'-'0'=0,'8'-'0'=8等。必须在程序的前面加#include,函数atol()的作用是将字符串p转成长整型数,它是一个库函数。

二十九套:

一、请补充函数fun,该函数的功能是:将字符串tt中的大写字母都改为对应的小写字母,其他字符不变。例如,若输入"Are you come from Sichuan?",则输出"are you come from sichuan?"。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。

试题程序:

#include

#include

#include

char *fun(char tt[])

{

int i;

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

{

if((tt[i]>='A')&&(【1】))

【2】;

}

return (【3】) ;

}

void main()

{

char tt[81];

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

gets(tt);

printf("\nThe result string is: \n%s",

fun(tt));

}

答案:【1】tt[i]<=′Z′【2】tt[i]+=32 【3】tt

【解析】填空1:此处考查判断大写字母的方法,如果字符的ASCII码大于字符A的ASCII 码,并且小于字符Z的ASCII码,则此字符为大写字母。填空2:考生必须掌握大写字母转换为小写字母的方法,小写字母的ASCII码比大写字母的ASCII码大32。填空3:函数fun 的返回值为字符型指针,而字符型的数组名就是字符型指针,所以返回tt。

二、下列给定程序中函数fun的功能是:从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。例如,当s中的数为7654321时,t中的数为642。

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

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

试题程序:

#include

#include

#include

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

void fun(long s,long t)

{ long s1=10;

s/=10;

*t=s%10;

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

while(s<0)

{ s=s/100;

*t=s%10*s1+*t;

s1=s1*10;

}

}

void main()

{ long s, t;

system("CLS");

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

("%ld",&s);

fun(s,&t);

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

}

答案:(1)错误:void fun(long s,long t) 正确void fun(long s,long *t)

(2)错误:while(s<0) 正确:while(s>0)

【解析】本题考查函数调用方式和while循环语句中条件限制的方法。主函数中fun()的调用方式说明函数fun的参数应当为指针类型,所以void fun(long s,long t)正确的写法应该是void fun(long s,long *t)。

三、请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相等,则返回第1个字符串。

例如,输入beijingshanghai (为回车键),函数将返回shanghai。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

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

{

}

void main()

{

char a[20],b[10],*p,*q;

printf("Input 1th string: ");

gets(a);

printf("Input 2th string: ");

gets(b);

printf("%s",fun(a,b));

}

答案:char *fun(char *s, char *t)

{

int i,j;

for(i=0;s[i]!= '\0';i++); /*求字符串的长度*/

for(j=0;t[j]!= '\0';j++);

if(i>=j) /*比较两个字符串的长度*/

return s; /*函数返回较长的字符串,若两个字符串长度相等,则返回第1个字符串*/

else

return t;

}

【解析】本题中,第1个for循环的作用是求出s的字符个数i,第2个for循环的作用是求出t的字符个数j,因为任何循环都要控制一条语句,所以在每一个for循环条件后面必须要有一个分号。

本题也可用如下技巧:

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

{if(strlen(s)>=strlen(t) return s;

else return t;

}

第三十套:

一、请补充函数fun,该函数的功能是:依次取出字符串中所有的小写字母以形成新的字符串,并取代原字符串。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。

试题程序:

#include

#include

#include

void fun(char *s)

{

int I=0;

char *p=s;

while(【1】)

{

if(*p>='a'&&*p<='z')

{

s[I]=*p;

【2】;

}

p++;

}

s[I]=【3】;

}

void main()

{

char str[80];

system("CLS");

printf("\nEnter a string:");

gets(str);

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

fun(str);

printf("\n\nThe string of changing

is:%s\n",str);

}

答案:【1】*p 【2】I++或++I或I+=1或I=I+1 【3】'\0'

【解析】填空1:while循环的循环条件是指针p所指的字符不是′\0′,也就是说,当处理到字符串最后的结束标记字符′\0′时,while循环结束。填空2:如果指针p所指的字符为小写字母,则将这个字符存于原字符串s中,同时,下标自加1,为下一次存放做准备。填空3:在取出所有小写字母并存于原字符串s后,要注意在最后加上字符串结束标志符′\0′。

二、下列给定程序中,函数fun的功能是:从s所指字符串中,找出t所指字符串的个数作为函数值返回。例如,当s所指字符串中的内容为abcdabfab,t所指字符串的内容为ab,则函数返回整数3。

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

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

试题程序:

#include

#include

#include

#include

int fun (char *s, char *t)

{int n; char *p, *r;

n=0;

while(*s)

{p=s;

r=t;

while (*r)

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

if(*r==*p) {r++; p++}

else break;

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

if(r=='\0')

n++;

s++;

}

答案:(1)错误:if(*r==*p) {r++;p++} 正确:if(*r==*p) {r++;p++ ; }

(2)错误:if(r=='\0') 正确:if( *r=='\0')

【解析】从字符串s中找出子串t的方法是:从第一个字符开始,对字符串进行遍历;若s串的当前字符等于t串的第1个字符,两字符串的指针自动加1,继续比较下一个字符;若比较至字符串t的结尾,则跳出循环;若s串的字符和t串的字符不对应相同,则继续对下一个字符进行处理。

三、请编写一个函数fun,它的功能是:求出一个2×M整型二维数组中最大元素的值,并将此值返回调用函数。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#define M 4

#include

fun (int a[][M])

{

历年二级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语言考试题库及答案复习整理

C 语言理论上机考试选择题部分(共200题) 1、下面程序的输出是___D______ #include void main() { int k=11; printf("k=%d,k=%o,k=%x\n",k,k,k); } A) k=11,k=12,k=11 B) k=11,k=13,k=13 C) k=11,k=013,k=0xb D) k=11,k=13,k=b 2、在下列选项中,不正确的赋值语句是__D______. A) ++t; B) n1=(n2=(n3=0)); C) k=i=j; D) a=b+c=1; 3、下面合法的C 语言字符常量是______A____. A) '\t' B) "A" C) 65 D) A 4、表达式: 10!=9的值是 ________D____. A) true B) 非零值 C) 0 D) 1 5、C 语言提供的合法的数据类型关键字是_____B____. A) Double B) short C) integer D) Char 6、字符(char)型数据在微机内存中的存储形式是__D__. A) 反码 B) 补码 C) EBCDIC 码 D) ASCII 码 7、C 语言程序的基本单位是_____C______. A) 程序行 B) 语句 C) 函数 D) 字符 8、设 int a=12,则执行完语句

a+=a-=a*a 后,a 的值是____D____ A) 552 B) 264 C) 144 D) -264 9、执行下面程序中的输出语句后,输出结果是____B__. #include void main() {int a; printf("%d\n",(a=3*5,a*4,a+5)); } A) 65 B) 20 C) 15 D) 10 10、下面程序的输出是____B______. #include void main() {int x=023; printf("%d\n",--x); } A) 17 B) 18 C) 23 D) 24 11、下面程序的输出的是_____C____. #include void main() {int x=10,y=3; printf("%d\n",y=x/y); } A) 0 B) 1 C) 3 D) 不确定的值 12、已知字母A 的ASCII 码为十进制的65,下面程序的输出是______A_____. #include void main() {char ch1,ch2; ch1='A'+'5'-'3'; ch2='A'+'6'-'3'; printf("%d,%c\n",ch1,ch2); } A) 67,D B) B,C C) C,D D) 不确定的值 13、若要求在if 后一对圆括号中表示a 不等于0的关系,则能正确表示这一关系的表达式为____D__. A) a<>0 B) !a C) a=0 D) a

C语言期末考试题(含答案)

《C 语言程序设计》期末试卷 一、单项选择题(10x2’=20’) 1、以下叙述正确的是() A )C 语言的源程序不必通过编译就可以直接运行。 B ) C 语言中的每条可执行语句最终都将被转换成二进制的机器指令。 C )C 语言源程序经编译形成的二进制代码可以直接运行。 D )C 语言中的函数不可以单独进行编译。 2、一个C 语言的源程序中() A )必须有一个主函数 B )可能有多个主函数 C )必须有除主函数外其它函数 D )可以没有主函数 3、以下不能定义为用户标识符的是() A )scanf B )Void C )_3com D )int 4、若以下选项中的变量已正确定义,则正确的赋值语句是() A )x1=26.8%3; B )1+2=x2; C )x3=0x12; D )x4=1+2=3; 5、设有定义:floata=2,b=4,h=3;以下C 语言表达式中与代数式h b a *)(2 1 的计算结果不.相符的是() A )(a+b)*h/2 B )(1/2)*(a+b)*h C )(a+b)*h*1/2 D )h/2*(a+b) 6、C 语言中用于结构化程序设计的3种基本结构是() A )顺序结构、选择结构、循环结构 B )if 、switch 、break C )for 、while 、do-while D )if 、for 、continue 7.在while (!x )语句中的!x 与下面条件表达式等价的是() A)x!=0B)x==1C)x!=1D)x==0

8、有以下程序: #include voidmain(){ inti=1,j=1,k=2; if((j++||k++)&&i++) printf(“%d,%d,%d\n”,i,j,k);} 执行后的输出结果是() A)1,1,2 B)2,2,1 C)2,2,2 D)2,2,3 9、有以下程序: #include voidmain(){ inti,s=0; for(i=1;i<10;i+=2) s+=i+1; printf(“%d\n”,s);} 程序执行后的输出结果是() A)自然数1~9的累加和B)自然数1~10的累加和 C)自然数1~9中奇数之和D)自然数1~10中偶数之和 10、有以下函数定义: voidfun(intn,doublex){……} 若以下选项中的变量都已经正确定义并赋值,则对函数fun的正确调用语句是()A)fun(inty,doublem); B)k=fun(10,12.5); C)fun(x,n);D)voidfun(n,x); 二、填空题(10x2’=20’) 11、C语言描述“x和y都大于或等于z”的表达式是:。 12、函数定义时涉及的基本要素是:、、。

大学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 题号:45 能正确表示逻辑关系:" 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 。 while(i<10) { if(i<1) continue 。 if(i==5) break 。 i++ 。 } } A、死循环,不能确定次数 B、6 C、4 D、1

C语言试题及答案

第1章 C语言概述习题 1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. A B. B C. D D. E (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由主程序和子程序组成 C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 32 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集是 ASCII码字符集。 (5) C 语言的程序中有特殊含义的英语单词称为保留字。 (6) C 语言标识符的长度是前 8 位有效。 (7) C 语言中,标识符的定义规则是以字母或下划线为开头。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总是以 /* 符号作为开始标记,以 */ 符号作为结束标记。 第2章数据类型运算符和表达式习题 1. 单项选择题 (1) 以下选项中,正确的 C 语言整型常量是 D 。 A. 32L B. 510000 C. -1.00 D. 567 (2) 以下选项中, D 是不正确的 C 语言字符型常量。

C语言上机作业试题5套含答案

第一次上机作业(2014): 要求: ?独立完成,上机调试通过后上交 ?作业提交邮箱: ?邮件主题命名:班级学号姓名(第1次作业), 例如:电1301班2王鹏(第1次作业) ?以附件形式将每次作业的所有程序源程序压缩打包后提交,压缩文件命名格式同上。 ?程序必须采用缩进格式 1.大写字母转换成小写字母 从键盘输入一个大写英文字母,输出相应的小写字母。 例:输入G 输出g 2.求平方根 输入一个实数x,计算并输出其平方根(保留1 位小数)。 例:输入17 输出The square root of 17.0 is 4.1 3.温度转换 设计一个程序将华氏温度转换成摄氏温度c = 5/9(f-32) a)输入华氏温度(实型) b)输出的摄氏温度结果保留两位小数 例:Please input Fahrenheit temperature: 76.8 The corresponding Celsius temperature is 24.89 4. 计算旅途时间 输入二个整数time1 和time2,表示火车的出发时间和到达时间,计算并输出旅途时间。 (输入的有效的时间范围是0000 到2359,不需要考虑出发时间晚于到达时间的情况。) 例:输入712 1411 (出发时间是7:12,到达时间是14:11) 输出The train journey time is 6 hours 59 minutes. 5. 数字加密 输入一个四位数,将其加密后输出。方法是将该数每一位上的数字加9,然后除以10 取余,做为该位上的新数字,最后将第1 位和第3 位上的数字互换,第2 位和第4 位上的数字互换,组成加密后的新数。 例:输入1257 输出The encrypted number is 4601 思考题:你能否编程找出谁做的好事? 有四位同学中的一位做了好事,不留名,表扬信来了之后,校长问这四位是谁做的好事。 ?A说:不是我。 ?B说:是C。 ?C说:是D。 ?D说:他胡说。 已知三个人说的是真话,一个人说的是假话。现在要根据这些信息,找出做了好事的人。 第二次上机作业(2014): 要求: ?独立完成,程序必须采用缩进格式,上机调试通过后上交

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语言上机考试题—01 1. //#include #include double fun( int n ) { double sum=0,a=1; for(;n>0;n--,a++) sum=sum+1/(a*(a+1)); return sum; } main() { // clrscr(); printf("%f\n", fun(10)); } 2. #include main() { int k,m,s=0,i,b=0; for(k=10000;k<=20000;k++ ) { if(k%10==7) { for(i=2,b=0;i main() { int a; printf("请输入一个需要判 断的年份:\n"); scanf("%d",&a); if(a%4==0&&a%100!=0) printf("是闰年\n"); else if(a%400==0) printf("是闰年 \n"); else printf("不是闰 年\n"); } C语言上机考试题—02 1. //#include #include double fun( int n ) { double sum=0,a=1; for(;n>0;n--,a++) sum=sum+1/(a*(a+1)); return sum; } main() { // clrscr(); printf("%f\n", fun(10)); } 2. #include fun(int n) { int i,j=0; for(i=2;i #include main() { char str[81]; int i,j=0,w=1,s=0; printf("请输入一串字符: \n"); gets(str); for(i=0;i

C语言考试题库及答案2015

200题) C语言(共 1、下面程序的输出是___D______voidmain() #include{intx=023; voidmain()printf("%d\n",--x); {intk=11;} printf("k=%d,k=%o,k=%x\n",k,k,k);A)17B)18C)23D)24 }11、下面程序的输出的是_____C____. A)k=11,k=12,k=11B)k=11,k=13,k=13#include C)k=11,k=013,k=0xbD)k=11,k=13,k=bvoidmain() {intx=10,y=3; 2、在下列选项中,不正确的赋值语句是__D______.printf("%d\n",y=x/y); A)++t;B)n1=(n2=(n3=0));} C)k=i=j;D)a=b+c=1;A)0B)1C)3D)不确定的值 的 65,下面程序 制 3、下面合法的C语言字符常量是______A____.12、已知字母A的ASCII码为十进 的输出是 ______A_____.A)'\t'B)"A"C)65D)A #include 4、表达式:10!=9的值是________D____.voidmain() A)trueB)非零值C)0D)1{charch1,ch2; ch1='A'+'5'-'3'; 型关键字是ch2='A'+'6'-'3'; 5、C语言提供的合法的数据类 _____B____.printf("%d,%c\n",ch1,ch2); A)DoubleB)shortC)integerD)Char} A)67,DB)B,CC)C,DD)不确定的值 6、字符(char)型数据在微机内存中的存储形式是 __D__.13、若要求在if后一对圆括号中表示a不等于0的关 系,则能正确表示这一关系的表达式为____D__.A)反码B)补码C)EBCDIC码D)ASCII码 A)a<>0B)!aC)a=0D)a 7、C语言程序的基本单位是_____C______. A)程序行B)语句C)函数D)字符14、以下程序的输出结果是____D_____. #include 8、设inta=12,则执行完语句a+=a-=a*a后,a的值是voidmain() ____D____{intx=10,y=10; A)552B)264C)144D)-264printf("%d%d\n",x--,--y); } 9、执行下面程序中的输出语句后,输出结果是A)1010B)99C)910D)109 ____B__. : #include15、设有如下定义 voidmain()intx=10,y=3,z; {inta; 则语句 printf("%d\n",(a=3*5,a*4,a+5));printf("%d\n",z=(x%y,x/y)); }的输出结果是_____D_____. A)65B)20C)15D)10A)1B)0C)4D)3 10、下面程序的输出是____B______.16、为表示关系x≥y≥z,应使用C语言表达式

C语言试题及答案

一、单项选择题 1. 软件危机具有下列表现( d )。 I. 对软件开发成本估计不准确II. 软件产品的质量往往靠不住 III. 软件常常不可维护IV. 软件成本逐年上升 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 2. 软件生命周期一般都被划分为若干个独立的阶段,其中占用精力和费用最多的阶段往往是( A )。 A. 运行和维护阶段 B. 设计阶段 C. 代码实现阶段 D. 测试阶段 3. 下列属于软件的特点的是(D )。 A. 软件是一种逻辑实体,具有抽象性 ~ B. 软件在使用过程中没有磨损、老化的问题 C. 软件不同于一般程序,它的一个显著特点是规模庞大,复杂程度高 D. 以上都正确 4. 软件工程的出现是由于(D )。 A. 软件危机的出现 B. 计算机硬件技术的发展 C. 软件社会化的需要 D. 计算机软件技术的发展 5. 软件开发技术不包含( d )。 A. 软件开发方法学 B. 软件工程环境 C. 软件工具 D. 软件质量度度量 6. 软件工程的课程特点( D )。 【 I. 学科理论及其知识应用的多维性 II. 工程化 III. 浓厚的方法学色彩 IV. 实践性、指导性强 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 7. 下列属于应用软件的是( b )。 I. 计算机辅助教学软件II. 软件测试工具 III. 办公自动化软件IV. 工程与科学计算软件

A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 8. 需求分析阶段最重要的技术文档是( b )。 - A. 设计说明书 B. 需求规格说明书 C. 可行性分析报告 D. 用户手册 9. 以下关于数据流图的说法错误的是( c )。 A. 数据流图舍去了具体的物质,只剩下数据的流动、加工处理和存储 B. 数据流图是用作结构化分析的一种工具 C. 传统的数据流图中主要由加工、数据源点/终点、数据流、控制流、数据存储组成 D. 数据流图的绘制采用自上向下、逐层分解的方法 10. 数据字典是软件需求分析阶段的最重要工具之一,其最基本的功能是( c )。 A. 数据库设计 B. 数据通信 C. 数据定义 D. 数据维护 11. 需求分析阶段的研究对象是( b )。 ¥ A. 系统分析员要求 B. 用户要求 C. 软硬件要求 D. 系统要求 12. 结构化方法的基本原则是( b )。 A. 模块化 B. 抽象与分解 C. 信息隐蔽 D. 逐步求精 13. 耦合度最高的是(b)耦合。 A. 环境 B. 内容 C. 控制 D. 数据 14. 内聚程度较低的是( a )内聚。 A. 偶然 B. 通讯 C. 顺序 D. 时间 15. 对一个程序来说,组成系统的模块数目( b ),则开发成本越小。 A. 越多 B. 越少 C. 顺序 D. 时间> 16. 画软件结构图时应注意调用关系只能是(B )。 A. 从下到上 B. 从上到下 C. 从左到右 D. 从右到左 17. 程序流程图中的箭头代表( b )。 A. 数据流 B. 控制流 C. 顺序流 D. 调用 18. 软件测试是软件质量保证的重要手段,下述( B )是软件测试的最基础环节。

C语言考试题及答案

一、单项选择题:(10分,每题2分) 1.char *p[10];该语句声明了一个: c 。 A)指向含有10个元素的一维字符型数组的指针变量p B)指向长度不超过10的字符串的指针变量p C)有10个元素的指针数组p,每个元素可以指向一个字符串 D) 有10个元素的指针数组p,每个元素存放一个字符串 2.若int x;且有下面的程序片断,则输出结果为: D 。 for (x=3; x<6; x++) { printf((x%2) ? "##%d" : "**%d\n", x); } A) ##3B) **3C) **3D)##3**4 **4 ##4 ##4**5 ##5 ##5 **5 3.在while(!x)语句中的!x与下面条件表达式等价的是:D 。 A) x!=0 B) x==1 C) x!=1 D) x==0 4.已知 struct point { int x; int y; }; struct rect { struct point pt1; struct point pt2; }; struct rect rt; struct rect *rp = &rt; 则下面哪一种引用是不正确的__D______。 A) r t.pt1.x B) (*rp).pt1.x C) r p->pt1.x D) rt->pt1.x 5.若二维数组a有m行n列,则下面能够正确引用元素a[i][j]的为: C 。 A) *(a+j*n+i) B) *(a+i*n+j) C) *(*(a+i)+j) D) *(*a+i)+j CDDDC 二、分析程序并写出运行结果。(25分,每题5分) 1. #include main()

历年全国计算机等级考试-二级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

2020年C语言考试题库及答案

精选考试类文档,如果需要,请下载,希望能帮助到你们!2020年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语言考试题库及答案.doc

1、下面程序的输出是—D ________ # include void main() { int k= 11; printf(“k=%d,k=%o,k=%x\n”,k,k,k); } A)k=ll,k=12,k=ll B) k=ll,k=13,k=13 C)k=ll,k=013,k=0xb D) k=l l,k=13,k=b 2、在下列选项中,不正确的赋值语句是_D _______ A)++t; B) nl=(n2=(n3=0)); C) k=i=j; D) a=b+c= 1; 3、下面合法的C语言字符常量是______ A_. A)B)”A”C) 65 D)A 4、表达式:10!=9的值是 ________D ____ . A)true B)非零值C) 0 D) 1 5、C语言提供的合法的数据类型关键字是 _____ B ___ . A)Double B) short C) integer D) Char 6、字符(char)型数据在微机内存中的存储形式是一D_. A)反码B)补码C) EBCDIC 码D) ASCII 码 7、C语言程序的基木单位是______C ______ . A)程序行B)语句C)函数D)字符 8、设int a= 12,则执行完语句a+=a-=a*a后,a的值是 ____ D ____ A) 552 B) 264 C) 144 D) -264 printf(” %d\rT〉?x); } A) 17 B)18 C) 23 D) 24 11、下面程序的输出的是_____ C_? #includc void main() {int x=10,y=3; printfi(,'%d\n',,y=x/y); } A)0 B) 1 C)3 D)不确定的值 12、已知字付A的ASCII码为十进制的65,下而程序 的输岀是______ A _____ . #include void main() {char chl,ch2; chl=,A,+,5,-,3,; ch2='A 屮 printf(” %d,%c\n”,ch 1 ,ch2); } A) 67,D B)B,C C) CD D)不确定的值 13、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为_D_. A)a<>0 B)!a C)a=0 D) a 14、以卜-程序的输出结果是—D _______ . #include void main() {int x=10,y=10; printf(n%d %d\n n,x-,-y); } A) 10 10 B)9 9 C)9 10 D) 10 9 9、执行下面程序屮的输ill语句后,输出结果是B_. #include void main() {int a; printfV%d\n",(a=3*5,a*4,a+5)); } A) 65 B) 20 C) 15 D) 10 10、下面程序的输出是—B ________ . #includc void main() {int x=023; 15、设有如下定义: int x=10,y=3,z; 则语句 printf(n%d\n u,z=(x%y,x/y)); 的输出结果是_____ D _____ . A) 1 B)0 C)4 D)3 16.为表示关系x2y$z,应使用C语言表达式 B)(x>=y)AND(y>=z) D) (x>=y) & (y>=z) 17.C语言中非空的阜本数据类型包括 B A)整 型,实型,逻辑型B)整型,实型,字符型 C)整型,字符型,逻辑型 D)整型,实型,逻辑型,字符型 A) (x>=y)&&(y>=z) C) (x>=y>=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 。 A)2.5 B)2 C)1 D)3 11.如果int a=3,b=4;则条件表达式"a

相关主题
文本预览
相关文档 最新文档