第二十一套
请补充函数fun,该函数的功能是:将字符串tt中的大写字母都改为对应的小写字母,其他字符不变。例如,若输入"Are you come from Sichuan?",则输出"are you come from sichuan?"。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
    试题程序:
#include <stdio.h>
#include <string.h>
#include <conio.h>
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
【考点分析】 本题考查:if语句,一般需根据题意确定条件表达式;大写字母转换成小写字母的方法;通过return语句将函数值返回。
【解题思路】
填空1:此处考查判断大写字母的方法,如果字符的ASCII码大于字符A的ASCII码,并且小于字符Z的ASCII码,则此字符为大写字母。
填空2:考生必须掌握大写字母转换为小写字母的方法,小写字母的ASCII码比大写字母的ASCII码大32。
填空3:函数fun的返回值为字符型指针,而字符型的数组名就是字符型指针,所以返回tt。
下列给定程序中函数fun的功能是:求出字符串中最后一次出现的子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未到,则函数值为NULL。例如,当字符串中的内容为abcdabfabcdx,t中的内容为ab时,输出结果应是abcdx。当字符串中的内容为abcdabfabcdx,t中的内容为abd时,则程序输出未到的信息"Not found!"。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
    试题程序:
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
char *fun(char *s,char *t)
{
char *p,*r,*a;
/*************found**************/
a=Null;
while(*s)
  { p=s;r=t;
    while(*r)
/*************found**************/
        if(r==p) {r++;p++;}
        else break;
    if(*r=='\0') a=s;
计算机二级c语言选择题库    s++;
  }
return a;
}
void main()
{char s[100],t[100],*p;
system("CLS");
printf("\nPlease enter string S: ");
scanf("%s",s);
printf("\nPlease enter substring t: ");
scanf("%s",t);
p=fun(s,t);
if(p) printf("\nThe result is:%s\n ",p);
else printf("\nNot found!\n ");
}
【参考答案】
(1)错误:a=Null;        正确:a=NULL;
(2)错误:if(r==p) { r++;p++;}
正确:if(*r==*p) { r++;p++;}
【考点分析】
本题考查:NULL;if条件语句,一般需要根据题意确定条件表达式;指针型变量。
【解题思路】
题目要求将最后一次出现的输入字符后面的字符串做复制处理,并在主函数中输出从该地址开始的字符串。a=NuLL;是个明显的错误。题目中已经定义了指针变量char *p,*r,*a;,循环条件应该是if(*r==*p) { r++;p++;},而非if(r==p) { r++;p++;}。
请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII码值升序排列。
例如,原来的字符串为Bdsihad,则排序后输出为Badhisd。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 
    试题程序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>
void fun(char *s, int num)
{
}
void main()
{
FILE *wf;
char s[10];
char b[10]="Bdsihad";
system("CLS");
printf("输入7个字符的字符串:");
gets(s);
fun(s,7);
printf("\n%s",s);
/******************************/
wf=fopen("out.dat","w");
strcpy(s,"Bdsihad");
fun(b,7);
fprintf(wf,"%s",b);
fclose(wf);
/*****************************/
}
【参考答案】
int fun(char *s, int num)
{
    char t;
    int i, j;
    for(i=1;i<num-2;i++)
    /*下标值从1开始,用循环依次取得字符串中的字符*/
        for(j=i+1;j<num-1;j++)
    /*将字符与其后的每个字符比较*/
        if(s[i]>s[j])
    /*如果后面字符的ASCII码值小于该字符的ASCII码值*/
        {
            t=s[i];/*则交换这两个字符*/
            s[i]=s[j];
            s[j]=t;
        }
}
【考点分析】
本题考查:if语句,主要是根据题意确定条件表达式;for循环语句,完成取得字符串中的字符;通过交换运算,对两个字符进行交换操作,需要借助第三变量。
【解题思路】
本题考查利用循环来控制数组元素的操作,首尾元素除外,因此,数组的下标值要从1开始,用循环变量i来依次取得数组中的元素,用数组中的元素s[i]和s[j]进行比较,如果后一个元素的ASCII码值小于前一个元素的ASCII码值,则交换这两个数组元素的值。
第二十二套
请补充main函数,该函数的功能是:从键盘输入一个长整数,如果这个数是负数,则取它的绝对值,并显示出来。例如,输入:-3847652,结果为:3847652。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达
式或语句。
    试题程序:
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
void main()
{
    long int n;
    system("CLS");
    printf("Enter the data:\n");
    scanf(【1】);
    printf("*** the absolute value ***\n");
    if(n<0)
        【2】
    printf("\n\n");
    printf(【3】);
}
【参考答案】
(1) "%ld",&n  (2) n=-n;  (3) "%ld", n
【考点分析】
本题考查:printf( )函数,其一般形式为:printf("格式控制字符串",输出表列),其中,格式控制字符串用于指定输出格式,由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字
符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。
如:
"%d"表示按十进制整型输出;
"%ld"表示按十进制长整型输出;
"%c"表示按字符型输出。
非格式字符串在输出时原样输出,在显示中起提示作用。
scanf( )函数,其一般形式为:scanf("格式控制字符串",地址表列);其中,格式控制字符串的作用与printf函数相同,但不能显示非格式字符串,也就是不能显示提示字符串。地址表列中给出各变量的地址,地址是由地址运算符"&"后跟变量名组成的。
【解题思路】
填空1:本题考查对标准输入函数scanf( )的调用格式,当输入为长整型数时,格式控制字符串为"%ld",输入的长整数存于变量n中。
填空2:当输入的数是负数时,则取它的相反数,即为它的绝对值。
填空3:本题考查对标准输出函数printf( )的调用格式,当输出为长整型数时,格式控制字符串为"%ld"。
下列给定程序中,函数fun的功能是:将字符串tt中的小写字母都改为对应的大写字母,其他字符不变。例如,若输入"Ab,cD",则输出"AB,CD"。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
    试题程序:
#include  <stdio.h>
#include  <string.h>
#include  <conio.h>
char *fun(char tt[])
{
int I;
/*************found**************/
for(I=0;tt[I];I++)
    if(('a'<=tt[I])||(tt[I]<= 'z'))
    /*************found**************/
    tt[I]+=32;
return(tt);
}
main()
{
char tt[81];
system("CLS");
printf("\nPlease enter a string: ");

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。