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&&ch<‟B‟&&!y)的值是(C)A、0B、语法错C、1D、“假”4、以下的选择中,正确的赋值语句是(C)A、a=1,b=2B、j++C、a=b=5D、y=int(x)5、C语言源程序的后缀是(B)A、exeB、cC、objD、cp6、执行下列语句的输出为(A)Int j=-1; if(j<=1)printf(“***\n”);Else printf(“%%%\n”);A、***B、%%%C、%%%cD、有错,执行不正确8、以下程序的运行结果是(A)Main(){ int n;For(n=1;n<=10;n++){ if(n%3= =0) continue;Printf(“%d”,n);}}A、12457810B、369C、12D、12345678909、以下程序段的输出结果为(B)for (i=4;i>1;i--)for(j=1;j<i;j++)putchar(…#‟);A、无B、# # # # #C、#D、# # #10、以下对一维整形数组a的正确说明是(D)A、int a(10 )B、int n=10,a[n]C、int n;scanf(“%d”,&n);int a[n]D、#define SIZE 10(换行)int a[SIZE]11、以下不能对二维数组a进行正确的初始化的语句是(C)A、int a[2][3]={10}B、int a[][3]={{1,2},{0}}C、int a[2][3]={{1,2},{3,4},{5,6}}D、int a[][3]={1,2,3,4,5,6}12、C语言规定,函数返回值的类型是由(D)Areturn语句中的表达式类型所决定B、调用该函数时的主调函数类型所决定C、调用该函数时系统临时决定D、在定义该函数时所指定的函数类型所决定13、C语言规定:简单变量做实参时,它和对应形参之间的诗句传递方式是(B)A、地址传递B、单向值传递C、由实传给形参,再由形参传给实参D、由用户指定的传递方式14、若有定义:char *p1,*p2,*p3,*p4,ch;则不能正确赋值的程序语句是(C)A、p1=&ch;scanf(…”%c”,p1)B、p2=(char*)malloc(1);scanf(“%c”,p2)C、*p3=getchar()D、p4=&ch;*p4=getchar()15、若有double *p,x[10];int i=5;使指针变量p指向元素x[5]的语句为(A)A、p=&x[i]B、p=xC、p=x[i]D、p=&(x+i)17、以下运算符中,优先级最高的符是(C)A、︱︳B、%C、!D、= =18、char a[10];不能将字符串“abc”存储在数组中的是(C)A strcpy(a,”abc”)B a[0]=0;strcat(a,”abc”)C a=”abc ”D int i;for(i=0;i<3;i++) a[i]=i+97;a[i]=019、C语言的if语句中,用作判断的表达式为(A)A、任意表达式B、逻辑表达式C、关系表达式D、算术表达式20、C程序中的宏张开是在(C)A、编译时进行的B、程序执行时进行的C、编译前预处理是进行的D、编译时进行的三、【程序填空】1、功能:在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。
选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。
请编写一个程序实现。
#include<stdio.h>void main(){int score,i,max,min,sum;max=-32768;min=32767;sum=0;for(i=1;i<=10;i++){printf("input number %d=",i);scanf("%d",【?】); 【&score】sum+=score;if(【?】) max=score; 【score>max or max<score】if(【?】) min=score; 【score<min or min>score】}printf("Canceled max score:%d\nCanceled min score:%d\n",max,min);printf("Average score:%d\n",【?】); 【(sun-max-min)/8】}2、功能:下面的程序是求1!+3!+5!+……+n!的和。
#include <stdio.h>main(){long int f,s;int i,j,n;【?】; 【s=0】scanf("%d",&n);for(i=1;i<=n;【?】) 【i+=2 or 1=i+2】{f=1;for(j=1;【?】;j++) 【j<=i or i>=j or j<i+1】【?】; 【f=f*j】s=s+f;}printf("n=%d,s=%ld\n",n,s);}四、【程序改错】1、功能:将一个字符串中的大写字母转换成小写字母。
例如:输入aSdFG输出为asdfg。
#include<stdio.h>bool fun(char *c) 【char fun(char*c)】{if(*c<='Z'&&*c>='A')*c-='A'-'a';fun= c;【return *c】}main(){char s[81],p=s; 【*p=s】gets(s);while(*p){*p=fun(p);puts(*p);p++;}putchar('\n'); 【putchar(*p)】}2、功能:将字符串s中最后一次出现的子字符串t1替换成字符串t2,所形成的新串放在w所指的数组中,在此处,要求t1和t2所指字符串的长度相同。
例如:当s所指字符串中的内容为"abcdabfabc",t1中的内容为"ab",t2中的内容为"99"时,结果w所指数组中的内容应为"abcdabf99c"。
#include <conio.h>#include <stdio.h>#include <string.h>void fun (char *s, char *t1, char *t2 , char *w){char *p , *r, *a;strcpy( w, s );while ( w ) 【while(*w) or while (*w!0)】{p = w; r = t1;while ( *r )if ( *r = *p ) 【if(*r==*p)】{r++;p++;}elsebreak;if ( *r == '/0' ) a = w; 【if(*r==’\0’)a=w】w++;}r = t2;while ( *r ){a = *r; 【*a=*r】a++;r++;}}main(){char s[100], t1[100], t2[100], w[100];printf("\nPlease enter string S:"); scanf("%s", s);printf("\nPlease enter substring t1:"); scanf("%s", t1);printf("\nPlease enter substring t2:"); scanf("%s", t2);if ( strlen(t1)==strlen(t2) ){fun( s, t1, t2, w);printf("\nThe result is : %s\n", w);}elseprintf("\nError : strlen(t1) != strlen(t2)\n");}。