简答题(共5题,每题4分,共20分)
有一字符型变量ch,写出一个判断ch是否为数字的逻辑表达式。
已知C循环语句:int a=0; for(j=1; j<=100; j++) a=a+j; 用另外两种循环语句重写上面的C语句。
定义一个实现两个整数相加的函数sum,函数有两个形参,函数的返回值为整型。
写出下列程序的输出结果。
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));
}
下表是4个学生的基本信息:
学号
姓名
性别
成绩
101
Liping
M
80.5
102
Wanghan
F
95.4
103
Zhangtao
M
77.4
104
Zhougan
F
85.0
根据上表定义一个结构类型和相应的结构数组,并把上表的数据作为初值赋给结构数组。
完成下列程序缺少部分(共5题,每题4分,共20分)
下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,完成程序中下划线部分。
#include <stdio.h>
main()
{
int i,j;
for(i=0; ; i++)
{
j=i*10+6;
if( ) continue;
printf("%d",j);
}
}
下面的函数把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);
}
下面程序中,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 ;
}
下面的函数用来在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;
}
下面的程序将输入字符中的小写字母转化成大写字母输出,其它字符按原样输出,当输入字符为“!”时程序结束。完成程序中下划线部分。
#include <stdio.h>
main()
{
char ch;
printf(”Input string(! to quit):”);
do{
ch = getchar();
if( )
ch = ch + ’A’-’a’;
putchar(ch);
}while( );
}
编程题(共1题,10分)
已知函数 其中x为整数且x的最大值不超过12,编程当输入x时,求f(x)的值并输出结果。
答案:
简答题
ch>=’0’ && ch<=’9’
答对其中两个即可(循环语句及条件对得1分,循环体对1分)
int sum(int a,int b)…………………………………………………(2分)
{
int c;
c=a+b; ……………………………………………………………………………………(1分)
return c; ………………………………………………………………………(1分)
}
18,10,6,8(答对一个1分)
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分,只写出正确答案的一部分,可适当给1分)
i<10 j%3或(j%3)!=0或j%3!=0
’\0’ n++
row a[row][colum]
p++ w[i-1]
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分)
}