第二十一套:
一、请补充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次方,该函数已在库函数
第二十二套:
一、请补充函数fun,该函数的功能是:判断一个数的个位数字和百位数字之和是否等于其十位上的数字,是则返回"yes!",否则返回"no!"。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
#include
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
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 二十八套: 一、给定程序的功能是:分别统计字符串中大写字母和小写字母的个数。 例如,给字符串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 二十九套: 一、请补充函数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个字符串。 例如,输入beijing 注意:部分源程序给出如下。 请勿改动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]) { 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 C 语言理论上机考试选择题部分(共200题) 1、下面程序的输出是___D______ #include a+=a-=a*a 后,a 的值是____D____ A) 552 B) 264 C) 144 D) -264 9、执行下面程序中的输出语句后,输出结果是____B__. #include 《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 单项选择 ================================================== 题号: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 第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 语言字符型常量。 第一次上机作业(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语言程序设计》期中考试试卷 课程编号: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语言上机考试题—01 1. //#include 200题) C语言(共 1、下面程序的输出是___D______voidmain() #include 一、单项选择题 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 )是软件测试的最基础环节。 一、单项选择题:(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 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语言考试题库及答案 姓名成绩 温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔细地完成这张试题吧。加油!一单项选择题 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 1、下面程序的输出是—D ________ # include 大学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语言考试题库及答案复习整理
C语言期末考试题(含答案)
大学C语言考试题库(含标准答案)
C语言试题及答案
C语言上机作业试题5套含答案
c语言期中考试试题及答案
C语言期末上机考试题及答案
C语言考试题库及答案2015
C语言试题及答案
C语言考试题及答案
历年全国计算机等级考试-二级C语言上机考试题库及答案
2020年C语言考试题库及答案
C语言考试题库及答案.doc
大学C语言考试题及答案