#include stdio"stdio.h" void main () { int j,i,s=0; inta[3][3]={1,2,3,4,5,6,7,8,9}; for(I=0;I&l

C语言之数组
第九章 数组(二)
1、有以下程序
&&&& main()
&&&& { int&&a[10]={1,2,3,4,5,6,7,8,9,10}, *p=&a[3], *q=p+2;
&&&&&& printf(&%d\n&, *p + *q);
&&&&程序运行后的输出结果是
A)16&&&&&&&&&& B)10&&&&&&&&&&C)8&&&&&&&&&& D)6
2、有以下程序
&&&& void sort(int&&a[], int&&n)
&&&& { int&&i, j ,t;
&&&&&& for (i=0; i& n-1; i++)
&&&&&&&& for (j=i+1; j& j++)
&&&&&&&&&& if (a[i]& a[j]){&&t=a[i];&&a[i]=a[j];&&a[j]=t;&&}
&&&& main()
&&&&{ int&&aa[10]={1,2,3,4,5,6,7,8,9,10},
&&&&&& sort(aa+2,&&5);
&&&&&& for (i=0; i& 10; i++) printf(&%d,&,aa[i]);
&&&&&& printf(&\n&);
&&&&程序运行后的输出结果是
A)1,2,3,4,5,6,7,8,9,10,&&&&&& B)1,2,7,6,3,4,5,8,9,10,
C)1,2,7,6,5,4,3,8,9,10,&&&&&& D)1,2,9,8,7,6,5,4,3,10,
3、有以下程序
&&&&void&&f(int&&*x,int&&*y)
&&&&{&& int&&t;
&&&&&&&&t=*x;*x=*y;*y=t;
&& {&& int&&a[8]={1,2,3,4,5,6,7,8},i,*p,*q;
&&&&&&&&p=a;q=&a[7];
&&&&&& while(p & q)
&&&&&&&& f(p,q);
&&&&&&&& p++;
&&&&&&&& q--;
&&&&&&for(i=0;i& 8;i++)
&&&&&&&&&&printf(&%d,&,a[i]);
程序运行后的输出结果是
A)8,2,3,4,5,6,7,1,&&&&&&&& B)5,6,7,8,1,2,3,4,
C)1,2,3,4,5,6,7,8,&&&&&&&& D)8,7,6,5,4,3,2,1,
4、有以下程序
&&&&#define&&N&&20
&&&&fun(int&&a[],int&&n,int m)
&&&&{&& int i,j;
&&&&&&&&for(i=m;i&=n;i--)
&&&&&&&&a[i+1]=a[i];
&&&&&& int i,a[N]={1,2,3,4,5,6,7,8,9,10};
&&&&&& fun(a,2,9);
&&&&&& for(i=0;i& 5;i++)
&&&&&& printf(&%d&,a[i]);
&&&&程序运行后的输出结果是
A)10234&&&&&&&& B)12344&&&&&&&& C)12334&&&&&&&&D)12234
5、有以下程序
&&&&prt(int&&*m,int&&n)
&&&&&&&&for(i=0;i&i++)
&&&&&&&& m[i]++;
&&&&main()
&&&&&& int a[]={1,2,3,4,5},i;
&&&&&& prt(a,5);
&&&&&& for(i=0;i&5;i++)
&&&&&& printf(&%d,&,a[i]);
&&&&程序运行后的输出结果是
A)1,2,3,4,5,&&&&&&&&B)2,3,4,5,6,
C)3,4,5,6,7,&&&&&&&&D)2,3,4,5,1,
6、有以下程序
&&&&int f(int a)
&&&&{ return a%2; }
&&&&main()
&&&&{ int s[8]={1,3,5,2,4,6},i,d=0;
&&&&&&for (i=0;f(s[i]);i++) d+=s[i];
&&&&&&printf(&%d\n&,d);
程序运行后的输出结果是
A)9&&&&&&&&&&B)11&&&&&&&&&&C)19&&&&&&&&&& D)21
7、有以下程序
&&&&void sort(int a[],int n)
&&&&{&&int i,j,t;
&&&&&& for(i=0;i& n-1;i+=2)
&&&&&&&&for(j=i+2;j&j+=2)
&&&&&&&&&&if(a[i]& a[j])&&{&&t=a[i];a[i]=a[j];a[j]=t;}
&&&&main()
&&&&{ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
&&&&&&sort(aa,10);
&&&&&&for(i=0;i& 10;i++)&&&&printf(&%d, &,aa[i]);
&&&&&&printf(&\n&);
&&&&其输出结果是
A)1,2,3,4,5,6,7,8,9,10,&&&&&&&& B)10,9,8,7,6,5,4,3,2,1,
C)9,2,7,4,5,6,3,8,1,10,&&&&&&&& D)1,10,3,8,5,6,7,4,9,2,
8、以下程序的输出结果是
&&&&f(int&&b[],int&&m,int&&n)
&&&&{ int&&i,s=0;
&&&&&&for(i=m;i&i=i+2)&&s=s+b[i];
&&&&&&return&&s;
&&&&main()
&&&&{int&&x,a[]={1,2,3,4,5,6,7,8,9};
&&&& x=f(a,3,7);
&&&& printf(&%d\n&,x);&& }
A)10&&&&&&&&&& B)18&&&&&&&&&&&&C)8&&&&&&&&&&&&D)15
9、假定int类型变量占用四个字节,其有定义:int&&x[10]={0,2,4};,则数组x在内存中所
占字节数是
A)12&&&&&&&&&& B)24&&&&&&&&&&&&C)20&&&&&&&&&& D)40
10、当调用函数时,实参是一个数组名,则向函数传送的是
A)数组的长度&&&&&&&&&&&&&&&&&&&&&&&& B)数组的首地址
C)数组每一个元素的地址&&&&&&&&&&&&&& D)数组每个元素中的值
11、执行下面的程序段后,变量k中的值为
&& int&&k=3, s[2];
&& s[0]=k;&&k=s[1]*10;
A)不定值&&&&&&&& B)33&&&&&&&&&&&&&& C)30&&&&&&&&&&&&D)10
12、下列程序执行后的输出结果是
&& void func(int *a,int b[])
&& { b[0]=*a+6; }
&& { int a,b[5];
&&&& a=0;&&&&&& b[0]=3;
&&&& func(&a,b);&&printf(&%d\n&,b[0]);
A)6&&&&&&&&&& B)7&&&&&&&&&&&&C)8&&&&&&&&&& D)9
13、下列程序的输出结果是
&& { int a[5]={2,4,6,8,10},*P,* *k;
&&&& p=a;&&&&&& k=&p;
&&&& printf(&%d&,*(p++));&&&&&& printf(&%d\n&,* *k);&&&& }
A)4&&4&&&&&&&&B)2&&2&&&&&&&& C)2&&4&&&&&&&& D)4&&6
二、填空题
1、以下程序的输出结果是&&&&&&
&&&&main()
&&&&{ int&&arr[]={30,25,20,15,10,5},&&*p=
&&&&&&p++;
&&&&&&printf(&%d\n&,*(p+3));
2、若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式
是&&&&&&&&
&&&&int&& w[10]={23,54,10,33,47,98,72,80,61}, *p=w;
3、若有以下定义和语句,则使指针p指向值为36的数组元素的表达式是&&&&&&&&
&& int a[10]={19,23,44,17,37,28,49,36},*p;
4、下面的findmax函数返回数组s中最大元素的下标,数组中元素的个数由t传入,请填空。
&&&&findmax( int s[], int t)
&& { int k,
&&&& for( p=0, k=p; p& p++)
&&&& if( s[p]&s[k])&&&&&&&&
第九章 数组(三)
一、选择题
1、有以下程序
&&&& void swap1(int&&c0[], int&&c1[])
&&&& { int&&
&&&&&& t=c0[0];&&&&c0[0]=c1[0];&&&&c1[0]=t;
&&&& void swap2(int&&*c0, int&&*c1)
&&&& { int&&t;
&&&&&& t=*c0;&&&&*c0=*c1;&&&&*c1=t;
&&&& main()
&&&& { int&&a[2]={3,5},&&b[2]={3,5};
&&&&&& swap1(a, a+1);&&&&swap2(&b[0], &b[1]);
&&&&&& printf(&%d %d %d %d\n&,a[0],a[1],b[0],b[1]);
&&&&程序运行后的输出结果是
A)3 5 5 3&&&&&&B)5 3 3 5&&&&&&C)3 5 3 5&&&&&&D)5 3 5 3
2、以下叙述中错误的是
A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B)数组名代表的是数组所占存储区的首地址,其值不可改变
C)当程序执行中,数组元素的下标超出所定义的下标范围时,将给出&下标越界&的出错信息
D)可以通过赋初值的方式确定数组元素的个数
3、以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空。
&&&&# #include
&&&&findmax(*s,t,*k)
&& for(p=0,*k=p;p &p++)
&&&&&&&&&&&& if(*k & s[p])
&&&&&&&&&&&&&& _________;}
&&&& main()
&&&&{ int&&a[10] , i ,
&&&&&&for ( i=0 ; i&10 ; i + + )&&scanf(&%d&,&a[i]);
&&&&&&findmax ( a,10,&k );
&&&&&&printf&&( &%d,%d\n& , k , a[k] );&&}
A)k=p&&&&&&B)*k=p-s&&&& C)k=p-s&&&& D)*k=p
4、有以下程序
&&&&void sum(int *a)
&&&&{ a[0]=a[1];}
&&&&main()
&&&&{&&int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
&&&&&& for(i=2;i&=0;i--)
&&&&&& sum(&aa[i]);
&&&&&& printf(&%d\n&,aa[0]);
&&&&执行后的输出结果是
A)4&&&&&&&&&&&&B)3&&&&&&&&&&&&C)2&&&&&&&&&&&& D)1
5、请选出以下程序的输出结果
&&&&#include
&&&&fun(int *s,int n1,int n2)
&&&&{ int i, j,
&&&&&&i=n1; j=n2;
&&&&&&while(i& j)
&&&& { t= *(s+i); *(s+i)= *(s+j); *(s+j)=t;
&&&&&&i++; j--;
&&&&&&}&& }&&
&&&&main()
&& { int a[10]={1,2,3,4,5,6,7,8,9,0},i, *p=a;
&&&&fun(p,0,3); fun(p,4,9); fun(p,0,9);
&&&&for(i=0; i&10; i++) printf(&%d&, *(a+i));
&&&&printf(&\n&);
A)0 9 8 7 6 5 4 3 2 1&&&&&&&& B)4 3 2 1 0 9 8 7 6 5
C)5 6 7 8 9 0 1 2 3 4&&&&&&&& D)0 9 8 7 6 5 1 2 3 4
6、以下程序中函数reverse的功能是将a所指数组中的内容进行逆置。
&&&&void reverse(int&&a[ ],int n)
&&&&{ int&&i,t;
&&&& for(i=0;i& n/2;i++)
&&&&{ t=a[i]; a[i]=a[n-1-i];a[n-1-i]=t;}
&&&&main()
&&&&{ int&&b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0;
&&&&&&reverse(b,8);
&&&&&&for(i=6;i&10;i++) s+=b[i];
&&&&&&printf(&%d\n&,s);
&&&&程序运行后的输出结果是
A)22&&&&&&&& B)10&&&&&&&& C)34&&&&&&&&&&D)30
7、下列程序的输出结果是
{&&char&&a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;
&&&&printf(&%d&,*--p);
A)非法&&&&&& B)a[4]的地址&&&&&&&&C)5&&&&&&&&&&D)3
8、请读程序:
&&&&#include
&&&&f(in b[], int n)
&& { int i,
&&&& for(i=0; i&=n; i++) r=r*b[i];
&& { int x, a[]={ 2,3,4,5,6,7,8,9};
&&&& x=f(a, 3);
&&&& printf(&%d\n&,x);
上面程序的输出结果是
A)720&&&&&&&& B)120&&&&&&&&&&C)24&&&&&&&&&& D)6
9、以下函数返回a所指数组中最小的值所在的下标值
&&&&fun(int&& *a,&&int&&n)
&&&&{ int&& i,j=0,p;
&&&&&&p=j;
&&&&&&for(i=j;i&i++)
&&&&&&if(a[i]& a[p])__________;
&&&&&&return(p);
&&&&在下划线处应填入的是
A)i=p&&&&&&&& B)a[p]=a[i]&&&&&& C)p=j&&&&&&&& D)p=i
10、若有以下调用语句,则不正确的fun函数的首部是
&&&& int a[50],n;&&&&&&&&&&&&&&&&&
&&&& fun(n, &a[9]);
A)void fun(int m, int x[])&&&&&&B)void fun(int s, int h[41])
C)void fun(int p, int *s)&&&&&& D)void fun(int n, int a)
11、以下程序的运行结果是
&&&&#include&& &stdio.h&
&&&&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);
A)运行后报错&& B)6&&6&&&& C)6&&12&&&&&& D)5&&5
12、 下面程序把数组元素中的最大值放入a[0]中。则在if 语句中的条件表达式应该是
&& { int&&a[10]={6,7,2,9,1,10,5,8,4,3},*p=a,i;
&&&& for(i=0;i&10;i++,p++)
&&&& if(________) *a=*p;
&&&& printf(&%d&,*a);
A)p&a&&&& B)*p&a[0]&&&&C)*p&*a[0]&&&& D)*p[0]& *a[0]
13、下面程序输出数组中的最大值,由s指针指向该元素.
&&&&main()
&&&&{ int a[10]={6,7,2,9,1,10,5,8,4,3,},*p,*s;
&&&&&&for(p=a,s=a; p-a&10; p++)
&&&&&&if(&&&&&&&&)s=p;
&&&&&&printf(&The max:%d&,*s):
则在if语句中的判断表达式应该是
A)p&s&&&&&&&&&&&&B)*p&*s&&&&&&&& C)a[p]&a[s]&&&&&& D)p-a&p-s
14、要求函数的功能是在一维数组中查找值;若找到则返回所在的下标值,否则返回0;数列
放在到中。不能正确执行的函数是
A) funa(int *a,int n,int x )&&&&&&&&&&B)funb(int *a,int n,int x)
&&&&{ *a=x;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& {
&&&&&&while(a[n]!=x)n--;&&&&&&&&&&&&&&&&&&&&for(k=1;k&=n;k++)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& if(a[k]==x)
&&&& }&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&return 0; }
C) func(int a[],int n,int x )&&&&&&&&&&D)fund(int a[],int n,int x )
&&&&{ int *k;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&{ int k=0;
&&&& a[0]=x;k=a+n;&&&&&&&&&&&&&&&&&&&&&&&&&& do
&&&& while(*k!=x) k--;&&&&&&&&&&&&&&&&&&&&&& k++;
&&&& return k-n;&&&&&&&&&&&&&&&&&&&&&&&&&&&& while((k& n+1)&&(a[k]!=x));
&&&& }&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&if(a[k]==x)
else return 0; }
二、填空题:
1、以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。请填空。
&&&&main()
&& { int i,a[20],sum,
&&&& sum=count=0;
&&&& for(i=0;i&20;i++)&&scanf(&%d&, );&&
&&&& for (i=0;i&20;i++)
&&&&{ if(a[i]&0)
&&&&&&{ count++;
&&&&&&&&sum+= ;&&
&& printf(&sum=%d,count=%d\n&,sum,count);}
2、若已定义:int&& a[10],,以下fun函数的功能是:在第一个循环中给前10个数组元素
依次赋1、2、3、4、5、6、7、8、9、10;在第二个循环中使a数组前10个元素中的值对称折叠,
变成1、2、3、4、5、5、4、3、2、1。请填空。
&&&&fun(int a[])
&& { int&&
&&&& for(i=1; i&=10; i++)&&&&=i;&&&&&&
&&&& for(i=0; i&5; i++)&& =a[i];&&&&&&
3、以下fun函数的功能是:累加数组元数中的值.n为数组中元素的个数, 累加的和值放入x所指
的存储单元中,请填空.
&&&&fun(int b[ ],int n, int&&*x)
&& { int&& k, r=0;
&&&& for(k=0;k&k++) r=
&&&&&&=r;&&&&&&&&
4、下面fun函数的功能是将形参x的值转换成二进制数,所得二进制数的每一位数放在一维数组
中返回,二进制数的最低位放在下标为0的元素中,其它依此类推。请填空。
&&&&fun(int x,int b[])
&& { int k=0,r;
&&&&{ r=x%&&;&&
&&&&b[k++]=r;
&&&&x/=&&; } while(x); }&&
5、下面程序通过函数average计算数组中各元素的平均值,请填空.
&&&&float average(int * pa,int n)
&&&& float avg=0.0;
&&&& for(i=0;i &i++) avg=avg+;
&&&& avg= ;&&
&&&&main()
&&{ int i,a[5]={2,4,6,8,10};
&&&&mean=average(a,5); printf(&mean=%f\n&,mean);}
6、下面程序的输出是&&&&&&
&&&&main()
&&{ int a[]={ 2,4,6}, *prt=&a[0], x=8,y,z;
&&&&for(y=0; y&3; y++)
&&&&z=(*(prt+y)& x)? *(prt+y):x;&&
&&&&printf(&%d\n&, z);}
第九章数组(二)
一.选择题 1&&5 BCDCB&&&& 6&&10 ACADB&&&&11&&13 AAC&& 二.填空 【1】 10&& 【2】 p[5] 【3】 p=p+7 【4】&&k=p;
第九章数组(三)
一.选择题 1&&5 DCDAC&&&&&&6&&10&&ACBDD&&&& 11&&14&&ABBC 二.填空 【1】、&&&a[i]&&a[i] 【2】、a[i-1]&& a[9-i] 【3】、r+b[k]或b[k]或*(b+k)+r&& *x 【4】、2&& 2&& 【5】、*(pa+i)或pa[i]&& avg/n 或avg/(float)n 或 avg/(double)n&& 【6】、6&&
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'帮忙看看那赋值怎么成功不了?#include &stdio.h& void main() { int i,j,k; int a[]={2,3,5,8,10},b[]={_百度知道
帮忙看看那赋值怎么成功不了?#include &stdio.h& void main() { int i,j,k; int a[]={2,3,5,8,10},b[]={
;void main(){
if(a[i]==b[j])
{for(i=0,b[]={5;6,j,14},13;j&;&#47,k;%d\
printf(&n&quot,3;
inta[]={2,5,7,8,10}.h&%d&#92?#include &lt,c[5]={0},k=0;
c[k++]=b[j];
for(j=0; printf(&i&lt,b[j]);5;n&stdio,9,8帮忙看看那赋值怎么成功不了,c[k])
提问者采纳
n&因为有k++,输出出了点小问题把printf(&quot,会是0(因为你把c数组的所有元素都赋了初值0);%d\;;%d&#92,c[k]);改成printf(&n&quot,c[k-1]),所以这时c[k]是当前这次循环被赋值的那个元素的下一个元素已经赋值成功
#include &stdio.h&void main(){ int i,j,k; int a[4]={1,2,5,7},b[5]={2,4,6,7,9},c[4]={0}; for(i=0;i&4;i++) {
for(j=0,k=0;j&5;j++)
if(a[i]==b[j])
//printf(&%d&,a[i]);
c[k]=a[i];
} for(i=0;i&k;i++) {
printf(&%d\t&,c[k-1]); }}
这个怎么 只输出一个数呢?谢了。
#include &stdio.h&void main(){ int i,j,k=0;//k在这里置为0就可以了 int a[4]={1,2,5,7},b[5]={2,4,6,7,9},c[4]={0}; for(i=0;i&4;i++) {
for(j=0;j&5;j++)//如果你把k在这里置为0的话,那么每次刚进入这个循环时c[k]都是c[0],最终导致只有一个数被存到c数组中
if(a[i]==b[j])
//printf(&%d&,a[i]);
c[k]=a[i];
} for(i=0;i&k;i++) {
printf(&%d\t&,c[i]);//如果你用c[k-1]的话,每次输出的都是同一个数,因为k在这个循环中根本就没变过。直接用c[i]就能达到你的要求。 }}
提问者评价
太感谢您了,真心有用。(在此对一二楼你们的耐心解答)
其他类似问题
你总是在指印赋值的后一位,c[k]):1;%d&#92.把printf(&quot.}少了两个;%d&#92,自己查;2;n&改成printf(&;n&,c[k-1]);有两个问题
为您推荐:
其他1条回答
一维数组定义需要给定个数吧
应该是a[5]={....
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁int main() vs void main() in C - Stack Overflow
to customize your list.
Stack Overflow is a community of 4.7 million programmers, just like you, helping each other.
J it only takes a minute:
Join the Stack Overflow community to:
Ask programming questions
Answer and help your peers
Get recognized for your expertise
This question already has an answer here:
19 answers
In C, I know that int main() returns an int where void main() does not. Other than that, is there a difference between them? is first better than second?
marked as duplicate by , , , ,
This question has been asked before and already has an answer. If those answers do not fully address your question, please .
The overwhelming majority of the time, one of int main(void) or int main(int argc, char* argv[]) is what you need to use. In particular, if you're writing a program that's going to be compiled by any major compiler for running on a personal computer, with the full set of the C standard libraries, then you almost certainly need to be returning an int from main.
(I would also avoid using an empty argument list, see "")
The C99 standard does allow for other implementation-defined signatures, and you can use these if you've read the manual for your compiler and it says you can.
(5.1.2.2.1) It shall be defined with a return type of int and with no parameters ... or with two parameters ... or in some other implementation-defined manner
For example, the HITECH PICC32 compiler for Microchip's PIC32MX series of microcontrollers requires a void main(void) signature — because really, what's going to ever see the return value? On the other hand, Microchip's official compiler for the same processor (based on GCC) goes with the usual int main(void).
Personally I would avoid them even if they are allowed.
See the comments below "" for some interesting discussion on this.
14.6k33892
If your book says void main() it is either very very out of date, was written by an idiot (or both)
edit: OK unless you are in a very unlikely system where you have a freestanding main - see
68.5k14136217
void main() is not valid C. int main() is. That's the main difference.
122k14172407
Not the answer you're looking for?
Browse other questions tagged
Stack Overflow works best with JavaScript enabledC语言程序设计试题及答案(十)
C语言程序设计试题及答案(十)
一、选择题:
1.以下不是C语言的特点的是(&&& )
A.C语言简洁、紧凑&&&&&&&&&&&&&&&&& B.能够编制出功能复杂的程序
C. C语言可以直接对硬件进行操作&&&& D.C语言移植性好
2. 以下不正确的C语言标识符是(&&& )。
A.ABC&& &&&&&&&B.abc&& &&&&&&C.a_bc&&&&&&&&&D.ab.c
3.一个c程序的执行是从(&& ).
A.main(&&& )函数开始,直到main(&&& )函数结束
B.第一个函数开始,直到最后一个函数结束
C.第一个语句开始,直到最后一个语句结束
D.main(&&& )函数开始,直到最后一个函数结束
4.以下不正确的语句(设有int p,q)是(&&& )。
A.P*=3;&B.p/=q;&& C.p十=3;&D.p&&=q
5.下列四组选项中,均不是C语言关键字的选项是(&&& ).
A.define&&& B.getc&&&&& C.include&&& D.while&&&&
if&&&&&&&&&& char&&&&&&&& sanf&&&&&&&& go
type&&&&&&&&&& printf&&&&&& case&&&&&&&& pow
6.下面四个选项中,均是合法整形常量的选项是(&& ).
&A.160&&&&&&&&&&&&& B.-0xcdf&&&&&&& C.-01&&&&&&& D.-0x48a
&& -0xffff &&&&&&&& &&&01a&&&&&&&&&& 986,012 &&&& 2e5
&& &&&&011&&&&&&& &&& &&&0xe&&&&&&&& &&&& 0668&&&&&&&& 0x
7. 下面四个选项中,均是不合法浮点数的选项是(&& ).
&A.160.&&&&&&&&&&& B.123&&&&&&&&&& &C.-.18&&&&&&& D.-e3
0.12&&&&&&&&&& &&& 2e4.2&&&&&&&&&& &&& 123e4&&& && 0.234
&&& &&&e3&&&&&&&&& &&&&&&& .e5&&&&&&&&&&&& && 0.0&&&&&&&& && 1e3
8. 若有代数式3ae/bc,则不正确的C语言表达式是(&)
&& A.a/b/c*e*3&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& B.3*a*e/b/c
&&&&& &&C.3*a*e/b*c&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& D.a*e/c/b*3
9. 若以下变量均是整形,且num=sum=7;则计算表达式sUM=num++,sUM++,++num后sum的值为(&).
A.7&&&&&&&&& B.8&&&&&&&& C.9&&&&&&&&&&&&&&& D.10
10.若有定义:int a=7; float x=205 ,y=4.7; 则表达式x+a%3*(int)(x+y)%2/4的值是(&)。
&&&&& A.2.500000&&&&&&&&& B.2.750000&&&&&&&&& C.3.500000&&&&&&&&& D.0.000000
11. sizeof(float)是(&)。
A.一个双精度型表达式&&&&&&&&&&&&&& B. 一个整型表达式
&&&&& &C.一种函数调用&&&&&&&&&&&&&&&&&&&&&&& D. 一个不合法的表达式
12. 设int n=3;则n十十的结果是(&&& )。
&&& &A.2&& &&&&&&B.3&&&&&&C.4&&& &&&D.5
13. 设有说明: 则表达式w*x+z-y值的数据类型为(&& )。
&&&&& A.float&&&&&&&&&&&&&& B.char&&&&&&&&&&&&&& C.int &&&&&&&&&&&&&&& D.double.
14. 若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是(&).
A. scanf(&%d%d1x,%1e&,&x,&y,&z);
B. scanf(&%2d*%d%1f&,&x,&y,&z);
C. scanf(&%x%*d%o&,&x,&Y);
D. scanf(&%x%o%6.2f&, &x,&y,&z);
15. 以下说法正确的是(&).
A. 输入项可以为一个实型常量,如scanf(&%f&,3.5);
B. 只有格式控制,没有输入项,也能进行正确输入,如scanf(&a=%d,b=%d&);
C. 当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(&%4.2f&,&f);
D. 当输入数据时,必须指明变量的地址,如scanf(&%f&,&f);
16. 以下程序的执行结果是(&& )。
#include&stdio.h&
sum=pad=5;
pad=sum++;
printf(&%d\n&,pad);
A.7 &&&&&&&&B.6 &&&&&&&&&&&&&&C.5 &&&&&&&&&&&&&&&&&&&D.4
17. 巳知字母A的ASCII码是65,以下程序的执行结果是(&)。
#include&stdio.h&
&char c1='A',C2='Y';
&printf(&%d,%d\n&,c1,c2);
A.A,Y &&&&&&&&B.65,65 &&&&&&&&&C.65,90 &&&&&&&&&&&&&D.65,89
18. 为了避免嵌套的if-else语句的二义性,c语言规定else总是与(&& )组成配对关系。
A.缩排位置相同的if
B.在其之前末配对的if
C.在其之前未配对的最近的if
D.同一行上的if
19. 逻辑运算符两侧运算对象的数据类型(&).
&A.能是0或1
&B.只能是0或非0正数
&C.只能是整型或字符型数据
&&&&& D.可以是任何类型的数据
20. 设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是(&& ).
A.&x&&&&y&
C. x||y+z&&y-z
D.!((x<y)&&!z ||1)
21. 若希望当A的值为奇数时,表达式的值为&真&,A的值为偶数时,表达式的值为&假&。则以下不能满足要求的表达式是(&).
A.A%2==1&&& B.!(A%2==0)&&& C.!(A%2)&&& D.A%2
22. 以下不正确的if语句形式是(&).
A.if(x>y&&x!=y);
B.if(x==y)x十=y;
C.if(x ! =y)scanf(&%d&,&x) e1se scanf(&%d,&y);
D.if(x<y){x十十;y十十;}
23. 以下if语句语法正确的是(&).
A.if(x>0)
&&& printf(&%f&,x)
&&& else printf(&%f&,-x);
B.if(x>0)
{x=x+y;printf(&%f&,x);}
else printf(&%f&,-x)
C.if(x>0)
{x=x+y;printf(&%f&,x);}
else printf(&%f&,-x)
D.if(x>0)
{x=x+y;printf(&%f&,x);}
else printf(&%f&,-x)
else printf(&%f&,-x);
24. 阅读以下程序
{int a=5,b=0,c=0;
if(a=b+c) printf(&***\n&);
else&&&& printf(&$$$\n&);
以上程序 (&& ).
A.语法有错不能通过编译&&&&&&&&&&&&&&&&&&&&& &B.可以通过编译但不能通过连接
C.输出***&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&D.输出$$$
25. 以下程序运行结果是(&).
{int a=100,x=10,y=20,ok1=5,ok2=0;
&&& if (y!=10)
&&&& If(!ok1)
&&&&&&&&& a=1;
&&&&&& else
&&&&&&&&& if(ok2)&& a=10;
printf(&%d\n&,a);
A.1 &&&&&&&&&&B.0 &&&&&&&&&&&&&c.-1 &&&&&&&&&&&&&&&&&&D.不确定
26. 执行以下程序段后,变量a,b,c得值分别是(&).
int x=10,y=9;
int a,b,c;
a=(--x==y++)? &x: ++y;
A.a=9,b=9,c=9&&&&&&&&&&&&&&&&& B.a=8,b=8,c=10
C.a=9,b=10,c=9&&&&&&&&&&&&&&&& D.a=1,b=11,c=10
27. 若w,x,y,z,m均为int型变量,则执行下面语句后的m值是(&).
w=1;&& x=2;&& y=3;&& z=4;
m=(w&x)? w:x;
m=(m&y)? m:y;
m=(m&z)? m:z;
A.1&&&&&&&&&&& B.2&&&&&&&&&&&&&& C.3&&&&&&&&&&&&&&&& D.4
28. 语句while(!e);中的条件!e等价于(&&& )。
&&& &A.e==0&&& &&&B.e!=1&&&&&&&&&&C.e!=0&&&&& &&&&&&&D.~e
29. 下面有关for循环的正确描述是(&& )
A.for循环只能用于循环次数已经确定的情况
B.for循环是先执行循环体语句,后判定表达式
C.在for循环中,不能用break语句跳出循环体
D.for循环体语句中,可以包含多条语句,但要用花括号括起来
30. C语言中while和do-while循环的主要区别是(&).
A.do-while的循环体至少无条件执行一次
B.while的循环控制条件比的循环控制条件严格
C.do-while允许从外部转到循环体内
D.do-while的循环体不能是复合语句
31.以下程序段(&).
x=-&&1;&do{x=x*x;}&while(! x);
A.是死循环&&&&&&&&&&&&&&&& B.循环执行二次
C. 循环执行二次&&&&&& &&&&D.有语法错误
32. 下面程序的运行结果是(&).
#include &stdio.h&
{int y=10;
do{y--;}while(--y);
printf(&%d\n&,y--);}
A.-1&&&&&&& B.1&&&&&&&&&&& C.8&&&&&&&&&&&& &&&D.0
33. 以下正确的描述是(&).
A.continue语句的作用是结束整个循环的执行
B.只能在循环体内和switch语句体内使用break语句
C.在循环体内使用break语句或continue语句的作用相同
D.从多层循环嵌套中退出时,只能使用goto语句
34. c语言中(&&& )。
A.不能使用do-while语句构成的循环
B.do-while语句构成的循环必须用break语句才能退出
C.do&whiLe语句构成的循环,当while语句中的表达式值为非零时结束循环
D.do&while语句构成的循环,当while语句中的表达式值为零时结束循环
35. 在C语言中,引用数组元素时,其数组下标的数据类型允许是( )
&&&& A. 整型常量&& B.整型表达式C.整型常量或整型表达式D.任何类型的表达式
36. 在C语言中,一位数组的定义方式为:类型说明符 数组名(&)。
A. [常量表达]&B. 整型表达式C. [整型常量]或[整型表达式] D. [整型常量]
37. 以下不能对二维整形数组a进行正确初始化的语句是(&)。
A.int a[2][3]={0};
B. int a[][3]={{1,2},{0}};
C. int a[2][3]={{1,2},{3,4},{5,6}};
D. int a[][3]={1,2,3,4,5,6};
38. 若有说明:int&a[][4]={0,0};则下面正确的叙述是()。
A. 数组a中每个元素均可得到初值0
&B. 二维数组a的第一维大小为1
C. 因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1
D.只有元素a0][0]和a[0][1]可得到初值0,其余元素均得不到初值0
39. 若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是( )。
A.2&&&&&&&&&& B.3 &&&&&&&&&C.4&&&&&&&&& D.无确定值
40. 下面程序的运行结果是( )。
char c[5]={&a&,&b&,&\0&,&c&c,&\0&};
printf(&%s&,c);}
41. 有两个字符数组a、b,则以下正确的输入语句是(&)。
gets(a,b);
scanf(&%s%s&,a,b);
scanf(&%s%s&,&a,&b);
gets(&a&),gets(&b&);
A. s[j+=]=s[i]&&&&& &&&&B. s[++j]=s[i]
C. s[j]=s[i]; j++&&&& &&D.s[j]=s[i]
42. 若使用一维数组名作函数实参,则以下正确的说法是(&).
A.必须在主调函数中说明此数组的大小
B.实参数组类型与形参数组类型可以不匹配
C.在被调函数中,不需要考虑形参数组的大小
D.实参数组名与形参数组名必须一致
43. 以下正确的说法是(&).
A.如果在一个函数中的复合语句中定义了一个变量,则该变量只在该复合语句中有效
B.在该函数中有效
C.在本程序范围内均有效
D.非法变量
44. 凡是函数中未指定存储类别的局部变量,其隐含的存储类别为(&).
A.自动(auto) B.静态(static)C.外部(extern) D.&寄存器(register)
45. 以下程序的运行结果是(&)。
#define MIN(x,y)&& (x)&(y)?(x):(y)
{int i=10,j+15,k;
k+10*MIN(i,j);
printf(&%d\n&,k);
A.10&& &&&&&&&&B.15&&&&&&&&&&&&C.100&&&&&&&&&&&&&&D.150
46. C语言的编译系统对宏命令的处理是(&)。
A.在程序运行时进行的
B.在程序连接时进行的
C.和C程序中的其它语句同时进行编译的
D.在对源程序中的其它语句同时进行编译的
47. 请读程序
#include&stdio.h&
#defineMUL(x,y)(x)*y
{int a=3,b=4,c;
c=MUL(a++,b++);
printf(&%d\n&,c);&& &&&&
上面程序的输出结果是(&)。
A.12 &&&&&&B.15&&&&&&C.20&&&&&&&D.16
48. 以下程序的输出结果为(&)。
#definePT&&& 5.5
#defineS(x)&& PT*x*x
{inta=1,b=2;
printf(&%4.1\n&,S(a+b));
A.12.0 &&&&&&&B.9.5 &&&&&&C.12.5 &&&&D.33.5
49. 在&文件包含&预处理语句的使用形式中,当#include后面的文件名用&&括起时,寻找被包含文件的方式是( )。
A.仅仅搜索当前目录
B.仅仅搜索源程序所在目录
C.直接按系统设定的标准方式搜索目录
D.先在源程序所在目录搜索,再按系统设定的标准方式搜索
50. 以下正确的描述是( )。
A.C语言的预处理功能是指定完成宏替换和包含文件的调用
B.预处理指令只能位于C源程序文件的首部
C.凡是C源程序中行首以&#&标识的控制行都是预处理指令
D.C语言的编译预处理就是对源程序进行初步的语法检查
51. 设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是(&)。
&A.c=*p1+p2;&& &&B.p2=c&&& &&C.p1=p2&& &&&&D.c=*p1*(*p2);
52. 设有下面的程序段:
&&&&&&&&& chat s[]=&china&; char *p; p=s;
&&&&&&&&& 则下列叙述正确的是(&)。
A.s和p完全相同
B.数组s中的内容和指针变量p中的内容相等
C.s数组长度和p所指向的字符串长度相等
D.*p与s[0]相等
53. 下面程序的运行结果是(&)。
&&&&&&&& #include&stdio.h&
&&&&&&&& #include&string.h&
&&&&&&&& main()
&&&&&&&& {
char *p1,*p2,str[50]=&abc&;
p1=&abc&;&p2=&abc&;
strcpy(str+1,strcat(p1,p2));
printf(&%s\n&,str);
A. abcabcabc&& B.bcabcabc&C. aabcabc&& D.cabcabc
54. 若有定义:int a[2][3];则对数组a的第i行第j列(假设i,j已正确说明并赋值)元数值的正确引用为( )。
&&&&&&& A.*(*(i+j)+j)&B.(a+i)[j]&& C.*(a+i+j)&&&& D.*(a+i)+j
55. 若有定义:int&(*p)[4];则标识符p(&)。
A.是一个指向整型变量的指针
B.是 一个指针数组名
C.是一个指针,它指向一个含有四个整型元素的一维数组
D.定义不合法
56. 若有以下定义和赋值语句,则对b数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的非法引用为(&)。
int b[2][3]={0},(*p)[3];
A.*(*(p+i)+j)&&&&&& &&&B.*(p[i]+j)
C.(p+i)+j&&&&&&&&&&&&&& D.(*(p+i))[j]
57. 当说明一个结构体变量时系统分配给它的内存是(&).
A.各成员所需内存量的总和
B.结构中第一个成员所需内存量
C.成员中占内存量最大者所需的容量
D.结构中最后一个成员所需内存量
58. C语言结构体类型变量在程序执行期间(&).
A.所有成员一直驻留在内存中
B.只有一个成员驻留在内存中
C.部分成员驻留在内存中
D.没有成员驻留在内存中
59. 以下对C语言中共用体类型数据的叙述正确的是(&& )。
&&&&&& A.可以对共用体变量名直接赋值
&&&&&& B.一个共用体变量中可以同时存放其所有成员
&&&&&& C.一个共用体变量中不可能同时存放其所有成员
&&&&&& D.共用体类型定义中不能出现结构体类型的成员
60. C语言共用体型变量在程序运行期间&(&)&& 。
&&&&&&&&& A.所有成员一直驻留在内存中
&&&&&&&&& B.只有一个成员驻留在内存中
&&&&&&&&& C.部分成员驻留在内存中
&&&&&&& &&D.没有成员驻留在内存中
61. 请读程序片段:
printf(&%d\n&, ~x);
上面程序片段的输出结果是(&& ).
62. 在位运算中,操作数每左移一位,其结果相当于(&& ).
A.操作数乘以2
B.操作数除以2
C.操作数除以4
D.操作数乘以4
63. 系统的标准输入文件是指(&)。
A. 键盘&&&&&&& B .显示器&&&&&&& C .软盘&&&&&&& D. 硬盘
64. 当顺利执行了文件关闭操作时,fclose函数的返回值是(&)。
&A .-1&&&&&& B. TURE&&&&&&& C. 0&&&&&& D.1
65. 已知函数的调用形式:fread(buffer,size,count,fp);其中buffer代表的是&&&&&&&&& (&)。
&&&&& A .一个整形变量,代表要读入的数据项总数
&&&&& B .一个文件指针,指向要读的文件
&&&&& C .一个指针,指向要读入数据的存放地址
&&&&& D.一个存储区,存放要读的数据项
二、填空题:
1. C程序的基本单位是&&&& &&&&&。
2. 表达式10%3的结果是&&&&&&&&&& 。
3. 假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为 &&&&&&&&。
4. 在C语言中(以16位PC机为例),一个float型数据在内存中所占用的字节数为&&&&& ;
5.C语言所提供的基本数据类型包括:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 。
6.表达式pow(2.8,sqrt(double(x))) 值的数据类型为&&&&&&&&&&&&&&&&& 。
7.以下程序的执行结果是&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 。
#include&stdio.h&
float f=3.5;
printf(&%f,%g&,f,f)
8. 以下程序的执行结果是&&&&&&&&&&&&&&&&& 。
#include&stdio.h&
float f=31.41592;
printf(&%f,%e&,f,f)
9. 以下程序的执行结果是&&&&&&&&&&&&&&&&&&&&&&&&& 。
#include&stdio.h&
int a,b,c;
a=2;b=3;c=1;
printf(&%d\n&,a);
&printf(&%d\n&,b);
printf(&end\n&);
10. 在C语言中,表示逻辑&真&值用&&&&&&&&&&&&&&&& .
11. 有int x,y,z; 且x=3,y=-4,z=5,则表达式(x&&y)= =(xz)的值为&&&&&&&&&&&&& 。
12. 下面程序从键盘输入的字符中统计数字字符的个数,用换行符结束循环。请填空。
int n=0,c;
c=getchar();
while(&&&&&&&&&&&&& )
&{if(c&=&0&&&c&=&9&) n++;
&c=getchar();
13. 执行下面程序段后,k值是&&&&&&&&&&&&&&&&&&&&&& .
k=1;n=263;
do{k*=n%10; n/=10 }&while(n);
14. 下面程序段中循环体的执行次数是&&&&&&&&&&&&&&&&&& .
do{b+=2;a-+2+b; }while (a&=0);
15. 若for循环用以下形式表示:
&&&&&&&&&&&&& for(表达式1;表达式2;表达式3)&& 循环体语句
&&&&&&&& 则执行语句for(i=0;i&3;i++)&printf(&*&);时,表达式3执行&&&&&&&&& 次。
16. 以下程序的输出结果是__________。
{int s[10]={1,2,3,4,5,6,7,8,9,10},*p=s;
printf(&%d\n&,*(p+4));
17. 若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为:&&&&&&&&&&& 。(假设a[0][0]位于数组的第一个位置上。)
18. 在C语言中,二维数组元素的内存中的存放顺序是&&&&&&&&&&&&&& 。
19. 在C 语言中,一个函数一般由两个部分组成,它们是&&&&&&&&&&&&&&&&&&&&&&&&&& 。
20. 以下程序的运行结果是&&&&&&&&&&&&&&&&&& 。
&&&&&&&&& #include&stdio.h&
&&&&&&&&& f(int a[])
&&&&&&&&& {int i=0;
&&&&&&&&&& while (a[i]&=10)
{printf(&%d&,a[i]);
{int a[]={1,5,10,9,11,7};
21. 设有以下宏定义:#define WIDTH 80
&&&&&&&&&&&&&&&&&&& #define LENGTH (WIDTH+40)
则执行赋值语句:k=LENGTH*20;(k为int 型变量)后,k的值是&&&&&&&&&&&&&&& 。
22. 下面的运行结果是&&&&&&&&&&&&& &&&。
      #define MUL(z)&& (z)*(z)
&&&&&&&&&&& main()
&&&&&&&&&&& {
&&&&&&&&&&&&&&&& printf(&%d\n&,MUL(1+2)+3);
&&&&&&&&&&& }
23. 下面程序的运行结果是&&&&&&&&&&&&&&& 。
&&& #define EXCH(a,b)&{int t;t=a;a=b; b=t;}
&&& main()
&&& {int x=5,Y=9;
EXCH(x,y);
printf(&x=%d,y=%d\n&,x,y);
24. 下面程序段的运行结果是&&&&&&&&&&&& 。
char s[80], *sp=&HELLO!&;
sp=strcpy(s,sp);
25. 下面程序段的运行结果是&&&&&&&&&&&& 。
&&&&&&&&&&& char s1=&AbcdEf&,s2=&aB&;
&&&&&&&&&&& s1++;
t=(strcmp(s1,s2)&0);
print(&%d\n&,t)
26. 下面程序段的运行结果是&&&&&&& &&&&。
&&&&&&&&& char *p=&PDP1-0&;
&&&&&&&&& int I,d;
&&&&&&&&& for(I=0;I&7;I++)
{d=isdigit(*(p+ii));
if(d!=0)&printf(&%c *(p+I));
27. 当运行以下程序时,从键盘输入 book&CR&
(&CR&表示回车, 表示空格),则下面程序段运行的结果是&&&&&&&&&&&&&& 。
char a1[80],a2[80],*s1=a1,*s2=a2;
gets(s1);gets(s2);
if(!strcmp(s1,s2)) printf(&*&):
else printf(&#&);
printf(&%d&,strlen(strcat(s1,s2)));
28. 若已定义:
struct&num
} n={1,3,5.0};
struct num * pn = &n;
则表达式 (*pn).a+pn-&f的值是&&&&&&&&&& 。
29. 在C语言中,&运算符作为双目运算符时表示的是&&&&&&& &运算.
30. 在C语言中,文件的存取是以字符为单位的,这种文件被称作&&&&&&&&&& 文件。
三、编程题:
1.将一个字符串的内容颠倒过来。
2. 求整形数组的最大值。
3. 求字符串的长度(不用strlen)。
4. 编写程序,将字符串str中的所有字符&k&删除。
5.找出二维数组的鞍点,即该位置上的元素是该行上的最大值,是该列上的最小值。二维数组也可能没有鞍点。
6.a是一个2*4的整型数组,且各元素均已赋值.函数max_value可求出其中的最大元素值max,并将此值返回主调函数.今有函数调用语句max=max_value(a);请编写max_value函数.
7. 设计函数,实现字符串连接操作(不使用strcat)。
8. 以下程序的功能是应用下面的近似公式计算e的n次方.函数f1用来计算每项分子的值,函数f2用来计算每项分母的值.请编写f1和f2函数.
ex=1=x=x2\2!+x3\3!&(前20项的和)
9. 从键盘上输入若干个学生的成绩,计算出平均成绩,并输出不及格的成绩和人数。
10.设计函数,在二维数组中产生如下形式的扬辉三角形。
&&&& 1&&& 1
&&&& 1&&& 2&&& 1
&&&& 1&&& 3&&& 3&&& 1
&&&& 1&&& 4&&& 6&&& 4&&& 1
&&&& &&&&&&
11. 回文是从前向后和从后向前读起来都一样的句子。写一个函数,判断一个字符串是否为回文,注意处理字符串中有中文也有西文的情况。
12.约瑟夫环问题:编号为1,2,3,&&&,n的n个人按顺时针方向围坐一圈,每人持有一个正整数密码。一开始任选一个正整数m作为报数上限值,从第一个人开始按顺时针报数,报到m时停止,报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。设计程序求出出列顺序。
一、选择题
1. B 2.D 3.A 4.D 5.A 6.A 7.B 8.C 9.A 10.A 11.B 12.B 13.D 14.D 15.D 16.A 17.D 18.C 19.D 20.D 21.C 22.C 23.B 24.D 25.C 26.B 27.A 28.A 29.D 30.A 31.C 32.B 33.B 34.D 35.C 36.D 37.C 38.D 39.B 40.B 41.B 42.A 43.A 44.A 45.B 46.D 47.A 48.B 49.C 50.C 51.B 52.D 53.C 54.A 55.C 56.C 57.A 58.A 59.C 60.B 61.C 62.A 63.A 64.C 65.C
二、填空题
1.函数 &2. 1 3. 9 &4. 4 &5.单精度型、双精度型、整型、字符型和枚举型 6.双精度型(或:doubLe型) 7.3..5 &8.&31..14159e+01 9.end 10.非0的数字 11.1 12.c!='\n' 13.36&14.3 15.3&16.5&& 17.i*m+j+i 18.按行主顺序存放 19.函数说明部分和函数体&20.5&10&9&21.2400&22.12&23.x=8,y=5 24.hELLO!
25.1 26.1*0* 27.#9 28.6.0&29.按位与 30.流式
三、编程题
1. 解:注意交换位置的控制方法,参考程序如下:
#include &stdio.h&
#include &string.h&
void change(char&str[])
{ int len,i,j;
&len=strlen(str);
&for (i=0,j=len-1;i&len/2;i++,j--)
&& { c=str[i];
&&&& str[i]=str[j];
&&&& str[j]=c;
{ char str[80];
&printf(&Enter string:&);
&gets(str);
&change(str);
&printf(&\n result is: %s\n&,str);
2.解:参考程序如下:
#include &stdio.h&
int max(int a[],int n)
&for (i=1;i&n;i++)
&&& if (a[i]&mx) mx=a[i];
{ int a[8]={23,4,6,12,33,55,2,45};
&printf(&max is %d\n&,max(a,8));
3.解:参考程序如下:
#include &stdio.h&
int strlen(char str[])
&for (i=0;str[i]!='\0';i++);
{ char str[80];
&printf(&Enter string:&);
&gets(str);
&printf(&\n string length is: %d \n&,strlen(str));
4. 解:将从字符串中删除所有字符&k& 的功能定义为函数。参考程序如下:
#include &stdio.h&
void delchar(char str[],char c)
{ int i,j;
&for (i=0,j=0;str[i]!='\0';i++)
&&&& if (str[i]!=c)
&&&& str[j++]=str[i];
&str[j]='\0';
{ char str[80];
&gets(str);
&delchar(str,'k');
&puts(str);
5.解:依鞍点定义,对数组每行元素循环,找到当前行上最大元素,记下所在的列号,再判断此元素是否为对应列的最小元素。将寻找打印数组鞍点的操作定义为函数,如果没有鞍点,函数返回-1。参考程序如下:
#include &stdio.h&
#define N 10
#define M 10
int andian(int a[][M],int n,int m)
{ int i,j,k,max,
&int flag1,flag2=0; /*flag1标记每一行的最大值是否鞍点,flag2标记矩阵是否有鞍点*/
&for (i=0;i&n;i++)
&& { max=a[i][0];
&&&& for (j=1;j&m;j++)
&&&&&& if (a[i][j]&max)
&&&& &&&&&& { max=a[i][j];maxcol=j;}
&&&& for (k=0,flag1=1;k&n&&flag1;k++)
&&&&&& if (a[k][maxcol]&max)
&&&& &&&&&&&& flag1=0;
&&&& if (flag1==1)
&&&&& { printf(&\n%3d %3d %5d\n&,i,maxcol,max);
&&&& &&&&&&&& flag2=1;
&if (flag2==0)
&&&& &return -1;
{ int i,j,n,m,a[N][M];
&printf(&Enter row && col:&);
&scanf(&%d%d&,&n,&m);
&printf(&Enter array element:&);
&for (i=0;i&n;i++)
&&& for (j=0;j&m;j++)
&&&&& scanf(&%d&,&a[i][j]);
&printf(&\n&);
&for (i=0;i&n;i++)
&{ for (j=0;j&m;j++)
&&&&& printf(&%d &,a[i][j]);
&&& printf(&\n&);
&if (andian(a,n,m)==-1)
&&&& printf(&\n no andian \n&);
6. max_value(int arr[][4])
max(int arr[ ][4])
max=arr[0][0];
for(i=0;i&2;i++)
for(j=0;j&4;j++)
if(arr[i][j]&max)max=arr[i][j];
return(max);
7. 解:注意结束字符的判断和处理,目标字符串的长度应足够长。参考程序如下:
#include &stdio.h&
void scat(char s1[],char s2[])
{ int i,j;
&for (i=0;s1[i]!='\0';i++);
&for (j=0;s2[j]!='\0';j++)
&&& s1[i++]=s2[j];
&s1[i]='\0';
{ char s1[80]=&Good &;
&char s2[10]=&morning&;
&scat(s1,s2);
&printf(&%s\n&,s1);
8. ex=1=x=x2\2!+x3\3!&(前20项的和)
float f2(int n)
float f1(int x,int n)
{ float exp=1.0;int n,x;
printf(&Input a number:&)&
scanf(&%d&,&x);&printf(&%d\n&,x);
exp=exp+x;
for(n=2;n&=19;n++)&exp=exp+f1(x,n)/f2(n);
printf(&\nThe is exp(%d)=%8.4f\n&,x,exp)&
运行结果:Input a number:3
&&&&&&&&&&&&&&&&& The is exp(3)=20.0855
float f2 (int n)
{if(n==1)return1;
else return(f2(n-1)*n);
float f1(intx,intn)
{int I; float j=1;
for(I=1;I&=n;I++)j=j*x;
9.解:用输入负数表示输入结束。参考程序如下:
#include &stdio.h&
{ float score[200],ave,sum,x;
&printf(&Enter score:&);
&scanf(&%f&,&x);
&while (x&0&&n&200)
&& { sum+=x;
&&&& score[n++]=x;
&&&& scanf(&%f&,&x);
&ave=sum/n;
&printf(&average= %f\n&,ave);
&for (count=0,i=0;i&n;i++)
&&& if (score[i]&60)
&&&&& { printf(&%f\n&,score[i]);
&&&& &&&&& count++;
&printf(&%d not pass\n&,count);
&&&&&&&&&& }
10.解:扬辉三角形各行数据规律:
(1)&& 每行第一个和最后一个数都是1
(2)&& 从第3行起,(3)&&&&& 除第一和最后一个数外,(4)&& 其余的数都是上一行同(5)&&& 列和前一列两个数的和。
定义函数,将扬辉三角形的数据保存在二维数组中。参考程序如下:
#include &stdio.h&
#define N 10
void yanghui(int a[][N],int n)
{ int i,j;
&for (i=0;i&n;i++)
&&& { a[i][0]=1;
&&&&& a[i][i]=1;
&for (i=2;i&n;i++)
&&& for (j=1;j&i;j++)
&&&&&& a[i][j]=a[i-1][j-1]+a[i-1][j];
{ int i,j,n,a[N][N];
&printf(&Enter n:&);
&scanf(&%d&,&n);
&yanghui(a,n);
&for (i=0;i&n;i++)
&&& { for (j=0;j&=i;j++)
&&&& &&&&&&& printf(&%d &,a[i][j]);
&&&&& printf(&\n&);
11. 解:依回文定义从字符串的起始字符向后,最后一个字符向前依次判断,遇汉字的第一个字符同时处理两个字符。参考程序如下:
#include &stdio.h&
#include &string.h&
int huiwen(char str[])
{ int i,j,len,flag=1;
&len=strlen(str);
&for (i=0,j=len-1;i&=j;i++,j--);
&&&& if (str[i]!=str[j])
&&&& &&&&& { if (str[i]&128&&str[j]&128) /*两侧都是汉字字符*/
&&&& &&&&&&&&&& { if (str[i]==str[j-1]&&str[i+1]==str[j])
&&&&&&&&& &&&&&&&&&&& { i++; j--; }
&&&& &&&&&&&&&&&&& else flag=0;
&&&& &&&&&&&&&& }
&&&& &&&&&&& else flag=0;
&&&& &&&&& }
{ char str[50];
&printf(&Enter string:&);
&gets(str);
&if (huiwen(str))
&&&& printf(&%s is a palindroma\n&);
&&&& printf(&%s is not palindroma\n&);
12.解:设整型数组a中保存n个人的密码,对应的人出列后,数组元素置0作为标志。顺时针确定下一个人的方法,可将下标加1,再对n求余。参考程序如下:
#include &stdio.h&
#define N 100
{ int a[100];
&int i,j,m,n,k=0;
&printf(&Enter n & m:&);
&scanf(&%d%d&,&n,&m);
&printf(&Enter code array :&);
&for (i=0;i&n;i++)
&&&& scanf(&%d&,&a[i]);
&printf(&\nOutput:\n&);
&for (i=0;i&n;i++)
&&& { j=1;
&&&&& while (j&m)
&&&&& { while (a[k]==0) /*跳过已出列的人*/
&&&& &&&&&&&& k=(k+1)%n;
&&&& &&&&& j++;
&&&& &&&&& k=(k+1)%n;
&&&&& while (a[k]==0) /*跳过已出列的人*/
k=(k+1)%n;
&&&&& printf(&%d &,k);
&&&&& m=a[k]; a[k]=0;
分享这篇文章:
大家正在看...
最新热文...
相关文章...
相关评论...
以上就是阳光大学生网为您提供的《C语言程序设计试题及答案(十)》,希望对您有所帮助。
最新热文...
大家都在看...
为您推荐...

我要回帖

更多关于 include stdio.h报错 的文章

 

随机推荐