C语言考试题及答案

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include <stdio.h> main() { int year, flag; printf("Enter year:"); scanf("%d",&year ); if ( year%4==0&&year%100!=0||year%400==0 ) { flag = 1; } else { flag = 0; }
n);
main() { int a[ARR_SIZE][ARR_SIZE]; YH(a, ARR_SIZE-1); PrintYH(a, ARR_SIZE-1); } void YH(int a[][ARR_SIZE], int n) { int i, j; for (i=1; i<=n; i++) { for (j=1; j<=i; j++) { if (j==1 || i==j) { a[i][j] = 1; } else { a[i][j] = a[i-1][j-1] + a[i-1] [j];
运行结果是: t=1 t=2 5.
#include <stdio.h>
int Func(int i); main() { int i; for (i=3; i<5; i++) { printf(" %d", Func(i)); } printf("\n"); } int Func(int i) { static int k = 10; for (; i>0; i--) { k++; } return (k); }
运行结果是: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 5 10 10 3.
#include <stdio.h> main() { int i, n;
1 5
1
for (i=1; i<=5; i++) { printf("Please enter n:"); scanf("%d", &n);
for (i=0; i<ROW; i++) { for (j=0; j<ROW; j++) { for (k=0; k<COL; k++)
{// c[i][j] = 0; c[i][j] = c[i][j] + a[i][k] * b[j] [k];// b[k][j] } } } }
2.编程输入10个数,找出其中的最大值及其所在的数组下 标位置。
1.编程计算矩阵相乘之积。
#include<stdio.h> #define ROW 2 #define COL 3 // void MultiplyMatrix(int a[ROW][COL],int b[COL] [ROW], int c[ROW][ROW]) ; main() { int a[ROW][COL], j;
运行结果是:
January February March April May June July
August September October November December
2.
#include<stdio.h> #define ARR_SIZE void void 7
YH(int a[][ARR_SIZE], int n); PrintYH(int a[][ARR_SIZE], int
二、分析程序并写出来自百度文库行结果。(25分,每题5 分)
1.
#include <stdio.h> main() { int n; static char *monthName[]= {"Illegal month", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; for (n=1; n<=12; n++) { printf("%s\n", monthName[n]); } }
if (n <= 0) continue; printf("n = %d\n", n); } printf("Program is over!\n"); }
程序运行时输入:1 运行结果是:
-2
3
-4
5↙
n = 1 Please enter n: Please enter n:n = 3 Please enter n: Please enter n:n = 5 Program is over!
2. 下面这个程序用于交换两个数组的对应元素的值。
#include <stdio.h> #define ARRAY_SIZE 10 void Swap(int *x, int *y); void Exchange(int a[], int b[], int n); void InputArray(int a[],int n); void PrintArray(int a[],int n); main() { int a[ARRAY_SIZE], b[ARRAY_SIZE], n; printf("Input array lenth n<=10: "); scanf("%d", &n); printf("Input array a:\n"); InputArray(a, n);
} } } } void PrintYH(int a[][ARR_SIZE], int n) { int i , j ; for (i=1; i<=n; i++) { for (j=1; j<=i; j++) { printf("%4d", a[i][j]); } printf("\n"); } }
#include <stdio.h> int FindMax(int num[], int n, int *pMaxPos); main() { int num[10], minPos, i //;
maxValue,
maxPos,
minValue,
printf("Input 10 numbers:\n "); for (i=0; i<10; i++) { scanf("%d", num[i]); //& num[i] } maxValue = FindMax(num, 10, *maxPos); // &maxPos printf("Max=%d, Position=%d\n",maxValue, maxPos); } int FindMax(int num[], int n, int *pMaxPos) { int i, max; max = num[0]; for (i = 1, i < n, i++)// i = 1; i < n; {
一、单项选择题:(10分,每题2分) 1.char *p[10];该语句声明了一个: c 。
A) 指向含有10个元素的一维字符型数组的指针变量p B) 指向长度不超过10的字符串的指针变量p C) 有10个元素的指针数组p,每个元素可以指向一个字符 串 D) 有10个元素的指针数组p,每个元素存放一个字符串 2.若int x;且有下面的程序片断,则输出结果为: D 。
int i; printf("Enter ten strings:\n"); for (i=0; i<10; i++) { scanf("%s", str[i] ); } strcpy(maxstring, str[0]); for (i=1; i<10; i++) { if (strcmp(maxstring, str[i])<0) 或strcmp(str[i], maxstring)>0 { strcpy(maxstring, str[i]); } } printf("The max string is:%s\n",maxstring); }
运行结果是: 13 17
三、阅读并完成程序,在标有下划线的空白处填 入适当的表达式或语句,使程序完整并符合题目 要求。(20分,每空2分)
1. 下面程序用于读入10个字符串,然后找出最大的字符串 并打印。
#include <stdio.h> #include <string.h> main() { char str[10][80],maxstring[80];
printf("Input array b:\n"); InputArray(b, n); Exchange(a,b,n); printf("After swap:\n"); printf("Array a:\n"); PrintArray(a, n); printf("Array b:\n"); PrintArray(b, n); } void Swap(int *x, int *y) { int temp; temp=*x ; *x=*y ; *y=temp ; } void Exchange(int a[], int b[], int n) { int i; for (i = 0; i < n; i++) { Swap( &a[i],&b[i] ); } } void InputArray(int a[], int n) { int i; for (i = 0; i < n; i++) { scanf("%d ", &a[i]) ;
4.
#include <stdio.h> void Func(int n); main() { int i; for (i = 0; i < 2; i++) { Func(i); } } void Func(int n) { static int t = 1; printf("t=%d\n", t++); }
} } void PrintArray(int a[], int n) { int i; for (i = 0;i < n;i++) { printf("%d ", a[i]); } printf("\n"); }
3. 从键盘任意输入一个年号,判断它是否是闰年。若是闰 年,输出"Yes",否则输出"No"。已知符合下列条件之一者 是闰年: 能被4整除,但不能被100整除。 能被400整除。
b[COL][ROW],
c[ROW][ROW],
i,
printf("Input array a:\n"); for (i=0; i<ROW; i++) { for (j=0; j<COL; j++) { scanf("d", &a[i][j]); // %d
} } printf("Input array b:\n"); for (i=0; i<COL; i++) { for (j=0; j<ROW; j++) { scanf("d", &b[i][j]); } } MultiplyMatrix(a, b, c); printf("Results:\n"); for (i=0; i<ROW; i++) { for (j=0; j<ROW; j++) { printf("%6d", &c[i][j]);// c[i][j] } printf("\n"); } } void MultiplyMatrix(int [ROW], int c[ROW][ROW]) { int i, j, k; a[ROW][COL],int b[COL]
struct point { int x; int y; }; struct rect { struct point pt1; struct point pt2; }; struct rect rt; struct rect *rp = &rt;
则下面哪一种引用是不正确的__D______。
A) rt.pt1.x B) (*rp).pt1.x C) rp->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
for (x=3; x<6; x++) { printf((x%2) ? "##%d" : "**%d\n", x); }
A)
##3 **4 ##5
B)
**3 ##4 **5
C)
**3 D) ##3**4 ##4**5 ##5
3.在while(!x)语句中的!x与下面条件表达式等价的 是: D 。 A) x!=0 B) x==1 C) x!=1 D) x==0 4.已知
if ( flag ) { printf("Yes!\n"); } else { printf("No!\n"); } }
四、在下面给出的4个程序中,共有15处错误(包 括语法错误和逻辑错误),请找出其中的错误, 并改正之。(在错误的代码下边画一根横线,把 正确的代码写在旁边;漏掉的代码正确插入合适 的位置。30分,每找对1个错误,加1分,每修改 正确1个错误,再加1分。)
相关文档
最新文档