简答题(共5题,每题4分,共20分) 1.有一字符型变量ch,写出一个判断ch是否为数字的逻辑表达式 2.已知c循环语句:inta=0;for(=1;j<=100;j+)a=a+j;用 另外两种循环语句重写上面的C语句。 3.定义一个实现两个整数相加的函数sum,函数有两个形参,函数的返回 值为整型。 4.写出下列程序的输出结果 main() inta[]={6,7,8,9,10}; ptri 大(ptr+2)=*(ptr+4)-2; (ptr+3)=*ptr+*(ptr+4)+2; printf("8d, d, d, d\n",a[3],a[4], *ptr, *(ptr+2))i 5.下表是4个学生的基本信息 「学号 姓名 性别成绩 101Liping M 80.5 102 Wangan 95.4 103 Zhangtao 104 Zhugan 85.0 根据上表定义一个结构类型和相应的结构数组,并把上表的数据作为初值赋 给结构数组。 完成下列程序缺少部分(共5题,每题4分,共20分) 1.下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,完 成程序中下划线部分 #include <stdio. h> main() int 1 for(i=0 i++) continue
一、 简答题(共 5 题,每题 4 分,共 20 分) 1. 有一字符型变量 ch,写出一个判断 ch 是否为数字的逻辑表达式。 2. 已知 C 循环语句:int a=0; for(j=1; j<=100; j++) a=a+j; 用 另外两种循环语句重写上面的 C 语句。 3. 定义一个实现两个整数相加的函数 sum,函数有两个形参,函数的返回 值为整型。 4. 写出下列程序的输出结果。 main() { int a[] = {6,7,8,9,10}; int * ptr; ptr = a; *(ptr+2) = *(ptr+4)-2; *(ptr+3) = * ptr + *(ptr+4)+2; printf(”%d,%d,%d,%d\n”,a[3],a[4],*ptr,*(ptr+2)); } 5. 下表是 4 个学生的基本信息: 学号 姓名 性别 成绩 101 Liping M 80.5 102 Wanghan F 95.4 103 Zhangtao M 77.4 104 Zhougan F 85.0 根据上表定义一个结构类型和相应的结构数组,并把上表的数据作为初值赋 给结构数组。 二、 完成下列程序缺少部分(共 5 题,每题 4 分,共 20 分) 1. 下面程序的功能是:输出 100 以内能被 3 整除且个位数为 6 的所有整数,完 成程序中下划线部分。 #include <stdio.h> main() { int i, j; for(i=0; ; i++) { j=i*10+6; if( ) continue;
printf("d",3) 2.下面的函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度。 完成函数中下划线部分。 Strapp (char a[], char b[]) int num=0, n=0 while(*(a+num)! num++ while(b[n])i*(a+num)=b[n]i num++ return(num)i 3.下面程序中,se1ect函数的功能是:在N行M列的二维数组中,选出一个 最大值作为函数值返回,并通过形参传回此最大值所在的行下标。完成函数 中下划线部分。 # define n 3 #define M 3 int select(int a[N][M],int *n) t int i,], row=l, colum=l; for(i=0;i<N; i++) for(3=0;j<M;3++ if(a[i] [j]>a [row][colum])row=i; colum=j; I return 4.下面的函数用来在w数组中插入x,w数组中的数己按由小到大顺序存放,n 所指存储单元中存放数组中数据的个数。插入后数组中的数仍有序。完成函 数中下划线部分。 void fun (char *w, char x, int *n w[*n]=xi while (x>w[p]) w[p]= 5.下面的程序将输入字符中的小写字母转化成大写字母输出,其它字符按原样
printf("%d",j); } } 2. 下面的函数把 b 字符串连接到 a 字符串的后面,并返回 a 中新字符串的长度。 完成函数中下划线部分。 Strapp(char a[], char b[]) { int num=0,n=0; while(*(a+num)!= ) num++; while(b[n]){*(a+num)=b[n]; num++; ;} return(num); } 3. 下面程序中,select 函数的功能是:在 N 行 M 列的二维数组中,选出一个 最大值作为函数值返回,并通过形参传回此最大值所在的行下标。完成函数 中下划线部分。 #define N 3 #define M 3 int select(int a[N][M],int *n) { int i,j,row=1,colum=1; for(i=0;i<N;i++) for(j=0;j<M;j++) { if(a[i][j]>a[row][colum]){row=i; colum=j;} *n= ; } return ; } 4. 下面的函数用来在 w 数组中插入 x,w 数组中的数已按由小到大顺序存放,n 所指存储单元中存放数组中数据的个数。插入后数组中的数仍有序。完成函 数中下划线部分。 void fun (char *w,char x,int *n) { int i,p; p=0; w[*n]=x; while (x>w[p]) ; for(i=*n;i>p;i--)w[i]= ; w[p]=x; ++ *n; } 5. 下面的程序将输入字符中的小写字母转化成大写字母输出,其它字符按原样
输出,当输入字符为“!”时程序结束。完成程序中下划线部分。 #include <stdio. h n() char ch printf("Inpr g(! to quit):) do i ch getchar ( if( ch ch +/A putcha fwhile 编程题(共1题,10分) X< 已知函数f(x)={0x=0其中x为整数且x的最大值不超过12, 0 编程当输入x时,求f(x)的值并输出结果
输出,当输入字符为“!”时程序结束。完成程序中下划线部分。 #include <stdio.h> main() { char ch; printf(”Input string(! to quit):”); do{ ch = getchar(); if( ) ch = ch + ’A’-’a’; putchar(ch); }while( ); } 三、 编程题(共 1 题,10 分) 已知函数 2 0 ( ) 0 0 ! 0 x x f x x x x = = 其中 x 为整数且 x 的最大值不超过 12, 编程当输入 x 时,求 f(x)的值并输出结果
答案: 简答题 1分 2 答对其中两个即可(循环语句及条件对得1分,循环体对1分) int a=0,i=l; int a=0,i=l: int a=0,i=l: while(i<101) loop: if(i<101) a=a+i fa=a+ii )While(i<101) i++; goto loop (int a, int b) (2分 nt ci (1分) return ci (1分) 4.18,10,6,8(答对一个1分) float score (2分) struct student students[4]=f 101 80.5}, Wa F 95.4} 103,“ Zhangtao","M 7.4} 104 85.0 (2分) 、完成下列程序缺少部分(每空2分,只写出正确答案的一部分,可适当给
答案: 一、 简答题 1. ch>=’0’ && ch<=’9’ 2. 答对其中两个即可(循环语句及条件对得 1 分,循环体对 1 分) 3. int sum(int a,int b)…………………………………………………(2 分) { int c; c=a+b; ……………………………………………………………………………………(1 分) return c; ………………………………………………………………………(1 分) } 4. 18,10,6,8(答对一个 1 分) 5. struct student{ int num; char name[20]; char sex; float score; }; ………………………………………………………………………………………………………(2 分) struct student students[4]={ {101, ”Liping”, ’M’, 80.5}, {102, ”Wanghan”, ’F’, 95.4}, {103, ”Zhangtao”,’M’, 77.4}, {104, ”Zhougan”, ’F’, 85.0}, } ………………………………………………………………………………………………………(2 分) 二、 完成下列程序缺少部分(每空 2 分,只写出正确答案的一部分,可适当给 int a=0,i=1; do{ a=a+i; i++; }While(i<101); int a=0,i=1; while(i<101) { a=a+i; i++; } int a=0,i=1; loop:if(i<101) {a=a+i; i++; goto loop; } 1 分 1 分 1 分 1 分
分 1.i<10j号3或(j号3)!=0或j号3!=0 a [rowl[co lum] 5.ch>=ach<=z或(ch>=a')&&(ch<=z′) 、编程题(10分) #include <stdio. h> (1分) printf( Enter x: scanf("号d″,&x) …(2分 if (x<=12) break rinf(\nx is great than 12. Re-enter x: while(1) (1分) if(x<o (1分) else (x==0) .(1分) for(i=1;i<=x冫i++) (1分) (1分) printf("\nthe function f(x)=gld",f)i 分)
1 分) 1. i<10 j%3 或(j%3)!=0 或 j%3!=0 2. ’\0’ n++ 3. row a[row][colum] 4. p++ w[i-1] 5. ch>=’a’&&ch<=’z’或 (ch>=’a’)&&(ch<=’z’) ch!=’!’ 三、 编程题(10 分) #include <stdio.h> main() ………………………………………………………………………………………(1 分) { int x; long f; int i; printf(”Enter x:”); do{ scanf(”%d”,&x); …………………….………………………………(2 分) if(x<=12) break; printf(”\nx is great than 12. Re-enter x:”); }while(1); …………………………………………………….………………(1 分) if(x<0) …………………………………….…………………………………………(1 分) f=x*x; else (x==0) …………………………………………………………………………(1 分) f=0; else …………………………………………………………………………………………(1 分) { f=1; for(i=1;i<=x;i++) ……………………………………………………(1 分) f=f*i; …………………………………………………………………………(1 分) } printf(”\nthe function f(x)=%ld”,f);……………(1 分) }