一. 选择题
1.已知变量说明如下:
int k,a,b;
unsigned long w=5;
double x=1.42;
则以下不符合c语言语法的是( A )
(A) x%(-3) (B)w+=-3
(C) k=(a=2,b=3,a+b) (D) a+=a-=(b=1)*(a=2)
2.若int x=0,y=2,z=5; 则下列表达式值为假的是( D )
(A) ‘x’&&’yy’ (B) x<y (C) x||y+z&&y+z (D) !((x<y)&&!Z||1)
3.若定义float a; 则表达式 a=1 , a+1,a+=a;的值是( B )
(A)2 (B)2.0 (C)4 (D) 4.0
4.以下是正确的字符型常量的是(B )
(A) ‘\’ (B) ‘\\’ (C) “\\” (D) “\”
5.若int 类型占用两个字符,则以下程序段的输出结果是( C )
int a=-2;
printf(“%d,%u\n”,a,a);
(A)-2,-2 (B)-2,32766 (C)-2,32768 (D)-2,65534
6.下列运算符中优先级最低的是( D )
(A)>= (B) <= (C)!= (D)+=
7.下列运算符中优先级最高的是( D )
(A)<< (B) <= (C)&& (D)%
8.执行程序段
int a,b,c;
a=b=c=0;
++a||++b&&++c;
后,变量a,b,c的值分别是( D )
(A) 0 0 0 (B)1 0 0 (C)1 1 0 (D)1 1 1
9.以下程序段中循环体执行了( D)次
int n=1000;
while(---n>=0)
printf(“%d”,n);
(A)988 (B)999 (C)1000 (D)1001
10.下面程序段的执行结果是(C )
#define prt(a,b) if(!a) b=a
main()
{
int x=1,y=0;
if(x>y) prt(x,y);
else prt (y,x);
printf(“%d,%d”,x,y);
}
(A) 1;0 (B) 0,1 (C) 0,0 (D) 编译出错
11.表达式”c=*p++”的执行过程是( A )
(A)赋值*p的值给c后在执行p++
(B)赋值*p的值给c后在执行*p++
(C)赋值p的值给c后在执行p++
(D)赋值p的值给c后在执行*p++
12.若main函数前省略返回值类型,以下说法正确的是( B )
(A)main 是特殊的函数,没有返回值
(B)main是特殊的函数,系统根据实际程序给定返回值类型
(C)省略返回值类型,默认为void
(D)省略返回值类型,默认为 int
13.下面程序的输出结果( B )
int a=1,b=2;
printf(“%d\n”,a=a+1,a+6,b+2);
(A) 1 (B) 2 (C) 4 (D) 8
14.下面程序输出结果是( C )
int a=1,b=2;
printf(“%d\n”,(a=a+1,a+6,b+2));
(A) 1 (B) 2 (C) 4 (D) 8
15.设int类型占用2字节,这下面程序结果是( D )
int a=-1;
printf(“%d,%o,%u\n”,a,a,a);
(A) -1,-1,-1 (B) -1,-77777,-32768 (C) -1,177777,-32768 (D) -1,177777,65535
16.下面程序段的输出结果是( C )
int x=‘y’;
printf(“%c”,(x=x-’a’+3+’A’)-’Z’>0?x-’Z’+’A’-1:x);
(A) Y (B) Z (C) B (D) C
17.若x为int类型,则与逻辑表达式!X等价的表达式是( A )
(A)x==0 (B)x==1 (C) x!=0 (D) x!=1
18.下面程序段的运行结果是( B )
int x=2,y=3,z=4;
z=x<y?++x:++y;
printf(“%d,%d,%d\n”,x,y,z);
(A) 2,3,4 (B) 3,3,3 (C) 3,4,3 (D) 3,4,2
19.下面程序段的运行结果是( C ) //注意:c++执行了3次
int a=1,b=3,c=0;
switch(a%3)
{
case 0 :c++;break;
case 1:c++;
Switch(b%2){
default:c++; //没有break
case 0:c++;break;}}
Printf(“%d”,c);
(A) 1 (B) 2 (C) 3 (D) 4
20.下面说法中正确的是( D )
(A)在switch语句中一定要用break语句
(B)break语句是switch语句的一部分
(C)break语句只能用于switch语句
(D)在switch语句中不一定要使用break语句
21.以下数组初始化错误的是(C )
(A)int a[5]={1,2,3,4,5};
(B) int a[5]={1,2,3,4,5,};
(C) int a[5]={1,2,3,4,5,6};
(D) int a[5]={1,2,3,4};
22.对于下面程序段,说法正确的是( C )
int a=5;
for(;a=0;) a--;
(A) 循环体语句执行了一次
(B) 循环体语句一次也不执行
(C) 循环体语句执行了5次
(D) 编译出错
23.下面程序段的运行结果是( A )
int a=5,b=3,c=1;
while(a>b>c) a+=1,b+=2,c+=3;
printf(“%d,%d,%d\n”,a,b,c);
(A)5,3,1 (B) 6,5,4 (C) 7,7,7 (D) 8,9,10
24.语句int x=100;while(x--);执行后变量x的值是( C )
(A)0 (B)1 (C)-1 (D)-2
25.若有以下语句,则能表示数组元素的表达式是( D )
int a[3][5],(*p)[5];p=a;
(A) p+1 (B) *(p+2) (C) *(p+1)+2 (D) *(*p+2)
26.若有定义char c[5],*p=c;以下正确的语句是( C )
(A)c=“1234”; (B) *c=“1234”; (C) p=“1234”; (D)*p=“1234”;
27.若有以下定义,则使数组元素a[2]值为4的表达式为( D )
int a[]={1,2,3,4,5,6,7,8,9,10},*p=a;
(A)p+=2,*(p++) (B) p+=2,*++p (C) p+=3,*p++ (D) p+=2,++*p
28.若有以下定义,则值为3的表达式是( ) ???????
(A)a[1]+1 (B) *(p+1)+1 (C) p++,p[0][1] (D) (*a+1)+1
29.下面程序段的输出结果是( C )
int a=1,b=2,*p,**pp;
p=&a;pp=&p;p=&b; //把b的地址赋给指针变量p,此时指针变量间接指向b
printf(“%d,%d,\n”,*p,**pp);
(A) 1,1 (B) 1,2 (C) 2,2 (D) 2,1
30.以下所列出的函数原型申明中,错误的是(C )
(A)int (*f)(int); (B)int f(int*);
(C) struct aa{ int a; int b; } f(struct aa); (D) struct aa{int a; int b;}; struct aa f(struct aa);
31.以下描述中,不正确的是( B )
(A)调用函数时,实参可以是常量.表达式
(B)调用函数时,形参可以是常量.表达式
(C)调用函数时,实参与形参的类型必须匹配
(D)调用函数时,要为形参分配存储单元
32.在函数调用语句 fun(a+b,(x+y),fun(n,m,(a,b)));中,实参的个数是( A )
(A)3 (B)4 (C)5 (D) 语句有错误
33.设有以下宏定义;
#define N 5
#define f(M) ((N+1)*M)
则语句x=2*(N+1)+2*f(N+1);执行后,整型变量x的值是( C )
(A)84 (B)73 (C)74 (D)语句有错误
34.以下说明中,标识符AA代表变量的是( C )
(A)typedef struct { int a; double b; } AA;
(B) #define AA struct aa
AA{ int a;double b; };
(C)struct {int a ;double b;}AA;
(D) struct aa{ int a;double b; }
typedef struct aa AA;
35.对于文件操作,以下错误的说法是( A )
(A)若用”r+”方式打开文件,则可以进行输入和输出,但输入后不能直接进行输出
(B)若用”r”方式打开一个不存在的文件,则会返回NULL指针
(C)若用”w”方式打开不存在的文件,则会创建该文件
(D)若用”a”方式打开一个不存在的文件,则会返回NULL指针
36.若要打开C盘work目录下file1.txt文件进行读操作,正确的语句是(C )
(A)fopen(“c:\work\file1.txt”,”r”);
(B)open(“c:\work\file1.txt”,’r’);
(C)fopen(“c:\\work\\file1.txt”,”r”);
(D)fopen(“c:\\work\\file1.txt”,’r’);
二.程序填空题
1.下面函数可以检查给定的字符串中括号是否匹配对,若配对返回0,否则返回1
}7. 下面函数实现将一个表示浮点数的字符串转换为double类型的值
double fun(char *s)
{
double x=0,y=0;t=10;
int c,f=1;
while(*s)
{
if(*s==‘.’) f=0;
else
{
c=*s-’0’;
if(_______) { x=x*10+c; }
else { y=y+c/1;______________; }
}
s++;
}
____________________;
}
三.读程题
1.从键盘输入4,程序运行结果是:_______//这题没有scanf,gets,getchar无法输入
#include<stdio.h>
#define N 20
main()
{
int a[N],I,j;
for(i=2;i<N;i++) a[i]=1;
for(i=2;i<N;i++)
if(a[i]) for(j=2*I;j<N;j+=i) a[j]=0;
for(i=2;i<N;i++) if(a[i]) printf(“%4d”,i);
}
2.下面函数的功能是:将数组中的数据倒序输出
void fun(int a[],int n)
{
if(n>1) fun(&a[1],n-1);
printf(“%d”,a[0]);
}
3.下面程序若输入12345,则输出是9303
#include<stdio.h>
void main()
{
int n,x=0,t;
scanf("%d",&n);
do{
t=n%16;
x=x*10+t;
}
while(n/=16);
printf("%d",x);
}
4.下面程序,若从键盘输入4,这输出_________________
#include<stdio.h>
#define N 10
void main()
{
int a[N][N],k,i,j,n;
scanf("%d",&n);
for (k=1;k<=n;k++)
{
for(i=0,j=k-1;j<n;i++,j++)
a[i][j]=k;
for(j=0,i=n+1-k;i<n;i++,j++ )
a[i][j]=k;
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%4d",a[i][j]);
printf("%n");
}
}
5.设整数在内存占用4个字节,则以下程序若从键盘输入-375,则输出是__________
#include<stdio.h>
void main()
{
int x,i;
unsigned m=1<<31;
scanf("%d",&x);
for(i=1;i<=32;i++)
{
putchar(x&m ? '1' :'0');
x<<=1;
if(i%4==0)
putchar(' ');
}
}
6.下面函数的功能是:求数组中比第一个数小的数,
1.利用一维整型数组可以实现超长整数的加法,编程实现;从键盘输入两个40位正整数,输出其和
3.编写函数实现计算任意n*4整型矩阵上的周边元素之和
int fun( int a[][4],int n)
{
int s=0;
int i;
for(i=0;i<4;i++) s=s+a[0][i]+a[n-1][i];
for(i=1;i<n-1;i++) s=s+a[i][0]+a[i][3];
return s;
1.已知变量说明如下:
int k,a,b;
unsigned long w=5;
double x=1.42;
则以下不符合c语言语法的是( A )
(A) x%(-3) (B)w+=-3
(C) k=(a=2,b=3,a+b) (D) a+=a-=(b=1)*(a=2)
2.若int x=0,y=2,z=5; 则下列表达式值为假的是( D )
(A) ‘x’&&’yy’ (B) x<y (C) x||y+z&&y+z (D) !((x<y)&&!Z||1)
3.若定义float a; 则表达式 a=1 , a+1,a+=a;的值是( B )
(A)2 (B)2.0 (C)4 (D) 4.0
4.以下是正确的字符型常量的是(B )
(A) ‘\’ (B) ‘\\’ (C) “\\” (D) “\”
5.若int 类型占用两个字符,则以下程序段的输出结果是( C )
int a=-2;
printf(“%d,%u\n”,a,a);
(A)-2,-2 (B)-2,32766 (C)-2,32768 (D)-2,65534
6.下列运算符中优先级最低的是( D )
(A)>= (B) <= (C)!= (D)+=
7.下列运算符中优先级最高的是( D )
(A)<< (B) <= (C)&& (D)%
8.执行程序段
int a,b,c;
a=b=c=0;
++a||++b&&++c;
后,变量a,b,c的值分别是( D )
(A) 0 0 0 (B)1 0 0 (C)1 1 0 (D)1 1 1
9.以下程序段中循环体执行了( D)次
int n=1000;
while(---n>=0)
printf(“%d”,n);
(A)988 (B)999 (C)1000 (D)1001
10.下面程序段的执行结果是(C )
#define prt(a,b) if(!a) b=a
main()
{
int x=1,y=0;
if(x>y) prt(x,y);
else prt (y,x);
printf(“%d,%d”,x,y);
}
(A) 1;0 (B) 0,1 (C) 0,0 (D) 编译出错
11.表达式”c=*p++”的执行过程是( A )
(A)赋值*p的值给c后在执行p++
(B)赋值*p的值给c后在执行*p++
(C)赋值p的值给c后在执行p++
(D)赋值p的值给c后在执行*p++
12.若main函数前省略返回值类型,以下说法正确的是( B )
(A)main 是特殊的函数,没有返回值
(B)main是特殊的函数,系统根据实际程序给定返回值类型
(C)省略返回值类型,默认为void
(D)省略返回值类型,默认为 int
13.下面程序的输出结果( B )
int a=1,b=2;
printf(“%d\n”,a=a+1,a+6,b+2);
(A) 1 (B) 2 (C) 4 (D) 8
14.下面程序输出结果是( C )
int a=1,b=2;
printf(“%d\n”,(a=a+1,a+6,b+2));
(A) 1 (B) 2 (C) 4 (D) 8
15.设int类型占用2字节,这下面程序结果是( D )
int a=-1;
printf(“%d,%o,%u\n”,a,a,a);
(A) -1,-1,-1 (B) -1,-77777,-32768 (C) -1,177777,-32768 (D) -1,177777,65535
16.下面程序段的输出结果是( C )
int x=‘y’;
printf(“%c”,(x=x-’a’+3+’A’)-’Z’>0?x-’Z’+’A’-1:x);
(A) Y (B) Z (C) B (D) C
17.若x为int类型,则与逻辑表达式!X等价的表达式是( A )
(A)x==0 (B)x==1 (C) x!=0 (D) x!=1
18.下面程序段的运行结果是( B )
int x=2,y=3,z=4;
z=x<y?++x:++y;
printf(“%d,%d,%d\n”,x,y,z);
(A) 2,3,4 (B) 3,3,3 (C) 3,4,3 (D) 3,4,2
19.下面程序段的运行结果是( C ) //注意:c++执行了3次
int a=1,b=3,c=0;
switch(a%3)
{
case 0 :c++;break;
case 1:c++;
Switch(b%2){
default:c++; //没有break
case 0:c++;break;}}
Printf(“%d”,c);
(A) 1 (B) 2 (C) 3 (D) 4
20.下面说法中正确的是( D )
(A)在switch语句中一定要用break语句
(B)break语句是switch语句的一部分
(C)break语句只能用于switch语句
(D)在switch语句中不一定要使用break语句
21.以下数组初始化错误的是(C )
(A)int a[5]={1,2,3,4,5};
(B) int a[5]={1,2,3,4,5,};
(C) int a[5]={1,2,3,4,5,6};
(D) int a[5]={1,2,3,4};
22.对于下面程序段,说法正确的是( C )
int a=5;
for(;a=0;) a--;
(A) 循环体语句执行了一次
(B) 循环体语句一次也不执行
(C) 循环体语句执行了5次
(D) 编译出错
23.下面程序段的运行结果是( A )
int a=5,b=3,c=1;
while(a>b>c) a+=1,b+=2,c+=3;
printf(“%d,%d,%d\n”,a,b,c);
(A)5,3,1 (B) 6,5,4 (C) 7,7,7 (D) 8,9,10
24.语句int x=100;while(x--);执行后变量x的值是( C )
(A)0 (B)1 (C)-1 (D)-2
25.若有以下语句,则能表示数组元素的表达式是( D )
int a[3][5],(*p)[5];p=a;
(A) p+1 (B) *(p+2) (C) *(p+1)+2 (D) *(*p+2)
26.若有定义char c[5],*p=c;以下正确的语句是( C )
(A)c=“1234”; (B) *c=“1234”; (C) p=“1234”; (D)*p=“1234”;
27.若有以下定义,则使数组元素a[2]值为4的表达式为( D )
int a[]={1,2,3,4,5,6,7,8,9,10},*p=a;
(A)p+=2,*(p++) (B) p+=2,*++p (C) p+=3,*p++ (D) p+=2,++*p
28.若有以下定义,则值为3的表达式是( ) ???????
(A)a[1]+1 (B) *(p+1)+1 (C) p++,p[0][1] (D) (*a+1)+1
29.下面程序段的输出结果是( C )
int a=1,b=2,*p,**pp;
p=&a;pp=&p;p=&b; //把b的地址赋给指针变量p,此时指针变量间接指向b
printf(“%d,%d,\n”,*p,**pp);
(A) 1,1 (B) 1,2 (C) 2,2 (D) 2,1
30.以下所列出的函数原型申明中,错误的是(C )
(A)int (*f)(int); (B)int f(int*);
(C) struct aa{ int a; int b; } f(struct aa); (D) struct aa{int a; int b;}; struct aa f(struct aa);
31.以下描述中,不正确的是( B )
(A)调用函数时,实参可以是常量.表达式
(B)调用函数时,形参可以是常量.表达式
(C)调用函数时,实参与形参的类型必须匹配
(D)调用函数时,要为形参分配存储单元
32.在函数调用语句 fun(a+b,(x+y),fun(n,m,(a,b)));中,实参的个数是( A )
(A)3 (B)4 (C)5 (D) 语句有错误
33.设有以下宏定义;
#define N 5
#define f(M) ((N+1)*M)
则语句x=2*(N+1)+2*f(N+1);执行后,整型变量x的值是( C )
(A)84 (B)73 (C)74 (D)语句有错误
34.以下说明中,标识符AA代表变量的是( C )
(A)typedef struct { int a; double b; } AA;
(B) #define AA struct aa
AA{ int a;double b; };
(C)struct {int a ;double b;}AA;
(D) struct aa{ int a;double b; }
typedef struct aa AA;
35.对于文件操作,以下错误的说法是( A )
(A)若用”r+”方式打开文件,则可以进行输入和输出,但输入后不能直接进行输出
(B)若用”r”方式打开一个不存在的文件,则会返回NULL指针
(C)若用”w”方式打开不存在的文件,则会创建该文件
(D)若用”a”方式打开一个不存在的文件,则会返回NULL指针
36.若要打开C盘work目录下file1.txt文件进行读操作,正确的语句是(C )
(A)fopen(“c:\work\file1.txt”,”r”);
(B)open(“c:\work\file1.txt”,’r’);
(C)fopen(“c:\\work\\file1.txt”,”r”);
(D)fopen(“c:\\work\\file1.txt”,’r’);
二.程序填空题
1.下面函数可以检查给定的字符串中括号是否匹配对,若配对返回0,否则返回1
int fun(char *p )
{
int n; char *q;
for(q=p;*q;q++)
if(*q=='(')
n=1;
else if(*q==')')
{
n--;
if(*q=='\n') return 1;
}
if(n>0) return 1;
else return 0;
}
2. 下面的函数实现将一个单向链表里的结点倒置排列,请填写完整
struct node* fun(struct node*head){
Struct node *p,*q;
If(head==NULL||head->next == NULL) //只有链表为空或只有一个结点
return head;
P=head; //p从第1个结点起
q=p->next; //q从第2个结点起,并且q几乎总在p的下一个结点位置
while(q != NULL) {
p->next = q->next; //第1个结点直接指向第3个结点
q->next=head; //q作为新的首结点
head=q; //head重新定位
q = p->next; //p总是出现在p的下一个位置
}
return head;
}
3. 下面程序实现统计当前目录下文件file.txt中子串”read”出现的次数,请填写完整
#include<stdio.h>
#include<string.h>
main()
{
FILE *fp;
Int t ,ch,num=0;
char str[5]=“read”,buf[5];
if(() {
printf(“cannot open the file\n”); exit(1);
}
for(t=0;t<4;t++) buf[t]=_____________________________________; buf[t]=‘\0’;
if( strcmp( str,buf )==0 ) num++;
while( (ch=fgetc(fp))!=EOF ) {
for( t=0;t<3;t++ ) _____________________________________;
________________________________________;
if(strcmp(str,buf)==0) num++;
}
fclose(fp);
printf(“the number of read is: %d\n”,num);
}
4. 下面函数实现将一个N*N的整型矩阵实现转置并存储在原矩形中
#define N 5
void fun(int (*a)[N])
{
int i,j,t;
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}
5. 下面函数都实现字符串的拷贝功能
char *fun1(char *s1,char *s2)
{
int i;
for(i=0;(++s1[i]=++s2[i])!='\n';i++);
return s1;
}
char *fun2(char *s1,char *s2)
{
char *p;
p=s2;
for(p=0;(++*s1=++*s2)!='\n';p++);
return s1;
}
6. 下面函数实现数组的排序(升序),请填写完整(选择排序法)
void inv(int a[],int n)
{
int i,j,k;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n ;j++)
if(a[k]<a[j]) k=j;
if(k!=i)
{
int temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
}7. 下面函数实现将一个表示浮点数的字符串转换为double类型的值
double fun(char *s)
{
double x=0,y=0;t=10;
int c,f=1;
while(*s)
{
if(*s==‘.’) f=0;
else
{
c=*s-’0’;
if(_______) { x=x*10+c; }
else { y=y+c/1;______________; }
}
s++;
}
____________________;
}
三.读程题
1.从键盘输入4,程序运行结果是:_______//这题没有scanf,gets,getchar无法输入
#include<stdio.h>
#define N 20
main()
{
int a[N],I,j;
for(i=2;i<N;i++) a[i]=1;
for(i=2;i<N;i++)
if(a[i]) for(j=2*I;j<N;j+=i) a[j]=0;
for(i=2;i<N;i++) if(a[i]) printf(“%4d”,i);
}
2.下面函数的功能是:将数组中的数据倒序输出
void fun(int a[],int n)
{
if(n>1) fun(&a[1],n-1);
printf(“%d”,a[0]);
}
3.下面程序若输入12345,则输出是9303
#include<stdio.h>
void main()
{
int n,x=0,t;
scanf("%d",&n);
do{
t=n%16;
x=x*10+t;
}
while(n/=16);
printf("%d",x);
}
4.下面程序,若从键盘输入4,这输出_________________
#include<stdio.h>
#define N 10
void main()
{
int a[N][N],k,i,j,n;
scanf("%d",&n);
for (k=1;k<=n;k++)
{
for(i=0,j=k-1;j<n;i++,j++)
a[i][j]=k;
for(j=0,i=n+1-k;i<n;i++,j++ )
a[i][j]=k;
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%4d",a[i][j]);
printf("%n");
}
}
5.设整数在内存占用4个字节,则以下程序若从键盘输入-375,则输出是__________
#include<stdio.h>
void main()
{
int x,i;
unsigned m=1<<31;
scanf("%d",&x);
for(i=1;i<=32;i++)
{
putchar(x&m ? '1' :'0');
x<<=1;
if(i%4==0)
putchar(' ');
}
}
6.下面函数的功能是:求数组中比第一个数小的数,
int fun(int a[],int n)
{
int x;
if(n==1) return a[0];
else
x=fun(&a[1],n-1);
return x<a[0]?x:a[0];
}
四.编程题
1.利用一维整型数组可以实现超长整数的加法,编程实现;从键盘输入两个40位正整数,输出其和
#include<stdio.h>
#define N 2
void main()
{
int a[N],b[N],s[N+1],i,t=0;
for(i=N-1;i>=0;i--) /*输入数组a*/
scanf("%d",&a[i]);
for(i=N-1;i>=0;i--) /*输入数组b*/
scanf("%d",&b[i]);
for(i=0;i<N-1;i++)
{
s[i]=a[i]+b[i]+t;
if(s[i]>10)
{
t=s[i]/10;
s[i]=s[i]%10;
}
else t=0;
}
if(t==0)
for(i=N-1;i>=0;i--)
printf("%d",s[i]);
else
{
s[i]=t;
for(i=N;i>=0;i--)
printf("%d",a[i]);
}
}
2.编程找出一个M*N矩阵中的鞍点
/*
编程找出一个M*N矩阵中的鞍点
由键盘输入一个3行4列的矩阵,输出矩阵中的鞍点
(即在矩阵行中最大,列中最小的数)。若没有鞍点,输出“NO”字样。
*/
#include<stdio.h>
#include<stdlib.h>
#define M 3
#define N 4
void main()
{
int a[M][N],i,j,k;
int max,t;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
for(i=0;i<M;i++)
{
max=0; //此时假设每一行的最大值是第一个数即a[i][0]
for(j=i+1;j<N;j++) //找出列中的最大值
{
if(a[i][j]>a[i][max])
max=j;
}
for(t=1,k=0;k<M&&t;k++) //判断是否在列中是不是最小值
{
if(a[k][max]<a[i][max]) //如果还存在数比a[k][max]的值还小,则置t=0,
t=0; //t是一个标识,t=0 表示不存在,
}
}
if(t) printf("yes,%d\n",a[i][max]);
else printf("no");
}
3.编写函数实现计算任意n*4整型矩阵上的周边元素之和
int fun( int a[][4],int n)
{
int s=0;
int i;
for(i=0;i<4;i++) s=s+a[0][i]+a[n-1][i];
for(i=1;i<n-1;i++) s=s+a[i][0]+a[i][3];
return s;
}
/*
编程计算矩阵5*4整数矩阵周边各元素之和,矩阵的各元素从键盘输入
*/
#include<stdio.h>
void main()
{
int a[5][4],i,j,sum=0;
for(i=0;i<5;i++)
for(j=0;j<4;j++)
scanf("%d",a[i][j]);
sum+=a[i][j];
for(i=0;i<4;i++)
for(j=0;j<3;j++)
sum-=a[i][j];
printf("sum=%d\n",sum);
}
/*
编写函数实现计算任意N*4整型矩阵上的周边元素之和
假设输入的数值
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
*/
#include<stdio.h>
#define N 3
int fun(int a[][4],int n)
{
int i,sum=0;
for(i=0;i<4;i++)
sum+=a[0][i]+a[n-1][i]; //第一行和最后一行的和,此时的i代表的是列数
for(i=1;i<n-1;i++)
sum+=a[i][0]+a[i][3]; //第一列的的第二行开始到 n-1行的 和最后一列的的第二行开始到 n-1行的,此时的i代表的是行数
return sum;
}
void main()
{
int i,j;
int a[N][4];
for(i=0;i<N;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
int s=fun(a,N);
printf("矩阵N*4周边的元素之和为:%d",s);
printf("\n");
}