简答题(共5题,每题4分,共20分)
写出判断一个整形变量x能被5整除但不能被7整除的逻辑表达式。
用循环语句编程实现从二维数组
int a[3][4]={{2,4,5,7},{3,12,8,11},{8,1,0,19},{10,6,15,13}};中找出最大数。
下面程序中的swap函数能否实现变量a和b值的互换,如不能,请重新编写一个函数实现变量a和b值的互换。
void swap(int x,int y)
{ int temp;
temp=x; x=y; y=temp;
}
main()
{
int a=4,b=8;
swap(a,b);
printf(“%d,%d\n”,a,b);
}
写出下面程序运行输出的结果。
main( )
{
int a[ ]={1,2,3,4,5,6,7,8,9,10,11,12};
int *p=a+5,*q=NULL;
q=p+5;
printf("%d %d \n",*p,*q);
}
有下列C语句:
struct table {
unsigned int type;
float price;
}table1={3456,455.50};
struct * ptab;
ptab=&table1;
写出使用结构变量名和指向结构的指针两种方法在屏幕上分别输出结构变量成员的C语句。
完成下列程序缺少部分(共5题,每题4分,共20分)
函数fun的功能是:使一个字符串按逆序存放,strlen()函数的功能是计算字符串的长度,完成函数下划线部分。
void fun(char str[])
{ char m; int i,j;
for(i=0,j=strlen(str);i< ;i++,j--)
{ m=str[i];
str[i]= ;
str[j-1]=m;
}
printf("%s\n",str);
}
以下程序中,主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行上的最大值。完成函数中的下划线部分。
#define N 3
#define M 4
void LineMax(int x[N][M])
{
int i,j,p;
for(i=0; i<N;i++)
{ p=0;
for(j=1;j<M;j++)
if(x[i][p]<x[i][j]) ;
printf("The max value in line %d is %d\n",i,);
}
}
mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。完成函数中的下划线部分。
int mystrlen(char *str)
{
int i;
for(i=0; !=’\0’;i++);
return( );
}
函数fun的功能是:累加数组元素的值。n为数组中元素的个数,累加和的值放入x所指的存储单元中,完成函数中下划线部分。
void fun(int b[],int n,int * x)
{
int k,r=0;
for(k=0;k<n;k++)
r= ;
_________________= r;
}
下面程序是输出结构数组中所有学生的姓名和成绩。完成程序中下划线部分。
struct student{ char name[20];
float score;
};
struct student stus[5]={{”Liping”,85.5},{”Zhanghao”,90.0},
{”Wangmin”,75},{”Denglan”,95},{”Maming”,84.5}};
main()
{
struct student * p;
for(p = stus; ; p++)
printf(”%s %f\n”,,p->score)
}
编程题(10分)
有一段关于c语言的文字,共有3行,每行最多有80个字符,编程统计出这段文字的大写英文字符、小写英文字符、数字、空格和其它字符的个数并将统计结果输出。
char * text[]=
{”The programming language C was originally developed,,
”by Dennis Ritchie of Bell Laboratories and was designed,,
”to run on a PDP-11 with a UNIX operating system.”};
答案:
简答题(共5题,每题4分,共20分)
(x%5==0)&&(x%7!=0)或 x%5==0&&x%7!=0或 !(x%5)&&x%7
(全对4分,否则按上面给分)
答:
int i,j;
int max;
max=a[0][0];
for(i=0;i<3;i++) ……………………………………(1分)
for(j=0;j<4;j++)……………………………………(1分)
{
if(a[i][j]>max) ………………………………(1分)
max=a[i][j]; …………………………………(1分)
}
答:
不能。…………………………………………………………………………(1分)
void swap(int * x,int * y)…………………(2分)
{
int temp;
temp = *x; *x = *y; *y = temp;…(1分)
}
答:6 11 (每个2分)
答:
printf(”num=%d,score=%f\n”,table1.num,table1.score);(2分)
printf(”num=%d,score=%f\n”,ptab->num,ptab->score);……(2分)
完成下列程序缺少部分(每空2分,只写出正确答案的一部分,可适当给1分)
j-1 str[j-1]
p=j x[i][p]
str[i] i
r+b[k] *x
p<strs+5 p->name
编程题(10分)
#include <stdio.h>
char * text[]=
{”The programming language C was originally developed,,
”by Dennis Ritchie of Bell Laboratories and was designed,,
”to run on a PDP-11 with a UNIX operating system.”};
main()……………………………………………………………………………………………………………………(1分)
{
int i,j,upp,low,digit,space,other;
upp=low=digit=space=other=0;
for(i=0;i<3;i++)……………………………………………………………………………………(1分)
for(j=0;j<80 && text[i][j]!=’\0’;j++)………………………(2分)
{
if(text[i][j]>=’A’ && text[i][j]<=’Z’)………………(1分)
upp++;
else if(text[i][j]>=’a’ && text[i][j]<=’z’)…(1分)
low++;
else if(text[i][j]>=’0’ && text[i][j]<=’9’)…(1分)
digit++;
else if(text[i][j]==’ ’)……………………………………………………(1分)
space++;
else…………………………………………………………………………………………………………(1分)
other++;
}
printf(”upper case,%d\n”,upp);
printf(”lower case,%d\n”,low);
printf(”digit,%d\n”,digit);
printf(”space,%d\n”,space);
printf(”other,%d\n”,other);…………………………………………………(1分)
}