1、C语言上机试题及答案1在C语言中,形参的缺省存储类是(C)。A、externB、registerC、autoD、static下列标识符中,不合法的C语言用户自定义标识符是(C)。A、printfB、sinC、enumD、_以下不正确的if语句形式是(D)。A、if(xy&x!=y);C、if(x=y) x+=y;D、if(x!=y) scanf(%d,&x) else scanf(%d,&y);以下选项中正确的整型常量是 CA、4/5B、5C、-10D、1.000下列变量说明语句中,正确的是(B)。A、char a;b;c;B、int x,z;C、char:a b c;D、int x;z; 以
2、下程序的输出结果是 Bmain() int k =4, m = 1, p;p = func(k, m);printf(“%d,”, p );p = func(k, m);printf(“%dn”, p ); func( int a, int b) static int m, i = 2; i += m + 1;m = i + a + b;return (m); A、8,20B、8,17C、8,8D、8,16下列关于单目运算符+、-的叙述中正确的是_C_。A、它们的运算对象可以是int型变量,但不能是double型变量和float型变量B、它们的运算对象可以是任何变量和常量C、它们的运算对象可以
3、是char型变量、int型变量和float型变量D、它们的运算对象可以是char型变量和int型变量,但不能是float型变量下列字符数组长度为5的是 CA、char c10= h, a, b, c, d;B、char b= h, a, b, c, d, 0;C、char a=h, a, b, c, d;D、char d6= h, a, b, c, 0 ;以下程序运行后的输出结果是 C#include main() FILE *fp; int i, k = 0, n = 0; fp = fopen(“d1.dat”, “w”); for(i = 1; i 4; i+) fprintf(fp,
4、“%d”, i); fclose(fp); fp = fopen(“d1.dat”, “r”); fscanf(fp, “%d%d”, &k, &n); printf(“%d%dn”, k, n); fclose(fp); A、1 23 B、0 0C、123 0D、1 2 定义语句int *swap();指的是 DA、以上说法均不对B、swap是一个返回整型值的函数C、swap是一个指向函数的指针D、swap是一个返回指向整型值指针的函数以下选项中正确的实型常量是 CA、0.03x102B、32C、3.1415D、0以下程序的运行结果是(B)。main() int n; for(n=1;n=0
5、&chi=9; i += 2) s = s*10+chi-0; printf(“%dn”, s);A、62B、6521C、12ba56 D、6对于建立函数的目的,正确的说法是 DA、提高程序的执行效率B、减少程序的篇幅 C、减少程序文件所占的内存D、提高程序的可读性以下程序的输出结果是 C#include main() int i; for(i = 1; i 5; i+) if(i % 2) putchar(); putchar (#);A、 #B、 #C、 # D、 b)=c 的值为真。对C语言中只能逐个引用数组元素而不能一次引用整个数组。对若 a=3,b=2,c=1 则关系表达式(ab)=
6、c 的值为真。对C语言的函数可以嵌套定义.错如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准。对x*=y+8 等价于 x=x*(y+8)。对【程序设计】-功能:在键盘上输入一个3行3列矩阵的各个元素的值(值 为整数),然后输出矩阵第一行与第三行元素之和, 并在fun()函数中输出。-*/#include stdio.hint fun(int a33) /*Begin*/ /* End */ void TestFunc();main() int i,j,s,a33; for(i=0;i3;i+) for(j=0;j3;j+) scanf(%d,&aij); s=fun(a)
7、; printf(Sum=%dn,s); TestFunc();答案int sum;int i,j;sum=0;for(i=0;i3;i+=2)for(j=0;j3;j+) sum=sum+aij;【程序设计】-功能:从字符串中删除指定的字符。同一字母的大、小写 按不同字符处理。例如:若程序执行时输入字符串为:turbocandborlandc+ 从键盘上输入字符:n,则输出后变为:turbocadbo rladc+,如果输入的字符在字符串中不存在,则字 符串照原样输出。 -*/#include void bky(); int fun(char s,int c) /*Begin*/ /* En
8、d */ main() static char str=turbocandborlandc+; char ch; printf(原始字符串:%sn, str); printf(输入一个字符:); scanf(%c,&ch); fun(str,ch); printf(str=%sn,str); bky(); void bky()void TestFunc() FILE *IN,*OUT; int m; int n; int i33; int o; IN=fopen(in.dat,r); if(IN=NULL) printf(Read File Error); OUT=fopen(out.dat,
9、w); if(OUT=NULL) printf(Write File Error); for(m=0;m3;m+) for(n=0;n3;n+) fscanf(IN,%d,&imn); o=fun(i); fprintf(OUT,%dn,o); fclose(IN); fclose(OUT);答案char *q=s; for(; *q; q+) if(*q != c) *(s+)=*q; *s=0;【程序改错】-功能:编写函数fun生成一个对角线元素为5,上三角元素为0, 下三角元素为1的3*3的二维数组。-*/#include stdio.hmain() int a33,i,j; fun(a
10、); for(i=0;i3;i+) for(j=0;j3;j+) printf(%d ,aij); printf(n); fun(int arr3) /*ERROR*/ int i,j /*ERROR*/ for(i=1;i3;i+) for(j=0;ji) arrij=0; else arrij=1;答案int i,j; for(i=0;i3;i+) 【参考答案】if(i=j) 【程序改错】-功能:求出NM整型数组的最小元素及其所在的行坐标及列坐标 (如果最小元素不唯一,选择位置在最前面的一个)。例如:输入的数组为: 9 2 3 4 15 6 12 1 9 10 11 2 求出的最小数为1,
11、行坐标为2,列坐标为1。-*/#define N 4#define M 3#include int Row,Col;main() int aNM,i,j,min,row,col; printf(input a array:); for(i=0;iN;i+) for(j=0;jM;j+) scanf(%d,&aij); for(i=0;iN;i+) for(j=0;jM;j+) printf(%d,aij); printf(n); min=fun(a); printf(max=%d,row=%d,col=%d,min,Row,Col); int fun(int arrayNM) int min,
12、i,j; min=array 00; Row=0; Col=0; for(i=0;iN;i+) /*ERROR*/ for(j=i;jM;j+) /*ERROR*/ if(min array ij) min=array ij; Row=i; /*ERROR*/ Col=i; return(min);答案for(j=0;jarray ij) Col=j;【程序填空】-功能:已定义一个含有30个元素的数组s,函数fun1的功能是按 顺序分别赋予各元素从2开始的偶数,函数fun2则按顺序 每五个元素求一个平均值, 并将该值存放在数组w中。-*/float s30,w6;fun1(float s) i
13、nt k,i; for(k=2,i=0;i30;i+) /*FILL*/ _ ; k+=2; fun2(float s,float w) float sum=0.0; int k,i; for(k=0,i=0;i30;i+) sum+=si; /*FILL*/ _; wk=sum/5; /*FILL*/ _ ; k+; main() int i; fun1(s); /*FILL*/ _; for(i=0;i30;i+) if(i%5=0) printf(n); printf(%8.2f,si); printf(n); for(i=0;i6;i+) printf(%8.2f,wi);1.si=k
14、 si=(i+1)*2 2,if(i+1)%5=0) if(i+1)/5*5=i+1) 3,sum=0 sum=0.0 4 fun2(s,w)【程序填空】-题目:给定程序中,函数fun的功能是:统计出带有头结点的单向链表中结点的个数,存放在形参n所指的存储单元中。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!-*/#include #include #define N 8typedef struct list int data; struct list *next; SLIST;S
15、LIST *creatlist(int *a);void outlist(SLIST *);void fun( SLIST *h, int *n) SLIST *p;/*FILL*/ _=0; p=h-next; while(p) (*n)+;/*FILL*/ p=p-_; main() SLIST *head; int aN=12,87,45,32,91,16,20,48, num; head=creatlist(a); outlist(head);/*FILL*/ fun(_, &num); printf(nnumber=%dn,num);SLIST *creatlist(int a) S
16、LIST *h,*p,*q; int i; h=p=(SLIST *)malloc(sizeof(SLIST); for(i=0; idata=ai; p-next=q; p=q; p-next=0; return h;void outlist(SLIST *h) SLIST *p; p=h-next; if (p=NULL) printf(The list is NULL!n); else printf(nHead ); do printf(-%d,p-data); p=p-next; while(p!=NULL); printf(-Endn); 1,(*n) *n 2. next 3 head
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1