C语言模拟试卷2
更新时间:2017/1/25 23:40:00 浏览量:596 手机版
C语言模拟试卷2
一.概念题 (每小题4分)
log(x?y)
1
2 试写出 数学式 w?8x?y 的C语言表达式 .设有如下定义 int x = 6;
执行语句 x??x??x*x; 后 请写出 x 的值 .
3. 设有如下定义 int x = 5, y = 6;
请写出: 如下程序段执行后的输出结果 .
printf("==== %d ",(( ++x == y++ )||(x = 8))? --x : --y ) ;
printf("### %d, %d\n", x, y);
4. 请写出: 如下程序段执行后的输出结果
int a; a = -1;
a = a | 0377; printf(“ %d %o \n”, a, a );
5. 设有定义 char st[80], i, c;
今要求将字符串 “This is a string.” 完整记录于 st中, 试问如下四种输入方法中,
哪些方法能达到这个要求.
A. gets( st );
B. scanf( “ %20s ”, st );
C. for( i=0; i<16; i++ ) st[i]=getchar(); st[i]=?\0?;
D. i=0; while( ( c = getchar() ) != ?\n? ) st[i++] = c; st[i]=?\0?;
6 请写出: 如下程序段执行后的输出结果
char *alpha[5] = { “ABCD”, “EFGH”, “IJKL”, “MNOP”, “QRST” };
char **p = alpha; int i = 0;
while ( i < 4 ) printf( “%c ”, *( *(p+i++)+1 ) );
7. 设有定义 int a[4] = {0,4,5,13}, *p;
请写出: 如下程序段执行后的输出结果 .
p = &a[2];
printf("*--p %d\n", *--p);
printf("*p++ %d\n", *p++);
printf("++(*p) %d\n", ++(*p));
printf("%d %d %d %d\n",a[0],a[1],a[2],a[3]);
8. 设有定义 struct date
{ int day;
char month;
int year;
} dd, *pd = ⅆ
请写出: 引用结构体成员 dd .day 的其它两种描述形式 .
二. 阅读题 (每小题5分) ( 阅读下列程序, 写出程序的输出结果,或根据要求回答 )
1。 [程序2.1] #include "stdio.h" main() { int n,a,x; char cc = '#';scanf("%d", &n);/*/输入 4/*/ for( x=0; x0; a-- ) putchar(cc);for( a=0; a
3.[程序2.3]
main()
{ char a[10]="ABCD", b[10]="12345678";
int i, j=1;
} for(i=3; b[i-1]!='\0'; i++) a[i]=b[i-1]; a[--i]='\0'; printf(" Result [1] "); puts(a);while ( a[j++] != '\0' ) b[j]=a[j]; printf(" Result [2] "); puts(b);
4.[程序2.4] double func4 ( double d, int n )
{ return ( n ? d*func4 ( d, n -1 ): 1.0 );
}
main()
{ double x, w; int n;
x = 6.0;
w = func4 ( x, 4 );
printf("x= %lf ", x);
printf("w= %lf\n", w);
}
5.[程序2.5]
void func5 ( int *a, int n );
main()
{ int i = 0;
static int ab[8] = {9,3,2,5,8,1,6,0};
func5 ( ab, 8 );
while ( i < 8 )
printf(" %d,` ", ab[i++]);
}
void func5 ( int *a, int n )
{ int i, t, *p;
for(i=1; i
{ for( p=a; p
{ if( *p>*(p+1) )
{ t=*p; *p=*(p+1); *(p+1)=t; }
}
}
}
6.[程序2.6].
分析如下指针函数模块sample( )的功能:
若一次键入数据: 11 20 9 24 16 0 38 46
请写出printf输出结果, 并且画出 head 所指向的链表示意图.
#include "stdio.h" typedef struct node{ int data; struct node *next;
} JD;
JD *sample ( )
{ JD *head, *q, *p; int count=0, sum=0; head=(JD*)malloc(sizeof(JD)); q=(JD*)malloc(sizeof(JD)); head->next=q; for(scanf("%d",&q->data); q->data!=0; scanf("%d",&q->data)) { q->next=(JD*)malloc(sizeof(JD)); q=q->next; } q->next=NULL; p=head->next; while( p!=NULL ){ count++; sum += p->data; p = p->next; } printf("count= %d ",count); printf("sum= %d\n", sum);
return (head);
}
三. 改错题 (8分)
下列程序中有八个错误, 按程序功能的要求, 指出和纠正所有错误,(程序行序不能改)
并以将 ″#xx 行改为 yyyy ″的形式进行解答. 例答: #3行改为 int max=0,min=100, f=1;
程序功能: (1)输入若干个学生成绩, 若输入数据大于100或小于0(除 -999外), 则不作记录, 重新输入; 当输入 –999 , 则输入结束.
统计所有输入成绩的最大值,最小值,成绩个数,平均值, 并输出之.
#1 main()#2 { int mark, n = 0, sum = 0; #3 int max = 0 , min = 100; #4 for( ; ; ); #5 { scanf("%d", mark); #6 if ( mark = -999 ) break;#7if ( mark > 100 ) #8 { printf("mark>100, Reinput!\n"); #9 break; } #10n++; sum += mark; #11if ( mark>max ) max = mark #12 #13 else min = mark; } #14 sum %= n; #15 printf("%d,%d,%d,%d\n", max,min,n,sum);
#16 }
四. 填空题 (16分)
(阅读下列程序说明和相应的C程序, 把缺少的内容填入 _______ 处, 完善该程序.)
1.[程序 7 说明] 本程序运行的结果, 输出 如右下 所示结果.
[程序7]
#define N 8
main()
{ int i, j, k ; 1 2 3 4 5 6 7 8
int a[N]; 8 1 2 3 4 5 6 7
for( i=0; i
a[ i] = i +2 ; 6 7 8 1 2 3 4 5
a[ N-1] = _______(1)________ ; 5 6 7 8 1 2 3 4
for(j=0; j
{ gosub( _______(2)_______ ) ; 3 4 5 6 7 8 1 2
for(k=0; k
printf(" %2d ", a[k]);
_________(3)__________ ; } } gosub(int a[], int n) { int t, i; t=a[n];